Digamos que você tenha um GRUB "principal" em /dev/sda, com vários kernels linux, e também tenha uma distribuição linux secundária em /dev/sdb2.
O computador inicializa em /dev/sda GRUB. A partir daí, como inicializar os kernels em /dev/sdb2 ?
Quando você atualizar-grub na distribuição em /dev/sda, o OS-prober detectará aqueles em /dev/sdb2 e preencherá o menu GRUB adequadamente em (/dev/sda)/boot/grub/grub.cfg
.
Mas isso é inconveniente, pois quando você instala um novo kernel ou altera as opções de inicialização na distribuição /dev/sdb2, isso atualizará, (/dev/sdb2)/boot/grub/grub.cfg
mas não o grub.cfg principal.
Como fazer com que o GRUB principal leia e incorpore as entradas do GRUB secundário?
Existe um comando GRUB, não documentado no manual , que analisa precisamente um arquivo de configuração, extraindo as entradas e ignorando o restante da configuração:
extract_entries_source
. Com isso, qualquer alteração nas entradas do menu GRUB da distribuição secundária será automaticamente considerada no menu principal do GRUB.Na distribuição principal ("host")
Adicione uma entrada personalizada em
/etc/grub.d/40_custom
:O UUID da partição (sistema de arquivos) pode ser obtido com
blkid
.Você também vai querer evitar que o GRUB preencha automaticamente o menu com o SO-prober. Isso está configurado
/etc/default/grub
e pode ser desabilitado globalmenteGRUB_DISABLE_OS_PROBER
ou seletivamente para algumas partições comGRUB_OS_PROBER_SKIP_LIST
(consulte o manual do GRUB ).Então você pode
update-grub
.Na distribuição secundária
Não há nada a fazer, pois o
/boot/grub/grub.cfg
arquivo só será lido por suas entradas e nunca será executado. Você provavelmente desejará desabilitar completamente o SO-prober, pois essas entradas seriam redundantes quando integradas ao menu principal do GRUB.