#!/bin/bash -x # # Creating a custom InitRD.gz # ---------------------------- # # Original Script # ---------------- # http://Linux-Boot.net/Boot.Standalone/FD/Floppy.Howto.sh.txt # http://Linux-Boot.net/Boot.Standalone/FD/Floppy.InitRD.sh.txt # # # 21-Jan-05 amo Date-of-Birth # 16-Mar-05 amo Split apart Standalone-BootFloppy-Howto into sections # 25-Mar-05 amo ReOrg for Bootable FD, CF, CD, USB # # # # Sanity Checking -- get the build environment # ============================================ # if [ ! -f Floppy.variables.sh.txt ]; then echo "#" echo "# ERROR: cannot find all the scripts " echo "#" # exit 1 # fi # source Floppy.variables.sh.txt # # # # ======================================== # Directory Tree for the initrd # ======================================== # INITRD="/tmp/initrd.fd" # # remove old stuff first # ---------------------- doecho "#" doecho "rm -rf $INITRD" # doecho "#" doecho "mkdir $INITRD" doecho "#" # # KERNEL=`uname -r` # # # a little clearer for initrd's temporary directories tree # doecho "mkdir $INITRD/bin" doecho "mkdir $INITRD/etc" doecho "mkdir -p $INITRD/lib/modules" doecho "mkdir $INITRD/dev" doecho "mkdir -p $INITRD/mnt/loopfs" doecho "#" # # cd initrd ; ln -s ./bin sbin ; cd .. # # # sash is standalone shell # bash is bigger and needs additional libraries # tcsh is smaller # # # if you need modules # cp -dpar /bin/*mod* initrd/bin # # doecho "cp -dapr /bin/tcsh /bin/df /bin/mount $INITRD/bin" doecho "#" doecho "cp -dpar /dev/console /dev/null $INITRD/dev" doecho "cp -dpar /dev/ram /dev/ram? $INITRD/dev" doecho "cp -dpar /dev/fd0 /dev/loop? $INITRD/dev" doecho "#" doecho "cp -dpar /dev/systty $INITRD/dev" doecho "cp -dpar /dev/tty? $INITRD/dev" doecho "#" # # /lib/libsafe* doecho "cp -dpar /lib/libtermcap* /lib/libdl* /lib/libc* /lib/ld-linux* $INITRD/lib" doecho "#" # # # Minimal fstab and inittab # ------------------------- doecho "cp $OrigPWD/Patches.FD/etc/fstab $INITRD/etc" doecho "cp $OrigPWD/Patches.FD/etc/inittab $INITRD/etc" # # # Fill the initrd with the desired modules # ======================================== # # # # the required modules you specify are loaded by initrd/linuxrc # # # cp -dpar /lib/modules/$KERNEL/scsi/aic7xxx.o initrd/lib # # # the entire modules tree for the kernel # cp -dpar /lib/modules/$KERNEL initrd/lib/modules # # # ===================== # Create the /linurc # ===================== doecho "cp $OrigPWD/Patches.FD/linuxrc $INITRD/linuxrc" # # minimal list of libraries doecho "cp $OrigPWD/Patches.FD/etc/ld.so.conf $INITRD/etc" # doecho "ldconfig -f $INITRD/etc/ld.so.conf -C $INITRD/etc/ld.so.cache" doecho "#" # # # # Test the /linuxrc file # ---------------------- # chroot /tmp/initrd /bin/tcsh # /linuxrc # # # to return from chroot # exit # # # The loop-based InitRD # --------------------- LOOP="/tmp/initloop" # # # Clean up (remove) previous versions # ------------------------------------ # if [ ! -d "/mnt/loop" ]; then doecho "mkdir /mnt/loop" else # echo "losetup -d /dev/loop0" losetup -d /dev/loop0 # doecho "#" umount /mnt/loop # fi # # # ============================== # Create the initrd-custom.gz # ============================== # # Now Create the ramdisk ( size is limited by the kernel ) # # or Create the loopdisk ( any arbitrary size ) # doecho "dd if=/dev/zero of=$LOOP count=2500 bs=1024" doecho "losetup /dev/loop0 $LOOP" doecho "mke2fs -q /dev/loop0" doecho "mount /dev/loop0 /mnt/loop" # doecho "#" doecho "cp -dpar $INITRD/* /mnt/loop" doecho "sync" # doecho "#" doecho "df" doecho "exit 1" doecho "#" doecho "ls -la /mnt/loop" doecho "umount /mnt/loop" doecho "losetup -d /dev/loop0" doecho "#" # # doecho "gzip -c $LOOP > $INITRD-$VER.gz" doecho "#" # doecho "#" doecho "# To view the unerased initrd" doecho "# ---------------------------" doecho "# ls -laR $INITRD " doecho "#" # doecho "#" doecho "# Next .. Create the Floppy" doecho "# -------------------------" doecho "# sh Floppy.MBR.sh.txt" doecho "#" # # # End of file