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; "