Kann man initrd mit syslinux und linuxrc von der Festplatte booten?

Peter Voigt Peter.Voigt1 at gmx.net
Tue Oct 7 22:32:15 CEST 2003


Hallo,

ich beschäftige mich mit der Entwicklung einer Live-CD für Skolelinux. Die
erste Vorab-Version läuft bereits. Einzelheiten habe ich auf user at skolelinux
gepostet.

Der Entwicklungsprozeß wird wesentlich erschwert, solange jede Änderung an
der Live-CD erst getestet werden kann, sobald die Live-CD erneut gebrannt
worden ist. 

Das Problem liegt im dem Komprimieren des Life-Filesystems, bevor es
gebrannt wird.

Das Komprimieren dauert auf dem Entwicklungsrechner rund 1 Stunde. Das
Komprimieren ist notwendig, um 1,1 GB auf 450 MB zu verdichten. Sonst reicht der
Platz der CD nicht.

Es gilt, den Vorgang des Komprimierens zu vermeiden, indem das
Life-Filesystem von der Festplatte gebootet wird. Denn auf der Festplatte ist massig Platz
vorhanden, die begrenzte Kapazität der CD spielt keine Rolle.

Beim Booten der Live-CD kommt ein besonderes linuxrc zum Zuge, welches eine
Reihe von Vorbereitungen für das Mounten des Life-Filesystemes macht. Um
Bedingungen zu schaffen, die ein sinnvolles Testen ermöglichen, müßte diese
linuxrc auch beim Booten von der Festplatte zum Zuge kommen.

Die Lösung müßte vermutlich so aussehen,  das Boot-Image der Live-CD auf der
Festplatte mit diesem linuxrc mounten zu können.

Weitere Einzelheiten zum Problem sind in der nachstehenden Email zu finden.

Weiß jemand Rat?

Grüße Peter Voigt

Re: Skolelinux-Live-CD - 1. Vorab-Version läuft
From: "Peter Voigt" <Peter.Voigt1 at gmx.net>
To:  user at skolelinux.de
Date: Today 19:40:43

Hallo Andreas,

hier nähere Erläuterungen zu dem Problem, den Entwicklungsprozeß der Live-CD
beschleunigen zu können.

Die Life-CD bootet wie folgt:

- Das Bios lädt laut El Torrito Standard ein Boot-Image von der CD in den
Speicher.

- Das Bios startet die ersten 512 Byte so, als ob sie aus dem MBR der
Festplatte stammen.

- In den ersten 512 Byte befindet sich syslinux.

- Syslinux lädt den Kernel und Initrd.

- Der Kernel startet linuxrc.

- Linuxrc mountet das Life-Filesystem.

Das Life-Filesystem entspricht dem Schnappschuß eines laufenden
Linux-Filesystems. Es ist auf der CD nur in Form eines komprimierten
Iso-Abbildes als einzelne Datei vorhanden. Es wird als loop-device (genauer
gesagt
cloop-device, 'c' steht für 'compressed') gemountet.  

Dieser Bootprozeß bestimmt indirekt den Entwicklungsprozeß:

1. Das Life-Filesystem wird von den restlichen Dateien isoliert, entpackt
und auf der Festplatte gespeichert. Das genaue Verfahren wird auf den
einschlägigen Knoppix-Seiten beschrieben (Stichwort Knoppix Remastering).

2. Das entpackte Filesystem wird per chroot aktiviert.

3. Die gewünschten Änderungen im Life-Filesystem werden vorgenommen.

Ab hier kehrt sich der Prozeß wieder um.

4. Das geänderte Life-Filesystem wird mit mkisofs wieder in ein Iso-Abbild
überführt.

5. Das Iso-Image wird mit create_compressed_fs (entstammt Knoppix) wieder
gepackt. Aus (derzeit) 1,1 GB werden 450 MB.

6. Das gepackte Filesystem wird wieder mit dem Boot-Image, dem Kernel und
der Initrd zusammen gelegt.

8. Mit mkisofs wird ein Iso-Image über alles erzeugt.

9. Das letzte Image stellt die Live-CD dar und kann auf CD gebrannt werden.

Das Komprimieren laut Schritt 5 benötigt die meiste Zeit, auf dem
Entwicklungsrechner etwa eine Stunde. Diesen Schritt gilt es zu umspielen.

Ad hoc bietet sich an, das bootimage der Live-CD so auf der Festplatte zu
speichern, dass der darauf befindliche Bootlaoder (syslinux) gestartet
werden kann, z.B. über lilo aus einer anderen Linuxpartition.

Laut syslinux-Dokumentation ist das Booten von Festplatte möglich. Zum
Laufen bringen konnte ich das bisher nicht :-(.

In linuxrc habe ich bereits die Stelle lokalisert, an welcher das
komprimierte Life-Filesystem von der CD gemountet wird. Das kann geändert
werden, um das nicht gepackte Life-System der Festplatte zu mounten.

Im Ergebnis hätte man ein Booten von der Festplatte, das dem Booten von CD
entspricht, ohne das zeitaufwendige Komprimieren zu benötigen.

Grüße
Peter Voigt




More information about the Linux mailing list