Verder Terug Inhoud

9. Aanpassen van het RedHat installatieprogramma

Als je wat met de installatieprocedure zelf wilt aanrommelen, de broncode is te vinden op de RedHat CD-ROM of je lokale RedHat mirrorsite. Het bevindt zich in de misc/src/install onder de toplevel directory van de i386 distributie.

Als je de RedHat bootdisk bestudeert, zul je zien dat er naast de Linux kernel vmlinuz, een groot bestand initrd.img is:

- -rwxr-xr-x   1 root     root          559 May 11 15:48 boot.msg
- -rwxr-xr-x   1 root     root          668 May 11 15:48 expert.msg
- -rwxr-xr-x   1 root     root          986 May 11 15:48 general.msg
- -rwxr-xr-x   1 root     root       968842 May 11 15:48 initrd.img
- -rwxr-xr-x   1 root     root         1120 May 11 15:48 kickit.msg
- -r-xr-xr-x   1 root     root         5352 May 11 15:48 ldlinux.sys
- -rwxr-xr-x   1 root     root          875 May 11 15:48 param.msg
- -rwxr-xr-x   1 root     root         1239 May 11 15:48 rescue.msg
- -rwxr-xr-x   1 root     root          402 May 11 15:48 syslinux.cfg
- -rwxr-xr-x   1 root     root       444602 May 11 15:48 vmlinuz

Je raadde het al, dit is een ander ext2 bestandssysteem dat als een bestand is opgeslagen --- maar met een handigheidje. Het is in feite ook gecomprimeerd. Je kunt het decomprimeren en het resultaat ervan mounten, b.v.

# gzip -dc /mnt/boot/initrd.img >/tmp/initrd.ext2
# mkdir /mnt/initrd
# mount -o loop /tmp/initrd.ext2 /mnt/initrd

Waarschijnlijk het belangrijkste onderdeel van dit bestandssysteem is de verzameling laadbare kernelmodules die in de bootdisk is opgenomen. Als je een nieuwe driverversie hierin op wilt nemen, dan moet je of vmlinuz door een nieuwe kernel vervangen, welke statisch is gelinkt, of het in de verzameling modules vervangen. Bovendien moet je wellicht andere modules verwijderen om plaats te maken.

Het bestand modules/modules.cgz bestaat uit de verzameling modules. Vraag je je af wat dat zou kunnen zijn? In feite is het een gecomprimeerd cpio archief, geloof het of niet! En je dacht dat niemand cpio nog gebruikte... Zelfs RPM maakt intern nog gebruik van cpio Zo kun je er wat mee rommelen:

# gzip -dc /mnt/initrd/modules/modules.cgz >/tmp/modules.cpio
# cpio -itv <modules.cpio >modules.listing
# mkdir modules
# cpio -idumv <../modules.cpio

Ik denk dat er thans onder Linux geen manier is (tenminste in hoofdstroom distributies) om transparant gecomprimeerde bestandssystemen te benaderen. Laat het me weten als je meer weet!

Denk aan het volgende als je wijzigingen aanbrengt:

  1. Maak voor het opnieuw aanmaken van het archief gebruik van cpio. Hoe je dit doet wordt als oefening aan de lezer overgelaten...
  2. Gebruik gzip om het resulterende archief te comprimeren.
  3. Kopieer het naar /mnt/initrd, of waar je je ongecomprimeerde initrd.img archief dan ook plaatst.
  4. Unmount /mnt/initrd (of hoe je het ook noemde).
  5. Comprimeer het nieuwe initrd.img wederom met gzip.
  6. Kopieer het resulterende archief naar de bootdisk-image - in ons voorbeeld /mnt/boot/initrd.img.
  7. Unmount de bootdisk-image, b.v. /mnt/boot.

Tenslotte kun je met deze aangepaste bootdisksetup nieuwe bootdiskettes aanmaken, b.v.

# cat boot.img >/dev/fd0

Verder Terug Inhoud