Wer kennt das nicht als IT-Mensch bei Kunden vor Ort, man hat verschiedenste Software und Tools dabei. Hier mal eine Debian CD, hier mal einen Memory-Test oder einen Festplattentest.
Viele Kollegen und Bekannte von mir tragen eine ganze Sammlung an CDs und DVDs mit sich rum – die wenigsten brauchen 10% der Tools die sie dabei haben. Und wenn man Sie mal braucht dann hat der Server kein DVD-Laufwerk oder es ist kaputt – alles schon passiert. Dabei gibt es USB Ports mittlerweile ĂĽberall, und das Booten von USB Geräten gehört zum Standard.
Die meisten Linux-Distributionen liefern sogar fertige Stick-Images mit, aber ich will ja nicht 10 Sticks mitnehmen – und was mache ich dann mit den Tools die ich auch brauche.
Also baue ich mir meinen USB Stick selbst!
Das schöne an dieser Art von Stick ist, dass man auch normale Daten drauflegen kann und diese sich mit den Bootfunktionen überhaupt nicht in die Haare kriegen.
Was braucht man dafĂĽr
- USB Stick – je größer desto besser
- einen Computer zum Stick vorbereiten
- und am besten einen Zweiten zum Testen (VMs sind meistens schwierig..)
- Syslinux (apt-get, yum oder yast kennt das sicher – ansonsten hier schauen)
- einen Texteditor
- die Software die ihr booten möchtet
Den Stick vorbereiten
Der Stick sollte wie ein normaler Stick formatiert sein, also eine MS-DOS Partitionstabelle, eine groĂźe Primary-Partition und am besten ein FAT32 Dateisystem.
Verzeichnisse auf dem Stick:
- boot/  (hier wird später alles abgelegt was wir booten möchten)
- boot/syslinux/ Â (Bootkonfiguration)
Und dann installieren wir Syslinux auf dem MBR des Sticks (sollte als root bzw. Administrator ausgefĂĽhrt werden)
syslinux -i -d /boot /dev/sdX1
bzw.
syslinux.exe -i -d /boot X:
Wenn alles geklappt hat sollte im Verzeichnis „boot“ nun eine versteckte Systemdatei namens „ldlinux.sys“ zu finden sein.
Ich empfehle auĂźerdem das Syslinux Addon „menu.c32“ zu installieren, damit kriegt man eine nette MenĂĽfunktion und muss nicht manuell eintippen was gebootet werden soll. Auf Debian/Ubuntu findet man die Datei unter „/usr/lib/syslinux/menu.c32“. Die Datei sollte unter /boot/syslinux/ auf dem Stick abgelegt.
Grundkonfiguration syslinux
Dies ist eine Beispiel Konfiguration fĂĽr Syslinux mit menu.c32.
/boot/syslinux/syslinux.cfg
default menu.c32 prompt 0 menu title Mein USB Stick LABEL local MENU DEFAULT menu label -> von Festplatte booten LOCALBOOT 0 LABEL seperator1 menu label ====== Ueberschrift ======= LABEL bootoption1 menu label Beschreibung kernel /boot/irgendwas append Parameter
Die erste Zeile „default menu.c32“ sorgt dafĂĽr dass menu.c32 „gebootet“ wird und dieses die Konfiguration nochmal einliest.
UntermenĂĽs
Verschachtelte MenĂĽs sind auch kein Problem, und schaffen gerade bei vielen Bootoptionen eine gute Ăśbersicht.
syslinux.cfg
LABEL menu-debian  menu label Debian --> kernel menu.c32 append debian.cfg
debian.cfgÂ
menu title Debian Menu LABEL back menu label <-- Zurueck kernel menu.c32 append syslinux.cfg [...]
Debian Installation ĂĽber den Stick
Die meisten Linux Distributionen liefern kleine Stick Images mit um ein Installationsmedium zu erstellen – dies hängt dann auch meiste von der Architektur ab auf der man installieren möchte. Im Prinzip bestehen diese Image auch nur aus einem Syslinux – und eben dem zu bootenden Linux, der Kernel und eine Initrd die dann eine Memdisk anlegt und den Installer ausfĂĽhrt.
Downloads fĂĽr Debian gibt es auf:Â http://www.debian.org/distrib/netinst#verysmall
Schönerweise liefert Debian direkt vmlinuz und initrd.gz als fertigen Download, diese legen wir einfach auf dem USB Stick ab, z.B. in /boot/debian-amd64/.
Anschließend müssen wir nur noch die syslinux.cfg mit ein paar Einträgen versehen, hier mein Beispiel:
LABEL tren1 menu label ====== Debian 6.0 ======= LABEL debi386 menu label i386 Install kernel /boot/debian-i386/linux append priority=low initrd=/boot/debian-i386/initrd.gz -- LABEL debamd64 menu label amd64 Install kernel /boot/debian-amd64/linux append priority=low initrd=/boot/debian-amd64/initrd.gz -- LABEL debi386res menu label i386 Rescue kernel /boot/debian-i386/linux append priority=low initrd=/boot/debian-i386/initrd.gz rescue/enable=true -- LABEL debamd64res menu label amd64 Rescue kernel /boot/debian-amd64/linux append priority=low initrd=/boot/debian-amd64/initrd.gz rescue/enable=true --
Und schon haben wir Boot Optionen fĂĽr Debian, man kann sogar direkt nach dem Booten den Stick abziehen – da alles im RAM liegt.
Alles was Debian sonst noch zum installieren braucht wird einfach bei Bedarf heruntergeladen.
Das Firmwareproblem
Aber Achtung: Wenn man moderne Server mit z.B. Broadcom Netzwerkkarten installiert braucht man ggf. extra Firmware. Nachdem Debian diese ohne Netzwerkkarte nicht herunterladen kann, mĂĽssen wir sie auf dem Stick bereitstellen…
Der Debian Installer sucht dafĂĽr auf allen Medien nach einem „firmware“ Verzeichnis mit Debian Paketen darin.
Herunterladen kann man die Pakete z.B. von:Â http://ftp.de.debian.org/debian/pool/non-free/f/firmware-nonfree/
Images booten
Syslinux kann auch Tools ĂĽber Fremd-Images booten, ein Beispiel dafĂĽr ist der Drive Fitness Test von IBM bzw. Hitachi.
DafĂĽr braucht man ein weiteres Addon von Syslinux, die „memdisk“. Auf Debian zu finden unter /usr/lib/syslinux/memdisk – einfach nach /boot/syslinux/ kopieren und verwenden.
Besorgen kann man sich das Image von:Â http://www.hitachigst.com/support/downloads/Â (Direktlink)
Mit memdisk kann man DFT nun einfach booten:
LABEL dft menu label Drive Fitness Test kernel memdisk append initrd=/boot/dft.img
Memtest86+
Der Memtest86+ lässt sich direkt booten – ohne Memdisk. Die meisten Linux Distris liefern ihn mit – einfach mal einen Blick in /boot werfen oder nach dem Paket suchen.
LABEL memtest86p menu label Memtest86+ kernel /boot/memtest86p
Anmerkungen
Alles in Allem ist Syslinux ein sehr schlanker, aber durchaus mächtiger Bootloader. Mit seinen Addons kann man viele Szenarien abdecken und zu einen sehr flexiblen Bootstick bauen.
Wer mehr wissen möchte sollte einen Blick in die Dokumentation von syslinux werfen, siehe Links unten.
Ansonsten kann ich nur als Tipp mitgeben: schaut euch mal die USB-Stick oder ISO Images von der Software an die ihr einbauen wollt, daraus lernt man viel und kann die Config meist 1:1 kopieren.
Ăśbrigens: ISOLINUX ist die Schwester von SYSLINUX, aber eben fĂĽr CDs und DVDs – die Konfiguration ist dabei fast die gleiche…
Weitere Links
http://www.syslinux.org/wiki/index.php/SYSLINUX
http://www.syslinux.org/wiki/index.php/Menu
http://www.syslinux.org/wiki/index.php/MEMDISK
http://www.ultimatebootcd.com/Â
Artikelbild von Nadja Herder (Kontemporat) von flickr.com (CC BY-ND)
Hallo,
ich habe deine Anleitung befolgt und es mit diesem USB Stick hier versucht.
(Link entfernt / netter Versuch)
Aber irgendwie kommt ein Fehler.. Irgendwas mit syslinux…
Woran liegt es?
GruĂź,
Damian
Hallo Damian,
dazu mĂĽsste ich schon wissen was genau fĂĽr ein Fehler kommt und auf welchem OS und welchen Syslinux Versionen…
GruĂź
Markus