Secara otomatis menjawab default ketika melakukan 'make oldconfig' di pohon kernel

36

Ketika membangun kernel baru berdasarkan konfigurasi sebelumnya, apakah ada cara untuk mengotomatiskan make oldconfigproses sehingga menetapkan opsi baru ke nilai defaultnya?

Sunting: Maksud saya adalah bahwa ketika menggunakan .config (dari /boot/config-*atau /proc/config.gz) pada kernel yang lebih baru, make oldconfigproses akan bertanya apakah Anda ingin mengaktifkan opsi yang tidak tersedia di kernel lama Anda. Anda dapat menjawab Y / n / m atau tekan enter untuk menerima default. Saya ingin menerima default secara otomatis tanpa interaksi pengguna.

Jean-Francois Chevrette
sumber
@ jscott Ini hanya akan "tekan enter" untuk pertanyaan pertama, tidak semuanya. Anda dapat menggunakan perintah 'ya' untuk memiliki string yang dicetak tanpa batas.
Laurent Parenteau

Jawaban:

37

Gunakan perintah:

yes "" | make oldconfig

Perintah 'ya' berulang kali menampilkan baris dengan semua string yang ditentukan, atau 'y' secara default.

Jadi, Anda dapat menggunakannya untuk hanya "tekan enter", yang akan menghasilkan menggunakan nilai default untuk perintah 'make oldconfig'.

Laurent Parenteau
sumber
Ahh, saya tidak tahu perintah 'ya' dapat menghasilkan string apa pun. Terima kasih!
Jean-Francois Chevrette
3
Ini fenomenal.
Ivan X
1
Jawabannya adalah ide yang jauh lebih baik serverfault.com/a/538150/18822
Evan Carroll
56
make olddefconfig

adalah apa yang kamu inginkan. Dari bantuan ( make helpdalam direktori source kernel)

olddefconfig - Sama seperti silentoldconfig tetapi menetapkan simbol baru ke nilai defaultnya

Mengalir
sumber
Saya telah mencari sesuatu seperti ini untuk sementara waktu ... terima kasih banyak!
Jafar Kofahi
Versi Linux yang mana ini tiba? Hanya penasaran. Saat ini saya sedang menangani versi lama (3.0) dan belum memilikinya.
clacke
1
Ini seharusnya jawaban yang benar.
suprjami
0

Iya nih. Itu disimpan dalam ".config" di tingkat atas direktori sumber.

Selain itu, jika menggunakan kernel distribusi, beberapa distribusi seperti RedHat menyimpannya di / boot / config - $ (uname -r). (versi kernel) [1]

Akhirnya, jika dikompilasi di kernel yang Anda jalankan, itu tersedia di /proc/config.gz. Saya lupa versi apa yang memperkenalkan opsi ini.

[1] Opsi-opsi ini:

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y 

Edit

Lihatlah /usr/src/linux/kernel/Documentation/kbuild/kconfig.txt (atau jalur yang sesuai). Anda dapat menggunakan beberapa rekomendasinya untuk membuat skrip solusi. Saya akan menggunakan kombinasi skrip dan textutils untuk mencapai apa yang Anda gambarkan.

Edit 2

Sebagai catatan tambahan, ini adalah ide yang buruk. Bagaimana jika dukungan perangkat keras opsional yang unik untuk perubahan lingkungan Anda tetapi tidak default? Bagaimana jika terjadi perubahan yang berdampak negatif? Ini benar-benar sesuatu yang harus interaktif. Anda dapat membuat konfigurasi dan mengotomatiskan sisanya.

"make silentoldconfig" sedikit kurang bertele-tele, yang mungkin bisa membantu. Itu masih interaktif.

Warner
sumber
Itu bukanlah apa yang saya maksud. Saya telah menambahkan rincian lebih lanjut ke pertanyaan saya untuk menjelaskan apa yang ingin saya capai.
Jean-Francois Chevrette
0

make silentoldconfig


sumber
2
make silentoldconfig masih interaktif, hanya kurang verbose
Laurent Parenteau