Constructie

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.

Voorbereiden van de bootdiskmedia

Doe een lege diskette met het label "bootdisk" in het diskettestation.

Opmerking

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

Bouw de GRUB bootloader

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

Kopieer de bootloaderbestanden naar diskette

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

Voltooien van de bootloaderinstallatie

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

Bouw de Linux kernel

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.

Opmerking

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:

bash# make dep
bash# make clean
bash# make bzImage

Kopieer de kernel naar diskette

bash# cp /usr/src/linux/arch/i386/boot/bzImage /mnt/boot/vmlinuz

Ontkoppel de bootdisk

bash# cd /
bash# umount /mnt

Voorbereiden van de rootdiskmedia

Doe een lege diskette met het label "rootdisk" in het diskettestation.

bash# mke2fs -m0 /dev/fd0
bash# mount /dev/fd0 /mnt

BASH bouwen

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

Kopieer BASH naar de root disk

bash# mkdir /mnt/bin
bash# cp bash /mnt/bin/bash
bash# ln -s bash /mnt/bin/sh

Maak de apparaatbestanden aan die BASH nodig heeft

bash# mkdir /mnt/dev
bash# mknod /mnt/dev/console c 5 1

Ontkoppel de rootdisk

bash# cd /
bash# umount /mnt