Mon système démarre correctement avec cela dans ma configuration GRUB 2:
linux /bzImage root=/dev/sda2 init=/usr/lib/systemd/systemd ro
Mais si je remplace /dev/sda2
par l'UUID correspondant:
linux /bzImage root=UUID=666c2eee-193d-42db-a490-4c444342bd4e init=/usr/lib/systemd/systemd ro
puis il échoue au démarrage:
kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)
L'UUID semble être correct:
# blkid
/dev/sda1: UUID="97ac3744-39de-4d6d-9a81-e3a3ea08a8bb" TYPE="ext2"
/dev/sda2: UUID="666c2eee-193d-42db-a490-4c444342bd4e" TYPE="ext4"
Pourquoi ça ne marche pas? Est-ce parce que je n'utilise pas d'initramfs?
Il s'agit de Gentoo Linux x86_64 avec le noyau 3.10.7. J'utilise une table de partition MBR sda
et une table de partition GUID sdb
.
unknown-block(0,0)
ressemble à un appareil GRUB pour moi. je suppose que GRUB ne peut pas utiliser cet UUID pour une raison quelconque.sda1
. Je n'ai pas montré cette partie de la configuration.)init
.Réponses:
Juste pour clarifier, les
UUID
s sont le seul moyen fiable pour le noyau d'identifier les disques durs. Il existe deux types: UUID, qui est stocké dans le système de fichiers et n'est pas disponible pour le noyau au démarrage, et PARTUUID, qui est stocké dans la table de partition et EST disponible au démarrage. Vous devez donc utilisercomme cela
/dev/sd??
peut changer avec les appareils branchés / débranchés.N'oubliez pas de mettre en majuscule le nombre hexadécimal que
SSSSSSSS-PP
vous obtenezblkid
!Le plus simple à utiliser
ne fonctionne qu'avec un
initramfs
qui récupère ces identifiants.Donc, si vous utilisez un non-vide
initramfs
, vous pouvez avoir les trois! Avec un videinitramfs
, vous avez seulementPARTUUID
.la source
cpio
archive que le noyau décompresse/
au démarrage. initramfs est un système de fichiers - c'est toujours le premier/
monté et d'où le noyau appelleinit
. Vous pouvez compiler le contenu dans le noyau ou le décompresser au démarrage - ce sont les deux options.Le paramètre que vous devez passer pour démarrer à partir de l'UUID est
PARTUUID
. Il devrait en être ainsiroot=PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
.La documentation explique pourquoi elle revient avec
unknown-block(0,0)
:kernel-parameters.txt :
init / do_mounts.c :
Le dernier bit à la fin indique que s'il ne peut pas comprendre la valeur, il revient
(0,0)
, d'où votre erreur.la source
PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
ne fonctionne pas. Cependant, j'ai pu utiliserPARTUUID=SSSSSSSS-02
(où SSSSSSSS est la signature de disque NT affichée juste avant le message d'erreur).root=UUID
, seulementroot=PARTUUID
. Si vous voulez utiliser un UUID de système de fichiers, je suppose que vous avez besoin d'un initramfs qui peut gérer le montage de systèmes de fichiers par UUID.grub
bottes avec bonheurroot=UUID
.Il s'agit d'un fil de 5 ans. Mais il n'est toujours pas pleinement répondu. Il manque un petit exemple. C'est ici:
Dans cet exemple:
... en utilisant une partition GPT. Avec le MBR (partition dos) les PARTUUID sont plus courts mais la procédure est la même ...
récupérez les PARTUUID avec blkid:
/boot/grub/grub.cfg:
/ etc / fstab /:
Ceci est connu pour FONCTIONNER avec lfs8.1 (noyau 4.12.7) Mais je pense que cela devrait aussi fonctionner avec la plupart des autres noyaux (anciens et nouveaux ...)
la source