Linux für die Hosentasche

Linux auf dem USB-Stick

01.12.2007 USB-Sticks protzen mit immer mehr Speicher für immer weniger Geld. Zeit, mal ein portables Linux für die Hosentasche zu bauen. Wir zeigen drei Wege zum Linux-Stick.

Was dem Sanitäter sein Erste-Hilfe-Koffer, ist dem Linuxer seine Knoppix-DVD: Beide braucht man meist im Notfall und hat man am besten immer dabei. Wer aber heute was auf sich hält, trägt sein Linux natürlich auf einem USB-Stick spazieren, der dann möglichst lässig am Schlüsselbund hängt. Nicht nur kurieren Sie mit dem kleinen Plastikteil defekte Rechner, Sie haben auch stets Ihr maßgeschneidertes System dabei. Wir zeigen, wie Sie so ein System recht schnell installieren. Aber vorher noch eine Warnung: Linux mountet USB-Sticks unter Gerätenamen, die unter Umständen denen Ihrer Festplatte ähneln. Achten Sie also darauf, beim Installieren nicht aus Versehen die Platte zu löschen.

Bootprobleme

Nach wie vor booten nicht alle Rechner von USB-Sticks. Das BIOS des Rechners muss die Option anbieten, von USB-HDD zu booten. Das können Mainboards etwa seit der Jahrtausendwende, gerade bei älteren Rechnern funktionieren die Sticks daher potenziell nicht. Nutzen Sie zudem einen älteren USB-Stick, der USB 1.1 verwendet, stolpern eventuell neuere Rechner mit USB-2.0-Anschlüssen darüber – umgekehrt gilt das selbe. Passt indes alles, lädt der Rechner nach dem Einschalten den Bootloader direkt vom USB-Stick.

Reinen Tisch machen

Um Damn Small Linux (DSL) [1] auf den Stick zu spielen, partitionieren Sie ihn im ersten Schritt und erstellen ein Dateisystem darauf. Dazu fahren Sie ein bestehendes Linux hoch, öffnen eine Konsole und geben, mit Root-Rechten versehen, tail -f /var/log/messages ein. Stöpseln Sie den Stick nun an, erscheint eine Meldung, die zeigt, welche Gerätedatei Ihr Linux für den USB-Stick verwendet (Abbildung 1).

Abbildung 1: Mit Hilfe des Tail-Befehls erfahren Sie beim Einstecken des USB-Sticks, welche Gerätedatei ihm Linux zuteilt.

Ubuntu, OpenSuse 10.2 und Suse Linux 10.1 mounten Sticks gewöhnlich automatisch (sie hängen USB-Sticks in das Verzeichnis /media ein) und zeigen die darauf enthaltenen Dateien im Konqueror oder Nautilus an. Andernfalls holen Sie das händisch nach. Geben Sie mit Root-Rechten

# mkdir -p /media/disk
# mount -t auto /dev/sdb1 /media/disk

ein, um den Stick, dem Linux die Gerätedatei /dev/sdb1 zuweist, im Verzeichnis /media/disk einzuhängen. Von diesem Verzeichnis gehen wir auch im folgenden aus, was Sie beachten sollten, falls es bei Ihnen anders heißt. Geben Sie mount ohne Parameter auf der Konsole ein, erfahren Sie gewöhnlich, wo Ihr Linux den Stick einhängt.

Basierend auf dieser Information überschreiben Sie die Daten auf dem gemounteten Stick, was ein paar Minuten dauert:

# cat /dev/zero > /dev/sdb

Lassen Sie die Nummer hinter sdb weg. Linux überschreibt nun wirklich sämtliche Daten – auch Informationen zur Partitionierung – mit Nullen aus /dev/zero. Zurück bleibt eine leere, nicht partitionierte "Festplatte" ohne Dateisystem. Ein No space left on device zeigt, dass Cat fertig ist (Abbildung 2). Unter Suse Linux müssen Sie den Befehl mit Root-Rechten aufrufen.

Abbildung 2: Überschreiben Sie mit Hilfe des Cat-Befehls den USB-Stick mit Nullen, löscht das sämtliche Informationen darauf, einschließlich Bootloader und Partitionstabelle.

Nun hängen Sie den Stick gegebenenfalls über sudo umount /dev/sdb1 wieder aus, ziehen ihn heraus und stecken ihn erneut in den USB-Slot. Dann formatieren Sie ihn: Geben Sie cfdisk /dev/sdb ein und erstellen Sie neue Partitionen. Unter OpenSuse brauchen Sie für diesen Schritt Root-Rechte, die Beschriftungen erscheinen hier auf Deutsch.

Wählen Sie mit Hilfe der Pfeiltasten New | Primary | Größe in MByte und drücken Sie jeweils [Eingabe], um den gesamten Stick mit einer Partition auszustatten. Wie auf einer Festplatte können Sie auch hier mehrere Partitionen anlegen. Sie müssen dies bei der Installation Ihres USB-Stick-Linux dann allerdings berücksichtigen und stets die passende Partition angeben. Alternativ zu Cfdisk setzen Sie Fdisk ein. Wie das funktioniert, zeigen wir später anhand der Installation von Pendrive Linux.

So erzeugen Sie eine primäre Partition auf dem Stick, die entweder die ganze Partition umfasst oder zumindest einen Teil davon (Abbildung 3). Über den Menüpunkt Bootable machen Sie den Stick bootfähig. Wollen Sie eine FAT32-Partition erstellen, um ein FAT32-Dateisystem zu nutzen, wählen Sie zudem [Type] und geben 0B ein. Abschließend wählen Sie [Write] und geben yes ein, um die Veränderungen auf den Stick zu schreiben. Zum Verlassen des Programms wählen Sie [Quit]. Meist müssen Sie den Stick anschließen herausziehen und erneut einstecken, damit das System die neue Partitionstabelle einliest.

Abbildung 3: Cfdisk in Aktion: Über ein Menü legen Sie recht schnell eine bootbare Linux-Partition an. Anschließend versehen Sie diese mit einem Dateisystem.

Nun spielen Sie das FAT32-Dateisystem auf den partitionierten, leeren Stick. Das erledigt der Befehl mkfs.vfat /dev/sdb1 zügig. Möchten Sie andere Dateisysteme nutzen, funktionieren auch die Befehle mkfs.ext2, mkfs.ext3 sowie mkfs.reiserfs. In diesem Fall müssen Sie allerdings als [Type] in Cfdisk 83 eingeben, was für Linux steht.

Bootloader

Im nächsten Schritt spielen Sie den Bootloader Grub ein (Abbildung 4). Dazu stecken Sie den Stick erneut an, Linux sollte ihn nun automatisch in das Verzeichnis /media/disk einhängen – geben Sie auf der Konsole mount ein, um das zu prüfen. Anschließend legen Sie über mkdir -p /media/disk/boot/grub zwei Verzeichnisse für den Bootloader auf dem USB-Stick an.

Abbildung 4: Das gesamte Prozedere unter OpenSuse 10.2: Gewöhnlich genügt es, nur die Grub-Installation mit Root-Rechten auszuführen.

Verwendet Ihr momentanes Host-Linux-System ebenfalls Grub als Bootloader (was auf OpenSuse 10.2, Suse Linux 10.1 und Ubuntu zutrifft), dann kopieren Sie die benötigten Dateien von hier auf den Stick:

# cp /boot/grub/*stage* /media/disk/boot/grub

Im nächsten Schritt sorgen Sie dafür, dass Grub den USB-Stick als zu bootende Festplatte erkennt. Der Bootloader kann die im BIOS festgelegte Startreihenfolge nämlich nicht erkennen, also bringen Sie ihm diese über die Datei device.map manuell bei:

# echo '(hd0)  /dev/sdb' > /media/disk/boot/grub/device.map

Beachten Sie, dass Sie hier nicht sdb1 oder sda1, sondern nur sdb oder sda als Gerätedatei angeben. Nun folgt die eigentliche Installation von Grub in den Boot-Sektor des USB-Sticks (OpenSuse-Anwender brauchen dazu wieder Root-Rechte):

# grub-install --root-directory=/media/disk /dev/sdb

Hier teilen Sie dem Bootloader mit, er soll die Grub-Images im Ordner /media/disk (--root-directory=/media/disk) suchen und dann in den Boot-Sektor des USB-Sticks installieren. Erscheint die Fehlermeldung [...]stage1 not read correctly, versuchen Sie vermutlich, ein FAT32-Dateisystem auf eine Partition vom Typ Linux zu spielen: Ändern Sie den [Type] der Partition.

Gewöhnlich startet nun die Grub-Shell und Sie müssen die Boot-Parameter manuell eingeben. Um das zu verhindern, legen Sie auf dem Stick im Verzeichnis /boot/grub eine Datei namens menu.lst an und tragen mit Hilfe eines Editors die folgenden Zeilen ein:

title   Damn Small Linux
root    (hd0,0)
kernel  /linux24 root=/dev/sdb1 ro lang=de toram noeject frugal
initrd  /minirt24.gz
boot

Würden Sie den Stick nun neu starten, böte Ihnen das Bootmenü an, DSL zu laden – würde dann allerdings daran scheitern, dass es die DSL-Image-Dateien nicht findet.

Image ist alles

Die DSL-Dateien finden Sie in gepackter Form auf der Heft-DVD. Über die Kommandozeile entpacken Sie die Daten nun auf den erneut unter /media/disk eingehängten USB-Stick:

$ unzip -d /media/disk dsl-3.4.4-embedded.zip

Das war es: Der Befehl ls /media/disk sollte Ihnen nun anzeigen, dass sich die Dateien auf Ihrem Stick befinden. Hängen Sie den USB-Speicher unbedingt über umount aus (er muss noch Daten schreiben) und starten Sie den Rechner neu. Vergessen Sie dabei nicht, die Bootreihenfolge zu ändern. DSL bootet nun wie ein ganz gewöhnliches Linux.

Debian-basiertes Pendrive Linux installieren

Die Pendrive-Seite [2] zeigt nicht nur ausführlich, wie Sie zahlreiche Distributionen auf USB-Sticks installieren: Die Site-Betreiber bieten auch eine sehr empfehlenswerte Distribution namens Pendrive Linux an (Abbildung 5), die auf Debian Etch basiert. Wir zeigen, wie Sie auch dieses Debian-Derivat auf den USB-Speicher spielen – und gehen wieder davon aus, dass Linux den Stick über die Gerätedatei /dev/sdb anspricht.

Abbildung 5: Pendrive Linux nimmt nicht den gesamten Platz des 2 GByte großen USB-Sticks aus dem Test ein. Daher verwandeln Sie die zweite Partition in einen Datenspeicher.

Zunächst überschreiben Sie den kompletten Stick mit Nullen aus /dev/zero wie oben beschrieben. Eine Partition mit Dateisystem legen Sie nicht an. Stattdessen brauchen Sie die Image-Datei von Pendrive Linux, die Sie von der Heft-DVD holen. Über

# dd if=pendrivelinux.img of=/dev/sdb

spielen Sie das Image auf den Stick, das bereits den Bootloader, die Partition und das Dateisystem mitbringt. Achten Sie auch hier darauf, die richtige Gerätedatei anzugeben. Nun können Sie bereits vom Stick booten: Allerdings verbraucht das Image lediglich um die 400 MByte. Es bleibt meist noch reichlich Platz, den Sie nun in eine Datenpartition verwandeln.

Starten Sie dazu Fdisk über fdisk /dev/sdb. Sie steuern das Programm über Tastenkürzel: Mit [N] legen Sie zunächst eine neue Partition an, die Sie über [P] in eine primäre Partition verwandeln. Da Pendrive Linux selbst die erste Partition belegt, drücken Sie [2], um eine zweite Partition für den freien Platz anzulegen. Akzeptieren Sie dann die vorgegebenen Werte für den Anfangs- und den Endzylinder der Partition jeweils über [Eingabe]. Tippen Sie [W], um die Partitionstabelle zu schreiben. Anschließend hängen Sie den Stick mit Root-Rechten über umount /media/pdlinux aus dem Dateisystem aus, ziehen ihn aus dem USB-Port und stecken ihn anschließend wieder ein. Im zweiten Schritt legen Sie für die eben erschaffene zweite Partition (/dev/sdb2) ein Dateisystem an, das Ext2, Ext3, ReiserFS heißen darf:

# mkfs.ext2 -b 4096 -L Daten /dev/sdb2

Versuche, eine VFAT-Partition zu erstellen, scheiterten im Test. Bei einem Neustart geben Sie statt live einfach usb ein, damit Pendrive Linux die Daten auf dem Stick speichert. Ein chown -R user:user /media/Daten sorgt dafür, dass Sie nach dem Booten auch auf die Datenpartition schreiben können.

Multimedia für unterwegs

Neben Pendrive Linux und DSL gibt es auch spezialisierte Distributionen wie Geexbox, die einem bestimmten Zweck dienen. Geexbox bootet lediglich einen MPlayer, der es ermöglicht, Bilder, Filme und DVDs auf beliebigen Rechnern anzusehen, ohne dass dort ein Player installiert sein muss.

Um die nur knapp 7 MByte kleine Distribution auf so einen Stick zu spielen, laden Sie zunächst das aktuellste ISO-Image von der Webseite [3] herunter und brennen es als Datei-Image auf eine handelsübliche CD – K3b kann so etwas beispielsweise. Dann booten Sie den Rechner mit dem Brenner von dieser CD (dazu müssen Sie natürlich die Bootreihenfolge im BIOS ändern) und drücken rasch [F1], sobald der Eingabe-Cursor auftaucht. So gelangen Sie zum Bootprompt.

Stöpseln Sie den USB-Stick in den Rechner, geben Sie install ein und drücken Sie [Eingabe]. Geexbox bootet und lädt ein Kommandozeileninterface, das Ihnen verschiedene Fragen stellt. Zunächst geben Sie Ihre Tastaturbelegung an, im deutschsprachigen Raum gilt [qwertz]. Dann zeigt Ihnen der Geexbox-Installer Gerätedateien an, und Sie wählen Ihren USB-Stick aus. Geben Sie hier die falsche Gerätedatei an, überschreibt der Installer (später) womöglich Ihre reguläre Festplatte.

Im nächsten Schritt wählen Sie Grub als Bootloader, anschließend startet der Installer Cfdisk zum Partitionieren der Festplatte. Über das Menü unten löschen Sie mit [Delete] vorhandene Partitionen. Über [New] | [Primary] legen Sie eine neue primäre Partition an und geben dann bei [Size (in MB)] die gewünschte Größe ein. Über [Type] bestimmen Sie das Dateisystem ([83] für Linux – kein FAT32, damit kommt Geexbox nicht klar) und machen die Partition zum Schluss über [Bootable] ausführbar. Der Menüpunkt [Write] schreibt die fertige Partitionstabelle, über [Quit] verlassen Sie das Programm.

Nun folgen noch weitere Fragen. Der Installer will wissen, wohin Sie Geexbox installieren möchten. Geben Sie hier wieder den Pfad zum USB-Stick an, etwa /dev/sdb1. Ein erneutes Partitionieren lehnen Sie über [No] ab. Bejahen Sie die nächste Frage, konfigurieren Sie die Netzwerkeinstellungen. Das müssen Sie nur, wenn Sie auf Ressourcen im lokalen Netzwerk oder im Internet zugreifen wollen. Dann fragt der Installer nach der Bildschirmauflösung: [1024x768] dürfte eine gute Wahl sein. Als Farbtiefe wählen Sie am besten [24 Bit], als Sprache [de] [de] im deutschen Sprachraum.

Verwenden Sie eine Fernbedienung oder einen DVB-Receiver, geben Sie in den nächsten beiden Menüs jeweils das passende Modell an. Sie steuern Mplayer dann mit einer Fernbedienung oder sehen über die Geexbox fern – genaueres verrät die Dokumentation auf der Webseite [4]. Abschließend fragt der Installer noch, ob er einen Bootsplash einrichten soll, dann installiert sich die Distribution auf den USB-Stick.

Fazit

Linux auf einen USB-Stick zu spielen, ist heute keine Zauberei mehr und funktioniert recht gut. Allerdings gibt's noch ein paar Haken: Nicht jeder Rechner kann von USB-Sticks booten, gerade ältere Rechner reagieren nicht auf die Sticks. Beim Installieren auf den USB-Stick sollten Sie zudem Vorsicht walten lassen, um nicht aus Versehen die Daten auf der lokalen Festplatte zu überschreiben. Beachten Sie diese Hinweise, dann werden Sie viel Spaß mit Ihrer tragbaren Distribution haben.

Infos

[1] Damn Small Linux: http://www.damnsmalllinux.org/index_de.html

[2] Webseite von Pendrive Linux: http://pendrivelinux.com

[3] Die Geexbox zum Download: http://geexbox.org/de/downloads.html

[4] Mit der Geexbox fernsehen und mehr: http://geexbox.org/de/doc.html#tv

Einem Freund empfehlen    Druckansicht beenden Bookmark and Share
Kommentare