Порівняйте два конфігураційні файли ядра з точки зору menuconfig?


14

У мене є ситуація, коли у мене є два конфігураційні файли ядра (для одного джерела ядра). Обидва вони мають частину функціоналу, який мені потрібен (на одному, USB працює правильно, на інших - на другому I2C).

Я знаю, що відмінності між двома конфігураційними файлами, з точки зору menuconfig, включають лише декілька вибраних варіантів. (Але не знаю, які з них)

Однак, коли конфігураційні файли порівнюються вручну (керуються між двома файлами .config), відмінності визначити не просто. Я намагався об'єднати їх вручну без успіху. Я впевнений, що мені це вдалося врешті-решт, але вважаю, що процес міг би бути набагато більш безболісним, якби файли порівнювались так, як вони відображаються у менюconfig.

Чи можна цього досягти, і якщо так, то як?

Відповіді:


17

Спробуйте скористатися scripts/diffconfigз дерева джерела ядра Linux.

Використання:

diffconfig config-a config-b

Показує список видалених, модифікованих та доданих до файлу config-b рядків щодо config-a.


7

У джерелі ядра є сценарій;

скрипти / kconfig / merge_config.sh

В якості аргументів знадобиться 2 конфігурації ядра - це злиття 2-го зверху першого. Все, що знаходиться у 2-му конфігурі, замінить перший конфігурацію - навіть якщо це лінія типу "# CONFIG_ не встановлено"

Дивіться http://processors.wiki.ti.com/index.php/Quick_start_with_3.14_linux


4

Якщо два файли генеруються make menuconfig, вони матимуть параметри в одному порядку, тому простий diff(через Meld або будь-який інший фронтенд) вам дасть корисний результат.

Ви можете отримати щось легше для читання, якщо проігнорувати рядки коментарів:

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

Якщо з якихось причин файли не в одному порядку, ви можете їх сортувати. Це має і зворотний бік - розміщення пов'язаних варіантів далеко один від одного. Знову ж таки, видаліть коментарі. Використовуйте commдля викреслення загальних ліній.

comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)

3

Ви можете спробувати sortфайли перед порівнянням:

meld <(sort config-a) <(sort config-b)

1

Використовуйте kdiff3для порівняння двох конфігурацій.

Якщо хтось хоче порівняти файл .config (поточна конфігурація) з деякою конфігурацією за замовчуванням з дерева ядра, спочатку експортуйте defconfig з поточної конфігурації:

make savedefconfig

Це експортує файл defconfig, який легко порівняти з будь-яким іншим конфігураційним файлом за замовчуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.