Localização do grub na partição gpt

0

Até onde eu entendi, o programa grub está totalmente localizado na partição efi se eu tiver o esquema de particionamento gpt ao invés de um link como o que estava no mbr mais antigo. Então, agora, se eu remover a partição linux, o grub ainda estará disponível? Disclaimer: Eu não pretendo desinstalar o Linux, estou apenas curioso

    
por Petr Nedvěd 27.08.2015 / 23:10

1 resposta

0

Primeiro, há duas questões distintas envolvidas:

  • BIOS vs. EFI - este é o tipo de firmware no computador; ou, em alguns casos, como as EFIs incluem uma camada de emulação de BIOS, os computadores com base em EFI podem inicializar no modo herdado do BIOS / CSM /. A versão do GRUB 2 instalada no computador depende do tipo de firmware. Sob o BIOS, um GRUB 2 de 16 bits (do pacote grub-pc , IIRC) é instalado; e sob EFI, um GRUB 2 compilado com a mesma profundidade de bits da própria EFI (32 ou 64 bits) é instalado a partir do pacote grub-efi-ia32 ou grub-efi-amd64 .
  • MBR vs. GPT - O tipo de tabela de partições afeta os detalhes de onde partes do GRUB no modo BIOS estão instaladas - em um disco MBR, o segundo estágio do carregador de boot entra em setores oficialmente não alocados imediatamente após o próprio MBR; e em um disco GPT, esses arquivos de segundo estágio entram em uma partição especial chamada Partição de Inicialização do BIOS (identificada como sendo do tipo EF02 em gdisk ou como tendo o "sinalizador bios_grub" definido em parted ou GParted). Para uma inicialização no modo EFI, o tipo de tabela de partição é menos importante; é só que a partição de sistema EFI (ESP) tem um código de tipo EF em MBR usando fdisk , enquanto que em GPT, é identificado com um código de tipo EF00 em gdisk ou por um "sinalizador de inicialização" em parted ou GParted. (Observe que o "sinalizador de inicialização" tem um significado totalmente diferente nos discos MBR; um ESP não pode ser identificado corretamente em um disco MBR usando parted ou GParted.)

Em todos casos, o código do GRUB 2 está espalhado por todo o lugar. Locais em que pode existir incluem:

  • O MBR - Neste contexto, "MBR" significa o primeiro setor do disco. Esse local é usado pela maioria das instalações no modo BIOS, para discos MBR e GPT. O código do primeiro estágio do GRUB está aqui, mas o espaço é limitado (apenas 440 bytes), então é impossível encaixar todo o GRUB no MBR.
  • Setores de inicialização em uma partição do sistema de arquivos Linux - É possível instalar o GRUB no modo BIOS para que seu código de primeiro estágio fique em uma partição, e não em um MBR. Esta configuração é incomum no Ubuntu.
  • Setores pós-MBR - Como observado anteriormente, em um disco MBR, o GRUB armazena parte de si mesmo imediatamente após o MBR.
  • A Partição de Inicialização do BIOS - Como observado anteriormente, existe uma partição separada para ocupar o lugar dos setores pós-MBR em um disco GPT. (Isso é feito porque os setores pós-MBR no GPT fazem parte do GPT em si, portanto não podem ser usados pelo GRUB.)
  • O ESP - Em EFI, o binário principal do GRUB 2 entra em um arquivo no ESP. Este arquivo contém o equivalente de um MBR do GRUB 2 no modo BIOS e um código de partição de inicialização pós-MBR / BIOS. O ESP é não usado pelo GRUB para uma inicialização no modo BIOS.
  • O diretório /boot do Linux - Em todos os casos, partes do GRUB 2 residem em arquivos que podem ser carregados de um sistema de arquivos normal. Esses arquivos normalmente estão no diretório /boot do Linux, normalmente em /boot/grub ou /boot/grub2 .

Este último ponto, realmente, é o "gotcha"; Se você excluir o Ubuntu de uma instalação de inicialização dupla, o GRUB 2 será parcialmente removido e, assim, quase certamente será iniciado, mas não funcionará corretamente porque você terá excluído esses arquivos de configuração e suporte. Você vai acabar com um prompt grub> quando você tentar inicializar. Sob o BIOS, sua única opção neste momento é reinstalar o carregador de boot para o seu outro sistema operacional. Sob EFI, normalmente você pode obter o sistema reiniciando ajustando a ordem de inicialização usando qualquer número de ferramentas ( efibootmgr no Linux, bcdedit ou EasyUEFI no Windows, bless no OS X, bcfg em um shell EFI ou ferramentas de firmware específicas do sistema em muitas EFIs). A reinstalação do carregador de boot de outro sistema operacional também deve funcionar, mas normalmente é um exagero.

Observe que a maioria dos carregadores de inicialização não tem esse problema específico. Sob EFI, ELILO, GRUB Legacy, SYSLINUX, gummiboot / systemd-boot e rEFInd, todos dependem de arquivos de configuração armazenados na mesma partição que o carregador de boot (normalmente o ESP), então se você excluir o Ubuntu, o pior que acontecerá é que você acabará sendo incapaz de inicializar o Ubuntu, mas você ainda poderá inicializar qualquer outra coisa que você tenha instalado. Sob o BIOS, o LILO ainda deve continuar a funcionar; mas se não me engano, o GRUB Legacy e o SYSLINUX compartilham o problema do GRUB 2.

É possível configurar o GRUB 2 para colocar seus arquivos de configuração e suporte no ESP em vez de em um sistema de arquivos do Linux. Por razões que eu não pretendo saber, no entanto, os desenvolvedores do Ubuntu escolheram colocar os arquivos em um sistema de arquivos Linux, então o Ubuntu sofre com este problema.

    
por Rod Smith 30.08.2015 / 16:41