Como o mbr transfere seu controle para o bootloader?

1

O que eu sei é o seguinte

Ao iniciar, o BIOS passa pela seguinte sequência:

1.Power-on self-test (POST)
2.Detectar o BIOS da placa de vídeo (chip) e executar seu código para inicializar o hardware de vídeo. 3.Detectar qualquer outro dispositivo BIOSes e invocar suas funções de inicialização
4.Exibir a tela de inicialização do BIOS
5. Execute um teste de memória breve (identifique quanta memória está no sistema)
6. Ajustar a memória e os parâmetros da unidade | 7.Configurar Plug & Dispositivos de reprodução (tradicionalmente dispositivos de barramento PCI)
8. Atribuir recursos (canais DMA e IRQs)
9.Identifique o dispositivo de inicialização

Quando o BIOS identifica o dispositivo de inicialização (normalmente um dos vários discos que foram marcados como o disco inicializável), ele lê o bloco 0 desse dispositivo no local da memória 0x7c00 e salta para lá.

Mas o que acontece depois disso, ou seja, como o BIOS dá o controle ao gerenciador de inicialização neste estágio

    
por Siddhant Ghosh 11.06.2016 / 18:08

2 respostas

1

Como mencionado no post acima, o BIOS simplesmente dá o controle ao bootloader executando uma instrução de salto para 0x7C00.

Um dispositivo não inicializável pode ter a instrução INT 18 (0xCD 0x18) em seus dois primeiros bytes (e os 55aa nos bytes 511, 512), o que simplesmente faria com que o BIOS acessasse o próximo dispositivo na ordem de inicialização .

    
por 11.06.2016 / 22:20
0

Como você mencionou 0x7C00, eu vou me concentrar na inicialização do MBR (GPT é um negócio diferente).

Como você disse, uma vez que o BIOS determina que um dispositivo é inicializável (isto é, 0x55AA como os dois últimos bytes do primeiro setor), ele lê o primeiro setor do disco e o carrega na memória, iniciando em 0x7C00. Depois de emitir a instrução de salto, a CPU começa a executar o código que estiver lá.

Cabe então ao bootloader descobrir o que carregar e executar em seguida. O código que faz o carregamento e o salto para o próximo estágio tem que caber nos 510 bytes restantes naquele primeiro setor, menos na verdade, já que os discos rígidos também têm a tabela de partições lá.

Outras leituras: Boot Sequence , Rolling Seu próprio gerenciador de inicialização

    
por 11.06.2016 / 21:33