5.3. Construction
5.3.1. Install utilities from e2fsprogs
bash# cd /usr/src/e2fsprogs-1.29
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
bash# cd /usr/src/util-linux-2.11u |
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 mtab and fstab files
bash# cd ~/staging/etc
bash# ln -s /proc/mounts mtab |
Use an editor like vi emacs or pico to create the following file
and save it as ~/staging/etc/fstab.
proc /proc proc noauto 0 0
/dev/ram0 / ext2 defaults 1 1 |
5.3.7. Write a script to mount the proc filesystem
bash# mkdir ~/staging/etc/init.d
bash# cd ~/staging/etc/init.d |
Use an editor to create the following shell script and save it as
~/staging/etc/init.d/proc_fs:
#!/bin/sh
#
# proc_fs - mount the proc filesystem
#
PATH=/sbin:/bin ; export PATH
mount -t proc proc /proc
#
# end of proc_fs |
5.3.8. 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 -o remount,rw /
echo "Mounting local filesystems."
mount -a
fi
#
# end of local_fs |
Set execute permissions on the scripts.
bash# chmod +x proc_fs
bash# chmod +x local_fs |
5.3.9. 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
bash# mount /dev/ram7 /mnt
bash# cp -dpR ~/staging/* /mnt
bash# umount /dev/ram7
bash# dd if=/dev/ram7 of=~/phase4-image bs=1k
bash# gzip -9 ~/phase4-image |
5.3.10. Write the root disk image to floppy
Insert the diskette labled "root disk" into drive fd0.
bash# dd if=~/phase4-image.gz of=/dev/fd0 bs=1k |