MBR: Como o BIOS decide se uma unidade é inicializável ou não?

11

Enquanto tentava responder a essa pergunta no askubuntu: Como faço para desinstalar o GRUB Eu li o artigo da Wikipedia sobre MBR e também o resposta perfeita em uma questão um pouco relacionada aqui no Superusuário, no entanto, uma coisa ainda não está clara para mim:

O que exatamente faz o BIOS decidir se uma unidade é inicializável ou não? Como a sequência de inicialização pula da unidade 1 e prossegue tentando inicializar a partir da unidade 2 se mais de uma unidade estiver instalada no sistema?

Meu entendimento é que a única coisa que BIOS normalmente verifica em um MBR é sua assinatura no final do setor de 512 bytes, e então ele apenas transfere o controle para o bootloader inicial situado nos primeiros 446 bytes do setor de boot. .

Isso implica que os primeiros 446 bytes do setor de inicialização DEVEM conter algum código de bootloader significativo, mesmo que o disco não seja inicializável?

Depois que o BIOS transferiu o controle para o gerenciador de inicialização na unidade 1, que por acaso não tinha partições "inicializáveis" - como exatamente o carregador de inicialização na segunda unidade era chamado?

Desculpe se isso é técnico demais :) A pergunta curta é: "Como exatamente a BIOS pula uma unidade e tenta inicializar a partir da próxima?"

    
por Sergey 04.05.2012 / 16:29

1 resposta

16

What exactly makes BIOS decide if a drive is bootable or not?

O BIOS decide se uma unidade é inicializável com base no registro de partição de 16 bytes, presente após a área de código MBR (mantida em uma tabela a partir do 446 th byte). O primeiro byte em cada registro de partição representa o status inicializável da unidade (e é definido como 0x80 se inicializável ou 0x00 se não for inicializável). Alguns BIOS podem verificar outras partes do MBR (por exemplo, tipos de partição, somas de verificação), mas o requisito básico é o sinalizador de inicialização.

How does the boot sequence skip from drive #1 and proceed trying to boot from drive #2 if more than one drive is installed in the system?

Isso depende da implementação e é por isso que você precisa selecionar adequadamente uma ordem de inicialização. Na maioria dos casos, o BIOS examinará cada mídia de armazenamento na ordem que você definiu e determinará se pode inicializar a partir desse dispositivo (por meio dos dados do MBR). Se for possível, ele faz - se não, continua percorrendo os outros dispositivos (novamente, na ordem que você selecionou).

After BIOS transferred control to the bootloader on drive #1 which happened to have no "bootable" partitions - how exactly is the bootloader on the second drive invoked?

Quando um dispositivo de inicialização válido é encontrado (isto é, o sinalizador de inicialização é definido e outras verificações adicionais são transmitidas), o BIOS copia o setor do MBR na RAM. O BIOS, em seguida, realoca o ponteiro de instrução para o início deste local (usando uma instrução JUMP ), onde o segmento de código MBR está localizado eo computador, em seguida, é iniciado.

Se o BIOS suportar a Especificação de inicialização do BIOS , o código MBR pode retornar o controle para BIOS com uma determinada instrução, sinalizando-o de falha de inicialização e solicitando que ele tente o próximo dispositivo. Bios mais antigos apenas imprimem uma mensagem de erro. É bom saber se o BIOS suporta se você pode inicializar a partir do USB.

My understanding is that the only thing BIOS normally checks on an MBR is its signature at the very end of the 512-byte sector, and then it just transfers control to the initial bootloader situated in the first 446 bytes of the boot sector.

Isso está correto, embora deva ser notado que a maioria dos BIOS modernos também irá procurar por uma Tabela de Partição GUID, assim como a tabela convencional estilo MBR.

Does it imply that the first 446 bytes of the boot sector MUST contain some meaningful bootloader code even if the disk is not bootable?

Não , mas a unidade deve ter uma tabela de partição MBR ou GUID válida; caso contrário, ela não será detectada pelo computador. Embora a parte do código do MBR possa estar vazia, o primeiro setor da unidade deve ter um MBR / GPT bem formado.

    
por 04.05.2012 / 17:54