Linux/Linux auf dem USB-Stick
Linux kann als vollständiges Betriebssystem auf einen USB-Stick installiert und von dort gestartet werden.
Nicht alle Rechner booten von USB-Sticks. Das BIOS des Rechners muss die Option anbieten, von "USB-HDD" zu booten. Probleme kann es auch geben, wenn der USB-Stick USB 1.1 verwendet, der Rechner aber USB 2.0-Anschlüsse besitzt (oder umgekehrt). Passt hingegen alles, so lädt der Rechner nach dem Einschalten den Bootloader direkt vom USB-Stick.
Damn Small Linux auf dem USB-Stick
1. Der USB-Stick wird partitioniert und darauf ein Dateisystem erstellt. Dazu wird ein bestehendes Linux gestartet, ein Terminalfenster geöffnet und als Benutzer "root" folgendes eingegeben.
# tail -f /var/log/messages
2. Jetzt wird der USB-Stick eingesteckt, verschiedene Meldungen am Bildschirm zeigen nun unter anderem die Gerätedatei für den USB-Stick (hier in der Zeile "Mar 3 14:41:15 emu kernel: [ 1526.913067] sdb: sdb1" - der Gerätename lautet also "sdb1").
Mar 3 14:41:09 emu kernel: [ 1526.199265] usb 5-6: new high speed USB device using ehci_hcd and address 2 Mar 3 14:41:09 emu kernel: [ 1526.228397] usb 5-6: configuration #1 chosen from 1 choice Mar 3 14:41:10 emu kernel: [ 1526.446805] usbcore: registered new interface driver libusual Mar 3 14:41:10 emu kernel: [ 1526.485155] Initializing USB Mass Storage driver... Mar 3 14:41:10 emu kernel: [ 1526.486892] scsi2 : SCSI emulation for USB Mass Storage devices Mar 3 14:41:10 emu kernel: [ 1526.488426] usbcore: registered new interface driver usb-storage Mar 3 14:41:10 emu kernel: [ 1526.488436] USB Mass Storage support registered. Mar 3 14:41:15 emu kernel: [ 1526.895062] scsi 2:0:0:0: Direct-Access SanDisk Cruzer 8.02 PQ: 0 ANSI: 0 CCS Mar 3 14:41:15 emu kernel: [ 1526.895595] scsi 2:0:0:1: CD-ROM SanDisk Cruzer 8.02 PQ: 0 ANSI: 0 Mar 3 14:41:15 emu kernel: [ 1526.905896] sd 2:0:0:0: [sdb] 15704063 512-byte hardware sectors (8040 MB) Mar 3 14:41:15 emu kernel: [ 1526.910052] sd 2:0:0:0: [sdb] Write Protect is off Mar 3 14:41:15 emu kernel: [ 1526.912420] sd 2:0:0:0: [sdb] 15704063 512-byte hardware sectors (8040 MB) Mar 3 14:41:15 emu kernel: [ 1526.913048] sd 2:0:0:0: [sdb] Write Protect is off Mar 3 14:41:15 emu kernel: [ 1526.913067] sdb: sdb1 Mar 3 14:41:15 emu kernel: [ 1526.914367] sd 2:0:0:0: [sdb] Attached SCSI removable disk Mar 3 14:41:15 emu kernel: [ 1526.914448] sd 2:0:0:0: Attached scsi generic sg2 type 0 Mar 3 14:41:15 emu kernel: [ 1526.921672] sr1: scsi3-mmc drive: 48x/48x tray Mar 3 14:41:15 emu kernel: [ 1526.921848] sr 2:0:0:1: Attached scsi generic sg3 type 5
3. Der USB-Stick wird dabei üblicherweise automatisch unter "/media" ins bestehende Dateisystem eingehängt und die Dateien im lokalen Dateimanager angezeigt. Sollte das nicht der Fall sein, so kann der USB-Stick als Benutzer "root" wie folgt eingehängt werden, .
# sudo mkdir -p /media/disk # sudo mount -t auto /dev/sdb1 /media/disk
4. Durch Eingabe des Shell-Befehls mount erfährt man gewöhnlich, wo Linux den USB-Stick einhängt (hier "/media/disk").
# mount /dev/sdb1 on /media/disk type vfat (rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=1000,utf8,umask=077,flush)
5. Auf Grundlage dieser Information werden die Daten auf dem eingehängten USB-Stick als Benutzer "root" überschrieben (hier muss die Nummer hinter "sdb" weggelassen werden). Zurück bleibt eine leere, nicht partitionierte "Festplatte". Die Ausgabe "cat: Schreibfehler: No space left on device" zeigt an, dass der Shell-Befehl cat fertig ist. Bei meinem 8 GB grossen USB-Stick dauerte dieser Schreibvorgang mindestens eine halbe Stunde.
# cat /dev/zero > /dev/sdb
6. Nun wird der USB-Stick aus dem Dateisystem ausgehängt und herausgezogen.
# umount /dev/sdb1
7. Der USB-Stick wird erneut am USB-Anschluss eingesteckt und mit dem Shell-Befehl cfdisk formatiert. Mit Hilfe der Pfeiltasten wird das Menü "New > Primary > Grösse in MByte" angewählt, um den gesamten USB-Stick mit einer Partition auszustatten. Bei Bedarf können wie auf einer Festplatte auch hier mehrere Partitionen eingerichtet werden. Das muss bei der Installation von Linux auf dem USB-Stick dann allerdings berücksichtigt und stets die richtige Partition angegeben werden.
# cfdisk /dev/sdb
So wird eine primäre Partition auf dem USB-Stick angelegt, die entweder den ganzen Platz oder nur einen Teil davon umfasst. Über den Menüpunkt "Bootable" wird die Partition bootfähig gemacht.
Um eine FAT32-Partition zu erstellen, um ein FAT32-Dateisystem zu nutzen, wird das Menü "Type" angewählt und "0B" eingegeben. Abschliessend werden die Einstellungen über das Menü "Write" geschrieben.
Meist muss der USB-Stick danach ausgesteckt und erneut eingesteckt werden, damit das System die neue Partitionstabelle einliest.
8. Nun wird das FAT32-Dateisystem auf den partitionierten, leeren USB-Stick gespielt.
# mkfs.vfat /dev/sdb1
Zur Nutzung anderer Dateisysteme funktionieren auch die Shell-Befehle mkfs.ext2, mkfs.ext3 und mkfs.reiserfs. In diesem Fall muss mit cfdisk allerdings als "Type" die Zahl "83" eingegeben worden sein, die für Linux steht.
9. Jetzt wird der Bootloader GRUB eingespielt. Dazu wird der USB-Stick erneut eingesteckt - Linux sollte ihn nun automatisch ins Verzeichnis "/media/disk" einhängen, was mit dem Shell-Befehl mount überprüft werden kann. Dann wird werden mit folgendem Befehl zwei Verzeichnisse für den Bootlader auf dem USB-Stick angelegt.
# mkdir -p /media/disk/boot/grub
10. Verwendet das aktuelle Linux-System ebenfalls GRUB als Bootlader (was bei Opensuse 10.2, SUSE Linux 10.1 und Ubuntu zutrifft), so können die benötigten Dateien von hier auf den USB-Stick kopiert werden.
# cp /boot/grub/*stage* /media/disk/boot/grub
11. Nun wird über die Datei "device.map" dafür gesorgt, dass GRUB den USB-Stick als Bootmedium erkennt. Die im BIOS festgelegte Startreihenfolge kann der Bootloader nämlich nicht erkennen. Hier darf nicht "sdb1" oder "sdb2", sondern wirklich nur "sdb" als Gerätedatei angegeben werden.
# echo '(hd0) /dev/sdb' > /media/disk/boot/grub/device.map
12. Jetzt folgt die eigentliche Installation von GRUB in den Master Boot Record des USB-Sticks. Dabei wird dem Bootloader mitgeteilt, er solle die GRUB-Abbilddateien im Ordner "/media/disk") suchen und dann in den MBR des UBS-Sticks installieren. Sollte dabei die Fehlermeldung "stage1 not read correctly" erscheinen, so wird vermutlich versucht, ein FAT32-Dateisystem auf eine Partition vom Typ "Linux" zu spielen - in diesem Fall muss zuvor der Partitionstyp geändert werden.
# grub-install --root-directory=/media/disk /dev/sdb
13. Gewöhnlich startet nun die GRUB-Shell und fragt die Boot-Parameter ab. Auf dem USB-Stick wird die Datei "/boot/grub/menu.lst" angelegt und folgende Zeilen eingetragen:
title Damn Small Linux root (hd0,0) kernel /linux24 root=/dev/sdb1 ro lang=de toram noeject frugal initrd /minirt24.gz boot
Würde der USB-Stick neu gestartet werden, so würde das Bootmenü anbieten, Damn Small Linux zu laden - das würde dann aber vorerst daran scheitern, dass die DSL-Abbilddateien nicht gefunden werden.
14. Die Dateien werden auf dem erneut unter "/media/disk" eingehängten USB-Stick entpackt.
$ unzip -d /media/disk dsl-3.4.4-embedded.zip
15. Folgender Shell-Befehl sollte nun zeigen, dass sich die Dateien auf dem USB-Stick befinden.
$ ls /media/disk
16. Nun muss der USB-Stick unbedingt über den Shell-Befehl umount ausgehängt werden, damit er die Daten schreiben kann, und anschliessend der Rechner neu gestartet werden. Dabei sollte nicht vergessen werden, im BIOS die Bootreihenfolge anzupassen. Damn Small Linux bootet nun wie ein ganz gewöhnliches Linux - nur eben von USB-Stick statt von Festplatte.
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|