blob: 897fb131c1317854b8ead8cc1d8891d84fe6a595 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
LICENSE = "MIT"
PR = "r25"
COMPATIBLE_MACHINE = "nslu2"
IMAGE_BASENAME = "unslung"
IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DISTRO_VERSION}"
IMAGE_LINGUAS = ""
USE_DEVFS = "1"
DEPENDS = "virtual/kernel \
${UNSLUNG_EXTRA_DEPENDS}"
RDEPENDS = "kernel update-modules unslung-rootfs \
libc6-unslung slingbox ipkg \
libipkg \
# cpio \
# findutils \
${UNSLUNG_EXTRA_RDEPENDS}"
PACKAGE_INSTALL = "kernel update-modules unslung-rootfs \
libc6-unslung slingbox ipkg \
libipkg \
# cpio \
# findutils \
kernel-module-netconsole \
${UNSLUNG_EXTRA_INSTALL}"
IMAGE_PREPROCESS_COMMAND += "unslung_clean_image; "
inherit image
# Note that anything in this function must be repeatable without having to rebuild the rootfs
unslung_clean_image () {
# Remove the patches
rm -rf ${IMAGE_ROOTFS}/patches
# Remove the kernel image
rm -rf ${IMAGE_ROOTFS}/boot
rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/alternatives/zImage
# And remove the post and pre scripts for the kernel; saves flash space
rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/kernel.postinst
rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/kernel.postrm
# Remove all the postinst scripts; don't need them. But keep the
# postrm scripts just in case we need to remove something.
rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/*.postinst
# Remove info from the local feed used to build the image
rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/lists/*
rm -f ${IMAGE_ROOTFS}/${sysconfdir}/version
# Tidy up some thing which are in the wrong place
mv ${IMAGE_ROOTFS}${libdir}/libipkg* ${IMAGE_ROOTFS}/lib/
# Remove the ipkg symlink - unsling puts it back in
rm -f ${IMAGE_ROOTFS}${bindir}/ipkg
# and make the ipkg symlink point to the ipkg-fl utility instead.
ln -s ipkg-fl ${IMAGE_ROOTFS}${bindir}/ipkg
# Hack out the modutils stuff - it's too hard to make it work
rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/update-modules.postinst
rm -rf ${IMAGE_ROOTFS}/etc/rcS.d
echo "#!/bin/sh" > ${IMAGE_ROOTFS}/usr/sbin/update-modules
echo "exit 0" >> ${IMAGE_ROOTFS}/usr/sbin/update-modules
chmod ugo+x ${IMAGE_ROOTFS}/usr/sbin/update-modules
echo "#!/bin/sh" > ${IMAGE_ROOTFS}/sbin/depmod
echo "exit 0" >> ${IMAGE_ROOTFS}/sbin/depmod
chmod ugo+x ${IMAGE_ROOTFS}/sbin/depmod
# Don't need this empty directory hanging around
rm -rf ${IMAGE_ROOTFS}/lib/modules/2.4.22-xfs/pcmcia
# Strip symbols and fix permissions on the libgcc_s.so.1 library
${STRIP} ${IMAGE_ROOTFS}/lib/libgcc_s.so.1
chmod ugo+x ${IMAGE_ROOTFS}/lib/libgcc_s.so.1
# MJW - experimental right now, but no longer need cpio and find
# We need cpio and find, but we don't need any of the other stuff in
# the packages (users can install the full package with ipkg after
# unsling). Remove the extra files and executables, and clean up
# the entries from the ipkg database manually.
#-- these are for cpio:
# rm -f ${IMAGE_ROOTFS}/usr/bin/mt
# rm -rf ${IMAGE_ROOTFS}/usr/libexec
# rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/cpio.*
# rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/alternatives/rmt
# sed -i -e '/^Package: cpio/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status
#-- and these for find:
# rm -f ${IMAGE_ROOTFS}/usr/bin/locate
# rm -f ${IMAGE_ROOTFS}/usr/bin/updatedb
# rm -f ${IMAGE_ROOTFS}/usr/bin/xargs
# rm -f ${IMAGE_ROOTFS}/usr/bin/xargs.findutils
# rm -f ${IMAGE_ROOTFS}${libdir}/ipkg/info/findutils.*
# sed -i -e '/^Package: findutils/,/^$/d' ${IMAGE_ROOTFS}${libdir}/ipkg/status
# FIXME: change made 24 Jul 2006 by the OE folks changes the "strip"
# behavior to create an extra file named .debug/<filename> containing
# the stripped symbols. These files are supposed to be packaged
# separately by the standard bb routines, but for some reason this
# does not alway occur. This extremely ugly step is to remove the
# debug cruft from the rootfs if any are left in the obvious locations.
# Once someone figures out why and what the right way is to fix this,
# this code should be removed.
rm -rf ${IMAGE_ROOTFS}/bin/.debug
rm -rf ${IMAGE_ROOTFS}/sbin/.debug
rm -rf ${IMAGE_ROOTFS}/lib/.debug
rm -rf ${IMAGE_ROOTFS}/usr/bin/.debug
rm -rf ${IMAGE_ROOTFS}/usr/sbin/.debug
rm -rf ${IMAGE_ROOTFS}/usr/lib/.debug
# MJW - Experimental - just to make space; remove before releasing!
# #### Hack to make space for testing! REMOVE THIS!
# rm -rf ${IMAGE_ROOTFS}/etc/samba/codepages/unicode_map.850
# rm -rf ${IMAGE_ROOTFS}/bin/ftp
# #### End of Hack!
}
nslu2_pack_image () {
install -d ${DEPLOY_DIR_IMAGE}/slug
install -m 0644 ${STAGING_LIBDIR}/nslu2-binaries/RedBoot \
${STAGING_LIBDIR}/nslu2-binaries/Trailer \
${STAGING_LIBDIR}/nslu2-binaries/SysConf \
${DEPLOY_DIR_IMAGE}/slug/
install -m 0644 ${DEPLOY_DIR_IMAGE}/zImage-${IMAGE_BASENAME} ${DEPLOY_DIR_IMAGE}/slug/vmlinuz
install -m 0644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${DEPLOY_DIR_IMAGE}/slug/flashdisk.jffs2
cd ${DEPLOY_DIR_IMAGE}/slug
slugimage -p -b RedBoot -s SysConf -r Ramdisk:1,Flashdisk:flashdisk.jffs2 -t Trailer \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.flashdisk.img
rm -rf ${DEPLOY_DIR_IMAGE}/slug
}
EXTRA_IMAGEDEPENDS += 'slugimage-native nslu2-linksys-firmware'
IMAGE_POSTPROCESS_COMMAND += "nslu2_pack_image; "
|