Acabei de ter uma série de problemas com a inicialização do meu sistema Debian (SID), de repente ele relatou:
/grub/i386-pc/normal.mod not found.
Eventualmente, eu o recuperei (fsck moveu muitas coisas de /boot para lost+found e precisei substituir via grub-install)
Mas depois que tudo estava funcionando e eu reinstalei vários pacotes grub-* (caso eles estivessem agora em achados e perdidos). Percebi que o grub.cfg tinha muitas diferenças, da forma:
< set root='hd2,msdos1'
---
> set root='hd0,msdos1'
Na verdade, meu dispositivo /boot (e / (root)) agora era /dev/sdc (hd2) e não /dev/sda (hd0). Por um lado, não consigo ver como/por que mudou, mas, por outro lado, percebo que o nome /dev/sdX não é fixo e PODE mudar de uma inicialização para a outra. Então, diante de tudo isso, minha pergunta é:
Como o grub.cfg pode conter entradas como:
set root='hd2,msdos1'
Como (não há arquivo de mapeamento) isso equivale a /dev/sdc ...e se na próxima inicialização esse disco aparecer como sdb ou sda ?
ABTW. A causa inicial provavelmente foi corrompida /boot ... Percebo que é ext2 , não posso usar ext4? ... e esse não é o padrão agora? [Bug 985470 ]
Deve parecer algo como
Portanto, o valor inicial é apenas uma dica opcional. E o que realmente está fazendo é procurar um UUID do sistema de arquivos.
É tarefa de
grub-probe
( https://www.gnu.org/software/grub/manual/grub/html_node/Invoking-grub_002dprobe.html ) converter um/dev/sda1
nome para(hd0,msdos1)
.Mas se a conversão falhar, você pode ajudá-lo com um arquivo de mapa de dispositivo ( https://www.gnu.org/software/grub/manual/grub/html_node/Device-map.html#Device-map ).
Você pode digitar
grub-probe -t drive /
para obter a unidade/
com o esquema de nomenclatura do Grub.