Linuxカーネル構成オプションを特定のモジュールと一致させます。

Linuxカーネル構成オプションを特定のモジュールと一致させます。

私はコンピュータ上の利点を活用するためにさまざまな設定オプションを有効にしました。新しく含まれています wireguardモジュール入力Linux 5.6.0-rc1

少し大変でした。最小限の作業構成があり、ネットワークインターフェースを設定しようとしたときに受け取ったエラーをガイドとして使用するwireguardまで、慣れていないカーネル構成オプションを1つずつ有効にする必要がありました(例:wireguardオプションは、CONFIG_IP_NF_MANGLE)。

可能であれば、このプロセスを別のコンピュータに自動的に複製したいと思います。そして、他のラップトップには比較的小さなカスタマイズされた構成コアがあるので、まったく異なるシステムです。make localmodconfig~へ現在のとにかく両方の構成をマージする必要があるため、マシンは実際にはオプションではありません。

私は何を達成したいと思うか。

lsmod私は(例えばiptable_mangle)リストされたモジュール名を入力として使用し、それを有効にするために関連したカーネルオプションを返すプロセスが欲しい(おそらくCONFIG_IP_NF_MANGLE=mこの場合は?)。

頑張りました

  • iptable_mangleLinuxソースコード(複製)のカーネルモジュールのgrepを使用して、そのgithubカーネルオプションに接続することを見つけようとしています。

  • 現在システムで実行されているmodinfo <target module name>場合は、表示される情報にカーネル構成オプションが記載されていることを願っています。

これらのどれも機能しません。どちらの場合も、出力CONFIG_IP_NF_MANGLEには何も言及されません。

答え1

ああ!私はかなり確実なものを見つけたと信じています。

Linuxツリーの参照後ろにiptable_raw私のモジュール名(たとえば、何を持っているのか)を繰り返し設定して把握すると、一致する複数xt_addrtype行の中から常に次の形式のいずれかが生成されます。

<whatever>/Makefile:obj-$(<RELEVANT KERNEL CONFIG OPTION>) += <module name>.o`

具体的に実行

grep -rE '\+\=\s*nf_defrag_ipv6'

ソースツリーのルートから作成された

net/ipv6/netfilter/Makefile:obj-$(CONFIG_NF_DEFRAG_IPV6) += nf_defrag_ipv6.o

これはこれがCONFIG_NF_DEFRAG_IPV6有効になったことを示しますnf_defrag_ipv6

複数のモジュールでこれを試しましたが、常に返されたこの形式の一意の行がありますgrep。これで、これはスクリプト化が非常に簡単に見え、おおよそ言うとハッシュを生成します。

  • lsmodキーで返されるモジュール名
  • カーネル構成オプションを値と一致させます。

編集する:

文書についての一言:原則として、上記のパターンは説明したようにgrepで見つけることができますが、実際に私の注目を集めたのは次のような構文でした+= <object file name>Kconfig ドキュメント、インスピレーションを得るために精読しています。

関連情報