LINUX: booten vom USB-Stick
Tom
- sonstiges
Hello,
gibt es eine Möglichkeit, ein Linux vom USB-Stick zu booten, auch bei einem älteren System? Was muss man da beachten, wenn sowas überhaupt geht?
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hallo Tom,
gibt es eine Möglichkeit, ein Linux vom USB-Stick zu booten, auch bei einem älteren System? Was muss man da beachten, wenn sowas überhaupt geht?
wenn der Rechner vom USB-Stick starten kann, dann kann er auch ein Linux booten.
Wenn der Rechner nicht vom USB-Stick starten kann, dann erübrigt sich die Frage.
Derzeit dürften sehr viele ältere Rechner nicht vom USB-Stick starten können.
Freundliche Grüße
Vinzenz
Hi,
gibt es eine Möglichkeit, ein Linux vom USB-Stick zu booten, auch bei einem älteren System? Was muss man da beachten, wenn sowas überhaupt geht?
es hängt grundsätzlich vom Rechner (genauer: vom BIOS) ab, ob das System *überhaupt* von einem USB-Device booten will. Moderne BIOSe fahren da wohl eine Art "Legacy Mode", in dem das USB-Speichermedium über dieselben BIOS-Funktionen angesprochen wird wie die Festplatte(n).
Eventuell funktioniert das nicht mit allen vorhandenen USB-Ports; ich habe hier z.B. einen Rechner stehen, der grundsätzlich vom USB-Device booten kann, aber nur über genau *einen* der sechs vorhandenen USB-Ports.
Nebenbei ist, wie ich ab und zu gelesen habe, der Erfolg auch noch vom verwendeten USB-Stick abhängig. Das scheint eine Timing-Angelegenheit zu sein, wenn ich das richtig verstehe.
Dass Linux prinzipiell in der Lage ist, vom USB-Stick zu booten, kann man vielfach nachlesen - aber wenn's das System nicht unterstützt, hat man da natürlich schlechte Karten.
So long,
Martin
Moin Moin!
gibt es eine Möglichkeit, ein Linux vom USB-Stick zu booten,
Ja, fast kein Problem. Linux-Distributionen, die mit einer Init-Ramdisk booten, trödeln zwischen Ende des Kernel-Boots und Mounten des Root-Devices lange genug herum, damit das USB-Subsystem den Stick erkennen und als /dev/sdX einbinden kann. Wenn Du ohne Initrd bootest, ist der Kernel manchmal schneller fertig als das USB-Subsystem, findet das Root-Device nicht, und macht Panik. Abhilfe schafft eine initrd, die im wesentlichen aus "sleep 10" besteht, evtl. auch die Kerbel-Parameter rootdelay=10 oder rootwait.
Linux sieht den USB-Stick (via usb-storage) als SCSI-Festplatte, d.h. Du kannst ganz normal wie bei einer SCSI-Festplatte vorgehen, d.h. Partitionstabelle, LILO, Syslinux oder Grub, usw. Swap auf Flash ist eher kontraproduktiv, und gerüchteweise leiden Flash-Speicher sehr unter Journaling-Dateisystemen. Beim Mounten solltest Du Schreibzugriffe möglichst reduzieren, entweder brutal read-only oder wenigstens noatime.
auch bei einem älteren System? Was muss man da beachten, wenn sowas überhaupt geht?
Passende BIOS-Version finden.
Für USB-Boot gibt es mehrere Varianten:
* USB-Floppy erwartet einen Stick im Superfloppy-Format, d.h. OHNE Partitionstabelle. Das Dateisystem wird direkt auf /dev/sdX statt /dev/sdXn geschrieben (auch wenn die Tools dich noch so sehr warnen, das zu tun). Dem Bootloader mußt Du ggf. erklären, dass der Stick im BIOS als Laufwerk 0x00 statt 0x80 angesprochen wird.
* USB-CDROM -- wird wohl nur funktionieren, wenn der USB-Stick sich als USB-CDROM ausgeben kann. Dazu muß irgendwie ein ISO-Image in eine geschützte Partition des Sticks gemogelt werden. Sehr herstellerspezifisch. Hab ich noch nicht ausprobiert.
* USB-ZIP -- Erwartet, eine ZIP-Drive-artige Partitionstabelle vorzufinden, insbesondere heißt das: Nur eine Partition, die muß dämlicherweise die Nummer 4 haben, sprich: Du mußt /dev/sdX4 als Dateisystem für alles nutzen. Außerdem muß die Partitionstabelle bei Zylindern und Köpfen besondere Werte haben (hab ich jetzt gerade nicht im Kopf).
* USB-HDD -- Dein Traumziel. Behandelt den USB-Stick exakt wie eine Festplatte an IDE, SATA oder SCSI. Beim Booten bekommt der USB-Stick die BIOS-Nummer 0x80 und die anderen Festplatten rücken enstprechend auf. Der Bootloader könnte etwas verunsichert sein, weil der Stick beim Booten von Festplatte eben nicht die BIOS-Nummer 0x80 bekommt.
In jedem Fall mußt Du aufpassen, das Linux mit den diversen Massenspeichern nicht durcheinander kommt. Bei einem klassichen PC mit IDE-Festplatte und USB-Stick ist die Sache noch ganz einfach, /dev/hda ist die Platte, /dev/sda ist der Stick. Wenn aber SCSI-Platten, SATA-Platten oder IDE-Platten über die libata ins Spiel kommen, dann heißt die Platte in aller Regel /dev/sda und der Stick eben /dev/sdb. Wenn der Bootloader dem Kernel in dem Fall aber root=/dev/sda1 sagt, versuchst Du im schlimmsten Fall, Linux von einer Windows-Partition zu booten.
Eine Init-Ramdisk, die sich das passende Root-Device jeweils anhand der UUID oder des Volume-Labels sucht, löst das Problem sehr elegant. Brute Force wäre, den Support für IDE- und SATA-Platten sowie sämtliche SCSI-Host-Adapter außer USB-Storage abzuschalten, dann ist der USB-Stick immer /dev/sda.
Alexander