#!/bin/bash -eu # Build the initramfs, a basic system that is used by the kernel as init # filesystem - also called 'rootfs' # A lot of this code is borrowed from Tomas M. echo "# Building rootfs" startup_dir=$(pwd) cd $(dirname $0)/../ BASE_DIR=$(pwd) ROOTFS_DIR=$BASE_DIR/var/rootfs TEMPFILE=$(tempfile) function fun_mknod { if [ ! -e "$1" ]; then fakeroot -i $TEMPFILE -s $TEMPFILE mknod $@ fi } # create devices echo "## Creating devices" fun_mknod $ROOTFS_DIR/dev/console c 5 1 chmod a+rw $ROOTFS_DIR/dev/console fun_mknod $ROOTFS_DIR/dev/null c 1 3 fun_mknod $ROOTFS_DIR/dev/ram b 1 1 fun_mknod $ROOTFS_DIR/dev/systty c 4 0 fun_mknod $ROOTFS_DIR/dev/tty c 5 0 for i in 1 2 3 4 5 6; do fun_mknod $ROOTFS_DIR/dev/tty$i c 4 $i done chmod a+rw $ROOTFS_DIR/dev/tty* # generate module dependencies KERNEL_NAME="$(strings $BASE_DIR/install_cd/isolinux/bzImage \ | grep deeprootlinux \ | cut -d' ' -f1)" mkdir -p $ROOTFS_DIR/lib/modules/$KERNEL_NAME depmod --basedir $ROOTFS_DIR -v $KERNEL_NAME # attach bootsplash image echo "## Attaching bootsplash image" cd $BASE_DIR/var/rootfs/boot/DeepRootLinux/ $BASE_DIR/bin/splash -s -f bootsplash.cfg \ > $ROOTFS_DIR/bootsplash # create rootfs filesystem if [ -f "$BASE_DIR/install_cd/isolinux/rootfs" ]; then echo "## Removing old rootfs filesystem" rm -f $BASE_DIR/install_cd/isolinux/rootfs fi echo "## Creating rootfs filesystem" cd $ROOTFS_DIR find . \ | fakeroot -i $TEMPFILE cpio -o -H newc \ | gzip \ > $BASE_DIR/install_cd/isolinux/rootfs # clean echo "## Cleaning" rm $ROOTFS_DIR/bootsplash rm $ROOTFS_DIR/dev/* rm -R $ROOTFS_DIR/lib/modules rm $TEMPFILE