O conceito de inicializar os bootloaders no UEFI é direto e simples como colocar os .efi
bootloaders na partição do sistema EFI. O .efi
arquivo carrega os sistemas operacionais correspondentes. No entanto, ainda não consigo entender por que o MBR precisa de uma partição ativa para inicializar o sistema operacional.
Do meu estudo até agora, o código de inicialização do MBR reside nos primeiros 446 bytes do disco, que serão executados automaticamente pelo BIOS após o POST (como um padrão de fator). Ele pode carregar o sistema operacional diretamente, mas na maioria das vezes, o código é tão pequeno que sua tarefa principal é carregar o bootloader real que está em algum lugar em outra partição.
Por que precisamos definir uma partição como ativa para inicializar a partir dela? Teoricamente, o código de bootstrap MBR pode executar o que quiser, de onde quiser.
Sim, e na prática, o código de bootstrap MBR geralmente faz exatamente isso.
Mas o código bootstrap precisa de algum método para descobrir onde o próximo estágio do bootloader está armazenado. (Todo o bootloader nunca tem apenas 446 bytes; o MBR é apenas seu estágio 1.)
Ter um setor de inicialização que analisa a tabela de partição MBR e procura o sinalizador 'ativo' é uma solução muito versátil para esse problema - permite um setor de inicialização completamente estático (nenhuma ferramenta especial necessária para gerá-lo) e qualquer setor de inicialização fazendo então funciona igualmente bem com qualquer sistema operacional.
Por exemplo, o setor de inicialização syslinux MBR parece ser totalmente intercambiável com o setor de inicialização Windows MBR. Se você dual-boot Linux e Windows, não importa qual bootsector você tem, ambos fazem a mesma coisa, então você sempre pode apenas trocar o bit 'ativo' para trocar os sistemas operacionais. (E instalar o setor de inicialização é apenas copiar o mbr.bin para o disco bruto.)
Mas bootloaders diferentes certamente têm abordagens diferentes: por exemplo, o popular Linux GRUB2 armazena seu segundo estágio no "intervalo pós-MBR" e gera dinamicamente o código bootstrap de acordo com sua localização; ou seja, o setor de inicialização MBR sabe em qual LBA o segundo estágio começa (ignorando completamente a tabela de partição e o sinalizador 'ativo'), e isso pode variar entre os discos, portanto, o setor de inicialização deve ser gravado pelo
grub-install
programa individualmente para cada disco.(O GRUB2 normalmente também não usa VBRs de partição; embora possa "carregá-los em cadeia", sua configuração típica acessa diretamente o sistema de arquivos real e carrega os arquivos do kernel do sistema operacional.)
Consulte Registro mestre de inicialização da Wikipedia para obter informações sobre o histórico do formato MBR.
Basicamente, a necessidade de uma partição ativa é uma escolha de design desde o início do gerenciador de inicialização IBM/DOS e permaneceu assim desde então.
Esses primeiros gerenciadores de inicialização examinaram a lista de partições na tabela de partição incorporada do MBR para encontrar a única que está marcada com o sinalizador ativo e, em seguida, carregaram e executaram o registro de inicialização de volume (VBR) dessa partição ativa.
Esta é apenas mais uma decisão inicial de design na vida do IBM PC que sobreviveu para sempre, não por outro motivo senão uma decisão de alguma equipe inicial de desenvolvedores (talvez até feita por apenas uma pessoa).