Mi sistema arranca bien con esto en mi configuración de GRUB 2:
linux /bzImage root=/dev/sda2 init=/usr/lib/systemd/systemd ro
Pero si lo reemplazo /dev/sda2
con el UUID correspondiente:
linux /bzImage root=UUID=666c2eee-193d-42db-a490-4c444342bd4e init=/usr/lib/systemd/systemd ro
entonces falla durante el arranque:
kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)
El UUID parece ser correcto:
# blkid
/dev/sda1: UUID="97ac3744-39de-4d6d-9a81-e3a3ea08a8bb" TYPE="ext2"
/dev/sda2: UUID="666c2eee-193d-42db-a490-4c444342bd4e" TYPE="ext4"
¿Por qué no funciona? ¿Es porque no estoy usando un initramfs?
Esto es x86_64 Gentoo Linux con el kernel 3.10.7. Estoy usando una tabla de particiones MBR sda
y una tabla de particiones GUID sdb
.
unknown-block(0,0)
me parece un dispositivo GRUB. Supongo que GRUB no puede usar ese UUID por alguna razón.sda1
. No mostré esa parte de la configuración.)init
.Respuestas:
Solo para aclarar, los
UUID
s son la única forma confiable para que el núcleo identifique los discos duros. Hay dos tipos: UUID, que está almacenado en el sistema de archivos y no está disponible para el núcleo en el momento del arranque, y PARTUUID, que está almacenado en la tabla de particiones y está disponible en el momento del arranque. Entonces tienes que usarcomo
/dev/sd??
puede cambiar con dispositivos conectados / desconectados.¡No olvides poner en mayúscula el número hexadecimal
SSSSSSSS-PP
que obtienesblkid
!Cuanto más fácil de usar
solo funciona con un
initramfs
que obtenga estos identificadores.Por lo tanto, si usa un no vacío
initramfs
, ¡puede tener los tres! Con un vacíoinitramfs
, solo tienesPARTUUID
.fuente
cpio
archivo que el kernel desempaqueta/
en el arranque. initramfs es un sistema de archivos: siempre es el primero/
montado y desde donde llama el núcleoinit
. Puede compilar los contenidos en el núcleo o desempaquetarlos en el arranque; esas son las dos opciones.El parámetro que debe pasar para arrancar desde UUID es
PARTUUID
. Así debería serroot=PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
.La documentación explica por qué vuelve con
unknown-block(0,0)
:kernel-parameters.txt :
init / do_mounts.c :
El último bit al final dice que si no puede entender el valor, regresa
(0,0)
, de ahí su error.fuente
PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
que no funciona. Sin embargo, pude usarPARTUUID=SSSSSSSS-02
(donde SSSSSSSS es la firma del disco NT que se muestra justo antes del mensaje de error).root=UUID
, soloroot=PARTUUID
. Si desea utilizar un UUID de sistema de archivos, creo que necesita un initramfs que pueda manejar el montaje de sistemas de archivos por UUID.grub
botas muy felices conroot=UUID
.Este es un hilo de 5 años. Pero aún así, en mi opinión, no está totalmente respondido. Falta un pequeño ejemplo. Aquí está:
En este ejemplo:
... usando una partición GPT. Con MBR (partición dos) las PARTUUID son más cortas pero el procedimiento es el mismo ...
obtener los PARTUUID con blkid:
/boot/grub/grub.cfg:
/ etc / fstab /:
Se sabe que esto FUNCIONA con lfs8.1 (kernel 4.12.7), pero creo que debería funcionar también con la mayoría de los otros núcleos (antiguos y nuevos ...)
fuente