O que exatamente faz o BIOS decidir se uma unidade é inicializável ou não?
O BIOS decide se uma unidade é inicializável com base no registro da partição de 16 bytes, presente após a área de código do MBR (mantida em uma tabela iniciada no 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, ou0x00
não). Alguns BIOS podem verificar outras partes do MBR (por exemplo, tipos de partições, somas de verificação), mas o requisito básico é o sinalizador de inicialização.
Como a sequência de inicialização pula da unidade 1 e continua tentando inicializar a partir da unidade 2 se mais de uma unidade estiver instalada no sistema?
Isso depende da implementação e é por isso que você precisa selecionar corretamente uma ordem de inicialização. Na maioria dos casos, o BIOS examinará cada meio de armazenamento na ordem que você definir e determinará se ele pode inicializar a partir desse dispositivo (através dos dados MBR). Se puder, ele faz - se não, continua repetindo os outros dispositivos (novamente, na ordem que você selecionou).
Depois que o BIOS transferiu o controle para o carregador de inicialização na unidade nº 1, que não possuía partições "inicializáveis" - como é invocado exatamente o carregador de inicialização na segunda unidade?
Depois que um dispositivo de inicialização válido é encontrado (ou seja, o sinalizador inicializável é definido e outras verificações adicionais passam), o BIOS copia o setor MBR na RAM. O BIOS então muda o ponteiro de instruções para o início desse local (usando umJUMP
instrução), onde o segmento de código MBR está localizado, e o computador é iniciado.
Se o BIOS suportar a Especificação de inicialização do BIOS , o código MBR poderá retornar o controle ao BIOS com uma determinada instrução, sinalizando uma falha de inicialização e solicitando que você tente o próximo dispositivo. Os BIOS mais antigos apenas imprimem uma mensagem de erro. Uma boa dica se o BIOS suportar é se você pode inicializar a partir do USB.
Meu entendimento é que a única coisa que o BIOS normalmente verifica em um MBR é sua assinatura no final do setor de 512 bytes, e depois transfere o controle para o gerenciador de inicialização inicial situado nos primeiros 446 bytes do setor de inicialização.
Isso está correto, embora se deva observar que a maioria dos BIOS modernos também procurará uma tabela de partição GUID, bem como a tabela convencional de estilo MBR mais antiga.
Isso implica que os primeiros 446 bytes do setor de inicialização DEVEM conter algum código significativo do carregador de inicialização, mesmo que o disco não seja inicializável?
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 realmente estar vazia, o primeiro setor da unidade deve ter um MBR / GPT bem formado.
fdisk
lidar com esses casos, embora a versão original tenha sinalizado cabeçalhos de MBR inválidos). Aconselhei o OP a postar o cabeçalho bruto do MBR, mas ele / ela também pode "ativar / desativar" o sinalizador inicializável (para definir / redefinir o sinalizador manualmente).