Linux/Linux auf dem USB-Stick

Aus Mikiwiki
Wechseln zu: Navigation, Suche

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, was einige Minuten dauern kann (hier muss die Nummer hinter "sdb" weggelassen werden). Zurück bleibt eine leere, nicht partitionierte "Festplatte". Die Ausgabe "No space left on device" zeigt an, dass der Shell-Befehl cat fertig ist.

# 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.

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



Weblinks