Meu sistema inicializa OK com isso na minha configuração do GRUB 2:
linux /bzImage root=/dev/sda2 init=/usr/lib/systemd/systemd ro
Mas se eu substituir /dev/sda2
pelo UUID correspondente:
linux /bzImage root=UUID=666c2eee-193d-42db-a490-4c444342bd4e init=/usr/lib/systemd/systemd ro
então ele falha durante a inicialização:
kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)
O UUID parece estar correto:
# blkid
/dev/sda1: UUID="97ac3744-39de-4d6d-9a81-e3a3ea08a8bb" TYPE="ext2"
/dev/sda2: UUID="666c2eee-193d-42db-a490-4c444342bd4e" TYPE="ext4"
Por que isso não funciona? É porque eu não estou usando um initramfs?
Este é o x86_64 Gentoo Linux com o kernel 3.10.7. Estou usando uma tabela de partição MBR sda
e uma tabela de partição GUID sdb
.
unknown-block(0,0)
parece um dispositivo GRUB para mim. Meu palpite é que o GRUB não pode usar esse UUID por algum motivo.sda1
Eu não mostram que parte da configuração..)init
.Respostas:
Apenas para esclarecer,
UUID
s são a única maneira confiável para o kernel identificar discos rígidos. Existem dois tipos: UUID, que é armazenado no sistema de arquivos e não está disponível para o kernel no momento da inicialização, e PARTUUID, que é armazenado na tabela de partições e está disponível no momento da inicialização. Então você tem que usarcomo
/dev/sd??
pode mudar com dispositivos conectados / desconectados.Não se esqueça de capitalizar o número hexadecimal de onde
SSSSSSSS-PP
você recebeblkid
!Quanto mais fácil de usar
trabalhe apenas com um
initramfs
que busque esses identificadores.Portanto, se você usar um não vazio
initramfs
, poderá ter todos os três! Com um vazioinitramfs
, você só temPARTUUID
.fonte
cpio
arquivo que o kernel descompacta/
na inicialização. O initramfs é um sistema de arquivos - é sempre o primeiro/
montado e de onde o kernel chamainit
. Você pode compilar o conteúdo no kernel ou descompactá-lo na inicialização - essas são as duas opções.O parâmetro que você precisa passar para inicializar a partir do UUID é
PARTUUID
. Então deveria serroot=PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
.A documentação explica por que está voltando com
unknown-block(0,0)
:kernel-parameters.txt :
init / do_mounts.c :
O último bit no final diz que, se não puder entender o valor, ele retornará
(0,0)
, daí o seu erro.fonte
PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e
, não funciona. No entanto, eu pude usarPARTUUID=SSSSSSSS-02
(onde SSSSSSSS é a assinatura de disco do NT mostrada logo antes da mensagem de erro).root=UUID
apenasroot=PARTUUID
. Se você deseja usar um UUID de sistema de arquivos, acho que precisa de um initramfs que possa lidar com a montagem de sistemas de arquivos por UUID.grub
botas muito felizes comroot=UUID
.Este é um tópico de 5 anos. Mas ainda não está totalmente respondido. Há um pequeno exemplo que falta. Aqui está:
Neste exemplo:
... usando uma partição GPT. Com o MBR (partição DOS), os PARTUUIDs são mais curtos, mas o procedimento é o mesmo ...
obtenha os PARTUUID's com blkid:
/boot/grub/grub.cfg:
/ etc / fstab /:
Isso é conhecido por TRABALHAR com lfs8.1 (kernel 4.12.7) Mas acho que também deve funcionar com a maioria dos outros kernels (antigos e novos ...)
fonte