Mein System bootet in meiner GRUB 2-Konfiguration OK:
linux /bzImage root=/dev/sda2 init=/usr/lib/systemd/systemd ro
Aber wenn ich durch /dev/sda2
die entsprechende UUID ersetze :
linux /bzImage root=UUID=666c2eee-193d-42db-a490-4c444342bd4e init=/usr/lib/systemd/systemd ro
dann scheitert es beim booten:
kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)
Die UUID scheint korrekt zu sein:
# blkid
/dev/sda1: UUID="97ac3744-39de-4d6d-9a81-e3a3ea08a8bb" TYPE="ext2"
/dev/sda2: UUID="666c2eee-193d-42db-a490-4c444342bd4e" TYPE="ext4"
Warum funktioniert es nicht? Liegt es daran, dass ich kein initramfs verwende?
Dies ist x86_64 Gentoo Linux mit Kernel 3.10.7. Ich verwende eine MBR-Partitionstabelle auf sda
und eine GUID-Partitionstabelle auf sdb
.
unknown-block(0,0)
sieht für mich aus wie ein GRUB-Gerät. Ich vermute, dass GRUB diese UUID aus irgendeinem Grund nicht verwenden kann.sda1
. Ich habe diesen Teil der Konfiguration nicht gezeigt.)init
.Antworten:
Nur zur Verdeutlichung sind
UUID
s die einzige zuverlässige Möglichkeit für den Kernel, Festplatten zu identifizieren. Es gibt zwei Arten: UUID, die im Dateisystem gespeichert ist und dem Kernel beim Booten nicht zur Verfügung steht, und PARTUUID, die in der Partitionstabelle gespeichert ist und beim Booten zur Verfügung steht. Also musst du benutzenda
/dev/sd??
kann sich bei gesteckten / nicht gesteckten geräten ändern.Vergessen Sie nicht, die Hexadezimalzahl , von der Sie erhalten , in Großbuchstaben zu schreiben !
SSSSSSSS-PP
blkid
Je einfacher zu bedienen
arbeiten Sie nur mit einem
initramfs
, der diese Bezeichner abruft.Wenn Sie also eine nicht leere verwenden
initramfs
, können Sie alle drei haben! Mit einem leereninitramfs
haben Sie nurPARTUUID
.quelle
cpio
Archiv enthält, in das der Kernel/
beim Booten entpackt . initramfs ist ein Dateisystem - es ist immer das erste/
gemountete und von wo aus der Kernel aufruftinit
. Sie können die Inhalte in den Kernel kompilieren oder beim Booten entpacken - das sind die beiden Möglichkeiten.Der Parameter, den Sie zum Booten von der UUID übergeben müssen, ist
PARTUUID
. So sollte es seinroot=PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
.Die Dokumentation erklärt, warum es zurückkommt mit
unknown-block(0,0)
:kernel-parameters.txt :
init / do_mounts.c :
Das letzte Bit am Ende besagt, dass, wenn es den Wert nicht verstehen kann, er zurückgibt
(0,0)
, daher Ihr Fehler.quelle
PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
funktioniert daher nicht. Ich konnte jedoch verwendenPARTUUID=SSSSSSSS-02
(wobei SSSSSSSS die NT-Datenträgersignatur ist, die direkt vor der Fehlermeldung angezeigt wird).root=UUID
nur unterstütztroot=PARTUUID
. Wenn Sie eine Dateisystem-UUID verwenden möchten, benötigen Sie vermutlich ein initramfs, das das Mounten von Dateisystemen über die UUID unterstützt.grub
Stiefel ganz gerne mitroot=UUID
.Dies ist ein 5 Jahre alter Thread. Aber noch ist es imho nicht vollständig beantwortet. Es fehlt ein kleines Beispiel. Hier ist es:
In diesem Beispiel:
... mit einer GPT-Partition. Mit MBR (DOS-Partition) sind die PARTUUIDs kürzer, aber das Verfahren ist das gleiche ...
Holen Sie sich die PARTUUID's mit blkid:
/boot/grub/grub.cfg:
/ etc / fstab /:
Es ist bekannt, dass dies mit lfs8.1 (Kernel 4.12.7) funktioniert. Aber ich denke, es sollte auch mit den meisten anderen Kerneln funktionieren (alte und neue ...).
quelle