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.