#!/bin/bash PROGNAME=`basename $0` || exit 1 DEBUG=0 QUIET=0 TARGET= KLIBC=/usr/lib/klibc/bin WORKDIR=$PWD function debug { if [ "$DEBUG" = "1" ]; then echo "${PROGNAME}:debug:$1" 1>&2; fi } function warning { if [ "$QUIET" = "0" ]; then echo "${PROGNAME}:warning:$1" 1>&2; fi } function usage { echo "Usage: ${PROGNAME}" exit } while [ "$1" != "" ]; do case $1 in -D | --debug ) shift DEBUG=1 ;; -q | --quiet ) shift QUIET=1 ;; -h | --help ) usage ;; -* ) echo "$PROGNAME: unrecognized option \`$1'" echo "Try \`$PROGNAME --help' for more information." exit 1 ;; * ) break; ;; esac done function cleanup { debug "cleanup called, arg=$1" trap - EXIT HUP INT TERM ERR if [ "$TARGET" != "" ]; then rm -f -r $TARGET fi exit $1 } function fatal { echo "${PROGNAME}:${1:-"unknown error"}" 1>&2 cleanup 1 } function sig_handler_HUPINTTERM { fatal "cought HUP, INT or TERM signal, exiting" } function sig_handler_ERR { cleanup 1 } function sig_handler_EXIT { cleanup 0 } trap sig_handler_HUPINTTERM HUP INT TERM trap sig_handler_ERR ERR trap sig_handler_EXIT EXIT KERNEL=`uname -r` TARGET=`mktemp -d` if [ ! $WORKDIR/init.debootstrap ]; then fatal "init.debootstrap doest not exist" fi cp $WORKDIR/init.debootstrap $TARGET/init if [ ! -d $KLIBC ]; then fatal "directory $KLIBC does not exist" fi mkdir -p $TARGET/{bin,lib/modules,usr/{bin,sbin,share,lib/debootstrap},sbin} cp $KLIBC/sh.shared $TARGET/bin/sh cp $KLIBC/insmod $TARGET/bin cp $KLIBC/run-init $TARGET/bin cp /bin/busybox $TARGET/bin cp /usr/bin/ar $TARGET/usr/bin cp /sbin/mke2fs $TARGET/sbin cp /sbin/cryptsetup $TARGET/sbin cp /usr/sbin/debootstrap $TARGET/usr/sbin cp /lib/ld-linux.so.2 $TARGET/lib cp /usr/lib/libbfd-2.19.51.20090714.so $TARGET/lib cp /lib/i686/cmov/libc.so.6 $TARGET/lib cp /lib/i686/cmov/libm.so.6 $TARGET/lib cp /lib/i686/cmov/libpthread.so.0 $TARGET/lib cp /lib/libext2fs.so.2 $TARGET/lib cp /lib/libcom_err.so.2 $TARGET/lib cp /lib/libext2fs.so.2 $TARGET/lib cp /lib/libcom_err.so.2 $TARGET/lib cp /lib/libblkid.so.1 $TARGET/lib cp /lib/libpopt.so.0 $TARGET/lib cp /lib/libdevmapper.so.1.02.1 $TARGET/lib cp /lib/libselinux.so.1 $TARGET/lib cp /lib/libuuid.so.1 $TARGET/lib cp /lib/libdl.so.2 $TARGET/lib cp /lib/libe2p.so.2 $TARGET/lib cp /lib/klibc-*.so $TARGET/lib #cp /lib/modules/$KERNEL/kernel/drivers/scsi/scsi_mod.ko $TARGET/lib/modules #cp /lib/modules/$KERNEL/kernel/drivers/ata/libata.ko $TARGET/lib/modules #cp /lib/modules/$KERNEL/kernel/drivers/ata/ata_generic.ko $TARGET/lib/modules #cp /lib/modules/$KERNEL/kernel/drivers/ata/ata_piix.ko $TARGET/lib/modules #cp /lib/modules/$KERNEL/kernel/drivers/cdrom/cdrom.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/drivers/input/mouse/psmouse.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/drivers/ide/ide-core.ko $TARGET/lib/modules #cp /lib/modules/$KERNEL/kernel/drivers/ide/ide-cd_mod.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/drivers/ide/ide-gd_mod.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/drivers/ide/ide-pci-generic.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/drivers/ide/piix.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/drivers/net/ne2k-pci.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/drivers/net/8390.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/fs/jbd/jbd.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/fs/mbcache.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/fs/ext3/ext3.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/fs/ext2/ext2.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/drivers/md/dm-mod.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/drivers/md/dm-crypt.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/crypto/aes_generic.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/crypto/sha256_generic.ko $TARGET/lib/modules cp /lib/modules/$KERNEL/kernel/crypto/cbc.ko $TARGET/lib/modules cp /usr/lib/libz.so.1 $TARGET/lib cp -a /usr/share/debootstrap $TARGET/usr/share/debootstrap cp $WORKDIR/pkgdetails/pkgdetails $TARGET/usr/lib/debootstrap tar -cvzf $TARGET/modules.tar.gz /lib/modules/$KERNEL cd $TARGET find . | cpio -o -H newc | gzip > $WORKDIR/initramfs.debootstrap.cpio.gz