LinuCレベル2 Version 4.5 201試験の例題と解説
201.3カーネル実行時における管理とトラブルシューティング
今回は201試験の試験範囲から「201.3 カーネル実行時における管理とトラブルシューティング」についての例題を解いてみます。ブート時の問題に対処するには、手動でカーネルモジュールを操作することがあります。ここでは、カーネルモジュールに関するコマンドについて確認しておきましょう。
Linucレベル2 Version 4.5 201試験 出題範囲
例題
カーネルモジュールのバージョンや依存関係など、詳細情報を表示するためのコマンドで正しいものを一つ選択してください。
- lsmod
- modprobe
- depmod
- modinfo
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「4. modinfo」です。
カーネルモジュールとは、デバイスドライバなどカーネル機能の一部をモジュール化したものです。カーネルから分離し、必要な時のみ読み込んで使用します。カーネルモジュールによりカーネル本体のサイズを小さくできるため、起動時間を短縮することができます。
カーネルモジュールの詳細情報を表示するコマンドは「modinfo」です。
ロードされていないカーネルモジュールの情報も表示することができるため、手動でカーネルモジュールをロードする際に、依存関係の確認などに利用します。
以下はカーネルモジュールの「drm_kms_helper」の情報を表示した場合の例です。
$ modinfo drm_kms_helper
filename: /lib/modules/3.10.0-327.28.3.el7.x86_64/kernel/drivers/gpu/drm/drm_kms_helper.ko
license: GPL and additional rights
description: DRM KMS helper
author: David Airlie, Jesse Barnes
rhelversion: 7.2
srcversion: A0481B1796DF7AB221B0ABC
depends: drm,i2c-core
intree: Y
vermagic: 3.10.0-327.28.3.el7.x86_64 SMP mod_unload modversions
signer: CentOS Linux kernel signing key
sig_key: 15:64:6F:1E:11:B7:3F:8C:2A:ED:8A:E2:91:65:5D:52:58:05:6E:E9
sig_hashalgo: sha256
parm: edid_firmware:Do not probe monitor, use specified EDID blob from built-in data or /lib/firmware instead. (string)
parm: poll:bool
parm: dp_aux_i2c_transfer_size:Number of bytes to transfer in a single I2C over DP AUX CH message, (1-16, default 16) (int)
よって「4. modinfo」が正解となります。
その他の選択肢の解説は以下の通りです。
1.lsmod
ロードされているモジュールを一覧で確認するためのコマンドです。
「lsmod」コマンドを実行すると、ロードされているモジュールをリストで表示します。以下のように、モジュール名、モジュールのサイズ、依存しているモジュールの数と依存モジュール名を表示します。
$ lsmod
Module Size Used by
binfmt_misc 17468 1
sg 40721 0
e1000 149323 0
i2c_piix4 22106 0
ppdev 17671 0
pcspkr 12718 0
parport_pc 28165 0
parport 42348 2 ppdev,parport_pc
:
(以下略)
2.modprobe
依存関係を解決してモジュールをロードもしくはアンロードするコマンドです。
モジュールのロードはinsmodコマンド、アンロードはrmmodコマンドでも実行するこができます。しかし、insmodやrmmodのコマンドを利用する場合、依存関係を考慮する必要があります。
modprobeコマンドは、依存関係を自動で解決してくれるため、容易にモジュールの管理を行うことができます。
3.depmod
モジュールの依存関係情報を更新するコマンドです。
選択肢2のmodprobeコマンドで利用する依存関係情報を、depmodコマンドを用いて更新することができます。
カーネルモジュールに関するコマンドは、ブート時の問題に対処するために利用することがあります。どのコマンドがどのような処理を行うためのコマンドなのか、再度確認し利用できるようにしておきましょう。
例題作成者
株式会社デージーネット OSS研究室 橋本 知里