Kompilasi kernel dengan konfigurasi default


8

Asumsi:

  • Platform:
    anisha@linux-dopx:~/> uname -a
    Linux linux-dopx 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 x86_64 x86_64 x86_64 GNU/Linux

  • Kernel yang diunduh adalah yang stabil terbaru dari kernel.org.

  • Kami membiarkan default tetap (tidak membuat perubahan) dalam opsi make menuconfig.
  • Cukup ketik make, make install, grub-update, dan reboot.

Sekarang, mengikuti asumsi ini, apakah kita masih diharuskan untuk membuat beberapa perubahan tambahan pada file atau mengkompilasi beberapa driver tambahan untuk memastikan kesalahan reboot gratis?

Jika ya, lalu pada hal apa perubahan itu bergantung?

EDIT 1:

anisha@linux-dopx:/> sudo /sbin/lspci -n
00:00.0 0600: 8086:29c0 (rev 10)
00:02.0 0300: 8086:29c2 (rev 10)
00:1b.0 0403: 8086:27d8 (rev 01)
00:1c.0 0604: 8086:27d0 (rev 01)
00:1c.1 0604: 8086:27d2 (rev 01)
00:1d.0 0c03: 8086:27c8 (rev 01)
00:1d.1 0c03: 8086:27c9 (rev 01)
00:1d.2 0c03: 8086:27ca (rev 01)
00:1d.3 0c03: 8086:27cb (rev 01)
00:1d.7 0c03: 8086:27cc (rev 01)
00:1e.0 0604: 8086:244e (rev e1)
00:1f.0 0601: 8086:27b8 (rev 01)
00:1f.1 0101: 8086:27df (rev 01)
00:1f.2 0101: 8086:27c0 (rev 01)
00:1f.3 0c05: 8086:27da (rev 01)
01:00.0 0200: 10ec:8136 (rev 01)

Jawaban:


7

Tidak dianjurkan hanya telanjang make menuconfig. Konfigurasi yang diperlukan tergantung pada tiga hal:

 the hardware being used
 the features used by the OS/distribution
 the features by you (file-systems, raid, ..etc)

Jadi konfigurasi "default" yang disarankan dalam pandangan saya adalah:

cd your_kernel_src
cp /boot/your-distribution-config .config
make localmodconfig
make menuconfig

Lihat juga konfigurasi Kernel untuk distribusi . Paragraf pertama:

Mengkonfigurasi kernel pernah menjadi proses yang cukup mudah, hanya membutuhkan pengetahuan tentang perangkat keras apa yang perlu didukung. Seiring berjalannya waktu, hal-hal menjadi semakin kompleks secara umum, tetapi distribusi telah menambahkan rangkaian dependensi mereka sendiri pada fitur-fitur kernel spesifik — dependensi yang sulit bagi pengguna biasa untuk mengetahuinya. Hal itu membuat Linus Torvalds mengeluarkan proposal RFC untuk menambahkan opsi konfigurasi kernel spesifik distribusi.


1
Singkatnya: Tidak ada konfigurasi kernel "default" atau "hanya apa yang dimaksudkan Linus". Jika Anda baru saja mengunduh dan mengkompilasi tanpa mengkonfigurasi apa pun, diharapkan Anda berakhir dengan kernel yang rusak dan / atau hampir tidak berfungsi.
bahamat

Konfigurasi defaultnya hanya itu. Dulu apa pun yang dijalankan Linus saat itu. Dapatkan konfigurasi untuk distribusi Anda, dan gunakan itu sebagai titik awal.
vonbrand

terima kasih atas jawabannya, saya mencoba mengikuti buku writing linux driversdengan kernel 2.6. Konfigurasi I My Fedora 24 memiliki banyak nilai yang tidak valid untuk kernel 2.6. Adakah saran tentang konfigurasi apa yang digunakan untuk menginstal kernel 2.6?
gideon

3

Perangkat keras / distro nyata kemungkinan tidak akan berfungsi dengan baik dengan defconfig

Seperti disebutkan pada jawaban ini , segala sesuatu yang tidak diberikan oleh distribusi atau vendor perangkat keras kemungkinan besar akan gagal dengan cara yang halus atau kurang halus, misalnya:

  • Anda mungkin tidak membangun dukungan driver untuk beberapa bagian penting dari perangkat keras
  • paket-paket distribusi mungkin mengandalkan fitur kernel yang tidak Anda bangun dan gagal

Selain itu, selain konfigurasi khusus, adalah normal bagi vendor untuk menerapkan patchsets besar di atas kernel vanilla, bahkan Ubuntu melakukan ini sebagai contoh.

Khusus untuk Ubuntu / Debian, saya telah menjelaskan cara mengkompilasi kernel yang didukung dari sumber di: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171# 1081171 Memodifikasi bahwa basis kernel yang stabil adalah hal paling sehat yang dapat Anda lakukan dalam kasus itu.

QEMU bekerja dengan defconfig

Satu hal yang defconfigtidak baik, untuk boot pada QEMU, diuji pada kernel v4.20, QEMU 2.12.

Ini adalah contoh sepenuhnya otomatis dengan Buildroot .

Seperti yang tercantum pada tautan itu, Anda memerlukan opsi berikut untuk mem-boot dari disk:

CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y

meskipun mereka tidak diperlukan untuk initrd.

Untuk kompilasi silang ke lengkungan yang berbeda, misalnya aarch64, Anda perlu:

make ARCH=arm64 defconfig

Tetapi seperti yang dijelaskan di sini , walaupun arm64 melakukan booting pada QEMU, ia menghasilkan kernel yang sangat kembung, dan Anda mungkin ingin meluncurkan sesuatu yang lebih minimal misalnya seperti dijelaskan di sini .

Apa make defconfigtepatnya?

Kita dapat dengan mudah melihat file config mana yang digunakan dengan verbose build:

make V=1 defconfig

yang dihasilkan pada v4.19:

make -f ./scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig defconfig
scripts/kconfig/conf  --defconfig=arch/x86/configs/x86_64_defconfig Kconfig

dari mana kami menyimpulkan bahwa file yang digunakan harus berupa arch / x86 / configs / x86_64_defconfig .

Lihat juga: /programming/41885015/what-exactly-does-linux-kernels-make-defconfig-do

make helpjuga menunjukkan target terkait standar menarik lainnya seperti alldefconfigdan savedefconfigyang mungkin berguna.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.