isofli4l-HOWTO
Version: 0.9.1 vom 3. Feburar 2002
Was ist isofli4l ?
isofli4l ist fli4l, mit Hilfe von isolinux direkt von CDROM gebootet.
isofli4l ist (noch) kein fertiges Paket, sondern eine Anleitung, wie man ein normales fli4l bootfähig auf CDROM bringt.
Vorteile und Nachteile
Vorteile
-
Platz satt: Auf die CDROM kann man je nach Rohling bis etwa 700 MByte brennen, im Gegensatz dazu paßt auf die Floppy mit Mühe noch 1 MByte. Damit ist die Größe von opt.tgz praktisch nur noch durch das verfügbare RAM begrenzt. Auch können weitere Dateien, z.B. für einen Web- oder FTP-Server, weitere Programe oder ext2-Images, mit auf die CDROM gebrannt werden.
-
Garantierter Schreibschutz: So lange im Router kein Brenner steckt, gibt es absolut keine Möglichkeit, den Inhalt des Bootmediums zu ändern.
-
Bootgeschwindigkeit: Mit einem 24X-CDROM dauert das Booten nur wenige Sekunden. Selbst bei einem historischen 1X-CDROM läge die reine Lesezeit von CDROM bei nur 10 Sekunden (1500 KBytes bei 150 KBytes/sec).
-
Leise: Eine Floppy schnarrt und klappert beim Booten. Ein CDROM-Laufwerk ist deutlich leiser, hochtourige Laufwerke über 24X mal ausgenommen.
-
Datensicherheit: Eine CDROM wird optisch abgetastet und ist unempfindlich gegenüber magnetischen Einflüssen; Lesefehler kommen praktisch nur bei starken Verschmutzungen vor und lassen sich durch einfaches Abwischen der CDROM beseitigen.
Nachteile
-
Hardware-Anforderung: Alte 386er-Systeme können nicht von CDROM booten, dies gilt auch für die meisten 486er-Systeme und die allerersten Pentium-Klasse-Systeme (unter 75 MHz). Manche Systeme können erst nach einem BIOS-Update von CDROM booten.
-
Schreibdauer: Das Brennen einer CDROM dauert mit Fixieren (und vorherigem Löschen bei CD-RW) mindestens zwei Minuten und damit deutlich länger als das Schreiben einer Floppy. Dies stört insbesondere beim Entwickeln und Experimentieren.
-
Medienverschleiß: Wenn man keine CD-RW benutzen kann, weil entweder das CDROM-Laufwerk im Router CD-RW-Medien nicht lesen kann (bei Laufwerken bis 8X durchaus üblich), oder der Brenner keine CD-RW-Medien schreiben kann (üblich bei 1X-Brennern, häufig bei 2X-Brennern), wird für jeden Fehlversuch und jede neue Konfiguration ein neuer CD-Rohling benötigt.
-
Nur IDE/ATAPI: Zur Zeit werden nur IDE/ATAPI-CDROMs unterstützt. SCSI ist möglich, aber aufwendiger und sehr hardware-abhängig.
Benötigte Hard- und Software
Wenn Brenner und CDROM-Laufwerk des Routers mit CD-RW-Medien zurechtkommen, sollte man einen CD-RW-Rohling benutzen. Das spart i.d.R. einige CD-Rohlinge ein, und erlaubt spätere Änderungen durch erneutes Brennen. Falls das CDROM-Laufwerk des Routers keine CD-RW-Medien lesen kann, sollte man es durch ein etwas moderneres CD-RW-fähiges Laufwerk ersetzen.
Brenn- und Entwicklungssystem können identisch sein. Sind sie es nicht, muß das ISO-Image vom Entwicklungssystem zum Brennsystem übertragen werden.
Konfigurations- und Entwicklungssystem können identisch sein. Sind sie es nicht, müssen die konfigurierten fli4l-Dateien vom Konfigurationssystem zum Entwicklungssystem übertragen werden.
Router
- Mainboard mit der Fähigkeit, von CDROM zu booten ("El Torito" Standard)
- IDE/ATAPI-CDROM-Laufwerk, möglichst CD-RW-fähig und leise, also 8X bis 24X
Brenn-System
- Beliebiges Betriebssystem
- Brenn-Software, die ISO-Images brennen kann (praktisch jede)
- CD-Brenner, möglichst CD-RW-fähig
Konfigurationssystem
- Linux, DOS oder Windows
- fli4l Version 2.0.1
- empfohlen: fliwizng (benötigt Windows)
Entwicklungssystem
- Linux 2.0 oder neuer. Beliebige, halbwegs aktuelle Linux-Distribution
- root-Zugang
- loop-Device (modprobe loop versuchen)
- mkisofs/mkhybrid ab Version 1.13
- Das OPT-Paket hd.tar.gz
- syslinux ab Version 1.66 (von http://syslinux.zytor.com/)
- Die Dateien modules.sh und isolinux.cfg (siehe unten)
Die Datei modules.sh
Diese Datei muß im Unix-Format vorliegen, ggf. mit dos2unix o.ä. konvertieren.
#!/bin/sh
#
# /etc/modules.sh -- called inline from /etc/rc
#
if [ "$boot_dev" = "/dev/cdrom" ] ; then
colecho "Searching for fli4l files on floppy"
mount -t vfat /dev/fd0 /boot 2> /dev/null > /dev/null
if [ -f /boot/rc.cfg -a -f /boot/opt.tgz ] ; then
colecho "Found fli4l files (normal mode) on floppy, switching boot device to floppy." gn
boot_dev=/dev/fd0
elif [ -f /boot/recover.sh -a -f /boot/rc2.cfg -a -f /boot/opt2.tgz ] ; then
colecho "Found fli4l files (recover mode) on floppy, switching boot device to floppy." gn
boot_dev=/dev/fd0
else
colecho "No fli4l files on floppy, continuing." gn
fi
umount /boot 2> /dev/null > /dev/null
fi
if [ "$boot_dev" = "/dev/cdrom" ] ; then
for i in cdrom ide-cd isofs ; do
colecho "Loading required module $i" gn
insmod $i
done
rm -f /dev/cdrom
mkdir /cdrom
colecho "Searching for IDE/ATAPI CDROM drive containing isofli4l ..." gn
cdrom=""
for i in hda hdb hdc hdd ; do
if [ -f "/proc/ide/$i/media" ] ; then
media=`cat /proc/ide/$i/media 2> /dev/null`
if [ "$media" = "cdrom" ] ; then
colecho " Media in /dev/$i is 'cdrom', trying to mount ..." gn
mount -t iso9660 -o ro "/dev/$i" /cdrom > /dev/null 2> /dev/null
if [ -f /cdrom/isolinux/opt.tgz -a -f /cdrom/isolinux/rc.cfg ] ; then
cdrom="$i"
colecho " Found isofli4l CDROM at /dev/$i" gn
ln -s "$cdrom" /dev/cdrom
rm -rf /boot
ln -s /cdrom/isolinux /boot
break
fi
umount /cdrom > /dev/null 2> /dev/null
else
colecho " Media in /dev/$i is '$media', not 'cdrom'. Skipping." gn
fi
else
colecho " /dev/$i does not exist" gn
fi
done
if [ "$cdrom" = "" ] ; then
colecho "*** PANIC! Could not find IDE/ATAPI CDROM drive containing isofli4l ! ***" br x br
exit
else
colecho "Continuing, mounting /boot will fail once now." gn
fi
fi
# (end of file)
Die Datei isolinux.cfg
Diese Datei muß (?) im Unix-Format vorliegen, ggf. mit dos2unix o.ä. konvertieren.
#SERIAL 0 9600
TIMEOUT 0
DEFAULT kernel
APPEND load_ramdisk=1 initrd=rootfs.gz root=/dev/ram0 boot=/dev/cdrom
Dies ist prinzipiell die Datei syslinux.cfg aus fli4l, jedoch ist der Kernel-Parameter boot auf /dev/cdrom geändert.
Erzeugen des ISO-Images
Um das ISO-Image zu erzeugen, muß man root sein, also entweder als root eingeloggen oder su benutzen.
- fli4l wie gewohnt und gewünscht konfigurieren und opt.tgz erzeugen, das OPT-Paket hd.tar.gz nicht benutzen!
- mkdir -p $HOME/isofli4l/cdromfs/isolinux
- Die Dateien kernel, opt.tgz, rc.cfg und rootfs.gz aus dem img-Unterverzeichnis von fli4l nach $HOME/isofli4l/cdromfs/isolinux kopieren.
- Die Datei isolinux.bin aus dem syslinux-Paket nach $HOME/isofli4l/cdromfs/isolinux kopieren.
- Die Datei isolinux.cfg (siehe oben) nach $HOME/isofli4l/cdromfs/isolinux kopieren.
- gunzip $HOME/isofli4l/cdromfs/isolinux/rootfs.gz
- mount -o loop $HOME/isofli4l/cdroms/isolinux/rootfs.gz /mnt
- Die Datei modules.sh (siehe oben) nach /mnt/etc/modules.sh kopieren.
- Das Verzeichnis opt/files/lib/modules aus hd.tar.gz mit allen Dateien und Unterverzeichnissen nach /mnt/lib/modules kopieren.
- umount /mnt
- gzip $HOME/isofli4l/cdromfs/isolinux/rootfs
- Ggf. weitere Dateien und Verzeichnisse nach $HOME/isofli4l/cdromfs kopieren
- Falls du -h $HOME/isofli4l/cdromfs weniger als 4 MByte ergibt (normal für fli4l ohne Extra-Dateien sind etwa 1,5 MByte), muß mit dd if=/dev/zero of=$HOME/isofli4l/cdromfs/fillfile bs=1M count=3 eine Fülldatei angelegt werden, sonst wird das ISO-Image zu klein.
- mkhybrid -o image.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -r -V 'isofli4l' $HOME/isofli4l/cdromfs
Brennen
Linux
- Einrichten:
- Wie man einen Brenner unter Linux einrichtet, sollte in der Dokumentation der Distribution stehen. Ansonsten bitte die CD-Writing-HOWTO lesen. Insbesondere sollten die Environment-Variablen CDR_DEVICE und CDR_SPEED gesetzt sein.
- Simulieren:
- cdrecord -dummy -v image.iso
- Brennen:
- cdrecord -v image.iso
- Löschen (CD-RW):
- cdrecord -v blank=fast
Andere Systeme
Bitte die Anleitung / Dokumentation lesen. üblicherweise bringt man das Brennprogramm dazu, die Datei image.iso als CD-Image zu lesen und als CD zu brennen. Der Menüpunkt heißt meistens "CD from Image" oder "CD von Abbilddatei". Wenn nach dem Brennen auf der CD nur eine Datei namens image.iso vorhanden ist, ist etwas schiefgelaufen. Diese CD ist dann unbrauchbar und wird nicht booten.
Booten von CDROM
- Im BIOS muß das CDROM zum Booten freigegeben werden, bei Award 4.5x findet sich diese Einstellung unter BIOS FEATURES, Boot order: CDROM,C,A.
- Findet isofli4l beim Booten eine DOS-formatierte Floppy mit fli4l, wird diese Floppy unter /boot gemountet und die CDROM ignoriert. Wenn dieses Verhalten nicht gewünscht ist, kann man den ersten if-Block aus modules.sh löschen.
- isofli4l beschwert sich beim Booten von CDROM, daß es /dev/cdrom nicht unter /boot mounten konnte. Das ist so in Ordnung, denn modules.sh mountet die CD unter /cdrom und ersetzt /boot durch einen Symlink auf /cdrom/isolinux.
- Die Option MOUNT_BOOT in base.txt ist beim Booten von CDROM wirkungslos, die CDROM wird immer ro unter /cdrom gemountet.
Copyright, Ausschluß jeglicher Gewährleistung
Jede Haftung meinerseits wegen evtl. entstandender Schäden oder Kosten ist ausgeschlossen. Sie benutzen diese Anleitung und die darin enthaltene Script-Datei modules.sh auf eigenes Risiko. Ich übernehme keinerlei Gewährleistung für die Funktion des hier beschriebenen Verfahrens.
Diese Anleitung unterliegt meinem Copyright, sie darf in unveränderter Form beliebig oft weitergegeben werden.
Kontakt
Alexander Foken
http://www.foken.de/alexander/
eMail: isofli4l (at) foken (punkt) de
Copyright © Alexander Foken