vmlinuz e initrd non sono stati trovati dopo aver compilato il kernel?


9

Dopo aver configurato e compilato il kernel usando make, perché non ho vmlinuz-<version>-default.imge initrd-<version>.img, ma ho solo un enorme vmlinuxbinario (~ 150 MB)?


4
Hai dimenticato di correre make bzImage? Inoltre, hai creato un kernel monolitico? Stai usando un sistema operativo simile a Debian? In tal caso, e non stai eseguendo la compilazione incrociata, ci sono modi più semplici per compilare un kernel.
Alessio,

L'ho compilato in OpenSUSE (tuttavia, ho scaricato l'ultima fonte da kernel.org). Dopo make menuconfig, ho digitato makee lasciato fare il lavoro.
Amumu,

1
Devi make bzImagegenerare il kernel bzImage. Di ' make helpdi vedere alcune brevi istruzioni. Controlla il Linux Kernel Howto per istruzioni dettagliate. Se hai risposto a tutte le make menuconfigdomande con Y (anziché con M ove appropriato), hai provato a includere tutti i driver nel kernel corretto. Questa è una pessima idea e il kernel non si avvia perché è troppo grande. L' initrdimmagine è generata da altri strumenti.
Alessio,

Ho appena ricontrollato la configurazione. Sembra che non abbia abilitato il supporto del modulo kernel caricabile. Ho pensato che fosse predefinito. Proverò a compilare di nuovo e avviserò quando sarà terminato.
Amumu,

Molti dei commenti sopra mi sembrano buone risposte.
James Youngman,

Risposte:


9

Le immagini compresse sono sotto arch/xxx/boot/, dove si xxxtrova l'arco. Ad esempio, per x86e amd64, ho un'immagine compressa in /usr/src/linux/arch/x86/boot/bzImage, insieme a /usr/src/linux/vmlinux.

Se non hai ancora l'immagine, controlla se bzip2è installato e funzionante (ma suppongo che se fosse questo il problema, otterrai un messaggio di errore descrittivo, come "bzip2 non trovato").

Inoltre, la configurazione del kernel consente di scegliere il metodo di compressione, quindi il nome file effettivo e l'algoritmo di compressione possono differire se si modifica l'impostazione del kernel.

Come altri hanno già detto, gli initrd non sono generati dal processo di compilazione di Linux, ma da altri strumenti. Si noti che, a meno che, per qualche motivo, non siano necessari file esterni (ad esempio, per identificare o montare i moduli o udev /), non è necessario un initrd per l'avvio.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.