update-grub vs. grub-install?

update-grub, pelo menos no Debian e seus parentes como o Ubuntu, é basicamente apenas um wrapper em torno de grub-mkconfig. Então ele cria/atualiza/regera a configuração do GRUB, não o próprio bootloader.

O que o grub-install realmente faz depende de qual versão do GRUB você está rodando: tradicional BIOS GRUB ou UEFI GRUB?

Com a BIOS GRUB tradicional, grub-install irá (re)escrever a parte do GRUB embutida no Master Boot Record, e codificar nele os números de bloco de disco físico de onde ler a próxima parte do GRUB. Ele também determinará de qual partição o arquivo de configuração real do GRUB (/boot/grub/grub.cfg) será lido. Um fator importante aqui é o arquivo /boot/grub/device.map, que diz ao GRUB como a numeração de dispositivos da BIOS (e portanto do GRUB) mapeia para dispositivos de disco Linux.

Com o GRUB UEFI, a parte principal do carregador de inicialização do GRUB estará localizada como um arquivo na partição do sistema EFI, tipicamente como /boot/efi/EFI/<name of distribution>/grubx64.efi ou similar. Este caminho de bootloader é armazenado no sistema NVRAM (= o local onde as configurações da BIOS são armazenadas) nas variáveis de boot UEFI. A parte principal do GRUB pode ser completamente independente (e deve ser se o Arranque Seguro estiver em uso!) ou pode carregar funcionalidades adicionais como módulos GRUB, tipicamente do diretório /boot/grub da distribuição Linux da qual faz parte.

As variáveis de arranque UEFI identificarão o disco que o sistema deve usar para procurar a Partição do Sistema EFI e o ficheiro de bootloader dentro dela. Você mesmo pode ver estas variáveis, usando o comando efibootmgr -v. O comando grub-install irá actualizar estas variáveis, a menos que use a opção --no-nvram para especificar o contrário.

Como resultado, tanto com a BIOS tradicional como com a UEFI, correndo grub-install pode actualizar o seu gestor de arranque para ler um ficheiro de configuração GRUB completamente diferente num disco completamente diferente – embora os detalhes desse processo sejam completamente diferentes.

Com UEFI, você pode realmente mudar a seleção do seu dispositivo de boot de dentro do SO, com efibootmgr ou grub-install. Mas grub-install é um grande exagero para isso: se ambas as suas instalações são UEFI e têm as suas próprias partições ESP separadas, elas terão as suas próprias variáveis de arranque UEFI e a selecção entre elas pode ser feita facilmente com efibootmgr, ou mesmo nas definições da BIOS UEFI.

Com a BIOS tradicional, é um pouco mais confuso: você vai querer ter a certeza que cada instalação /boot/grub/device.map identifica o disco dessa instalação específica como hd0, e a outra como hd1. Depois use grub-install para apenas escrever o bootloader no disco de cada instalação; nunca no disco “oposto”. Dessa forma, ambos os discos serão completamente independentes e inicializáveis, mesmo que o outro disco seja completamente removido. Você pode adicionar um item de menu nos arquivos de configuração de cada GRUB que lhe permitirá iniciar a instalação “oposta”, se você quiser. Ou pode simplesmente utilizar a BIOS para seleccionar o disco para arrancar de.

O que deve saber é que o selector de ordem de arranque da BIOS tradicional irá normalmente funcionar fazendo com que o disco seleccionado para arrancar o “primeiro” disco para as funções da BIOS, e assim o GRUB’s hd0 irá sempre referir-se ao “disco que está actualmente seleccionado para arrancar na BIOS”.

Então, se você está atualmente inicializando de /dev/sda (então a BIOS diz sda é hd0), e você quer um item do menu GRUB nesse disco para mudar para o menu de inicialização de /dev/sdb, você usaria algo como:

menuentry "Switch to /dev/sdb"{ # flip the disk mappings and reload configuration drivemap -s (hd0) (hd1) set root=<the identifier for sdb's partition that contains grub.cfg> configfile /boot/grub/grub.cfg # or just /grub/grub.cfg is /boot is a separate partition} 

… e também na configuração do GRUB do /dev/sdb.

Deixe uma resposta

O seu endereço de email não será publicado.