5.3. Construction
5.3.1. Install utilities from e2fsprogs
Download the e2fsprogs source code package from http://sourceforge.net/projects/e2fsprogs/
| bash# cd /usr/src/e2fsprogs-1.35
bash# export CC="gcc -mcpu=i386"
bash# ./configure --host=i386-pc-linux-gnu
bash# make
bash# cd e2fsck
bash# cp e2fsck.shared ~/staging/sbin/e2fsck
bash# ln -s e2fsck ~/staging/sbin/fsck.ext2
bash# cd ../misc
bash# cp fsck mke2fs ~/staging/sbin
bash# ln -s mke2fs ~/staging/sbin/mkfs.ext2 | 
5.3.2. Install utilities from util-linux
Get the latest util-linux source from ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/
| bash# cd /usr/src/util-linux-2.12h | 
Use a text editor to make the following changes to
      MCONFIG:
| bash# ./configure
bash# make
bash# cp disk-utils/mkfs ~/staging/sbin
bash# cp fdisk/fdisk ~/staging/sbin
bash# cp login-utils/agetty ~/staging/sbin
bash# ln -s agetty ~/staging/sbin/getty
bash# cp login-utils/login ~/staging/bin
bash# cp misc-utils/kill ~/staging/bin
bash# cp mount/mount ~/staging/bin
bash# cp mount/umount ~/staging/bin
bash# cp mount/swapon ~/staging/sbin
bash# cp sys-utils/dmesg ~/staging/bin | 
5.3.3. Check library requirements
| bash# ldd ~/staging/bin/* | more
bash# ldd ~/staging/sbin/* | more
bash# ls ~/staging/lib | 
All of the dependencies revealed by the ldd
      command are for libraries already present in the staging area so there
      is no need to copy anything new.
5.3.4. Strip binaries to save space
| bash# strip ~/staging/bin/*
bash# strip ~/staging/sbin/* | 
5.3.5. Create additional device files
| bash# mknod ~/staging/dev/ram0 b 1 0
bash# mknod ~/staging/dev/fd0 b 2 0
bash# mknod ~/staging/dev/null c 1 3 | 
5.3.6. Create the fstab and mtab files
Use an editor like vi, emacs or pico to create the following file
      and save it as ~/staging/etc/fstab.
| proc        /proc   proc   defaults   0   0
/dev/ram0   /       ext2   defaults   1   1 | 
Create an empty mtab file.
5.3.7. Write a script to check and mount local filesystems
Use an editor to create the following shell script and save it as
      ~/staging/etc/init.d/local_fs:
| #!/bin/sh
#
# local_fs - check and mount local filesystems
#
PATH=/sbin:/bin ; export PATH
fsck -ATCp
if [ $? -gt 1 ]; then
  echo "Filesystem errors still exist!  Manual intervention required."
  /bin/sh
else
  echo "Remounting / as read-write."
  mount -n -o remount,rw /
  echo -n >/etc/mtab
  mount -f -o remount,rw /
  echo "Mounting local filesystems."
  mount -a -t nonfs,nosmbfs
fi
#
# end of local_fs | 
Set execute permissions on the script.
5.3.8. Create a compressed root disk image
| bash# cd /
bash# dd if=/dev/zero of=/dev/ram7 bs=1k count=4096
bash# mke2fs -m0 /dev/ram7 4096
bash# mount /dev/ram7 /mnt
bash# cp -dpR ~/staging/* /mnt
bash# umount /dev/ram7
bash# dd if=/dev/ram7 of=~/phase4-image bs=1k count=4096
bash# gzip -9 ~/phase4-image | 
5.3.9. Write the root disk image to floppy
Insert the diskette labeled "root disk" into drive fd0.
| bash# dd if=~/phase4-image.gz of=/dev/fd0 bs=1k |