Inhalt

2. Grundsätzliches über Loop-Devices und RAM-Disks

Zuerst will ich einige grundlegende Prinzipien erläutern, die beim Erstellen eines Dateisystems auf einem Loop-Device verwendet werden.

2.1 Loop-Devices

Ein Loop-Device ist ein virtuelles Laufwerk, das wie alle anderen Laufwerke unter Linux verwendet werden kann.

Beispiele für gewöhnliche Laufwerke sind: einzelne Festplattenpartitionen wie /dev/hda1, /dev/hda2, /dev/sda1 oder komplette Laufwerke wie die Diskettenlaufwerke /dev/fd0 usw.. Sie alle können verwendet werden, um Dateien oder Verzeichnisse zu speichern. Sie können mit dem benötigten Dateisystem formatiert (Ext2, MSDOS, NTFS usw.) und dann in die Verzeichnisstruktur von Linux eingefügt werden (mount).

Das Loop-Device verwendet eine Datei in einem anderen Dateisystem als ein virtuelles Laufwerk, welches dann genauso angesprochen werden kann wie die bereits oben aufgelisteten Medien. Hierfür wird die Gerätedatei /dev/loop0 oder /dev/loop1 usw. mit der Datei verbunden und dann dieses neue virtuelle Laufwerk gemountet.

2.2 RAM-Disks

Unter Linux ist es auch möglich, ein anderes virtuelles Laufwerk als Dateisystem zu mounten, die sog. RAM-Disk.

In diesem Fall verweist das Gerät nur auf einen Teil des RAM-Speichers, der hierfür zur Verfügung gestellt wurde. Der zugewiesene Speicher wird nicht auf die Festplatte (Swap Device) ausgelagert. Das Laufwerk wird aber im Cache-Speicher gepuffert.

Eine RAM-Disk kann jederzeit erstellt werden, indem auf die Gerätedatei /dev/ram0 oder /dev/ram1 geschrieben wird. Sie kann genau wie ein Loop-Devivce formatiert und gemountet werden.

Wenn eine RAM-Disk verwendet wird, um davon zu booten, wie es oft bei Installations- oder Rescue-Disketten von Linux getan wird, kann das Disk-Image (der komplette Inhalt der Diskette in einer einzelnen Datei) komprimiert auf der Boot-Diskette gespeichert werden. Beim Booten wird dies automatisch vom Kernel erkannt und die Datei auf eine RAM-Disk entpackt, bevor diese dann gemountet wird.

2.3 Die Initial-RAM-Disk

Die Initial-RAM-Disk unter Linux ist ein weiterer wichtiger Mechanismus, den wir benötigen, um ein Loop-Device als Root-Dateisystem zu verwenden.

Bei Verwendung einer Initial-RAM-Disk wird zunächst das Disk-Image in den Speicher geladen und dann gemountet, damit die Dateien darauf ausgeführt werden können. Ein Programm, genauer gesagt die Skript-Datei /linuxrc, auf der RAM-Disk wird ausgeführt und wenn es fertig ist, wird ein anderes Speichermedium in das Root-Dateisystem gemountet. Die alte RAM-Disk ist aber noch verfügbar und im Verzeichnis /initrd gemountet, sofern es vorhanden ist, oder sie ist über die Geräte-Datei /dev/initrd erreichbar.

Das ist ein ungewöhnliches Verhalten, weil normalerweise der Boot-Vorgang nur von der vorbestimmten Root-Partition gestartet und weiter ausgeführt wird. Mit der Initial-RAM-Disk kann man die Root-Partition aber ändern, bevor die eigentliche Boot-Sequenz startet.

2.4 Das Root-Dateisystem

Das Root-Dateisystem wird als erstes gemountet, damit es als das Verzeichnis / nach dem Booten erscheint.

Es gibt eine Reihe von Komplikationen beim Root-Dateisystem, die auf die Tatsache zurück zu führen sind, daß es alle Dateien beinhaltet. Beim Booten werden die rc-Skripte gestartet. Das sind die Dateien /etc/rc.d oder /etc/rc?.d, je nach Version des Init-Programmes /etc/init.

Wenn das System gebootet hat, ist es nicht mehr möglich, die Root-Partition zu entfernen oder zu wechseln, da alle Programme sie zu einem gewissem Grad verwenden. Darum ist die Initial-RAM-Disk so nützlich, denn sie kann benützt werden, um am Ende des Bootens eine andere Root-Partition zu haben als am Anfang.

2.5 Der Boot-Vorgang bei Linux

Um zu zeigen, wie die Initial-RAM-Disk arbeitet, sind die einzelnen Vorgänge beim Booten unten aufgelistet.

  1. Der Kernel wird in den Speicher geladen, was von LILO oder LOADLIN bewerkstelligt wird. Wenn das geschieht, können Sie die Meldung Loading... sehen.
  2. Das RAM-Disk-Image wird in den Speicher geladen, wiederum durch LILO oder LOADLIN und Sie können erneut die Meldung Loading... sehen.
  3. Der Kernel wird intitialisiert, die Optionen der Kommandozeile werden ausgewertet und die RAM-Disk als Root-Partition aktiviert.
  4. Das Programm /linuxrc auf der Initial-RAM-Disk wird ausgeführt.
  5. Die Root-Partition wird gewechselt auf die mit den Kernel-Parametern angegebene Partition.
  6. Das Init-Programm /etc/init wird gestartet, welches die durch den Benutzer konfigurierbare Boot-Sequenz durchführt.

Das ist nur eine vereinfachte Darstellung, aber sie reicht aus, um zu erläutern, wie der Kernel gestartet und wo die Initial-RAM-Disk verwendet wird.


Inhalt