Optionales Packet bootCD v.0.2 für fli4l 2.0.3a

Inhaltsverzeichnis:

  1. Einleitung
  2. Vernderte Dateien (gegenber fli4l Grundpaket)
  3. Benutzung
  4. Brennen der CD
  5. Fragen und Antworten (FAQs)
  6. Verwendete Dritt-Programme
  7. Verweise

1. Einleitung

Dieses optionale Paket für das fli4l Projekt bietet einige Skripte sowie einige Dateiänderungen, um statt einer Bootdiskette eine bootbare CD zu erstellen, mit der beispielsweise ein ISDN-Router betrieben werden kann.

Außer der Tatsache, daß eine CD erheblich mehr Speicherplatz als eine Diskette bietet, kommt hinzu, daß das Booten von einem relativ neuen CD-Laufwerk in der Regel auch erheblich schneller vonstatten geht, z.B. einige 10-30 Sekunden auch bei großen Installationen statt of mehreren Minuten selbst bei minimalistischen Disketten-Installationen.

Das Paket enthält ein etwas modifiziertes Root Dateisystem, welches die benötigten Module enthält um auf die Daten der CD zuzugreifen (ide-cd.o bzw.cdrom.o für den eigentlichen Zugriff auf das CD Laufwerk und isofs.o für das darauf verwendete Dateisystem). Gegenwärtig werden nur ATAPI Laufwerke unterstützt (also solche, die am IDE-Bus angeschlossen werden) und keine SCSI-Laufwerke, da diese aufgrund der Vielzahl verschiedener SCSI-Kontroller erfordern würden, daß für jeden unterstützten Kontroller ein eigenes Module vorhanden sein müßte, was das Dateisystem wahrscheinlich sprengen würde.

Darüberhinaus sind ATAPI-Laufwerke im Vergleich zu SCSI die billigere Alternative, was unter dem Gesichtspunkt, daß fli4l oft auf relativ alter, ausgedienter Hardware seinen Dienst versieht, besomnderes Gewicht erhält. Wer also das Booten von CD beabsichtigt und sich stolzer Besitzer eines SCSI CD-Laufwerks nennet, sollte besser in Erwägung ziehen, irgenwo für wenige Euro ein ausgedientes ATAPI LAufwerk zu erwerben, statt das Root Dateisystem mit SCSI-Modules zu überfrachten.

2. Veränderte Dateien

Die Dateien in diesem Archiv sind angeordnet entsprechend dem Verzeichnisbaum des fli4l Projekts, allerdings wurden einige modifiziert:

img/rootfscd.gz enthält die benötigten Module für den Zugriff aufs CD Laufwerk, ein angepasstes Startscript (/etc/rc) und eine zusätzliche Datei zum Laden der Module (/etc/modules.conf)
img/syslinuxcd.cfg sylinux Konfiguration mit zusätzlicher Angabe des CD-Laufwerks
opt/etc/rc.local angepasst in Hinblick auf Einbindung der CD in die /etc/fstab
mkclean.{sh|.bat} Aufräumskripte, die auch die generierten CD Abbilddateien löschen


Wenn dieses Paket zusammen mit dem hd Paket verwendet werden soll (um eine anschließende Festplatten-Installation durchzuführen), so muß ebenfalls das Archiv hd_update.zip im Hauptverzeichnis entpackt werden. Es führt notwendige Änderungen an Dateien des hd Pakets durch und muß nach diesem entpackt werden.
config/hd.txt Neue Option HDINSTALL_MOUNT_BOOT welche angibt, ob und wie das Boot-Laufwerk bei einer Festplatten-Installation in den Dateibaum eingebunden werden soll. (Für eine Festplatten-Installation muß MOUNT_BOOT in der Basiskonfiguration etc/base.txt zwingend auf 'ro' oder 'rw' gesetzt werden, da ansonsten die notwendigen Dateien nicht gefunden werden. Falls dies aber nach der Installation auf Festplatte nicht mehr gewünscht wird, kann durch Setzen von HDINSTALL_MOUNT_BOOT='no' erreicht werden, daß diese vorläufige Einstellung überschrieben wird.)
config/hd.txt prüft ebenfalls die neue Option HDINSTALL_MOUNT_BOOT
opt/hd.txt CD module wurden entfertm da sie sich bereits auf dem Root Dateisystem befinden müssen, um sofort nach dem Booten zur Verfügung zu stehen.
opt/files/usr/sbin/setup läßt auch Installation von Boot CD auf Festplatte zu.


3. Benutzung

  1. Nach dem Entpacken des Archivs in den Dateibaum von fli4l, müssen die Konfigurationsdateien wie üblich bearbeitet werden.

  2. (Optional)
    Soll das hd Paket mitverwendet werden, muß das Archiv hd_update.zip ebenfalls entpackt und konfiguriert werden, nachdem das Paket hd entpackt wurde. Einige Dateien werden dabei überschrieben, deswegen sollten sie vorher gesichert werden.

    Es existiert ein zusätzlicher Parameter HDINSTALL_MOUNT_BOOT='no' (oder 'rw' oder 'ro'),

    welcher wie bereits oben beschrieben Priorität vor dem Parameter MOUNT_BOOT in config/base.txt besitzt. Der Grund hierfür ist, daß bei der Installtion auf Festplatte der zwingend MOUNT_BOOT='ro' oder MOUNT_BOOT'='rw' notwendig ist, damit benötigte Dateien gefunden werden können. Die generierte Konfigurationsdatei befindet sich ebenfalls auf dem von diesem Parameter betroffenen Dateisystem und würde einfach mitkopiert werden, so daß es nicht möglich wäre, das Boot-Dateisystem nach der Installation auf Festplatte aus dem globalen Dateisystem auszuschließen. Da HDINSTALL_MOUNT_BOOT den Parameter MOUNT_BOOT überschreibt, können unterschiedliche Verhaltensweisen vor und nach der Installation auf Festplatte gewählt werden.

  3. (Optional)
    Falls ein bestimmtes CD Laufwerk verwendet werden soll, muß der Parameter "cd=auto" in img/syslinuxcd.cfg angepaßt werden:

    cd=/dev/hda für das 1. Laufwerk (master) am 1. IDE Anschluß,
    cd=/dev/hdb für das 2. Laufwerk (slave) am 1. IDE Anschluß,
    cd=/dev/hdc für das 1. Laufwerk (master) am 2. IDE Anschluß,
    cd=/dev/hdd für das 2. Laufwerk (slave) am 2. IDE Anschluß.
    Ansonsten wird das CD Laufwerk automatisch gesucht in der Reihenfolge hdc, hdb, hdd, hda

  4. Unter Linux muß anschließend das Skript mkcd.sh, unter Windows das Skript mkcd.bat aufgeführt. Diese Skripte überprüfen zunächst wie gewohnt die Angaben in den Konfigurationsdateien und erstellen die Dateien, die für eine Disketteninstallatin notwendig sind.

    Hinweis:Hierfür wird eine formattierte 1.44MB Diskette benötigt

    Von dieser Diskette wird anschließend ein Diskettenabbild gelesen (welches auf bootfähigen CDs notwendig ist). Zusammen mit den anderen benötigten Dateien wird daraus ein CD Abbild erstellt, welches bereits die komplette bootbare CD beschreibt.

  5. Das Skript fragt schließlich, ob das erstellte CD Abbild unmittelbar auf einen CD-Rohling geschrieben werden soll. Details hierzu siehe weiter unten unter Brennen der CD.

Unter Linux wird nach einmaligem Ausführen von mkcd.sh keine Diskette mehr benötigt, da das beim ersten Aufruf erzeugte Abbild direkt verwendet wird, indem es as sog. Loopback-Device gemountet werden kann. Hierzu sind allerding entsprechdende (root) Rechte und Kernelunterstützung notwendig.

Unter Windows wird in jedem Fall immer eine Startdiskette erzeugt, weil die oben beschriebenen Verfahren nicht unterstützt werden.

Die Skripte unterstützen drei optionale Parameter wie folgt:

[-g] Erzwingt die Generation eines Diskettenabbildes, [-s] Dies erstellt eine "langsame, dumme, aber sichere" Version des Boot-Loaders und kann verwendet werden für Maschinen, die Probleme beim Booten mit der Normalversion haben.
[config-directory] Dies gibt ein alternatives Verzeichnis an, aus dem die Konfigurationsdateien gelesen werde sollen statt der Standardeinstellung "config".

4. Brennen der CD

Das Erstellen des CD Abbildes sowie das eigentliche Brennen werden durch externe Programme anderer Autoren durchgeführt, für Details siehe Verwendete Dritt-Programme.

Eine Liste der unterstützten CD Recorder findet man auf Jörg Schilly's page, die dort aufgeführt wird.

Nachem mit einem der Skripte ein CD Abbild erstellt wurde, wird mit Hilfe des Programms CDRECORD eine Liste aller gefundenen Laufwerke angezeigt, z.B. wie folgt
scsibus1:
        0,0,0   100) '        ' 'OME-W141        ' '1.40' Removable CD-ROM
        0,1,0   101) 'DM126D  ' 'DVDROM '01/01/29' '1.1C' Removable CD-ROM
	:
	:
und das zu verwendende Laufwerk abgefragt. Hier muß die die dreistellige Ziffernkombination wie z.B. "0,0,0" angegeben werden.

Falls keine CD gebrannt werden soll, kann man hier durch Drücken von Ctr-C das Skript abbrechen und das Abbild später brennen. Vor dem Brennen wir in jedem Fall zunächst eine Simulation durchgeführt und erst nach erfolgreichem Verlauf dieser der eigentliche Brennvorgang nach nochmaliger voheriger Achfrage gestartet. Falls die Simulation nicht erfolgreich war, wir das Skript abgebrochen.

5. Fragen und Antworten

F: Ich bekomme immer den Fehler "Windows konnte keinen exklusiven Zugriff auf das Diskettenlaufwerk erlangen", was mache ich falsch?
A: Du benutzt wahrscheinlich Windows 2000 oder Windows NT. Dort sind die Zugriffskontrollen strenger als beispielsweise unter Windows 95/98/XP(?). Ich weiss selbst nicht genau, woran es liegt, das dieser Fehler auftritt, es tritt jedoch immer beim Installieren von syslinux auf, das ist der Bootloader, der die Diskette erst ueberhaupt bootfaehig macht. Ich habe festgestellt, dass es aber nicht immer auftritt. Eine Loesung ist also, das Fenster immer wieder mit Abbrechen wegzudruecken und es erneut zu versuchen, solange, bis es klappt. Falls jemand eine Loesung fuer dieses Problem findet, bitte Mail an mich : a.pogoda@web.de Weiterhin scheint dies weniger haufig vorzukommen, wenn mkcd.bat nicht ueber eine Klick auf das Icon aufgerufen wird, sondern in einer DOS- Box. Dies bietet auch den Vorteil, dass man die optionalen Parameter von mkcd.bat benutzen kann. Eine andere Loesung besteht darin, Windows 95 oder 98 zu benutzen.

F: Ich bekomme immer die Meldung "Error writing or reading the floppy disk maybe the disk is full-try to select fewer options in configuration and try again", was mache ich falsch ?
A: Wahrscheinlich benutzt Du noch die erste Version der bootCD-Pakets. Dort gab es den Fall, dass (unter Windows 2000 jedenfalls) das Diskettenabbild beim ersten Aufruf von mkcd.bat im Nur-Lese-Modus erzeugt wurde und bei nachfolgenden Aufrufen nicht ueberschreiben werden konnte. Eine Loesung ist es, die neue Version herunterzuladen, oder die Datei "img/cd/boot.img" vor dem Aufruf von "mkcd.bat" selbst zu loeschen.

F: Da auf der CD so viel mehr Platz ist als auf einer Floppy habe ich 1000 optionale Pakete mitinstalliert. Jetzt reicht beim Start der Platz nicht mehr auf der ramdisk - was kann ich tun ?
A: Wahrscheinlich ist die Variable "RAMSIZE" in der Datei "config/base.txt" zu klein. Sie gibgt die Groesse des dateisystems an, in welches die optionalen Pakete entpackt werden. Auf die dort entpackten Dateien werden dann auf dem Hauptdateisystem (rootfs) symbolische Verweise eingerichtet. In der Regel reicht es also aus, diese Variable entsprechend groesser zu setzten, z.B. auf 4096 (4MB), 8192 (8MB) usw. In manchen Faellen kann aber auch das nicht mehr ausreichen, wenn entweder eine grosse Anzahl symbolischer Verweise selbst die Kapazitaet des rootfs sprengt, oder ein Paket sehr viele Dateien selbst im rootfs anlegt. Dannn muss ein vergroessertes rootfs verwendet werden. Das Skript "mkcd.{bat.sh}" hat dazu einen Parameter "-l", der statt des normalen, eine 32MB-Version des rootfs auf die CD kopiert. Natuerlich muss der Rechner bei sehr grossen Konfigurationen auch ueber entsprechend viel Speicher verfuegen, also ca. 64MB oder mehr. Falls das normale rootfs zu klein ist, die 32MB Version aber schon den Speicher sprengt, bleibt keine andere Wahl als ein eigenes rootfs zu erzeugen. Die FAQs auf der fli4l-Homepage (http://fli4l.sf.net) enthalten dazu Anleitungen.

F: Wieso wird immer dieses Diskettenabbild geschrieben, kann man das nicht vermeiden.
A: Ja und nein - PCs konnten nicht schon immer von CD booten. Als der Original PC Anfang der 80er Jahre des vergangenen Jahrhunderts auf den Markt kan, war die CD noch nicht mal erfunden. Urspruenglich konnte ein PC nur von Disketten booten. Das Booten von CD ist daher immer eine Simulation des Bootens von Diskette. Dazu es noetig, dass die CD, von der gebootet werden soll, ein sog. bootimage enthaelt. Dies ist eine 1:1 Kopie einer bootfaehigen Diskette. Es wird also in der Regel immer erst solch eine Diskette erzeugt. Vor dieser wird dann das 1:1 Abbild erzeugt, welches dann in einen speziellen Bereich des CD-Abbildes uebernommen wird. Schliesslich wird das CD-Abbild auf die CD geschrieben. Beim Booten liest das BIOS des PCs dieses Abbild von der CD, laedt es in den Speicher und behandelt es wie eine Diskette. Unter Windows gibt es keine einfache Moeglichkeit dies zu umgehen. Unter Linux gibt es die Moeglichkeit, auf Diskettenabbilder (dies sind ganz normale, ca. 1.4MB grosse Dateien) per sog. loopback-device zuzugreifen. Dies wird von der Linux-Version des Skripts auch durchgefuehrt, dazu sind jedoch Superuser-Rechte erforderlich. Unabhaengig davon wird beim ersten Aufruf auch unter Linux ein solches Abbild benoetigt. Bei wiederholten Aufrufen wird dann diese zuerst erstellte DAtei verwendet, falls die Rechte ausreichen.

F: Wenn zum Erstellen der CD ein Diskettenabbild noetig ist, wie kann es dann sein, dass auf die entgueltige CD mehr draufpasst als auf der Diskette Platz war.
A: Nicht alles, was zum Starten von fli4l noetig ist, muss sich auch auf dem Diskette nabbild befinden, damit gebootet werden kann. Zum Booten sind eigentlich nur der Bootloader syslinux, der Linux Kernel und das rootfs zwingend notwendig. Diese Dateien sind aber unabhengig von der Groesse der Installation zusammen immer rund 1,2 MB gross - passen somit also locker auf eine Diskette. Die Groesse des Archivs opt.tgz dagegen haengt betraechtlich vom gewaehlten Installationsumfang ab - sie kann von einigen hundert kB bis zu vielen zig MB reichen. Gluecklicherweise muss sie sich nicht auf dem Diskettenabbild befinden, wohl aber auf der CD. Dort sind dann aber einige Hundert MB frei, was auch fuer sehr umfangreiche Konfigurationen ausreichen sollte.

6. Verwendete Dritt-Programme

Einige Fuktionen wurdem mit Hilfe Programme Dritter realisiert, z.B. das Erstellen des CD Abbildes, das eigentliche Brennen der CDs sowie die Benutzerinteraktion der Skripte
  1. CDRTOOLS - binäre windows version 1.11a12 (Autor: Jörg Schilling), siehe

    http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private
    für die jeweils aktuelle Version diese Pakets. CDRTOOLS unterliegen der GPL, siehe details hier.
    Die ausführbaren Dateien von CDRECORD sowie MKISOFS liegen unter windows/ directory. Eine Liste unterstützter CD Laufwerke kann man auf der Seite des Autors finden.

  2. GETVAR.EXE - aus den citrix multi tools (Author: Eric Thurber), siehe

    http://www.oregonclassifieds.net
    für die jeweils aktuelle Version diese Pakets.

7. Verweise

  1. http://fli4l.sf.net/
  2. http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private
  3. http://www.oregonclassifieds.net/



Autor: A. Pogoda
Datum: 25. Feb. 2002
Letzte Aenderung: 05. Apr. 2002