abuild/mkinitram

73 lines
1.4 KiB
Plaintext
Raw Normal View History

#!/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