Aus Linux-Magazin 07/2003

Timos Rescue CD Set: Bootfähige Debian-Rettungs-CD im Eigenbau

Eine bootfähige, an das eigene System angepasste Rettungs-CD bauen ist kein triviales Unterfangen. Mit dem hier vorgestellten Toolset kommen aber auch weniger erfahrene User schnell zu einem ansehnlichen Ergebnis. Debian-Kenntnisse sind nicht erforderlich.

Welcher Linux-User kennt das Problem nicht: Man kompiliert einen neuen Kernel und kopiert ihn in das Verzeichnis »/boot« über den alten. Doch während der Rechner schon herunterfährt, reift so langsam der Gedanke, es wäre vielleicht besser gewesen, noch vor dem »halt«-Befehl einmal Lilo auszuführen. Pech gehabt. Also wird der Schreibtisch durchwühlt. Irgendwo muss ja noch die Bootdiskette von der Installation liegen. Schade nur, dass der Kernel auf der Diskette die SCSI-Karte nicht unterstützt. Da hängt nun mal leider die Festplatte dran, auf der das ganz nach eigenem Geschmack zusammengestellte Linux liegt. Murphy lässt grüßen.

So eine Situation war vor zwei Jahren der Anlass, dieses Projekt zu starten. Am Anfang sollte es nur eine eigene Bootdiskette werden. Doch für alle nützlichen beziehungsweise wünschenswerten Tools, war auf einer Diskette einfach zu wenig Platz. Also musste es eine bootfähige CD sein. Schnell entstanden ein, zwei Skripte, die zum Download auf Sourceforge landeten, nach der Devise: Vielleicht kann es ja noch jemand anderes verwenden. Heute ist daraus ein ganzes Toolset geworden, mit dem jeder Anwender ohne viel Aufwand eigene Boot-CDs erstellen kann; auch die Scheckkarten-Rettungs-CD des Linux-Magazins ist damit erstellt worden.

Das Toolset basiert auf der Debian- GNU/Linux-Distribution, alle Skripte sind auch unter dieser Umgebung getestet worden. Aber auch mit den meisten anderen Distributionen gibt es keine größeren Probleme.

Systemkonfiguration

Nachdem das Archiv von der Projekt-Website auf Sourceforge[1] heruntergeladen ist, entpackt der Befehl »tar xpjf timos_rescue_cd_set-0.9.8.tar.bz2« das Toolset in ein eigenes Verzeichnis mit der Bezeichnung »timos_rescue_cd_ set-0.9.8«. Wichtig ist, dass der Tar-Befehl unter der User-ID »root« ausgeführt wird, da ansonsten die Berechtigungen nicht stimmen und sich keine Device- Files erstellen lassen

Ein Ziel des Toolsets liegt in der einfachen Handhabung und Anpassung. Aus diesem Grund ist die Verzeichnisstruktur, die letztlich das Rettungssystem auf der CD darstellen wird, im Verzeichnis »_system/_cd« offen zugänglich und kann den eigenen Wünschen weitgehend angepasst werden.

Aber keine Angst, wer nicht allzu exotische Wünsche hat, muss keine Änderungen direkt am System vornehmen. Für viele grundlegende Einstellungen gibt es entsprechende Parameter in der Datei »config_system«, die dann das Skript »system_config« überträgt. Hier lassen sich unter anderem die Netzwerkkonfiguration oder das Login-Passwort einstellen.

Im nächsten Schritt ist die Datei »config_build« anzupassen. Wichtig sind hier vor allem die beiden Parameter »BASE« und »SCSIDEV«, die angeben, wo das Toolset installiert wurde und welches CD-Laufwerk als Brenner dienen soll. Ein kleiner Tipp hierzu: Der Befehl »cdrecord -scanbus« listet alle vorhandenen Laufwerke und deren SCSI-Adressen auf. Soll kein CDRW-Medium zum Einsatz kommen, wird der Parameter »SCSIBLANK« auskommentiert, da sonst der Brennvorgang mit einer Fehlermeldung abbricht. Das waren schon die wichtigsten Parameter, weitere Einstellmöglichkeiten folgen später.

Paketverwaltung

Debian GNU/Linux verfügt mit »apt« über ein sehr ausgefeiltes Paketmanagement-Tool: Ein wichtiges Feature von »apt« ist es, Pakete direkt aus dem Internet herunterzuladen und zu installieren. Da das Rettungssystem auf der Debian Distribution aufbaut, können also sehr komfortabel Pakete eingespielt, entfernt oder ganze Systeme auf den neuesten Stand gebracht werden. Damit auch der Nicht-Debian-Kundige ohne großes Vorwissen sofort mit der Paketauswahl beginnen kann, liegen in dem Unterverzeichnis »utils« einige nützliche Skripte bereit, die als Apt-Wrapper dienen. Zu beachten ist dabei, dass man die Skripte nur direkt im »utils«-Verzeichnis ausführen kann.

Soweit es möglich ist, sollte das System auch nur auf diesem Weg angepasst werden. Man erhält so ein fast unverändertes Debian GNU/Linux auf CD. Das hat den großen Vorteil, dass das Rettungssystem auf einer sehr ausgereiften Distribution beruht. Alle eingespielten Pakete arbeiten also ohne Probleme zusammen.

Das Skript »pkg_install« installiert neue Pakete im System. Um jetzt zum Beispiel den Editor »joe« mit auf die Rettungs-CD zu bringen, ist einfach der folgende Befehl im »utils« Verzeichnis einzugeben:

./pkg_install joe

Wer ein Paket wieder entfernen möchte, arbeitet analog zu »pkg_install«, nur mit dem Skript »pkg_remove«. Einen Überblick über alle für die Installation zur Verfügung stehenden Pakete liefert »pkg_list«, eine Liste der bereits installierten Pakete erhält man mit dem Befehl »pkg_show_installed«.

Als letztes, aber vielleicht auch wichtigstes Tool aus der Pkg-Reihe gibt es noch »pkg_update«. Es aktualisiert die Paketbeschreibungen und spielt Updates ein, sofern sie vorliegen. »pkg_update« sollte vor jeder CD-Erstellung aufgerufen werden, um eventuell vorhandene Bugs und Sicherheitslücken bereits im Vorfeld zu beheben. Der eingeweihte Debian-User wird wahrscheinlich nur müde lächeln, wenn er hört, dass ein Update sogar über Release-Grenzen hinweg möglich ist. Der eine oder andere Nicht-Debianer ist aber sicherlich erstaunt darüber.

Komprimierung der
CD

Es gibt eine Reihe von Gründen, die für eine Komprimierung der Daten auf der Rettungs-CD sprechen. Zum einen gibt es die Möglichkeit, die CD vollständig in den Arbeitsspeicher zu kopieren. Das hat den Vorteil, dass das CD-ROM-Laufwerk nicht blockiert ist und zum Brennen benutzt werden kann. Allerdings wird auch entsprechend viel RAM benötigt. Die Komprimierung reduziert den Speicherbedarf etwa um den Faktor 2, sodass das Defaultsystem locker auf einem Rechner mit 128 MByte Speicher gestartet und in den Speicher geladen werden kann. Im Laufe der Zeit sind verschiedene Methoden zur Komprimierung in dem Toolset integriert worden, jede mit speziellen Vor- und Nachteilen.

Umrüstung auf Zisofs

Zunächst bietet sich Zisofs an, das über den Parameter »COMPRESSEDFS« in der Datei »config_build« wählbar ist. Es ist eine Erweiterung des ISO9660-Dateisystems und wird von den neueren Kernelversionen unterstützt. Leider ist dazu eine gepatchte Mkisofs-Version [4] nötig; die Version, die die meisten Distribution verwenden, kann mit den komprimierten Dateien nicht umgehen. Zisofs komprimiert die Dateien auf Dateisystemebene, was einen gewissen Overhead zur Folge hat. Demzufolge hat Zisofs auch den schlechtesten Komprimierungsfaktor.

Overhead sparen mit Cramfs

In dieser Hinsicht besser ist »cramfs«, das über den Parameter »CRAMFS« in der Datei »config_build« zu aktivieren ist. Es komprimiert die Dateien ebenfalls auf Dateisystemebene, erzeugt aber weniger Overhead. Den gewonnenen Speicherplatz muss man sich jedoch mit einigen Nachteilen erkaufen: Maximale Dateigröße ist 16 MByte, das gesamte Dateisystem darf nicht viel größer als 256 MByte sein und Benutzer- und Gruppen-IDs sind auf 8 Bit beschränkt.

Als bisher letzte Methode kam das »cloop«-Modul[7] hinzu. Der entsprechende Parameter ist »CLOOP«. Es komprimiert das Dateisystem auf Blockebene und wird, wie der Name schon andeutet, ähnlich wie ein Loop-Device benutzt. Mit ihm komprimierte Dateisysteme haben den besten Komprimierungsfaktor, allerdings ist das »cloop«-Modul jedes Mal neu zu kompilieren, wenn der Kernel ausgetauscht wurde.

Die CD erstellen

Das System ist jetzt so weit konfiguriert und es ist an der Zeit, die erste CD zu erstellen. Das geht mit den beiden Skripten »build« und »system_config«. Letzteres überträgt die Werte aus der Datei »config_system« in den Verzeichnisbaum »_system/_cd«, »build« erstellt anschließend die eigentliche CD. Zu erwähnen ist noch, dass das Build-Skript unter anderem das Tool »mkcramfs« aufruft. Auf einem Debian-System findet es sich in dem Paket »cramfsprogs«. Wenn es nicht bereits geschehen ist, sollte dieses Paket also noch vor der eigentlichen Erstellung installiert werden.

Jetzt muss nur noch der CD-Rohling in den Brenner eingelegt werden – und es kann auch schon losgehen:

./system_config
./build

Wenn es keine Probleme gegeben hat, liegt bereits die frisch gebrannte CD im Laufwerksschacht des Brenners.

Wer nicht gerne ohne sein Linux aus dem Haus geht, der kann mit ein bisschen Handarbeit die CD auch auf CD-Rohlinge im Visitenkartenformat brennen. Eine Schritt-für-Schritt-Anleitung findet sich unter[2]. Wem das zu viel Arbeit ist, hat eine andere Möglichkeit: Für jeden neuen Abonnenten des Linux-Magazins gibt es eine Rettungs-CD.

»config_build« für Fortgeschrittene

Es gibt eine Reihe weiterer Parameter, die man in der Datei »config_build« ändern kann. Im Folgenden geht es etwas genauer um die Punkte »ISOIMAGEONLY«, »COMPRESSEDFS« und »BOOTLOADER«.

Der Parameter »ISOIMAGEONLY« beeinflusst, ob eine CD tatsächlich gebrannt oder ob lediglich ein ISO9660-Image erzeugt wird. Das Image liegt dann unter dem Namen »rescuecdiso« im Basisverzeichnis und kann zum Beispiel direkt als CD-ROM-Laufwerk für VMware[3] dienen. Auf diese Weise braucht man nicht einmal mehr den Rechner neu zu starten, um das System zu testen. Ein Reset von VMware genügt.

Mit dem Parameter »BOOTLOADER« kann man alternativ zwischen Syslinux, Isolinux, Grub und Lilo wählen. Jeder Bootloader hat seine speziellen Vor- und Nachteile, es ist schwer zu sagen, welcher am besten geeignet ist. Einen kurzen Überblick hierzu gibt der Kasten “Bootloader à la Carte”. Am einfachsten zu handhaben ist Isolinux, das immer dann zu bevorzugen ist, wenn man sicher sein kann, dass die Hardware keine Probleme bereitet.

Alle Bootloader außer Isolinux benötigen ein Disketten-Image. Das Bios spricht es dann gemäß der El-Torito-Spezifikation als Diskettenlaufwerk an. Die Größe des Image kann entweder 1,44 MByte oder 2,88 MByte betragen, sie wird über den Parameter »FLOPPYSIZE« gesetzt. Der Vorteil eines 2,88 MByte großen Floppy-Image liegt auf der Hand: Der Kernel hat doppelt so viel Platz und kann somit mehr Hardware unterstützen. Die Kehrseite der Medaille: Nicht jedes Bios implementiert die vollständige El-Torito-Spezifikation, 2,88 MByte große Floppydisk-Images booten deshalb nicht auf jedem System.

Bootloader à
la carte

Es gibt einige Bootloader, die durch den Parameter »BOOTLOADER« in der Datei »config_build« ausgewählt werden können. Jeder hat besondere Vor- und Nachteile, die in Tabelle 1 zusammengestellt sind.

Abgesehen von Isolinux booten alle Bootloader mit Hilfe von Bootdisk-Images und der El-Torito-Spezifikation von 1994, nach der 2,88 MByte große Images möglich sind. Leider hält sich bei weitem nicht jedes heute anzutreffende Bios an diesen Standard, so booten 2,88 MByte große Images nicht immer auf jedem System.

Abbildung 1: Schlicht, schön, schwarz - der Login-Bildschirm. Das Konzept erlaubt aber auch X-Window.

Abbildung 1: Schlicht, schön, schwarz – der Login-Bildschirm. Das Konzept erlaubt aber auch X-Window.

Kernel backen

Damit sich das eingangs beschriebene Szenario nicht wiederholt, gibt es die Möglichkeit, selbst gebaute Kernel zu verwenden, sie müssen jedoch einige Bedingungen erfüllen. Zu nennen sind dabei die fest einkompilierte Unterstützung für SCSI-CD-ROM-Laufwerke, die IDE-SCSI-Emulation, die Initial RAM-Disk, Loop-Devices und die Dateisysteme »devs«, »ramfs«, »tmpfs«, »cramfs« sowie ISO9660 mit aktivierter Option »zisofs«. Die Unterstützung für IDE-CD-ROM-Laufwerke darf hingegen nicht einkompiliert sein.

Damit stehen alle CD-ROM-Laufwerke über die IDE-SCSI-Emulation zur Verfügung. Listing 1 zeigt noch einmal alle relevanten Einträge der Datei »/usr/src/ linux/.config«.

Nachdem der neue Kernel fertig kompiliert ist, wird er in das Verzeichnis »_system/_kernel« kopiert. Der Symlink »vmlinuz« im selben Verzeichnis ist jetzt noch entsprechend anzupassen, um auf den neuen Kernel zu verweisen.

Das Verzeichnis »_system/_kernel/modules/2.4.20« wird durch die aktuellen Module ersetzt und alle »modules.*«-Dateien sind in das Verzeichnis »_system/ _cd/var/files« zu verschieben. Jetzt werden nur noch die entsprechenden Symlinks im Verzeichnis »_system/_kernel /modules/2.4.20« angelegt – und die nächste CD bootet bereits mit dem eigenen Kernel. (uwo)

Listing 1:
Kernel-Optionen

01 # CONFIG_BLK_DEV_IDECD is not set
02 CONFIG_BLK_DEV_IDESCSI=y
03 CONFIG_BLK_DEV_RAM=y
04 CONFIG_BLK_DEV_INITRD=y
05 CONFIG_DEVFS_FS=y
06 CONFIG_TMPFS=y
07 CONFIG_ISO9660_FS=y
08 CONFIG_ZISOFS=y
09 CONFIG_RAMFS=y
10 CONFIG_CRAMFS=y
11 CONFIG_BLK_DEV_LOOP=y
12 CONFIG_BLK_DEV_SR=y

Tabelle
1: Vor- und Nachteile verschiedener Bootloader

 

Bootloader

Vorteil

Nachteil

Syslinux

Basiert auf Bootdisk-Images, bootet auf fast jedem System. Wenn
die CD auf möglichst vielen Rechnern laufen soll, ist es
zusammen mit 1,44-MByte-Bootdisk-Images die erste Wahl.

Grub

Sieht toll aus, hat eine Kommandozeile, mit der man auch
nicht-konfigurierte Systeme booten kann.

Benötigt etwas mehr Platz als Syslinux.

Lilo

Lilo kennt jeder.

Es soll manchmal Probleme mit Lilo-basierten
El-Torito-Bootdisk-Images geben.

Isolinux

Der einzige Bootloader, der nicht auf die
El-Torito-Spezifikation angewiesen ist. Keine
Größenbeschränkung bei Kernel-Image und Inital
RAM-Disk.

Isolinux bootet nicht auf allen Systemen.

Infos

[1] Timos Rescue CD Set: [http://rescuecd.sourceforge.net]

[2] Die CD im Visitenkartenformat: [http://rescuecd.sourceforge.net/README.bbc]

[3] VMware: [http://www.vmware.com/de/]

[4] Zisofs: [ftp://ftp.kernel.org/pub/linux/utils/fs/zisofs/RPMS/i386/]

[5] Roll your own Linux Rescue or Setup CD: [http://www.phenix.bnl.gov/~purschke/RescueCD/]

[6] Bernhard Bablok, “Nicht ohne mein Linux”, Linux-Magazin 07/01: [https://www.linux-magazin.de/Artikel/ausgabe/2001/07/bootimages/bootimages.html]

[7] Cloop: [www.knopper.net/download/knoppix/]

Der
Autor

Timo Benk studiert Informatik an der FH Worms. Er nutzt seine freie Zeit, um an diversen Projekten zu arbeiten, unter anderem an Timos Rescue CD Set sowie an Libsmtp++, einer Client-seitigen SMTP-Implementation. Seine allererste Linux-Box war eine Slackware-Distribution mit einem 1.2er Kernel.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben