2つのカーネル構成ファイル(同じカーネルソース用)がある状況があります。どちらにも必要な機能の一部があります(一方では、USBは正しく機能し、もう一方では、2番目のI2Cが機能します)。
Menuconfigの観点から見ると、2つの構成ファイルの違いには、選択されたオプションのほんの一部しか含まれていないことを知っています。 (しかし、どれかわからない)
ただし、構成ファイルを手動で比較する場合(2つの.configファイル間で融合)、違いを特定するのは簡単ではありません。私はそれらを手動でマージしようとしましたが、成功しませんでした。私は最終的に成功すると確信していますが、ファイルがmenuconfigに表示される方法で比較された場合、プロセスははるかに簡単になると考えています。
これは達成できますか。達成できる場合、どのようにですか。
scripts/diffconfig
Linuxカーネルソースツリーから。
使用法:
diffconfig config-a config-b
Config-aに関して、削除、変更、およびconfig-bファイルに追加された行のリストを表示します。
カーネルソースにスクリプトがあります。
scripts/kconfig/merge_config.sh
引数として2つのカーネル構成を使用します-最初のものの上に2番目のものをマージします。 「#CONFIG_ is not set」のような行であっても、2番目の構成のすべてが最初の構成をオーバーライドします。
参照 http://processors.wiki.ti.com/index.php/Quick_start_with_3.14_linux
2つのファイルがmake menuconfig
によって生成された場合、それらは同じ順序でオプションを持つため、単純なdiff
(Meldまたは任意のフロントエンドを介して)を使用すると、使用可能な結果が得られます。
コメント行を無視すると、より読みやすいものになる可能性があります。
diff -I '^#' old.config new.config
何らかの理由でファイルが同じ順序になっていない場合は、並べ替えることができます。これには、関連するオプションをはるかに離すという欠点があります。再度、コメントを削除します。 comm
を使用して、共通の行を削除します。
comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)
比較する前に、ファイルをsort
ingしてみることができます。
meld <(sort config-a) <(sort config-b)
使用する kdiff3
2つの構成を比較します。
.config(現在の構成)ファイルをカーネルツリーのデフォルト構成と比較したい場合は、まず現在の構成からdefconfigをエクスポートします。
make savedefconfig
これによりdefconfigファイルがエクスポートされ、他のデフォルトの構成ファイルと簡単に比較できます。