%20em%20sistema%20x86%20com%20formato%20bzImage.png)
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:
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.