vmlinuz dan initrd tidak ditemukan setelah membangun kernel?

9

Setelah mengkonfigurasi dan membangun kernel menggunakan make, mengapa saya tidak memilikinya vmlinuz-<version>-default.imgdan initrd-<version>.img, tetapi hanya mendapatkan vmlinuxbiner yang besar (~ 150MB)?

Amumu
sumber
4
Apakah Anda lupa lari make bzImage? Juga, apakah Anda membuat kernel monolitik? Apakah Anda menjalankan OS mirip Debian? Jika demikian, dan Anda tidak melakukan kompilasi silang, ada cara yang lebih mudah untuk membangun kernel.
Alexios
Saya mengkompilasinya di OpenSUSE (namun, saya mengunduh sumber terbaru dari kernel.org). Setelah itu make menuconfig, saya mengetik makedan membiarkannya berfungsi.
Amumu
1
Anda perlu make bzImagemembuat kernel bzImage. Katakan make helpuntuk melihat beberapa instruksi singkat. Periksa Linux Kernel Howto untuk instruksi terperinci. Jika Anda menjawab setiap make menuconfigpertanyaan dengan Y (alih-alih M jika perlu), Anda telah mencoba memasukkan setiap driver ke dalam kernel. Ini adalah ide yang sangat, sangat buruk dan kernel tidak mau boot karena terlalu besar. The initrdgambar yang dihasilkan oleh alat-alat lain.
Alexios
Saya baru saja memeriksa konfigurasi lagi. Sepertinya saya belum mengaktifkan dukungan modul kernel yang dapat dimuat. Saya pikir itu default. Saya akan mencoba mengkompilasi lagi dan akan memberi tahu ketika sudah selesai.
Amumu
Banyak komentar di atas terlihat seperti jawaban yang bagus untuk saya.
James Youngman

Jawaban:

9

Gambar yang dikompresi berada di bawah arch/xxx/boot/, di mana xxxlengkungan. Misalnya, untuk x86dan amd64, saya punya gambar terkompresi di /usr/src/linux/arch/x86/boot/bzImage, bersama dengan /usr/src/linux/vmlinux.

Jika Anda masih belum memiliki gambar, periksa apakah bzip2sudah diinstal dan berfungsi (tapi saya kira jika itu masalahnya, Anda akan mendapatkan pesan kesalahan deskriptif, seperti "bzip2 tidak ditemukan").

Konfigurasi kernel juga memungkinkan Anda memilih metode kompresi, sehingga nama file aktual dan algoritma kompresi mungkin berbeda jika Anda mengubah pengaturan kernel tersebut.

Seperti yang lain telah disebutkan, initrds tidak dihasilkan oleh proses kompilasi linux, tetapi oleh alat lain. Perhatikan bahwa kecuali, karena alasan tertentu, Anda memerlukan file eksternal (mis. Anda memerlukan modul atau udev untuk mengidentifikasi atau me-mount /), Anda tidak memerlukan initrd untuk boot.

njsg
sumber