#!/bin/sh msg() { echo "==>" $@ } die() { echo $@ exit 1 } APKS=tmp/apks image=$PWD/image dest=$PWD/test.gz init=init kernel=$1 # if no kernel specified, then guess... if [ -z "$kernel" ]; then kernel=$(ls /lib/modules 2>/dev/null | tail -n 1) fi if [ ! -d /lib/modules/$kernel ]; then die "modules dir /lib/modules/$kernel was not found" fi msg "Using kernel $kernel" # create empty image dir rm -rf "$image" mkdir -p "$image/dev" "$image/etc/rcS.d" # unpack busybox and deps tar -C $image -zxf $APKS/uclibc-[0-9]*.apk tar -C $image -zxf $APKS/busybox-[0-9]*.apk tar -C $image -zxf $APKS/alpine-baselayout-[0-9]*.apk tar -C $image -zxf $APKS/apk-tools-[0-9]*.apk rm -f $image/.PKGINFO ln -sf /bin/busybox $image/init # create misc devs and enable boot scripts mknod $image/dev/null c 2 2 ln -s ../init.d/mdev $image/etc/rcS.d/S10mdev ln -s ../init.d/hwdrivers $image/etc/rcS.d/S30hwdrivers ln -s ../init.d/modutils $image/etc/rcS.d/S40modutils # load those extra drivers for i in ide-cd usb-storage ide-disk; do echo $i >> $image/etc/modules done # copy kernel modules kmods=$image/lib/modules/$kernel mkdir -p $kmods/kernel/drivers for i in ata block ide ieee1394 scsi cdrom usb message; do cp -LpR /lib/modules/$kernel/kernel/drivers/$i $kmods/kernel/drivers/ done for i in fs lib; do cp -LpR /lib/modules/$kernel/kernel/$i $kmods/kernel/ done depmod $kernel -b $image # generate the image cd $image find . | cpio -o -H newc | gzip -9 > $dest