Por que o BIOS precisa carregar o carregador de inicialização de primeiro estágio do MBR, mas esse não é o caso do UEFI?

1

Por que o BIOS precisa carregar o carregador de inicialização de primeiro estágio do MBR, mas esse não é o caso do UEFI?

Eu acho que pode ser porque o BIOS não pode endereçar 64 bits (assim como 32 bits) de memória enquanto o UEFI tem acesso direto a toda a memória. Ou estou errado?

    
por YohanRoth 28.01.2015 / 22:01

3 respostas

3

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).

    
por 29.01.2015 / 02:43
2

O BIOS é um padrão antigo dos antigos dias de 16 bits compatíveis com IBM. Só podia endereçar 1 MB de memória e não aproveitou os avanços mais recentes nos computadores pessoais modernos. A UEFI suporta o uso da GPT, a Tabela de Partição GUID. Usando GPT permite endereçar um disco muito maior e espaço de partição (até 8 ZB (8 × 270 bytes). UEFI também suporta explicitamente sistemas de arquivos de formato FAT. Outros formatos podem opcionalmente ser suportados, não estamos limitados a FAT e NTFS no firmware .

Mais informações em Wikipedia e sites da Intel .

    
por 28.01.2015 / 22:41
2

Seu palpite está próximo, mas errado. os limites reais são 640k e o tamanho da bios rom que criou a convenção que é a restrição que limita as botas de bios até hoje. EFI é grande. Na verdade, ele é mais poderoso e útil do que as versões iniciais do DOS em uma quantidade significativa. Ele pode ler e gravar arquivos diretamente. Teria sido excepcional caro para colocar em um array rom cedo (aviso eu não disse chip, eu não acho que você poderia ter caber em quatro!) Até que dos foi carregado (que compreendia sistemas de arquivos e arquivos) o bootloader só poderia use blocos, isto é, peça ao bios para ler este bloco ou aquele bloco do disco, e o bios procuraria apenas o bootloader no primeiro bloco no disco.

    
por 28.01.2015 / 22:52