Bandingkan dua file konfigurasi kernel dari perspektif menuconfig?

13

Saya memiliki situasi di mana saya memiliki dua file konfigurasi kernel (untuk sumber kernel yang sama). Keduanya memiliki bagian dari fungsi yang saya butuhkan (pada satu, USB bekerja dengan benar, yang lain, I2C kedua).

Saya tahu bahwa perbedaan antara dua file konfigurasi, dari perspektif menuconfig, hanya menyertakan beberapa opsi yang dipilih. (Tapi tidak tahu yang mana)

Namun ketika file config dibandingkan secara manual (berbaur antara dua file .config), perbedaannya tidak mudah untuk diidentifikasi. Saya telah mencoba menggabungkannya secara manual tetapi tidak berhasil. Saya yakin saya akan berhasil pada akhirnya tetapi percaya prosesnya bisa jauh lebih tidak menyakitkan jika file dibandingkan dengan cara mereka muncul di menuconfig.

Bisakah ini dicapai, dan jika demikian, bagaimana?

TheMeaningfulEngineer
sumber

Jawaban:

16

Coba gunakan scripts/diffconfigdari pohon sumber kernel Linux.

Pemakaian:

diffconfig config-a config-b

Memperlihatkan daftar baris yang dihapus, dimodifikasi dan ditambahkan ke file config-b sehubungan dengan config-a.

prin
sumber
6

Ada skrip di sumber kernel;

skrip / kconfig / merge_config.sh

Ini akan mengambil 2 konfigurasi kernel sebagai argumen - ini akan menggabungkan yang kedua di atas yang pertama. Apa pun di konfigurasi ke-2 akan menggantikan konfigurasi pertama - bahkan jika itu adalah baris seperti "# CONFIG_ tidak disetel"

Lihat http://processors.wiki.ti.com/index.php/Quick_start_with_3.14_linux

Abasterfield
sumber
3

Anda dapat mencoba sortfile sebelum membandingkan:

meld <(sort config-a) <(sort config-b)
l0b0
sumber
3

Jika kedua file dihasilkan oleh make menuconfig, mereka akan memiliki opsi dalam urutan yang sama, sehingga sederhana diff(melalui Meld atau apa pun yang Anda suka) akan memberikan hasil yang dapat digunakan.

Anda mungkin mendapatkan sesuatu yang lebih mudah dibaca jika Anda mengabaikan baris komentar:

diff -I '^#' old.config new.config

Jika karena alasan tertentu file tidak dalam urutan yang sama, Anda dapat mengurutkannya. Ini memiliki kelemahan menempatkan opsi terkait jauh. Sekali lagi, hapus komentar. Gunakan communtuk menghilangkan garis yang umum.

comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)
Gilles 'SANGAT berhenti menjadi jahat'
sumber
1

Gunakan kdiff3untuk membandingkan dua konfigurasi.

Jika ada yang ingin membandingkan file .config (konfigurasi saat ini) dengan beberapa konfigurasi default dari pohon kernel, ekspor defconfig pertama dari konfigurasi saat ini:

make savedefconfig

Ini akan mengekspor file defconfig, yang dapat dengan mudah dibandingkan dengan file konfigurasi default lainnya.

ChevalierDeBalibari
sumber