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

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

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

insira a descrição da imagem aqui

Ele define duas partições: partição 1 com sistema de arquivos Ext2 de tamanho 18,9 GB que está ativo e uma partição estendida sem partições lógicas internas. Isso significa que o kernel do 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?

Responder1

Este bloco de dados é principalmente uma relíquia dos dias em que o Linux era inicializado a partir de disquetes e não precisava de um gerenciador de inicialização. Na verdade, é um setor de inicialização, mas o código x86 em modo real, quando executado, apenas diz "Use um carregador 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 elaborado para também se parecer com um aplicativo UEFI, o que permite que o próprio kernel funcione como seu próprio carregador de boot. O arquivo começa com a string mágica MZ (como um .exe do DOS) e contém um cabeçalho PE/COFF.

informação relacionada