Btrfs sem partição inicializando repentinamente para resgate do GRUB

Btrfs sem partição inicializando repentinamente para resgate do GRUB

O problema

Eu tenho uma máquina que inicializa no Arch Linux a partir de um volume Btrfs RAID10 de oito discos. Recentemente, reiniciei e cheguei a este prompt de resgate do GRUB:

Bem-vindo ao GRUB! erro: tal dispositivo não existe: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. erro: sistema de arquivos desconhecido. Entrando no modo de recuperação... grub salvamento> ls (hd0) (hd1) (hd2) (hd3) (hd4) (hd5) resgate grub> ls (hd5) (hd5): Sistema de arquivos desconhecido. grub Rescue> ls (hd4) (hd4): Sistema de arquivos desconhecido. grub salvamento> insmod btrfs grub salvamento> ls (hd0) (hd0): Sistema de arquivos desconhecido. resgate de grub>

Não tenho certeza do que exatamente desencadeou isso. Desde a última inicialização, instalei atualizações ( pacman -Syu) pelo menos duas vezes e posso ter feito outras alterações no sistema, incluindo a reinstalação do GRUB.Consigo iniciar o sistema se adicionar um disco de inicialização dedicado.

A teoria

Ao solucionar problemas com um membro útil do canal IRC #archlinux, encontreiesta nota no wiki do Arch:

Deslocamento de partição

O problema de deslocamento pode ocorrer quando você tenta incorporar core.img em um disco particionado. Isso significa que não há problema em incorporar o core.img do grub em um pool Btrfs em um disco sem partição (por exemplo, /dev/sdX) diretamente. GRUB pode inicializar partições Btrfs, porém o módulo pode ser maior que outros sistemas de arquivos. E o arquivo core.img criado pelo grub-install pode não caber nos primeiros 63 setores (31,5 KiB) da unidade entre o MBR e a primeira partição. Ferramentas de particionamento atualizadas, como fdisk e gdisk, evitam esse problema compensando a primeira partição em aproximadamente 1MiB ou 2MiB.

Isto parece dizer que pode haver problemas com a instalação do GRUB em partiçõesediscos sem partição que as ferramentas de particionamento mais recentes atenuam (por enquanto), deixando espaço extra no início do disco.

A página wiki do GRUB é mais direta:

Instalar em partição ou disco sem partição

Aviso:GRUBdesencoraja fortementeinstalação em um setor de inicialização de partição ou em um disco sem partição, como faz o GRUB Legacy ou o Syslinux. Esta configuração está sujeita a falhas, especialmente durante atualizações, e énão suportadopelos desenvolvedores do Arch.

Bem, que droga.

Pelo que vale, grub-install -vinclui esta linha em sua saída:

grub-install: info: the total module size is 0xa07c.

Isso é ~ 41K, solidamente acima do limite de 31,5KiB mencionado acima, mas não conheço o GRUB o suficiente para ter certeza de que essa é a causa dos meus problemas.

As questões

  1. Se esteéo problema, como posso prová-lo - e por que não grub-installfalha ruidosamente se for o caso?

  2. Qual é a maneira correta de formatar discos inicializáveis ​​​​Btrfs daqui para frente? MBR? GPT? - um disco de inicialização dedicado é tentador, mas gosto de ter um gerenciador de inicialização redundante em cada dispositivo do volume.

  3. Existe uma maneira melhor de migrar cada disco para uma tabela de partição do que apagar e executar btrfs replacecada disco?

Responder1

Antigamente, criar uma tabela de partição MBR com, digamos, fdisk, por padrão, deixava os primeiros 63 setores intactos. É aí que o GRUB e outros bootloaders podem ser instalados.

Avançando para os dias modernos, a mesma ferramenta (fdisk) deixa mais espaço não utilizado; o suficiente para o GRUB2 instalar seu estágio 1 com suporte a BTRFS. Acredito que o deslocamento seja de cerca de 1 MB, por padrão; seja lá o que isso signifique nos setores.

Não sei por que grub-installnão falha, mas suponho que não verifique o tamanho do setor de inicialização; e sem partições como poderia.

Não vejo problema em ter bootloaders redundantes. Você precisa gerenciar isso manualmente, mas o stage1 do GRUB2 não muda com frequência. Mas isso significa que você precisaria de partições.

Não conheço uma ferramenta que possa migrar o disco para adicionar uma tabela de partições. O problema é que o sistema de arquivos está vinculado a setores do disco e a adição de uma tabela de partição altera esses setores. Se seus sistemas de arquivos BTRFS estivessem no LVM, então sim, você seria capaz de mover as coisas porque o sistema de arquivos estaria vinculado a "setores virtuais". Não estou dizendo que você deve fazer isso, apenas ilustrando qual é o problema.

informação relacionada