Como manter o grub independente de todos os sistemas operacionais?

1

Atualmente, tenho o seguinte esquema de partições.

300MB    NTFS          Recovery  
100MB    FAT32         LOOKS LIKE IT IS THE EFI BOOT PARTITION  
128MB    Other         This is empty and thus I suspect it to be the padding partition
150GB    NTFS          Windows
700GB    NTFS          Data partition
80.53GB  Unallocated

Eu quero instalar várias distribuições Linux ao longo do tempo (algumas delas podem ser desinstaladas no processo, algumas sobrescritas) e quero uma configuração de bootloader que seja capaz de manter e não quebrar.

Eu li sobre chainloading eles e sobre uma partição grub2 dedicada e também o esquema onde as pessoas instalam o Ubuntu e deletam a partição /, mas mantêm o / boot para usar como grub.

Eu estava procurando os prós e contras de cada um deles.

Além disso, gostaria de perguntar se posso criar a partição grub2 dedicada no início ou no final do espaço não alocado? Acho que vou com a configuração dedicada do grub. Eu li sobre o bootloader rEFInd em algum lugar e parece uma ferramenta necessária sem manutenção. Seria compatível com todas as distribuições Linux lá fora?

PS: Eu sou relativamente novo em bootloaders e o mais profundo que eu fui foi editar alguns arquivos grub.cfg para mover a entrada do Windows para o topo e renomear as entradas.

PPS: algumas informações básicas: Eu tinha instalado tanto o Ubuntu quanto o Ubuntu GNOME (ambos 15.04) no espaço não alocado usando 40GB para cada um. Então eu queria manter apenas o Ubuntu GNOME, mas eu tinha instalado o Ubuntu Unity depois de instalar o Ubuntu GNOME. Portanto, excluir o Ubuntu Unity faria com que o grub desaparecesse. Eu quero evitar esse tipo de cenário mantendo o GRUB2 independente de qualquer outra coisa.

    
por Ashhar Hasan 02.12.2015 / 16:34

2 respostas

3

O problema com uma configuração de distribuição múltipla do Linux é que você acabará com várias instalações do GRUB, o que é redundante e confuso. Cada distribuição irá configurar seu próprio GRUB como padrão e configurá-lo para encadear os GRUBs de outras distribuições ou inicializar seus kernels diretamente (ou talvez fazer as duas coisas). Existem problemas com isso:

  • Quando você inicializa uma distribuição cujo GRUB não é o principal e atualiza seu kernel, é provável que a configuração do GRUB de controle não seja atualizada. Se o GRUB de controle inicializar os kernels de outras distribuições diretamente e se as atualizações do kernel acontecerem com freqüência suficiente, a distribuição com kernels atualizados poderá parar de inicializar porque os kernels originais terão desaparecido. Mesmo que a distribuição continue a ser inicializada, será através de um kernel antigo que pode ter problemas de segurança ou outros. Você terá que ir para a distribuição cujo GRUB está no comando e executar update-grub (ou algo equivalente) para que ele funcione novamente. Uma configuração de carga de cadeia é mais robusta contra esses problemas, então, se você tiver uma escolha, é assim que eu a configurei.
  • Após uma atualização para seus próprios pacotes do GRUB, muitas distribuições tentarão redefinir seus próprios GRUBs como padrão. O resultado pode ser aquele que as inicializações do GRUB primeiro mudarão de vez em quando. Se alguém faz um trabalho melhor do que os outros, você terá que usar efibootmgr para redefinir as prioridades de inicialização de tempos em tempos.
  • Se você excluir a distribuição cujo GRUB é iniciado por padrão, as chances são de que o GRUB pare de funcionar. (Isso nem sempre é o caso, pois depende de onde o GRUB armazena seus arquivos de configuração, mas é a maneira como a maioria das distribuições configura as coisas.) Você pode ignorar esse problema usando o gerenciador de boot interno do firmware, mas ainda é um incômodo - e um problema sério para os usuários que não sabem como usar o gerenciador de inicialização do firmware. (Após a primeira inicialização, quando isso acontecer, você precisará instalar outra distribuição ou usar efibootmgr para definir outro GRUB como padrão para evitar a necessidade de usar o gerenciador de inicialização do firmware).

Esses problemas não são intransponíveis, mas são incômodos. Configurar o um gerenciador de inicialização como padrão ignora esses problemas, mas geralmente requer configuração manual que provavelmente levará mais esforço do que para superar os problemas que acabei de descrever. rEFInd (que eu mantenho) é projetado para contornar esses problemas sendo menos dependente dos arquivos de configuração. Em particular, o rEFInd não precisa da configuração por kernel, da qual todos os outros gerenciadores de boot do Linux que eu conheço precisam. Em vez disso, o rEFInd depende de um arquivo de configuração que fornece opções que se aplicam ao kernel every em um determinado diretório. Isso requer alguma configuração inicial explícita quando você instala uma distribuição, mas isso é uma questão de executar um script que vem com rEFInd ( mkrlconf ). Posteriormente, quando você atualizar seu kernel, o rEFInd não precisará de reconfiguração; apenas pega as opções antigas e as aplica ao novo kernel. (Note que o GRUB precisa de reconfiguração após uma atualização do kernel. O Ubuntu esconde isso executando scripts para fazer a reconfiguração como parte do processo de atualização / instalação do kernel - mas como mencionado anteriormente, esses scripts atualizam apenas uma configuração do GRUB, que pode não ser aquele que precisa ser atualizado.)

Se você instalar o rEFInd, ainda terá o problema de cada distribuição tentando definir seu próprio GRUB como o padrão. Normalmente há maneiras de contornar isso, no entanto. Para o Ubuntu, em vez de inicializar o meio de instalação e selecionar a opção para instalar diretamente, você deve inicializar no modo "tentar antes de instalar", abrir uma janela do Terminal e digitar ubiquity -b . Isto irá executar o instalador e dizer para não instalar o GRUB. O mesmo truque obviamente também pode ser usado se você quiser que o GRUB de outra distribuição manipule tudo. Para inicializar após a instalação dessa maneira, o rEFInd precisará já ter sido instalado; ou você pode inicializar com o rEFInd em uma unidade flash USB ou CD-R e instalá-lo então.

Você pode descobrir como é fácil desativar o GRUB em cada distribuição que planeja instalar. Usando essas informações, em conjunto com seus próprios planos e prioridades, você pode decidir qual (is) você deseja instalar e quais você deseja ignorar.

Outra opção para tudo isso é usar a virtualização, como o VirtualBox. Se você tem memória suficiente, você pode executar meia dúzia de distribuições simultaneamente em máquinas virtuais enquanto outra controla o computador como um todo. Essa abordagem ignora os conflitos do boot loader, tornando a configuração muito mais simples - cada sistema operacional é totalmente responsável por seu próprio "computador".

    
por Rod Smith 04.12.2015 / 15:56
0

Como @oldfred e @Wilf apontaram nos comentários, o GRUB2 amadureceu muito e pode lidar com as situações que mencionei confortavelmente. A solução a seguir:

  1. Faça um backup da sua partição ESP ou EFI ou Boot (a partição FAT32).
  2. Instale as distribuições Linux que você deseja separar as partições (você pode instalar facilmente toda a distribuição em uma única partição / em vez de fazer um / boot separado)
  3. A distro que instalaremos por último será a master e seu grub será usado.
  4. Caso queira, você pode editar manualmente o grub.cfg no diretório EFI / distro na partição EFI para gerenciar todos os carregadores de inicialização.

Explicação de como funciona:

O GRUB2 instala-se no / boot da distro e cria um grub.cfg em um subdiretório da partição EFI, que carrega o grub real.

    
por Ashhar Hasan 02.12.2015 / 18:09