vmlinuz e initrd não encontrado após a construção do kernel?

9

Depois de configurar e construir o kernel usando o make, por que não tenho vmlinuz-<version>-default.imge initrd-<version>.img, mas só tenho um vmlinuxbinário enorme (~ 150 MB)?

Amumu
fonte
4
Você esqueceu de correr make bzImage? Além disso, você criou um núcleo monolítico? Você está executando um sistema operacional semelhante ao Debian? Nesse caso, e você não está fazendo uma compilação cruzada, existem maneiras mais fáceis de construir um kernel.
Alexios 16/05
Compilei no OpenSUSE (no entanto, baixei a fonte mais recente kernel.org). Depois make menuconfig, digitei makee deixei fazer o trabalho.
Amumu
1
Você precisa make bzImagegerar o kernel bzImage. Diga make helppara ver algumas instruções breves. Verifique o Linux Kernel Howto para obter instruções detalhadas. Se você respondeu todas as make menuconfigperguntas com Y (em vez de M, quando apropriado), tentou incluir todos os drivers no kernel corretamente. Essa é uma idéia muito, muito ruim e o kernel não inicializa porque é muito grande. A initrdimagem é gerada por outras ferramentas.
Alexios
Acabei de verificar a configuração novamente. Parece que não ativei o suporte ao módulo carregável do kernel. Eu pensei que é padrão. Vou tentar compilar novamente e notificarei quando terminar.
Amumu 16/05
Muitos dos comentários acima parecem boas respostas para mim.
James Youngman

Respostas:

9

As imagens compactadas estão embaixo arch/xxx/boot/, onde xxxestá o arco. Por exemplo, para x86e amd64, tenho uma imagem compactada em /usr/src/linux/arch/x86/boot/bzImage, junto com /usr/src/linux/vmlinux.

Se você ainda não possui a imagem, verifique se bzip2está instalada e funcionando (mas acho que se esse fosse o problema, você receberá uma mensagem de erro descritiva, como "bzip2 não encontrado").

Além disso, a configuração do kernel permite escolher o método de compactação, portanto o nome do arquivo e o algoritmo de compactação reais podem diferir se você alterar essa configuração do kernel.

Como já mencionado, initrds não são gerados pelo processo de compilação do linux, mas por outras ferramentas. Observe que, a menos que, por algum motivo, você precise de arquivos externos (por exemplo, de módulos ou udev para identificar ou montar /), não é necessário um initrd para inicializar.

njsg
fonte