A ordem básica de operações que acontece enquanto um BIOS está tentando encontrar algo para inicializar é:
- Carregue o primeiro setor (512 bytes) do dispositivo que você está tentando inicializar (HDD, SSD, Floppy Disk, Disco Óptico, etc.) na memória
- Verifique se os 511 e 512 bytes são 0x55 e 0xAA, respectivamente.
- Se não, volte ao passo 1 e tente o próximo dispositivo ou desista se não houver mais.
- Se sim, comece a executar o código no início deste setor, passando o controle para (esperançosamente) um gerenciador / gerenciador de inicialização.
Você pode encontrar a página wiki do OSDev na Seqüência de Inicialização útil. A página do MBR também tem uma tabela útil explicando o layout desse primeiro setor. Eu recriou aqui com alguma simplificação:
Offset | Size (bytes) | Description
0 | 436 | MBR Bootstrap (flat binary executable code)
0x1b4 | 10 | Optional "unique" disk ID
0x1be | 64 | MBR Partition Table, with 4 entries
0x1fe | 2 | (0x55, 0xAA) "Valid bootsector" signature bytes
Observe que o BIOS não necessariamente presta atenção ou sequer sabe sobre o ID do disco ou a tabela de partições.