In deze sectie zullen we de feitelijke bootdisk en rootdiskettes gaan samenstellen. Regels die worden voorafgegaan door bash# duiden op een shellopdracht en regels beginnend met grub> duiden op een in te tikken opdracht binnen de grub-shell.
Doe een lege diskette met het label "bootdisk" in het diskettestation.
![]() | Wellicht dat de "lege" diskette moet worden geformatteerd als het werd voorgeformatteerd voor een ander, niet-Linux besturingssysteem. Dit kan worden bewerkstelligd met de opdracht dd if=/dev/zero of=/dev/fd0 bs=1k count=1440 |
bash# mke2fs -m0 /dev/fd0 bash# mount /dev/fd0 /mnt |
Haal de broncode voor GRUB op van ftp://alpha.gnu.org/gnu/grub/ en pak het uit in de directory /usr/src.
Configureer en compileer de broncode voor GRUB voor een i386 processor met de volgende opdrachten:
bash# cd /usr/src/grub-0.95 bash# export CC="gcc -mcpu=i386" bash# ./configure --host=i386-pc-linux-gnu --without-curses bash# make |
Normaal gesproken zou je na het compileren van de broncode, de opdracht make install uitvoeren om de aangemaakte bestanden naar hun juiste bestemming in het bestandssysteem te kopiëren. Echter het gebruik van make install werkt niet goed bij kleine media zoals de diskettes die we gebruiken. Het probleem is dat er te veel bestanden in een pakket voorkomen naast de feitelijke binaire bestanden die de taak volbrengen. Er bestaan bijvoorbeeld vaak man- of infopages die voorzien in documentatie. Deze extra bestanden kunnen meer ruimte in beslag nemen dan we kunnen missen op de diskette. We kunnen deze beperking omzeilen door essentiële bestanden handmatig te kopiëren in plaats van het gebruik van make install.
Om GRUB te kunnen booten zullen we de stage1 en stage2 bootloader bestanden moeten kopiëren naar de directory /boot/grub op de bootdiskette.
bash# mkdir -p /mnt/boot/grub bash# cp /usr/src/grub-0.95/stage1/stage1 /mnt/boot/grub bash# cp /usr/src/grub-0.95/stage2/stage2 /mnt/boot/grub |
Zodra de bootloader bestanden zijn gekopieerd naar de bootdisk, kunnen we de grub-shell activeren om de installatie te voltooien.
bash# /usr/src/grub-0.95/grub/grub grub> root (fd0) grub> setup (fd0) grub> quit |
De stappen voor het bouwen van de kernel werden getest met Linux kernelversie 2.4.26 en zouden tevens moeten werken met een 2.4.x of 2.6.x kernel. De laatste versie van de kernelbroncode kan worden gedownload vanaf http://www.kernel.org/ of één van de mirrors.
![]() | De onderstaande instructies zijn zeer beknopt en zijn bedoeld voor iemand met eerdere ervaring in het bouwen van aangepaste kernels. Een meer gedetailleerde uitleg over het kernelconfigureer- en compileerproces is te vinden in de Kernel Rebuild Guide geschreven door Kwan Lowe. |
bash# cd /usr/src/linux bash# make menuconfig |
Zorg dat je ondersteuning opneemt voor het volgende:
386 processor
Console on virtual terminal (alleen voor 2.4.x kernels)
ELF binaries
Floppy disk
proc filesystem
RAM disk (4096K)
Second extended (ext2) filesystem
VGA console
bash# make dep bash# make clean bash# make bzImage |
Doe een lege diskette met het label "rootdisk" in het diskettestation.
bash# mke2fs -m0 /dev/fd0 bash# mount /dev/fd0 /mnt |
Haal het pakket met de broncode van bash-3.0 op vanaf ftp://ftp.gnu.org/gnu/bash/ en pak het uit in de directory /usr/src.
Configureer en compileer BASH voor een i386 CPU met de volgende opdrachten:
bash# cd /usr/src/bash-3.0 bash# export CC="gcc -mcpu=i386" bash# ./configure --enable-static-link \ --enable-minimal-config --host=i386-pc-linux-gnu bash# make bash# strip bash |
bash# mkdir /mnt/bin bash# cp bash /mnt/bin/bash bash# ln -s bash /mnt/bin/sh |