システムパラメータ設定のmodprobeとsysctl -wの違いは何ですか?

システムパラメータ設定のmodprobeとsysctl -wの違いは何ですか?

sysctlコマンドが次の方法でカーネルパラメータを変更できることを知っています。

# sysctl -w kernel.domainname="example.com"

または、ディレクトリ内のファイルを直接編集してください/proc/sys。継続的な変更の場合は、パラメータを/etc/sysctl.d/<moduleName>.conf次のようにファイルに書き込む必要があります。

# echo kernel.domainname="example.com" > /etc/sysctl.d/domainname.conf

ただし、modprobeコマンドを使用してカーネルパラメータを変更することもできます。

# modprobe kernel domainname="example.com"

/etc/modprobe.d次に、複数の場所に存在するディレクトリにmodprobe.confファイルがあり/etc/modprobe.dます/usr/lib/modprobe.d。これには複数の.confファイルが含まれており、モジュールの対応するconfファイルに次のようにオプションを指定できます。

options kernel domainname="example.com"

それでは、これらの方法の違いは何ですか?どのような状況でどのような方法を使用する必要がありますか?

ベストアンサー1

私が知っている限り、modprobe関連する機能がモジュールにコンパイルされている場合にのみチューニングパラメータを使用でき、そのモジュールを最初にロードする必要があります。モジュールパラメータを継続的に設定するには、この/etc/modprobe.dディレクトリが必要です。 (通常は/usr/lib/modprobe.dディストリビューションのデフォルト設定をそのままにしておく必要があります。パッケージの更新により、ディストリビューション内のすべてのファイルを上書きできます。)

問題のモジュールがメインカーネルに組み込まれている場合、〜しなければならない<module_name>.<parameter_name>=<value>通常、起動オプションとして構文を使用します。関連パラメータをsysctl設定として使用できる場合は、このsysctl -wコマンドを使用して調整することもできます。

利用可能なすべてのsysctlパラメータは次のとおりです/proc/sys。例:kernel.domainnameat /proc/sys/kernel/domainname。すべてのモジュールパラメータをsysctlsとして使用できるわけではありませんが、一部は使用できます。

ロード可能なモジュールがすでにロードされており、必要に応じて変化アンロードせずにすぐにパラメータを変更すると、新しい値を書き込むことができます/sys/module/<module_name>/parameters/<parameter_name>。モジュールがパラメーターの動的再構成を許可できない場合、ファイルは読み取り専用になります。

少なくとも私のシステムでは、kernel.domainnameこれはデフォルトのカーネルのsysctlパラメータであり、それを変更しようとしてもmodprobe機能しません。

# sysctl kernel.domainname
kernel.domainname = (none)
# modprobe kernel domainname="example.com"
modprobe: FATAL: Module kernel not found in directory /lib/modules/<kernel_version>
# sysctl kernel.domainname
kernel.domainname = (none)

簡単に言えば、わからない場合は、まず/proc/sys次の出力を見てくださいsysctl -a。探しているパラメータが存在しない場合、これはsysctlパラメータではなく、モジュールパラメータ(またはsysctlを提供するモジュール)である可能性があります。 )が現在ロードされていない場合は、この場合は値をモジュールパラメータに設定することをお勧めします。現在ロードされていないモジュールに属するsysctlを設定しようとすると、エラーのみが生成されます。

次に、このパラメータがどのモジュールに属するかを調べます。モジュールがカーネルに組み込まれている場合は、ブートオプションを使用する必要があります。モジュールをロードできる場合modprobe(つまり、ファイルがディレクトリツリーのどこかに<module>.ko存在する場合)、および/またはを使用できます。/lib/modules/<kernel version>/modprobe/etc/modprobe.d/

おすすめ記事