In plaats van het direct kopiëren van de bestanden naar ramdisk, kunnen we het ons makkelijker maken door een fasengebied op te zetten. Het fasengebied geeft ons de ruimte om te werken zonder ons druk te hoeven maken over de ruimtebeperkingen van de ramdisk. Het geeft ons tevens een manier om ons werk op te slaan en het maakt het makkelijker om de rootdisk in latere fasen van het project uit te breiden.
De fasen procedure werkt ongeveer als volgt:
Maak een directorystructuur aan zoals gedefinieerd in de FHS.
Kopieer de bestanden vanaf de rootdisk uit fase 2.
Bouw het nieuwe pakket vanuit de broncode.
Installeer de bestanden in de correcte FHS directory's.
Strip de binaire bestanden om ruimte te besparen.
Controleer de library afhankelijkheden.
Kopieer de volledige directorystructuur naar de ramdisk.
Comprimeer de ramdisk en schrijf het weg naar diskette.
bash# mkdir ~/fasen bash# cd ~/fasen bash# mkdir bin boot dev etc home lib mnt opt proc root sbin tmp usr var bash# mkdir var/log var/run |
bash# dd if=~/fase2-image.gz | gunzip -c > /dev/ram7 bash# mount /dev/ram7 /mnt bash# cp -dpR /mnt/* ~/fasen bash# umount /dev/ram7 bash# rmdir ~/fasen/lost+found |
Download een recente versie van coreutils vanaf ftp://ftp.gnu.org/gnu/coreutils/
bash# cd /usr/src/coreutils-5.2.1 bash# export CC="gcc -mcpu=i386" bash# ./configure --host=i386-pc-linux-gnu bash# make bash# cd src bash# cp cat chgrp chmod chown cp date dd df ~/fasen/bin bash# cp hostname ln ls mkdir mkfifo mknod ~/fasen/bin bash# cp mv rm rmdir stty su sync uname ~/fasen/bin |
Conroleer welke library's nodig zijn met behulp van ldd voor een aantal van de nieuwe binary's.
bash# ldd ~/fasen/bin/cat bash# ldd ~/fasen/bin/ls bash# ldd ~/fasen/bin/su bash# ls ~/fasen/lib |
Let op de verschillen in de vereiste library's, zoals getoond in de uitvoer van de opdracht ldd, en de library's die reeds aanwezig zijn in het fasengebied, zoals getoond in de uitvoer van de opdracht ls, en kopieer vervolgens eventuele ontbrekende library's naar het fasengebied.
bash# cp /lib/librt.so.1 ~/fasen/lib bash# cp /lib/libpthread.so.0 ~/fasen/lib bash# cp /lib/libcrypt.so.1 ~/fasen/lib |
bash# strip ~/fasen/bin/* bash# strip --strip-unneeded ~/fasen/lib/* |
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 ~/fasen/* /mnt bash# umount /dev/ram7 bash# dd if=/dev/ram7 of=~/fase3-image bs=1k count=4096 bash# gzip -9 ~/fase3-image |
![]() | Het proces voor het aanmaken van de gecomprimeerde rootdisk-image zal iets wijzigen in de loop van de resterende hoofdstukken. Het schrijven van een klein script om deze functie af te handelen bespaart ons veel tijd. |