カーネルモジュール:実行可能ビットを設定しますか? xz圧縮を使用しますか?

カーネルモジュール:実行可能ビットを設定しますか? xz圧縮を使用しますか?

カスタムカーネルモジュールを作成/調整してインストールしました。

期待どおりに動作しましたが、私のシステムの他のカーネルモジュールはxzで圧縮されて0444権限を持っていますが、モジュールを圧縮せずに実行可能なビットセット(0555権限)でインストールしました。

$ stat --format=%A /path/to/my-module.ko
-r-xr-xr-x

$ stat --format=%A /path/to/other-module.ko.xz
-r--r--r--

これはパフォーマンス、セキュリティなどどのような影響を与えますか?私はモジュールを圧縮し、他のモジュールが使用するものと一致するように権限を設定する予定ですが、圧縮と権限の基本的な動機がわかりません。

答え1

資格情報:

実行可能ビットをセットしたり、モジュールにフラグを書き込む必要はありません。モジュールファイルは読み取り可能でなければならず、それ以上ではありません。insmodmodinfoまたはmodprobeモジュールファイルを読み取る必要があるその他の項目。を介してモジュールをデバッグするには、他の人のグループまたは読み取り権限が必要な場合がありますobjdumpnm

誰かがモジュールの実行可能ビットを設定する必要がある実際の理由はありません。

圧縮関連:

LinuxカーネルにはXZ圧縮実装が組み込まれています。 Linuxカーネルは(以前に解凍された)イメージ、カーネルモジュールだけでなく、それ自体も正常に読み取ることができます(initrdカーネルファイル名のvmlinuz最後のビットはzカーネルイメージが圧縮されたことを示します)。

どのディストリビューションを使用しているかわかりません。ただし、圧縮カーネルモジュールがある場合、これは展開ルールです。もちろん、圧縮されたモジュールは圧縮されていないモジュールよりも小さいですが、デバッグシンボルなしでカーネルモジュールをコンパイルすると、圧縮されたモジュールと圧縮されていないカーネルモジュールのサイズの違いはかなり小さくなります。一方、モジュールがあまり必要ないことを考えると、モジュールを大量に保存するためだけに使用するのではなく、圧縮を使用して他の作業のためのスペースを節約することをお勧めします。

関連情報