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
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".