konfigurasi scripted dari kernel linux

8

Diberikan daftar fitur kernel, saya ingin membuat konfigurasi linux minimal yang mendukung semua fitur yang diberikan (dan dependensi yang sesuai) tetapi tidak ada yang lain.

Apakah ada cara untuk membuat allnoconfig dan alat untuk mengaktifkan fitur satu per satu?

(Saya bisa mengedit .configfile tetapi ini tidak akan mendapatkan dependensi yang benar. Saya bisa menggunakan make *config, tetapi sejauh yang saya tahu itu hanya berfungsi interaktif atau membuat beberapa konfigurasi default.)

michas
sumber
Berikut ini adalah skrip yang mengotomatiskan konfigurasi kernel Linux dengan resolusi dependensi: Kernel Expect (kernelexpect)
T. Perkins

Jawaban:

1

Jika Anda perlu melakukannya secara non-interaktif, Anda mungkin dapat menggunakan make oldconfig atau make olddefconfig. make * config akan memperbaiki dependensi dan itu tidak selerat, katakan menuconfig. (Kalau tidak, menuconfig sangat baik untuk mengaktifkan fitur satu per satu, bahkan termasuk teks bantuan!)

make oldconfig akan meminta opsi konfigurasi 'baru', jadi Anda harus memasukkan komentar seperti ini untuk opsi yang dinonaktifkan jika Anda ingin bekerja secara non-interaktif:

# CONFIG_KERNEL_GZIP is not set

membuat olddefconfig di sisi lain tampaknya tidak bertanya, tetapi menggunakan nilai default. Ada juga silentoldconfig, tetapi juga menanyakan dalam beberapa kasus, jadi tidak senyap itu.

dari make help:

oldconfig       - Update current config utilising a provided .config as base
silentoldconfig - Same as oldconfig, but quietly, additionally update deps
olddefconfig    - Same as silentoldconfig but sets new symbols to their default value

Penafian: Saya hanya mencoba tes sepele untuk menghapus opsi untuk beberapa perpustakaan yang saya tahu diperlukan. Mereka ditambahkan kembali oleh olddefconfig dan oldconfig. Saya tidak tahu bagaimana ini berlaku untuk melakukan konfigurasi yang lebih besar.

Dalam hal apapun, saya kira Anda sudah mempertimbangkan menggunakan make localmodconfig atau sesuatu seperti itu sebelum memulai ini? Saya belum mencoba membuat konfigurasi minimal selama bertahun-tahun, tetapi sepertinya saya ingat ada beberapa cara yang agak tidak jelas untuk membuat kernel yang sama sekali tidak dapat digunakan. :)

ilkkachu
sumber
"olddefconfig" mungkin akan bekerja dengan baik juga. Apakah ada cara untuk mendapatkan opsi konfigurasi default dari file defconfig? (Dalam hal ini file defconfig akan memberikan basis yang sesuai dan opsi kustom minimal dapat diatur dalam .config.)
michas
-1

Sejak kernel 2.6.29 ada skrip yang dapat Anda temukan di
/kernel_extracted_dir/scripts/config

Sebagai contoh

/kernel_extracted_dir/scripts/config --set-val CONFIG_LOG_BUF_SHIFT 14
/kernel_extracted_dir/scripts/config --enable CONFIG_PRINTK_TIME

(Untuk memberi kredit pada saat jatuh tempo, saya mengambil contoh dari blog ini )

Anda memiliki opsi mengikuti (disalin dari bantuan)

--enable|-e option   Enable option
--disable|-d option  Disable option
--module|-m option   Turn option into a module
--set-str option string
                     Set option to "string"
--set-val option value
                     Set option to value
--undefine|-u option Undefine option
--state|-s option    Print state of option (n,y,m,undef)

--enable-after|-E beforeopt option
                         Enable option directly after other option
--disable-after|-D beforeopt option
                         Disable option directly after other option
--module-after|-M beforeopt option
                         Turn option into module directly after other option commands can be repeated multiple times

options:
    --file config-file   .config file to change (default .config)
    --keep-case|-k       Keep next symbols' case (dont' upper-case it)
Hristo Mohamed
sumber
1
Ini tampak hebat pada tampilan pertama. Sayangnya sepertinya tidak peduli dengan ketergantungan sama sekali. :(
michas