Até ontem, tudo estava funcionando e o os-prober estava gerando com sucesso entradas de menu para a instalação do Arch Linux. No entanto, hoje, quando tentei inicializar no Arch, recebi um erro informando que o sistema de arquivos raiz não pôde ser encontrado no UUID que estava tentando usar. Depois de alguns ajustes, consegui inicializar o Arch alterando manualmente a raiz para a partição real "/dev/sda7" em vez de usar o UUID.
Eu queria saber o que poderia fazer com que o os-prober gerasse essa configuração inválida apenas para a instalação do Arch Linux. Ainda funciona bem para instalações do openSUSE e do Windows 7. Outra coisa a notar é que foi adicionado “rw quiet” ao final da linha de inicialização do Arch Linux. Isso não é algo que acontecia anteriormente, e estou me perguntando se o que mudou tem a ver com o motivo pelo qual o UUID está incorreto.
Abaixo postarei a entrada do menu do Arch Linux. Como você pode ver, o os-prober tem a parte --set-root= 'some UUID' com o UUID correto, mas mais tarde, ao inicializar o Linux, ele tem -root=UUID='some other incorrect UUID'.
Só para esclarecer, tenho Ubuntu, Arch Linux, openSUSE e Windows 7 nesta máquina, mas estou usando o Ubuntu como sistema operacional principal e permitindo que ele gerencie o GRUB e suas configurações. Todos os sistemas operacionais estão em suas versões mais atualizadas.
menuentry 'Arch (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-b9522736-878c-49e3-b30d-ad65589aa1d9' {
insmod part_msdos
insmod ext2
set root='hd0,msdos7'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 b9522736-878c-49e3-b30d-ad65589aa1d9
else
search --no-floppy --fs-uuid --set=root b9522736-878c-49e3-b30d-ad65589aa1d9
fi
linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 rw quiet
initrd /boot/initramfs-linux.img
}
Como você pode ver, os dois primeiros UUIDs são diferentes do último. Os dois primeiros estão corretos e o último está errado. Se eu substituir o último UUID por '/dev/sda7', ele inicializará sem problemas. Editei manualmente o grub.cfg para fazer isso, mas gostaria que o os-prober voltasse a funcionar automaticamente. Obrigado.
Responder1
Ok, então as informações sobre como o os-prober analisa diferentes arquivos grub.cfg para o respectivo /boot
diretório de cada sistema operacional, mesmo que esse sistema operacional não seja aquele que instalou o grub no MBR/EFI, foi o que me ajudou a resolver esse problema.
Acontece que uma atualização anterior do Arch Linux prendeu um arquivo grub.cfg no diretório /boot. Sem ser muito detalhado, eu não tinha as coisas adequadas instaladas no Arch para que seu grub-mkconfig fosse executado, então, em vez disso, obtive algum tipo de modelo no grub.cfg. Este era o arquivo que o os-prober estava verificando e era o arquivo que tinha o UUID impróprio. O que eu tive que fazer foi desligar o os-prober no Arch linux /etc/default/grub
. Então eu corri sudo grub-mkconfig -o /boot/grub/grub.cfg
, que construiu um arquivo grub.cfg adequado para o Arch, que o os-prober do Ubuntu agora usa corretamente. Usarei a mesma técnica para o openSUSE.
Uma coisa a notar é que, em vez de permitir que o os-prober gere essas entradas de menu por conta própria, em vez disso, obtê-lo do respectivo arquivo grub.cfg de cada sistema operacional permite que você tenha padrões diferentes para cada distribuição, o que permite parâmetros diferentes para tenha uma inicialização silenciosa com splash ou para mostrar todo o processo de inicialização, etc.
Obrigado pela ajuda pessoal!