Ich habe eine Laptop-Festplatte in einem externen Gehäuse, das ich als großes Pendrive verwende. Für einen zusätzlichen Twist habe ich Linux darauf installiert, so dass ich jeden Rechner meiner Wahl booten kann (z. B. zur Datenwiederherstellung oder Reparatur eines geliehenen Systems oder einfach nur mit einem geliehenen Laptop, ohne das vorinstallierte Windows zu zerstören). Das Problem ist, dass die USB-Festplatte je nach Hardwarekonfiguration unter verschiedenen Pfaden sichtbar sein kann. Für die Grub-Konfiguration verwende ich nur, (hda0,0)
da es sich um das Gerät handelt, von dem aus der Grub gestartet wurde. Ich habe UUID-Einträge in /etc/fstab
. Ich gebe auch rootwait
in den Kernel-Parametern an, dass darauf gewartet wird, dass sich das USB-Subsystem beruhigt, bevor versucht wird, das Gerät zu mounten.
Was soll ich als an den Kernel übergeben root=
? Starten Sie derzeit einmalig vom pendrive, überprüfen Sie die Debug-Meldungen, um festzustellen, welches /dev/sdX
Gerät dem USB-Laufwerk vom Kernel zugewiesen wurde, und starten Sie dann die Grub-Konfiguration neu und bearbeiten Sie sie. Ich kann nichts am PC ändern, außer das Boot from USB hard drive
BIOS zu aktivieren und eine höhere Priorität als die internen Festplatten einzustellen.
Es gibt verschiedene initrd-Generierungsskripte, die die Unterstützung von UUID im Root-Gerätepfad enthalten. Leider unterstützt das native Gentoo-Skript (Genkernel) keine rootwait
und ich hatte kein Glück, andere zu verwenden.
Der Startvorgang läuft wie folgt ab (unter Windows ist er ziemlich ähnlich ):
- Das BIOS wählt das Startgerät aus und lädt den MBR (der zufällig Grub Stufe 1 ist).
- Grub lädt seine Konfigurations- und Stage-2-Dateien von dem Gerät, als das es eingestellt wurde
root
, und verwendet(hd0)
für das Gerät, von dem es vom BIOS geladen wurde. - Grub lädt und startet einen Kernel (immer noch die gleiche Nummerierung, damit ich ihn
(hd0,0)
wieder verwenden kann). - Der Kernel initialisiert alle eingebauten Geräte (
rootwait
zaubert es jetzt). - Der Kernel hängt die Partition ein, als die er übergeben wurde
root
(dies ist ein Kernel-Parameter, kein Grub-Parameter). init.d
Startet den Userland-Bootvorgang, einschließlich des Einbindens von Dingen von/etc/fstab
.
Teil 5 gibt mir Probleme.