Een (enigszins bruikbare) Linux-versie maken

ArticleCategory: [Kies een categorie voor je artikel]

Kernel Corner

AuthorImage:[Hier komt een kleine foto van jou]

[Foto van de Auteur]

TranslationInfo:[Info over schrijver(s) en vertaler(s)]

original in en Mooneer Salem

en to nl L. Saarloos

AboutTheAuthor:[een korte biografie over de auteur]

Abstract:[een kleine samenvatting/beschrijving van het artikel]

Hebt u wel eens op een site gezien dat er een Linux-versie werd aangeprijsd die op één of twee diskettes past? Vaak zijn er maar weinig programma's in een dergelijke versie inbegrepen of bieden ze geen of slechts beperkte toegang tot bepaalde features. Dit artikel laat zien hoe u zelf een boot-/root-diskette kunt maken waar bijna alles op staat wat u nodig hebt.

ArticleIllustration:[Titel-illustratie van het Artikel]

[Illustratie]

ArticleBody:[Het eigenlijke artikel: zet hier tekst en HTML-codes]

Om te beginnen hebben we een of twee schone, lege diskettes nodig, afhankelijk van de hoeveelheid programma's die we in onze eigen Linux-distributie gaan opnemen. De basis alleen bestaat uit een boot-/root-diskette en mogelijk een diskette met handige programma's. Als geen van deze termen u bekend voorkomen raad ik u aan om hoofdstuk 2 uit de Bootdisk-HOWTO te lezen voor we verder gaan.

Laten we van start gaan. Hier volgen de de nodige stappen voor het maken van uw eigen Linux-versie op diskette:

  1. Compileer een aangepaste (kale) kernel
  2. Maak een bestandssysteem aan op de diskette
  3. Kopieer alles naar de diskette(s)

Een nieuwe kernel compileren

Omdat er op een diskette niet meer dan 1,44 Megabyte (1440 Kilobytes) aan gegevens kan, kunnen we niet zomaar de huidige kernel op de diskette plaatsen. Haal de kernelsources ergens op en pak ze uit in /usr/src/linux. Gebruik vervolgens het volgende commando terwijl u zich in de directory /usr/src/linux bevindt:

make config

Geef in het programma dat nu gestart wordt alleen op wat u echt nodig hebt. Ik heb alleen ondersteuning opgegeven voor ext2, floppy disk en PPP. Voor u zijn de instellingen wellicht anders, afhankelijk van uw eisen. Gebruik hierna de volgende commando's:

make dep; make clean; make zImage

Het commando make zImage is erg belangrijk! Het pakt de kernel in nadat deze gemaakt is. Wanneer het commando klaar is, vindt u de kernel in /usr/src/linux/arch/i386/boot onder de naam zImage.

Het bestandssysteem: niet zomaar een verzameling bestanden

Nu moeten we het bestandssysteem opzetten voor de diskette. In plaats van het direct kopiëren naar de diskette gaan we alle programma's eerst inpakken. Dit maakt het iets lastiger om wijzigingen door te voeren. Geef het volgende commando:

dd if=/dev/zero of=DEVICE bs=1k count=3000

DEVICE staat hier voor de locatie op uw harde schijf waar u het nog niet ingepakte bestandssysteem wilt hebben. Typ nu het volgende commando in (waarbij u DEVICE opnieuw vervangt door de locatie van het nog niet ingepakte bestandssysteem) en druk op Enter.

mke2fs -m 0 DEVICE

Mogelijk wordt er gevraagd of u dit echt wilt doen. Antwoord met Yes.

De volgende stap is het mounten van het zojuist door ons gecreëerde bestandssysteem. Aangezien het nieuwe bestandssysteem zich in een gewoon bestand bevindt, moet de loopback device in de kernel gecompileerd zijn om deze te kunnen mounten. Indien uw huidige kernel (niet de kernel die u net gemaakt heeft) dit niet ondersteunt, moet u deze opnieuw compileren. Wanneer u de kernel configureert moet u de volgende vraag bevestigend beantwoorden ( (Y)es of (M)odule):

 Loopback device support
(CONFIG_BLK_DEV_LOOP) [M/n/y/?] 
Let op dat u UW kernel aan het configuren bent, niet de kernel voor op de diskette, dus u moet al de drivers en utility's meenemen die u al hebt. Indien u de loopback device als een module compileert, vergeet deze dan niet te installeren (modprobe loop).
mount -t ext2 DEVICE /mnt
Als het mount-programma protesteert, probeer dan het volgende:
mount -o loop -t ext2 DEVICE /mnt

Nu moeten al de bestanden die u nodig hebt gekopieerd worden naar het zojuist gemaakte bestandssysteem. Ga naar de directory /mnt (cd /mnt). Maak de volgende directory's aan:

/dev
/proc
/etc
/bin
/lib
/mnt
/usr

Voor de bestanden in /dev gebruiken wij het volgende commando:

cp -dpR /dev /mnt/dev

Als u inodes tekort komt, gaat u naar /mnt/dev en haalt u de device-bestanden weg die u niet nodig hebt. Wanneer u klaar bent met het kopiëren van de benodigde bestanden naar /dev gaan we door met /etc. Voor de zekerheid kopiëren we alle bestanden uit /etc naar /mnt:

cp -dpR /etc /mnt/etc

Vervolgens kopiëren we alles in de directory /lib naar /mnt:

cp -dpR /lib /mnt/lib

Voor de directory /bin kopieert u alleen de bestanden die u denkt nodig te hebben naar /mnt.

Alles kopiëren naar de diskette

Nu moet alles nog naar de diskette(s) gekopieerd worden. Hiervoor moeten we eerst het nieuwe bestandssysteem comprimeren met de volgende commando's:

cd /
umount /mnt
dd if=DEVICE bs=1k | gzip -9 > rootfs.gz

Het is belangrijk te letten op de grootte van de kernel. Ga naar /usr/src/linux/arch/i386/boot en typ ls -al. Deel de grootte van de nieuwe kernel door 1024. Voorbeeld: als de grootte van een kernel 250000 bytes is, dan wordt dat 245 kb. Gebruik dit aantal kilobytes in elk commando waar ROOTBEGIN in staat. Kopieer de kernel nu naar de diskette met het volgende commando:

dd if=zImage of=/dev/fd0

Dit commando zet de kernel op de diskette. Gebruik vervolgens de volgende commando's om de kernel te laten weten waar het zijn root-bestandssysteem kan vinden op de diskette:

rdev /dev/fd0 /dev/fd0

Nu zult u een klein beetje moeten rekenen in hex. Tel 4000 op bij de hexadecimale equivalent van ROOTBEGIN (F5 in mijn voorbeeld). Converteer dit antwoord nu naar decimalen en typ het volgende commando, waarbij u 16629 vervangt door het door u gevonden antwoord:

rdev -r /dev/fd0 16629

Tot slot gebruikt u het volgende commando om het bestandssysteem op de diskette te zetten:

dd if=rootfs.gz of=/dev/fd0 bs=1k seek=ROOTBEGIN

Hierdoor wordt het bestandssysteem op de diskette geplaatst, net achter de kernel. En klaar is Kees! Voor de tweede diskette is de procedure eenvoudiger. Kopieer de bestanden die u wilt gebruiken naar de diskette. Let op, om de bestanden op deze diskette te kunnen gebruiken moet u het volgende commando gebruiken na het opstarten van het systeem met de eerste diskette:

mount /dev/fd0 /usr
Een laatste opmerking: Na wat uitproberen bent u waarschijnlijk in staat een versie te maken die verspreid kan worden onder een groter publiek (in ieder geval groter dan alleen uzelf) als een aparte 'Linux-distributie'. Het is maar een idee... :)

Meer informatie?

mirror server hosted at Truenetwork, Russian Federation.