FreeBSDのrc.conf、loader.conf、静的カーネルリンクの違い

FreeBSDのrc.conf、loader.conf、静的カーネルリンクの違い

気になる:

rc.confなどを介してモジュールをロードするのではなく、モジュールをカーネルに静的に接続すると、どのような利点がありますか?

たとえば、

Linux エミュレーションを追加するには、linux_enable="YES"カーネル構成に追加するか、/etc/rc.confカーネルに接続できます。options COMPAT_LINUX

これは本当に有益ですか?もしそうなら、それで何ですか?

答え1

静的リンクはモジュールをロードする唯一の方法でしたが、これがCOMPAT_LINUXなどのオプションを使用する主な理由と見なされました。また、loaderルートファイルシステムをマウントしてFreeBSDを起動するために必要なドライバを取得するためにFreeBSDに必要なモジュールをロードする唯一の方法でした。最近では、実行時にモジュールを簡単にロードできる場合は、モジュールを静的に接続することに大きな利点はないと思います。 Linux互換性サポートを静的に接続するとパフォーマンス上の利点はないと思いますが、一部のユーザーはまだそれを主張しています。私は目立つパフォーマンスの向上がほとんどなく、カーネルを再コンパイルする必要があるという不便さのためにこの方法を避けたいと思います。

答え2

  1. makeoptions NO_MODULES=yes不要なモジュールを構築しないように、必要なものすべてを静的にリンクするだけで簡単に使用できます。

    MODULES_OVERRIDEこれはおよび/またはで行うことができますWITHOUT_MODULES

  2. 実行時にモジュールをロードする機能が常に良いとは限りません。たとえば、モジュールはルートキットです。

    SECURELEVELはこの状態を軽減することもできます。

どちらも同様に、他の方法でも利点を得ることができ、一部は達成しなければならないと思います。

個人的には、私のカーネルがファイアウォールルールセットに似ていることが好きです。まず、すべてを除いて必要なものを追加し、実行時に追加されないようにします。

カーネルを再コンパイルしない限り、何がサポートされているのかを正確に知っています。したがって、SCTPやNFSなどの特定の機能をコンパイルしないと、その部分にのみ影響を与える推奨事項は無視できます。機能を追加するには手動で追加する必要があります。

モジュールの場合、モジュールを自動ロードするさまざまな方法があります。特定の機能を一度だけ使用したり、ポートをインストールしたり、更新(デフォルトの変更、新機能の追加)などを行うことができます。

これらすべてのケースで実際に必要な場合にのみ機能を手動で追加するように強制されることは利点があると思います。

関連情報