É possível obter o GRUB do NixOS para iniciar corretamente o Arch Linux?

4

Eu bulo o Arch Linux, o Gentoo Linux e o NixOS. O problema é que esses sistemas operacionais, especificamente sua versão do gerenciador de inicialização GRUB2, não funcionam bem uns com os outros. Se eu configurar o gerenciador de inicialização com o NixOS, as entradas do Gentoo e do NixOS serão bem inicializadas, mas as entradas do Arch Linux na configuração do GRUB2 na verdade inicializam o NixOS e não o Arch Linux. Se eu configuro o GRUB2 do Arch Linux, o NixOS não é reconhecido, mas o Gentoo é (o os-prober está instalado). Minhas partições são assim:

/dev/sda
 - /dev/sda1 - my EFI partition
 - /dev/sda2 - my Gentoo partition
 - /dev/sda3 - my Arch Linux partition
 - /dev/sda4 - my NixOS partition
 - /dev/sda5 - my swap partition
/dev/sdb
 - /dev/sdb1 - my data partition on which I store config files, documents, etc.

/ dev / sda tem uma tabela de partições GPT com um MBR protetor, se relevante.

Então, minha pergunta é, existe uma maneira de obter o bootloader GRUB2 do Arch Linux para reconhecer e criar entradas de inicialização apropriadas para o NixOS? Ou se não, existe uma maneira de obter o bootloader do NixOS para criar entradas apropriadas para o Arch Linux? Se isso ajuda aqui é o meu arquivo configuration.nix e aqui é o meu arquivo hardware-configuration.nix.

Para deixar claro quando configuro o GRUB2 em um desses sistemas para o gerenciador de boot, certifico-me de que apenas o gerenciador de inicialização dessa distribuição o está gerenciando. Os arquivos do carregador de inicialização da outra distro são excluídos da partição EFI. Por exemplo, quando eu usei o NixOS para gerenciar o bootloading eu apaguei a pasta / boot / EFI / arch (onde o EFI é montado em / boot) e movi as imagens do kernel do Arch Linux da partição EFI para a partição raiz do Arch Linux pasta.

EDIT: Eu consegui fazer com que o NixOS quase configure o GRUB2 corretamente para rodar o Arch. Eu notei que em / etc / fstab para o Arch ele ainda estava montando o / dev / sda1 no / boot quando não era mais necessário, já que eu mudei o bootloader de ser do Arch para o NixOS.

O único problema com o arquivo de configuração agora é que ele tem:

initrd  /boot/intel-ucode.img

em vez de:

initrd  /boot/intel-ucode.img /boot/initramfs-linux.img

ou:

initrd  /boot/intel-ucode.img /boot/initramfs-linux-fallback.img

dependendo da entrada precisa. Portanto, o resultado é que, se eu inicializo o Arch, ele entra em pane no kernel. Então, como eu adiciono a linha /boot/initramfs-linux*.img apropriada sem editar manualmente este arquivo toda vez?

    
por Brenton Horne 17.11.2017 / 14:36

1 resposta

2

Ter mais de um sistema operacional em um sistema gerenciado pelo GRUB tende a levá-los a lutar entre si sobre como o GRUB deve ser configurado, incluindo quais entradas de inicialização devem ser feitas.

É melhor deixar apenas um dos sistemas gerenciar o GRUB. No seu caso, seria nixOS, devido a como ele gerencia o link de reversão.

    
por 17.11.2017 / 15:54