Arco de fixação multiboot do ubuntu

0

Eu tenho o Ubuntu 16.04 pré-instalado no meu laptop. Eu instalei o Windows 10 e Arch. Quando instalei o grub para Arch, notei algo estranho: minha partição do Ubuntu não foi encontrada pelo os-prober. Em seguida, abri a partição onde o Ubuntu está instalado por padrão ( /dev/sda3 ), e vi que ele mantém sua pasta boot separada. Meu ESP real ( /dev/sda1 ) é montado em /boot/efi de /dev/sda3 (a partição ubuntu). Além disso, o Ubuntu é inicializado diretamente usando o próprio executável efi, que reside em efi/ubuntu/shimx64.efi in /dev/sda1 (ESP). O Ubuntu mantém seus próprios kernels em /boot de /dev/sda3 , mas o Arch instalou seus kernels diretamente em /dev/sda1 . Então, como eu posso esclarecer essa bagunça e ter um único esboço de grub dentro de efi/grub de /dev/sda1 , que gerenciará ambas as minhas instalações Ubuntu e Arch, usando seus kernels separados?

    
por Subhranil 06.07.2017 / 11:24

1 resposta

3

Primeiro, gostaria de esclarecer algumas terminologias: No contexto de carregadores de inicialização EFI para Linux, "EFI stub" refere-se a um gerenciador de inicialização embutido no próprio kernel do Linux, permitindo que o kernel seja lançado como um Programa EFI. Você parece estar usando este termo para se referir a qualquer programa de inicialização EFI, mas esse uso pode criar confusão.

Que lidou com, os-prober no Arch deveria ter detectado sua instalação do Ubuntu. Eu não sei porque isso não aconteceu, mas como o os-prober do Arch é parte do Arch, não do Ubuntu, você pode querer perguntar sobre isso em um fórum do Arch. OTOH, se você seguir o meu conselho, você não estará usando o GRUB do Arch, então este ponto será discutível.

O Arch fornece aos seus nomes fixos de kernels que não mudam quando você atualiza o kernel, enquanto os nomes de kernel do Ubuntu incluem uma string de versão e, portanto, mudam quando um novo kernel é instalado. Isso é importante porque os arquivos de configuração do GRUB, que se referem ao kernel, são criados pelo sistema operacional que controla o GRUB. Assim, se você usar o GRUB do Arch, precisará reconfigurar o GRUB no Arch sempre que atualizar um kernel do Ubuntu. Isso é provável que seja estranho. Se você usar o GRUB do Ubuntu, OTOH, sua configuração não precisará ser atualizada quando você atualizar um kernel do Arch. (Quando você instala um novo kernel do Ubuntu, os scripts do Ubuntu atualizam automaticamente o GRUB do Ubuntu.) Assim, dos dois, recomendo usar o GRUB do Ubuntu, não o GRUB do Arch.

Você pode mudar para o GRUB do Ubuntu usando efibootmgr em qualquer distribuição:

  1. Digite sudo efibootmgr para ver uma lista de entradas. Preste atenção na linha BootOrder e nas entradas Boot#### para Arch e Ubuntu. A linha BootOrder informa a ordem em que o computador tentará iniciar entradas de inicialização específicas. Dados seus sistemas operacionais, as chances são de que o GRUB do Arch seja o primeiro da lista BootOrder .
  2. Depois de identificar o número Boot#### do Ubuntu, você pode passar uma nova ordem de inicialização para o firmware usando a opção -o para efibootmgr , como em sudo efibootmgr -o 0004,0002,000A . Isso define a ordem de inicialização para usar Boot0004 primeiro, depois Boot0002 se isso falhar e, finalmente, Boot000A se os dois anteriores falharem. Os detalhes irão variar para você, é claro; você deve garantir que a entrada do Ubuntu seja a primeira. O que vier depois disso provavelmente será irrelevante, embora eu recomende garantir que pelo menos uma entrada de trabalho conhecido esteja na lista, para que o sistema inicialize com alguma coisa mesmo se a entrada do Ubuntu falhar .

Depois de reiniciar, o GRUB do Ubuntu deve aparecer, mas pode ou não ter uma entrada para o Arch. Você pode executar sudo update-grub para gerar um novo menu do Ubuntu GRUB e tentar novamente. Isso pode ou não detectar o kernel do Arch. Se isso não acontecer, você pode editar /etc/grub.d/40_custom ou usar GRUB Customizer para adicionar uma entrada para o Arch. Algo como o seguinte deve funcionar:

menuentry "Arch Linux" {
    set root=(hd0,1)
    linux /vmlinuz-linux root=/dev/sda5 ro quiet splash
    initrd /initramfs-linux.img
}

Este é apenas um exemplo grosseiro e provavelmente poderia ser melhorado. Se nada mais, você provavelmente terá que alterar a opção root=/dev/sda5 para apontar para a partição raiz verdadeira do Arch ( / ). Você pode examinar a configuração do GRUB do Arch ou pedir ajuda em um fórum do Arch se quiser melhorar este exemplo ou se tiver problemas com ele.

Como alternativa ao anterior, você poderia usar algo diferente do GRUB. A maioria dos carregadores de boot irá requerer mais na configuração manual do que o GRUB, mas essa configuração manual provavelmente será mais fácil que a configuração manual do GRUB. Veja minha página sobre os carregadores de inicialização EFI para Linux para obter um resumo do que está disponível. O meu próprio rEFInd gerenciador de inicialização tende a ser mais fácil de configurar para cenários de inicialização múltipla, pois ele procura ativamente os kernels toda vez que inicializa, por isso, não sofre a necessidade de continuar atualizando um arquivo de configuração com cada atualização do kernel. OTOH, porque o nome do kernel do Arch não muda, se você usa o GRUB do Ubuntu, você não vai sofrer com os problemas usuais do GRUB em multi-distribuição, então o rEFInd não será uma melhoria nessa questão.

Um último ponto: Com sua configuração, seus kernels do Arch são armazenados em sua partição de sistema EFI (ESP). Esta é uma configuração comum do Arch, mas você deve ter certeza de que o seu ESP é grande o suficiente. Às vezes, o ESP é tão pequeno quanto 100 MB (ou possivelmente ainda menor), o que pode deixar pouco espaço extra quando os kernels estiverem no lugar. Você pode usar df para ver quanto espaço é usado e disponível em uma partição, como em df /boot/efi . Se o seu ESP estiver quase cheio, você pode querer colocar seus kernels do Arch em outro lugar. Embora o uso do ESP para armazenar kernels seja uma prática comum no Arch, não é necessário, então você pode fazer outra coisa.

    
por Rod Smith 06.07.2017 / 14:59