O que o Grub-install está realmente fazendo?

2

Eu tenho um cliente que acidentalmente converteu a tabela de partições de um dos seus sistemas Linux do DOS para o GPT. Infelizmente, a versão do GRUB é 2, e o sistema não possui uma partição de inicialização do BIOS para o código do carregador de inicialização adicional residir.

Em seguida, as etapas a seguir foram usadas para solucioná-lo:

  1. Adicione uma partição de inicialização do BIOS ao disco de inicialização.
  2. Reinstale o aplicativo grub para o disco.

Depois, o sistema pode inicializar normalmente agora.
Houve um ponto que eu não consegui descobrir, por favor ajude.

Primeiro, tentei adicionar uma partição de inicialização do BIOS ao disco de inicialização, mas o sistema também não funcionou. Assim que o GRUB foi reinstalado, ele pode inicializar bem ...

Alguém poderia descobrir se a reinstalação envolve ou não armazenar parte do código do GRUB 2 na partição de inicialização do BIOS? Obrigado.

    
por Jepsenwan 22.06.2017 / 13:05

2 respostas

3

Há uma boa explicação aqui e aqui está meu breve resumo:

Tanto o GRUB Legacy (GRUB1) quanto o GRUB2 têm um processo de inicialização de três estágios de "dois estágios" (trocadilho intencional).

O primeiro estágio ( stage1 ) mora no MBR, e eu acho que não foi prejudicado pela mudança para GPT no seu caso, já que ele vive no primeiro setor do disco, antes de qualquer tabela de partições.

Na maioria das vezes em configurações de partições do DOS, stage1 carrega um stage1.5 (o motivo do trocadilho acima). Em uma partição MBR (ou rótulo de disco do DOS), esse estágio é gravado nos setores vazios após a tabela de partição, antes dos primeiros dados da partição real serem iniciados. Veja a parte superior de este gráfico .

A criação de uma tabela de partição GPT envolve a criação de um MBR "Protetor", que eliminou você stage1.5 . Essa tabela de partição de proteção existe para evitar que uma ferramenta de partição legada destrua uma tabela da GPT que não conhece.

Obviamente, stage1.5 é aquele que carrega módulos, entende partições, procura por sistemas de arquivos e executa o script de configuração para procurar por stage2 .

Este último estágio é aquele que sabe como inicializar todos os tipos de kernels, e vive no diretório /boot/grub de algum sistema de arquivos, em uma partição oficial.

O processo grub-install em seu caso acabou de injetar um stage1.5 (core.img) no novo local quando uma tabela GPT é usada: uma partição com o sinalizador BIOS_grub. Veja a parte inferior dessa imagem.

Dependendo da geometria do disco e do software de partições, às vezes ele pode ser colocado depois da tabela do GPT, antes da primeira partição, mas isso é muito raro.

Espero que ajude!

    
por 22.06.2017 / 14:12
1

O GRUB pode ser instalado em ambas as Tabela de Partição GUID (GPT, BIOS e UEFI) e Master Boot Record (apenas MBR, BIOS). Portanto, o tipo da partição não foi o problema aqui.

Isso é o que realmente aconteceu:

  1. Quando a partição foi removida, o GRUB foi removido junto com ela.
  2. Quando a partição foi recriada, ela foi criada como uma partição vazia.
  3. O grub-install instalou o GRUB neste campo vazio Partição MBR / GPT baseada na configuração em /boot/grub/grub.cfg . Esta configuração foi possivelmente gerada com grub-mkconfig ou seja, configuração simples das configurações em /etc/grub.d/ .
por 22.06.2017 / 13:44