Setor de boot do kernel Linux (vmlinuz) no sistema x86 com o formato bzImage

1

Usando um visualizador HEX, eu estou olhando para o kernel Linux vmlinuz 3.14.28 na arquitetura X86 que está no formato bzImage. O setor de inicialização do arquivo é assim:

Ele define duas partições: partição 1 com sistema de arquivos Ext2 de 18,9 GB de tamanho que está ativo e uma partição estendida sem partições lógicas internas. Isso significa que o kernel Linux assume que o usuário criou essas duas partições em seu sistema? Por que o kernel do Linux definiu essas duas partições?

    
por ManiAm 23.10.2016 / 10:50

1 resposta

4

Esse bloco de dados é principalmente um relíficio dos dias em que o Linux foi inicializado a partir de disquetes e não precisou de um gerenciador de inicialização. Na verdade, é um setor de inicialização, mas o código x86 do modo real, quando executado, diz apenas "Use um gerenciador de inicialização. Remova o disco e pressione qualquer tecla para reinicializar".

Os dados no final não são uma tabela de partição, mas o espaço no final foi usado para transmitir configurações como o modo VGA, o dispositivo raiz e alguns sinalizadores para o kernel. Se você estudar os valores um pouco mais de perto, verá que eles não fazem sentido como uma tabela de partições.

O bloco de inicialização ainda tem algum significado, e é por isso que eu disse "principalmente" acima. O início do arquivo é cuidadosamente criado para também se parecer com um aplicativo UEFI, que permite que o próprio kernel funcione como seu próprio gerenciador de inicialização. O arquivo começa com a string mágica MZ (como em um arquivo .exe) e contém um cabeçalho PE / COFF.

    
por 23.10.2016 / 17:05