Die Initial-RAM-Disk
Manche Module, Scripte und Programme braucht man schon bevor das Root-Dateisystem gemountet ist, beispielsweise SCSI-Treiber, falls man von SCSI-Platten bootet. Die dhcp und NFS scripte beim booten vom Netz.
Statt alles den Kernel machen zu lassen, ist es flexibler, eine Initial RAM-Disk zu benutzen.
Praxis
Um die Initial-RAM-Disk zu erzeugen, wird sie meist als Loopdevice, welches ein Blockdevice simuliert, angelegt.
- Eine leere Datei in der benötigten Größe erzeugen:
dd if=/dev/zero of=initrd bs=1k count=2048
In der leeren Datei das Ext2 Filesystem erzeugen:mke2fs -F initrd
Als Loop-Device mounten. Hier wird angenommen, dass /mnt vorhanden ist und zur freien Verfügung steht:mount -o loop initrd /mnt
Die benötigten Dateien in das file / Verzeichnis bringen oder erzeugen. Hier wir ein Root-Baum benötigt. Und die Kernel Module ...cp ..... mkdir ....
Aushängen des Loopdevices zum Weiterverarbeiten der Datei:umount /mnt
Komprimierte Version für den Kernel erstellen:gzip -c -9 initrd > initrd.gz
linuxrc
Wird im Grundverzeichnis eine Datei linuxrc angelegt und als ausführbar gekennzeichnet, wird diese als Script interpretiert. Damit sind Aktionen wie beispielsweise das Laden von Modulen noch vor dem Mounten des Root-Systems möglich. Natürlich müssen alle dazugehörigen Programme und Daten in der initrd vorhanden sein.
Beispiel für eine linuxrc
insmod /modules/jbd.o insmod /modules/ext3.o # Die Root-Partition muss am Ende eingehängt werden mount /dev/hda1 /