O MBR é um esquema de particionamento (um layout para como as partições aparecem no disco). O BIOS clássico não sabe sobre partições. Ele simplesmente carrega 512 bytes do setor 0 de um disco de inicialização (originalmente conhecido como Cylinder-Head-Track, agora geralmente Endereçamento de Bloco Lógico), verifica uma assinatura de dois bytes e executa o código se a assinatura corresponder. O carregador de inicialização do primeiro estágio do BIOS é uma área de 512 bytes do disco carregada com código de execução de 16 bits, com dois bytes reservados para uma assinatura.
Por outro lado, a UEFI sabe sobre MBR e GPT e pode usar o sistema de partição para carregar os arquivos do primeiro estágio do carregador, que é um ambiente de inicialização anterior ao SO localizado em uma partição especificamente definida e pode ser adaptado para inicialização em vários tipos de chip, com várias quantidades de memória física disponíveis, etc.
Um BIOS que implementa UEFI sabe como ler partições (certos tipos de) e carregar esse código na memória. Uma vez carregado, um ambiente de inicialização UEFI pode usar o modo de 32 bits ou 64 bits, carregar um sistema operacional de qualquer lugar em um disco e oferecer serviços adicionais, como escolher um SO para carregar, verificar se as condições de inicialização são seguras etc. usa uma partição inteira como primeiro carregador de inicialização.
O BIOS era tradicionalmente impedido de alternar os modos de CPU (modo avançado, modo longo, etc) ou alterar o gate A20, o que alteraria as condições de inicialização do sistema operacional. Essas limitações também significavam que o loader de boot do setor 0 estaria limitado em quanta memória ele poderia acessar ou setores que poderiam carregar. Além disso, o primeiro estágio do gerenciador de inicialização em tal cenário geralmente também precisava da maior parte do espaço disponível para carregar o carregador de inicialização do segundo estágio e, portanto, não podia mudar os modos de CPU, ativar mais memória, etc.
O carregador de inicialização de segundo estágio tinha que estar fisicamente presente em um determinado deslocamento no disco para ser inicializável no setor de inicialização. Basicamente, tudo sobre o BIOS foi mantido para compatibilidade com versões anteriores. Inicialmente, o código do setor de inicialização tinha de ser o modo de 16 bits, embora pudesse mudar para o modo de 32 bits se soubesse que o próximo estágio estava no modo de 32 bits, mas era difícil ocupar o espaço limitado disponível para fazer qualquer coisa mais dados de um disco e pule para esse local.
Além disso, usar o modo de 32 bits reduziria o número restante de instruções que ele poderia executar de acordo. Finalmente, o BIOS fornecia seus "drivers" apenas em 16 bits, então mudar o modo da CPU efetivamente desativaria o uso do BIOS, algo que você não desejaria fazer até o segundo estágio, quando você tivesse tempo de carregar drivers principais, etc.
Você pode instalar o DOS 5.0 (ou versões anteriores) em um novo processador de 8 núcleos com 16 GB de memória e um disco rígido de 4 TB, e desde que o BIOS suporte o carregamento do setor de inicialização, e > desde que forneça as chamadas de BIOS necessárias (por exemplo, leitura / gravação / busca de disco, interrupção de teclado, etc), seus programas ainda serão executados dentro das limitações do SO subjacente (por exemplo, você só poderia particionar um pouco do espaço do disco rígido , acesse parte da memória instalada e use apenas 1 core). O hardware mais recente e melhor ainda suporta código escrito há trinta anos ou mais, mesmo em bare metal (ou seja, sem uma máquina virtual ou emulador).