Meus problemas resultaram de confusão e falta de conhecimento. Vou tentar resumir o que aprendi aqui na esperança de que alguém ache útil.
BIOS vs hardware UEFI
Quando você liga seu computador, ele precisa começar a executar um programa em algum lugar. Normalmente, esta é uma ROM na placa-mãe que contém um programa, por um longo tempo este programa foi chamado de BIOS e funcionou de maneiras específicas (um pouco) padrão. Ele controlou alguns recursos de hardware, entre outras coisas, mas o mais importante é que ele passa o controle para um sistema operacional em alguma outra mídia de maneira bem definida.
O programa "padrão" da BIOS foi posteriormente substituído pelo UEFI, que tem o mesmo propósito (principalmente) e também tem um método de passar o controle para um SO em alguma outra mídia.
Inicialização do BIOS
Quando o BIOS é inicializado, ele lê o primeiro setor do dispositivo de inicialização principal, que supostamente contém um gerenciador de inicialização e começa a executá-lo. Esse primeiro setor é chamado de registro mestre de inicialização (MBR). Presume-se que o disco esteja usando o esquema de particionamento do DOS.
No antigo esquema de particionamento do DOS (também às vezes chamado de MBR), são reservados 446 bytes de espaço de programa para o gerenciador de inicialização no MBR. Quem precisaria de mais de 446 bytes amirite? Portanto, os bootloaders maiores normalmente utilizam um "recurso" do esquema de particionamento do DOS, em que há cerca de 1-2 MB ou mais de espaço não utilizado imediatamente após o MBR. O bootloader teria um "estágio 1" e "estágio 2" onde o estágio 1 é armazenado no MBR e simplesmente carrega o estágio 2 que é armazenado nessa área "não usada".
Inicialização UEFI
Quando o UEFI é inicializado, ele pressupõe que o dispositivo de inicialização principal está usando o GPT e procura uma partição com um tipo específico, a saber: "Partição do sistema EFI". Esta partição é assumida como FAT 12,16 ou 32. Uma vez encontrada, ela procura na partição por bootloaders procurando por arquivos com nomes que terminem em .efi
.
Descobri que, no contexto da instalação do grub, os textos que lia referiam-se ao procedimento de inicialização do UEFI como simplesmente UEFI e ao procedimento de inicialização do BIOS como BIOS. Que foi confuso como eu pensei que eles estavam falando sobre o software real na ROM da placa-mãe.
De qualquer forma, uma placa-mãe UEFI ainda pode executar um procedimento de inicialização do BIOS, normalmente chamado de "Legacy Boot" ou CSM nas configurações de UEFI.
GPT e DOS / MBR
Embora o GPT seja muito diferente do esquema de particionamento antigo do MBR / DOS, ele reservou a região onde o carregador de inicialização de um disco particionado do MBR residiria. Isso significa que você pode instalar um gerenciador de inicialização "legado" nesse espaço reservado na GPT e usar a inicialização do BIOS. No entanto, há uma ressalva, lembre-se que a etapa 1/2 coisa? Sim GPT não tem esse "recurso" e a região reservada ainda é apenas 446 bytes. Então, para abrigar o estágio 2 do bootloader, um tipo especial de partição foi introduzido: "bios_boot". Portanto, o gerenciador de inicialização deve estar ciente de que está sendo instalado em um disco GPT e encontrar a partição "bios_boot" e colocar o estágio 2 lá e deixar o estágio 1 encontrar essa partição de alguma forma.
Resumo
Existem três maneiras de inicializar:
inicialização UEFI + GPT
Crie uma partição para manter o (s) carregador (es), 100 MB ou mais deve ser mais do que suficiente, defina o tipo como "EFI System Partition", formate-o com FAT 12,16 ou 32. Monte-o em algum lugar, geralmente% código%. Em seguida, informe ao grub para instalar um carregador EFI: /boot/efi
.
A inicialização do UEFI deve encontrar a partição observando a tabela de partições.
Me disseram que você pode usar o ESP para o seu '/ boot' também, mas eu não tentei.
Inicialização do BIOS + GPT
Crie uma partição para manter o estágio 2 do carregador, normalmente de 1 a 2 MB, e defina o tipo como "bios_boot". Você não precisa colocar um sistema de arquivos nesta partição ou montá-lo, o grub "próprio" fará o que for necessário. A posição desta partição no disco deve ser irrelevante. Em seguida, instale o grub no MBR como de costume grub-install --efi-directory=/boot/efi
. O Grub deve detectar que é um disco GPT, encontrar a partição de inicialização do BIOS (e reclamar se isso não acontecer!) E instalar o estágio 1 e o estágio 2 apropriados.
Inicialização do BIOS + MBR
Basta criar um esquema de partição do DOS em seu disco e usar grub-install /dev/sdx
para gravar o MBR; a partição de inicialização do bios não é necessária.
Corrente carregando unidade secundária com MBR da unidade principal com GPT
Descobri então que o grub não permite o carregamento de um carregador de inicialização da BIOS a partir de um carregador de inicialização UEFI por qualquer motivo. Eu pessoalmente não vejo por que isso não seria possível, mas pelo menos grub não parece apoiar isso.
Então, para corrigir meus problemas, defino minha unidade GPT como dispositivo de inicialização principal nas configurações de UEFI, depois uso a inicialização do BIOS para carregar o grub do dispositivo GPT, conforme descrito acima. O que significa que é capaz de carregar o Win7 a partir do MBR no primeiro disco.