
Optionales Packet bootCD v.0.3 fuer fli4l 2.0.4

Inhaltsverzeichnis:

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


Einleitung

Dieses optionale Paket fuer das [1]fli4l Projekt bietet einige Skripte
sowie einige Dateiaenderungen, um statt einer Bootdiskette eine
bootbare CD zu erstellen, mit der beispielsweise ein ISDN-Router
betrieben werden kann.
Ausser der Tatsache, dass eine CD erheblich mehr Speicherplatz als eine
Diskette bietet, kommt hinzu, dass das Booten von einem relativ neuen
CD-Laufwerk in der Regel auch erheblich schneller vonstatten geht,
z.B. einige 10-30 Sekunden auch bei grossen Installationen statt of
mehreren Minuten selbst bei minimalistischen Disketten-Installationen.
Das Paket enthaelt ein etwas modifiziertes Root Dateisystem, welches
die benoetigten Module enthaelt um auf die Daten der CD zuzugreifen
(ide-cd.o bzw.cdrom.o fuer den eigentlichen Zugriff auf das CD Laufwerk
und isofs.o fuer das darauf verwendete Dateisystem). Gegenwaertig werden
nur ATAPI Laufwerke unterstuetzt (also solche, die am IDE-Bus
angeschlossen werden) und keine SCSI-Laufwerke, da diese aufgrund der
Vielzahl verschiedener SCSI-Kontroller erfordern wuerden, dass fuer jeden
unterstuetzten Kontroller ein eigenes Module vorhanden sein muesste, was
das Dateisystem wahrscheinlich sprengen wuerde.
Darueberhinaus sind ATAPI-Laufwerke im Vergleich zu SCSI die billigere
Alternative, was unter dem Gesichtspunkt, dass fli4l oft auf relativ
alter, ausgedienter Hardware seinen Dienst versieht, besomnderes
Gewicht erhaelt. Wer also das Booten von CD beabsichtigt und sich
stolzer Besitzer eines SCSI CD-Laufwerks nennet, sollte besser in
Erwaegung ziehen, irgenwo fuer wenige Euro ein ausgedientes ATAPI
LAufwerk zu erwerben, statt das Root Dateisystem mit SCSI-Modules zu
ueberfrachten.

Veraenderte Dateien (gegenueber fli4l Grundpaket)

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

img/rootfscd.gz:
enthaelt die benoetigten Module fuer den Zugriff aufs CD
Laufwerk, ein angepasstes Startscript (/etc/rc) und eine zusaetzliche
Datei zum Laden der Module (/etc/modules.conf)

img/syslinuxcd.cfg:
sylinux Konfiguration mit zusaetzlicher Angabe des CD-Laufwerks

opt/etc/rc.local:
angepasst in Hinblick auf Einbindung der CD in die /etc/fstab

mkclean.{sh|.bat}:
Aufraeumskripte, die auch die generierten CD Abbilddateien loeschen

Wenn dieses Paket zusammen mit dem hd Paket verwendet werden soll (um
eine anschliessende Festplatten-Installation durchzufuehren), so muss
ebenfalls das Archiv hd_update.zip im Hauptverzeichnis entpackt
werden. Es fuehrt notwendige Aenderungen an Dateien des hd Pakets durch
und muss 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. (Fuer eine Festplatten-Installation
muss 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 gewuenscht wird, kann durch Setzen von
HDINSTALL_MOUNT_BOOT='no' erreicht werden, dass diese vorlaeufige
Einstellung ueberschrieben wird.)
config/hd.txt prueft ebenfalls die neue Option HDINSTALL_MOUNT_BOOT
opt/hd.txt CD module wurden entfertm da sie sich bereits auf dem Root
Dateisystem befinden muessen, um sofort nach dem Booten zur Verfuegung
zu stehen.
opt/files/usr/sbin/setup laesst auch Installation von Boot CD auf
Festplatte zu.

Benutzung

1. Nach dem Entpacken des Archivs in den Dateibaum von fli4l, muessen
die Konfigurationsdateien wie ueblich bearbeitet werden.
2. (Optional) Soll das hd Paket mitverwendet werden, muss das Archiv
hd_update.zip ebenfalls entpackt und konfiguriert werden, nachdem
das Paket hd entpackt wurde. Einige Dateien werden dabei
ueberschrieben, deswegen sollten sie vorher gesichert werden.
Es existiert ein zusaetzlicher Parameter HDINSTALL_MOUNT_BOOT='no'
(oder 'rw' oder 'ro'),
welcher wie bereits oben beschrieben Prioritaet vor dem Parameter
MOUNT_BOOT in config/base.txt besitzt. Der Grund hierfuer ist, dass
bei der Installtion auf Festplatte der zwingend MOUNT_BOOT='ro' oder
MOUNT_BOOT''rw' notwendig ist, damit benoetigte Dateien gefunden
werden koennen. Die generierte Konfigurationsdatei befindet sich
ebenfalls auf dem von diesem Parameter betroffenen Dateisystem und
wuerde einfach mitkopiert werden, so dass es nicht moeglich waere, das
Boot-Dateisystem nach der Installation auf Festplatte aus dem
globalen Dateisystem auszuschliessen. Da HDINSTALL_MOUNT_BOOT den
Parameter MOUNT_BOOT ueberschreibt, koennen unterschiedliche
Verhaltensweisen vor und nach der Installation auf Festplatte
gewaehlt werden.
3. (Optional)
Falls ein bestimmtes CD Laufwerk verwendet werden soll, muss
der Parameter "cd=auto" in img/syslinuxcd.cfg
angepasst werden:
cd=/dev/hda fuer das 1. Laufwerk (master) am 1. IDE Anschluss,
cd=/dev/hdb fuer das 2. Laufwerk (slave) am 1. IDE Anschluss,
cd=/dev/hdc fuer das 1. Laufwerk (master) am 2. IDE Anschluss,
cd=/dev/hdd fuer das 2. Laufwerk (slave) am 2. IDE Anschluss.
Ansonsten wird das CD Laufwerk automatisch gesucht in der Reihenfolge
hdc, hdb, hdd, hda
4. Unter Linux muss anschliessend das Skript mkcd.sh, unter Windows das
Skript mkcd.bat aufgefuehrt. Diese Skripte ueberpruefen zunaechst wie
gewohnt die Angaben in den Konfigurationsdateien und erstellen die
Dateien, die fuer eine Disketteninstallatin notwendig sind.
Hinweis:Hierfuer wird eine formattierte 1.44MB Diskette benoetigt
Von dieser Diskette wird anschliessend ein Diskettenabbild gelesen
(welches auf bootfaehigen CDs notwendig ist). Zusammen mit den
anderen benoetigten Dateien wird daraus ein CD Abbild erstellt,
welches bereits die komplette bootbare CD beschreibt.
5. Das Skript fragt schliesslich, 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 Ausfuehren von mkcd.sh keine Diskette
mehr benoetigt, 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
Kernelunterstuetzung notwendig.
Unter Windows wird in jedem Fall immer eine Startdiskette erzeugt,
weil die oben beschriebenen Verfahren nicht unterstuetzt werden.
Die Skripte unterstuetzen 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 fuer 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".

Brennen der CD

Das Erstellen des CD Abbildes sowie das eigentliche Brennen werden
durch externe Programme anderer Autoren durchgefuehrt, fuer Details
siehe "Verwendete Dritt-Programme".
Eine Liste der unterstuetzten CD Recorder findet man auf Joerg Schilly's
page, die dort aufgefuehrt 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 muss die die
dreistellige Ziffernkombination wie z.B. "0,0,0" angegeben werden.
Falls keine CD gebrannt werden soll, kann man hier durch Druecken von
Ctr-C das Skript abbrechen und das Abbild spaeter brennen. Vor dem
Brennen wir in jedem Fall zunaechst eine Simulation durchgefuehrt und
erst nach erfolgreichem Verlauf dieser der eigentliche Brennvorgang
nach nochmaliger voheriger Achfrage gestartet. Falls die Simulation
nicht erfolgreich war, wir das Skript abgebrochen.

Fragen und Antworten (FAQs)

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.

F: Wenn ich die CD brennen will, kann Cdrecord nicht gestartet werden.
A: (von <oliver.franck@gmx.net>)
...
Hab mir jetzt mal den Spa&szlig; erlaubt und Dein opt-paket installiert -
&uuml;ber w2k (ist eine ganz frische M$-Installation) hab ich dann
festgestellt, da&szlig; Cdrecord nicht starten kann, vermutlich findet
zum Brennen das Prog nicht die wnaspi32.dll. Aus Lizenzgr&uuml;nden ist
diese glaube ich nicht in den M$-Produkten dabei und eine Nero-Demo-
Installation w&uuml;rde dann auch nicht funktionieren, ohne vorher
diese aspi sich irgendwoher besorgt zu haben :)

Nero und Co suchen offenbar alle Verzeichnisse in c: durch
aber cdrecord tut dies (wahrscheinlich noch) nicht, bzw sucht wohl nur
in den standard-dll-Verzeichnissen?

Grund:
habe cdrwin (demo) als erstes installiert - Folge: aspi-Fehlermeldung
Testversuch: nero (demo)-installiert - Folge: aspi-Fehlermeldung
dann d/l aspi-dll von irgendwoher -> ins Verzeichnis cdrwin per Hand
gestellt
-> alle Brennproggis laufen... (ausnahme cdrecord..)
...


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 - binaere windows version 1.11a12 (Autor: Joerg Schilling),
siehe
http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schi
lling/private
fuer die jeweils aktuelle Version diese Pakets. CDRTOOLS
unterliegen der GPL, siehe "COPYING".
Die ausfuehrbaren Dateien von CDRECORD sowie MKISOFS liegen unter
windows/ directory. Eine Liste unterstuetzter 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
fuer die jeweils aktuelle Version diese Pakets.


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
Letzte Aenderung: 23. Mai  2002

