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/sda2con 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 sday 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
UUIDs 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-PPque obtienesblkid!Cuanto más fácil de usar
solo funciona con un
initramfsque obtenga estos identificadores.Por lo tanto, si usa un no vacío
initramfs, ¡puede tener los tres! Con un vacíoinitramfs, solo tienesPARTUUID.fuente
cpioarchivo 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 :
root = [KNL] Sistema de archivos raíz Vea el comentario name_to_dev_t en init / do_mounts.c.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-4c444342bd4eque 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.grubbotas 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