LinuCレベル2 システムの起動とLinuxカーネル 問24
システムの起動とLinuxカーネル/カーネル実行時における管理とトラブルシューティング特定のカーネルモジュールが自動的にロードされないようにしたい。一般的な設定方法として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル2の出題範囲「システムの起動とLinuxカーネル」に対応。実際の試験問題ではありません)
- A/etc/modprobe.d/配下の.confファイルに「blacklist モジュール名」の行を追加する
- B/etc/sysctl.d/配下の.confファイルに「kernel.modules_disabled=モジュール名」を書く
- C/lib/modules/カーネルバージョン/modules.depから、該当するモジュールの行を削除する
- D/etc/udev/rules.d/配下のルールファイルに「rmmod モジュール名」の行を追加する
正解:A
解説
/etc/modprobe.d/配下の設定ファイルに「blacklist モジュール名」と書くと、ハードウェア検出時などに別名(alias)経由で行われる自動ロードの対象からそのモジュールを外せます。ただしblacklistは明示的なmodprobe モジュール名によるロードまでは止めないため、完全に禁止したい場合は「install モジュール名 /bin/false」のような指定を併用します。起動初期に読み込まれるモジュールの場合は、initramfsを作り直して設定を反映させる必要があります。
選択肢ごとの解説
- A正しい。/etc/modprobe.d/のblacklist指定で、そのモジュールを自動ロードの対象から外せます。
- B誤り。kernel.modules_disabledは1にすると以後すべてのモジュールのロードを禁止するパラメータで、モジュール名を指定するものではありません。
- C誤り。modules.depはdepmodが自動生成するファイルで、手で編集しても次にdepmodを実行すれば上書きされます。自動ロードを止める設定場所でもありません。
- D誤り。udevルールはデバイス検出時の処理を記述するもので、「rmmod モジュール名」という行は有効な書式ではありません。