はじめに
この実験では、Linux で特定のドライバがロードされているかどうかを確認する方法を学びます。ドライバは、多くの場合カーネルモジュールとして実装され、ハードウェアとのやり取りに不可欠です。これを達成するための 3 つの方法を探ります。具体的には、lsmod を使用してすべてのロードされたモジュールをリストアップする方法、詳細な状態を確認するために /proc/modules ファイルを調べる方法、および modinfo を使用して特定のドライバ情報を検証する方法です。
これらの手順を完了することで、Linux システム内のドライバの状態を特定し理解する実践的なスキルを身につけます。これは、ハードウェアの問題のトラブルシューティングやシステム管理において重要です。
lsmod でドライバをリストする
このステップでは、現在ロードされているカーネルモジュールをリストアップする方法を学びます。カーネルモジュールは、ハードウェアの文脈ではしばしばドライバと呼ばれます。カーネルモジュールは、必要に応じてカーネルにロードおよびアンロードできるコードの断片であり、システムを再起動することなくカーネルの機能を拡張します。
使用するコマンドは lsmod です。このコマンドは、Linux カーネル内のモジュールの状態を表示するために使用されます。
ターミナルが開いていない場合は、開きます。デスクトップの左側にある Xfce Terminal アイコンを見つけることができます。
次のコマンドを入力し、Enter キーを押します。
lsmod
次のような出力が表示されます。
Module Size Used by
...
snd_hda_codec_generic ... ...
ledtrig_audio ... ...
snd_hda_codec_hdmi ... ...
snd_hda_intel ... ...
snd_intel_dspcfg ... ...
snd_hda_codec ... ... snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel
snd_hda_core ... ... snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_hwdep ... ... snd_hda_codec
snd_pcm ... ... snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hwdep
snd_seq_midi ... ...
snd_seq_midi_event ... ... snd_seq_midi
snd_rawmidi ... ... snd_seq_midi,snd_seq_midi_event
snd_seq ... ... snd_seq_midi,snd_seq_midi_event
snd_seq_device ... ... snd_seq_midi,snd_rawmidi,snd_seq
snd_timer ... ... snd_pcm,snd_seq
snd ... ... snd_hda_codec_generic,ledtrig_audio,snd_hda_codec_hdmi,snd_hda_intel,snd_intel_dspcfg,snd_hda_codec,snd_hda_core,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer
soundcore ... ... snd
...
lsmod の出力には 3 つの列があります。
- Module: カーネルモジュールの名前。
- Size: モジュールのサイズ(バイト)。
- Used by: このモジュールを使用している他のモジュールのリストと、その使用回数。
このコマンドは、システム上で現在アクティブなドライバを確認するのに非常に便利です。
Continue をクリックして次のステップに進みます。
cat /proc/modules でドライバの状態を確認する
このステップでは、/proc/modules ファイルを調べることで、ロードされたカーネルモジュールに関する情報を表示する別の方法を探ります。/proc ファイルシステムは、プロセスに関する情報やその他のシステム情報を提供する仮想ファイルシステムです。
/proc/modules ファイルには、lsmod の出力と同様の情報が含まれていますが、少し異なる形式です。このファイルの内容を表示するために cat コマンドを使用します。
ターミナルに次のコマンドを入力し、Enter キーを押します。
cat /proc/modules
次のような出力が表示されます。
snd_hda_codec_generic ... ... - Live 0xffffffff...
ledtrig_audio ... ... - Live 0xffffffff...
snd_hda_codec_hdmi ... ... - Live 0xffffffff...
snd_hda_intel ... ... - Live 0xffffffff...
snd_intel_dspcfg ... ... - Live 0xffffffff...
snd_hda_codec ... ... snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel, Live 0xffffffff...
snd_hda_core ... ... snd_hda_codec_generic,snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec, Live 0xffffffff...
snd_hwdep ... ... snd_hda_codec, Live 0xffffffff...
snd_pcm ... ... snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hwdep, Live 0xffffffff...
snd_seq_midi ... ... - Live 0xffffffff...
snd_seq_midi_event ... ... snd_seq_midi, Live 0xffffffff...
snd_rawmidi ... ... snd_seq_midi,snd_seq_midi_event, Live 0xffffffff...
snd_seq ... ... snd_seq_midi,snd_seq_midi_event, Live 0xffffffff...
snd_seq_device ... ... snd_seq_midi,snd_rawmidi,snd_seq, Live 0xffffffff...
snd_timer ... ... snd_pcm,snd_seq, Live 0xffffffff...
snd ... ... snd_hda_codec_generic,ledtrig_audio,snd_hda_codec_hdmi,snd_hda_intel,snd_intel_dspcfg,snd_hda_codec,snd_hda_core,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_seq_device,snd_timer, Live 0xffffffff...
soundcore ... ... snd, Live 0xffffffff...
...
/proc/modules の列は以下を表します。
- モジュール名
- モジュールのサイズ
- モジュールが使用されている回数
- モジュールがロードされている (
Live) か、アンロード中 (LoadingまたはUnloading) か - モジュールのメモリオフセット(これが
0xffffffff...の部分です) - 依存するモジュール(
lsmodの "Used by" 列と同様)
一般的に、ロードされたモジュールを表示するには lsmod が好まれますが、この情報が /proc ファイルシステムにも存在することを理解することは、より深いシステムの内部調査に重要です。
Continue をクリックして次に進みます。
modinfo でドライバの詳細を確認する
このステップでは、modinfo コマンドを使用して特定のカーネルモジュールに関する詳細情報を取得する方法を学びます。このコマンドは、モジュールのファイル名、作者、説明、ライセンス、パラメータなどの詳細を提供することができます。
オーディオドライバに関連する snd_hda_intel モジュールに関する情報を取得しましょう。
ターミナルに次のコマンドを入力し、Enter キーを押します。
modinfo snd_hda_intel
次のような出力が表示されます。
filename: /lib/modules/.../kernel/sound/hda/snd-hda-intel.ko
description: Intel HDA driver
license: GPL v2
srcversion: ...
alias: pci:v00008086d0000...sv*sd*bc04sc03i00*
alias: pci:v00008086d0000...sv*sd*bc04sc01i00*
alias: pci:v00008086d0000...sv*sd*bc04sc03i00*
...
depends: snd-hda-codec,snd-pcm,snd-hda-core,snd-hwdep,snd-timer,snd
retpoline: Y
intree: Y
name: snd_hda_intel
vermagic: ... SMP mod_unload
sig_id: PKCS#7
signer: Build time autogenerated kernel key
sig_key: ...
sig_hashalgo: sha512
signature: ...
parm: bdl_pos_adj:Adjust the BDL position (int)
parm: probe_mask:Bitmask of codec probe options.
bit 0: force codec probe
bit 1: allow probing codecs with basic capabilities
bit 2: allow probing codecs with no capabilities
(int)
parm: enable_msi:Enable MSI (int)
parm: enable_msix:Enable MSI-X (int)
parm: model:Use the specified codec model.
See Documentation/sound/kernel-modules-aliases.txt for details. (charp)
parm: patch:Load the specified patch file. (charp)
parm: power_save:Automatic power-saving timeout (in ms, 0 to disable). (int)
parm: power_save_controller:Controller power-saving timeout (in ms, 0 to disable). (int)
parm: pm_blacklist:Force non-power-save mode (D0) (bool)
parm: position_fix:DMA pointer position fix (0, 1, 2) (int)
parm: probe_only_force:Only probe codecs with force option (bool)
parm: single_cmd:Use single command to communicate with codecs (bool)
parm: snoop:Enable/disable snoop mode (bool)
parm: jackpoll_ms:Polling interval for jack events (in ms, 0 to disable). (int)
この出力は、snd_hda_intel モジュールに関する豊富な情報を提供しています。これには、ファイルシステム上の位置 (filename)、簡単な説明、配布されるライセンス、およびその動作を構成するために使用できるさまざまなパラメータが含まれます。
modinfo の使い方を理解することは、ドライバの問題をトラブルシューティングしたり、カーネルモジュールの特定の機能やオプションについて詳しく学んだりするために重要です。
Continue をクリックしてこの実験を完了します。
まとめ
この実験では、Linux で特定のドライバがロードされているかどうかを確認する方法を学びました。まず、lsmod コマンドを使用して、現在ロードされているすべてのカーネルモジュール(多くの場合ドライバと呼ばれます)をリストアップしました。このコマンドは、モジュール名、サイズ、およびそのモジュールを使用している他のモジュールに関する情報を提供します。
また、cat コマンドを使用して /proc/modules ファイルの内容を調べることで、ロードされているドライバの状態を確認できることも学びました。最後に、modinfo コマンドを使用して、特定のドライバの詳細情報(ファイル名、作者、説明、パラメータなど)を取得する方法を発見しました。これらの手順は、Linux システムにロードされているドライバの存在と詳細を検証する包括的なアプローチを提供します。



