original in de: Tjabo Kloppenburg
Infiziert wurde ich 1996. Slackware 3.1 :-). Das ist einige Zeit her, aber der Virus hat mich nicht mehr losgelassen. Scripte, GAWK, Perl, PHP, Python -- das ist meine Welt.
Nach der Lekt�re von Linuxfocus-Artikeln und anderen Webseiten habe ich
nach einigen Versuchen schlie�lich eine Methode gefunden, um
eine bootf�hige CDROM zu erstellen, die neben diversen sauberen
Bootdisketten (Viren!) auch z.B. ein angepasstes Knoppix booten kann.
Als 8cm-CDROM passt die in jede Tasche, und ist dann ein praktischer
Helfer in der Not...
Ich setze einfach mal ein paar Kenntnisse voraus. Man lernt ja auch
nichts, wenn einfach alles da steht, und dann viellicht auch noch ohne
Fehler... :-)
Man sollte auf jeden Fall einen CD-Brenner haben, der am besten auch
CD-RWs brennen kann -- das rentiert sich sehr schnell, da sich immer mal
ein kleiner Fehler einschleichen kann. Einen CD-RW Rohling sollte man
nat�rlich haben, 8cm-CDRs und ein Linuxsystem mit ein paar hundert
freien MBs.
Sp�ter, beim Anpassen von Knoppix (im Grunde Debian), erleichtert eine
schnelle Netzanbindung einiges, da die zu installierenden Pakete ja
irgendwoher kommen m�ssen.
Debian-Erfahrungen sind gut und man sollte auch schon mal ein Loopdevice
in der Hand gehalten haben...
�hnlich wie beim Booten von einer Diskette oder einer Festplatte wird beim
Booten von einer entsprechend pr�parierten CDROM vom BIOS etwas in den
Speicher geladen, und dann dort gestartet. CDROMs waren urspr�nglich nicht
f�r das Booten gedacht, und so musste man sich etwas einfallen lassen.
Dazu wurde der El-Torito-Standard vereinbart, der einerseits auf der
CDROM eine bestimmte Struktur vorsieht und andererseits dem BIOS die Rolle
zuweist, diese spezielle Strukur von der CDROM in den Speicher zu laden,
um dort ein Diskettenlaufwerk zu simulieren. Wenn dort eine Bootdiskette
ist, wird diese gebootet. Ganz normal.
So k�nnten wir also schon eine CDROM erstellen, die eine einzige Diskette
bootet -- und das k�nnte z.B. auch eine 2.88MB-Diskette sein. Bzw. das
Image einer solchen Diskette.
Nun, eine einzelne Diskette macht noch kein Multiboot. Hier hilft
Boot-Scriptor weiter, ein Bootloader, der auf der CDROM vorliegende
Diskettenimages dem BIOS unterjubeln kann. Man bootet also mit
Boot-Scriptor (allerdings ohne Disk-Emulation) und kann dann per
Men� zwischen vielen Bootimages w�hlen, die dann mit Emulation gebootet
werden.
Diese Bootimages k�nnen die verschiedensten Disketten enthalten: diverse
Windoze-Versionen, NT-Passwort-Changer, oder auch eine Knoppix-Bootdisk.
Dazu sp�ter mehr.
Wir m�ssen irgendwo ein Verzeichnis haben, in dem wir die
Verzeichnis-Struktur der CDROM aufbauen k�nnen. Ich gehe einfach einmal
davon aus, dass wir in "/data
" viel Platz haben. Dort legen
wir f�r das Projekt ein Verzeichnis "mboot/" an und darin z.B. "toolcd/"
f�r den sp�teren CDROM-Inhalt. Ein zus�tzliches Verzeichnis "mboot/archive/"
kann weitere Dateien aufnehmen, wie z.B. die verwendeten Virenscanner als
Originalarchiv.
Besorge Dir Boot-Scriptor, und
auch die INI-Dateien von dem Server. Die Dokumentation des
Programms befindet sich �brigens nur online auf dem Server, nicht im
Archiv.
Boot-Scriptor braucht ein eigenes Verzeichnis "bscript/" auf der CDROM,
darin den Loader, ggf. eine Grafik, und vor allem eine Datei
"bscript.ini".
In dieser Datei kann man ein Bootmen� in einer Sprache �hnlich BASIC
programmieren, wobei mittels "onkey" auf Tastendruck hin im Programm
verzweigt werden kann. Nach Verzweigung wird dann z.B. per "memdisk"
das Image einer Bootdiskette gebootet:
print "\ac\c0e--=> Meine MultiBoot Mini-CDROM <=--" print "F1 Bootdisk1" print " w warm reboot" MenuLoop: onkey f1 goto bootDisk1 onkey w reboot warm goto MenuLoop bootDisk1: memdisk \images\boot1.img
Nat�rlich gibt es noch eine ganze Reihe weiterer Kommandos. Die findest du in der Doku, bzw. den INI-Dateien von der Boot-Scriptor Homepage.
F�r einen ersten Test reicht es aus, eine einzelne existierende Bootdiskette
mit dem Unixtool "dd" einzulesen. Dazu eignet sich z.B. eine normale
Windoze - Bootdiskette, oder eine mit LILO erstellte Bootdiskette:
( Diskette einlegen) # cd /data/mboot/toolcd # mkdir images (f�r die Bootdisketten-Images) # dd if=/dev/fd0 of=images/boot1.img
Das Programm "mkisofs" muss so aufgerufen werden, dass der Bootloader korrekt
eingebunden wird. Der Pfad zum Bootcode ("-b") ist relativ zum Basisverzeichnis
der CDROM ("toolcd/"):
# cd /data/mboot # mkisofs -r -o iso.01 -b bscript/loader.bin \ -no-emul-boot -boot-load-size 4 toolcd
# cdrecord -scanbus Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 J. Schilling Linux sg driver version: 3.1.22 Using libscg version 'schily-0.5' scsibus0: 0,0,0 0) 'LG ' 'CD-RW CED-8083B ' '1.05' Removable CD-ROM ... # cdrecord -v dev=0,0,0 speed=32 iso.01
Der Aufruf von "mkisofs" hat viele Zeichen, und damit auch viele Chancen f�r Vertipper.
"cdrecord" will auch korrekt aufgerufen werden - es liegt also nahe, ein Bashscript oder
ein Makefile zu erstellen, das die korreten Aufrufe �bernimmt. Dabei ist es eine gute Idee,
das Makefile im CDROM-Verzeichnis unterzubringen, und nach drau�en zu verlinken.
�berhaupt ist es eine gute Idee, von Anfang an alles auf die CDROM mit drauf zu tun,
was man f�r die Erstellung einer neuen CDROM ben�tigt. Das versetzt einen in die
Lage, auch drau�en "im Feld" eine neue Version zu zaubern. Und gleichzeitig ist die CDROM
ihr eigenes Backup.
Das Makefile kann relativ simpel aufgebaut sein, z.B. so:
BASE = toolcd DEV = 0,0,0 SPEED = 4 VERSION = 01 ISO = iso.$(BASE).$(VERSION) blank: cdrecord -v dev=$(DEV) blank=fast blankall: cdrecord -v dev=$(DEV) blank=all iso: echo "L�sche ~ files:" @find $(BASE) -name "*~" -exec rm {} \; echo "Erzeuge ISO file:" @mkisofs -r -o $(ISO) -b bscript/loader.bin -no-emul-boot -boot-load-size 4 $(BASE) @echo ls -al $(ISO) burn: cdrecord -v dev=$(DEV) speed=$(SPEED) $(ISO)
# cd /data/mboot # ln -s toolcd/scripte/Makefile MakefileDas Erstellen einer neuen CDROM nach einer Ver�nderung im CD-Verzeichnis ist dann eine Sache weniger simpler Kommandos im "
mboot/
" - Verzeichnis:# make blank # make iso # make burn
Weitere Bootdisketten findet man einerseits in seinen eigenen Diskettenboxen
und andererseits z.B. im Internet. Nat�rlich wei� man im Grunde nie ganz genau,
was auf so einer Bootdisk aus dem Internet wirklich drauf ist. Ggf. lohnt es sich,
eine Suchmaschine nach der Url einer Bootdisk-Sammlung zu befragen, um zu sehen,
ob es da mal Probleme gab.
Eine Quelle, von der ich ein paar Bootdisks ausprobiert habe,
ist www.bootdisk.com. Die Disketten
dort sind englische Versionen, zumeist mit CDROM-Support. Praktisch ist auch die "drdflash"-Diskette,
eine minimale Bootdiskette. Falls man mal "im Feld" eine Bootdiskette f�r einen Flasher braucht,
kopiert man das Diskettenimage einfach mit Rawrite.exe (DOS) oder dd (Linux) auf eine Diskette. Dann
noch den Flasher drauf kopieren, und schon kann man sein BIOS flashen...
Rawrite.exe findet man z.B. auf der ersten CDROM der meisten Linuxdistributionen.
Wenn man mit der CDROM eine M�glichkeit in der Hand hat, sauber zu booten, liegt
der Gedanke nahe, einen Virenscanner mit auf die CDROM zu packen. Ich verwende
daf�r "F-Prot" von F-Secure. Von dem Programm
gibt es eine Linux- sowie DOSversionen, die man frei herunterladen kann.
Dabei ist es etwas l�stig, dass man f�r Updates der Virendefinitionen eine neue
CDROM brennen muss. Allerdings soll es neuerdings 8cm-CDRWs geben, die man dann einfach
neu beschreiben w�rde. Alternativ k�nnte man -- ein entsprechend ausger�stetes Linux
auf der CDROM und die entsprechende Infrastruktur vorausgesetzt -- die
Updates auch �bers Internet holen. Solch ein Linux -- Knoppix in einer
abgespeckten Version -- kommt also n�chstes auf unsere CDROM.
Wer Knoppix noch nicht kennt, sollte
es sich dringend anschauen: Ein von CDROM bootendes, umfangreiches
Linux - Desktopsystem. Mit Hardwareerkennung. Und vielen andern tollen Dingen.
Allerdings passt Knoppix nicht auf eine 8cm-CDROM... Praktischer Weise kann
man Knoppix jedoch relativ einfach an eigene Bed�rfnisse anpassen, ein paar
spezielle Debiankenntnisse vorausgesetzt.
Knoppix verwendet einen speziellen Trick, um 2-3 GB Software auf einer 650MB-CDROM
unterzubringen: Das komplette Filesystem liegt als komprimierte Datei vor, die beim
Booten �ber einen speziellen Treiber ("cloop.o", "compressed loop device") gemountet
wird. Das findet statt in der Datei "boot.img" im Knoppixverzeichnis, bzw. dem Bereich
der Knoppix - Bootcdrom, die mit einem Kommando wie
# mkisofs ... -b knoppix/boot.img ...
cloop.o
" enth�lt, und Code zum Laden dieses Kernelmoduls.
bscript.ini
"
einbinden und Knoppix so auch von unserer Multiboot-CDROM starten.
Knoppix mit seinen 650MB ist viel zu gro� f�r unsere handliche 8cm-CDROM. Da ich keine
Lust hatte, von Hand eine komplette Knoppix auf ein vertretbares Minimum zu vekleinern,
habe ich von der Arbeit anderer profitiert: Die Webseite Knoppix Customizations h�lt
eine ganze Reihe von modifizierten Knoppix-Versionen bereit, wobei ich mich f�r "Model_k" entschieden
habe. "Model_k" ist sch�n klein (rund 50MB), allerdings fehlt ein GUI und Support f�r
andere Tastaturbelegungen als Englisch.
"Damn Small Linux" ist sicher eine gute Alternative.
Die Anleitung, die ich hier gebe, ist eine Ultrakurz-Version der Anleitung von Sunil Thomas Thonikuzhiyil,
die ausf�hrlich auf Englisch auf das Remastern von Knoppix eingeht.
Der eigentliche Witz beim Remastern von Knoppix liegt darin, dass Knoppix ein komplettes Linux mit
funktionierender Paketverwaltung ist -- ein schreibbares Filesystem vorausgesetzt.
Wir booten nun das von uns auserkorene Basis-Knoppix, egal ob von einer eigenen CDROM oder
unserer Toolcd, gehen dann so vor:
# mkdir /1 # mount -t ext2 /dev/hda<n> /1 # cp -Rp /KNOPPIX /1
# chroot /1/KNOPPIX # mount -t proc /proc proc
# (ggf. mit ifconfig eine IP einstellen, wenn keine per DHCP gefunden wurde.) # (ggf. Nameserver in /etc/resolv.conf einstellen. Dazu den Link l�schen.)
# apt-get install joe (Model_k 1.2 hat keinen editor) # ...
# (ggf. den Link der /etc/resolv.conf wieder herstellen) # umount /proc # exit
mkisofs
" ein
ISO-Image einer CDROM erstellen und entsprechend komprimieren. Das Tool dazu ist Teil von Knoppix.
# mkisofs -R /1/KNOPPIX | create_compressed_fs - 65536 > /1/KNOPPIX.2
Wie wir gesehen haben, ist es relativ einfach, selbst eine bootf�hige CDROM zu erstellen.
Dazu noch eine mit sinnvollem Inhalt. Wir haben dabei nicht jedes Rad neu erfunden, sondern
konnten von der Arbeit anderer profitieren.
Ich denke, es ist �berhaupt eine gute Idee, die eigenen Sachen so auszustatten, dass
wiederum jemand anders davon profitieren kann.
Und wie gesagt, wenn die CDROM ihr eigenes Backup ist, profitieren auch wir selbst davon.