lsmodコマンドの使い方を完全ガイド!Linuxのカーネルモジュール一覧を確認する方法
生徒
「Linuxを使っていると、周辺機器やネットワークの設定で『カーネルモジュール』という言葉をよく聞くのですが、今自分のパソコンで何が動いているか調べる方法はありますか?」
先生
「それならlsmod(エルエスモッド)コマンドを使うのが一番ですよ。現在読み込まれているカーネルモジュールの一覧を一瞬で表示してくれます。」
生徒
「モジュールの一覧ですか。難しそうな英単語がたくさん並びそうで不安ですが、初心者でも読み解けますか?」
先生
「表示される項目の意味さえ分かれば、実はとてもシンプルなんです。デバイスドライバの管理には欠かせない知識なので、一緒に見ていきましょう!」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. lsmodコマンドとは?
lsmodコマンドは、Linux(リナックス)オペレーティングシステムにおいて、現在カーネルにロード(読み込み)されているカーネルモジュールの一覧を表示するためのコマンドです。読み方はlsmod(エルエスモッド)といいます。
Linuxの核となる部分を「カーネル(Kernel)」と呼びますが、すべての機能を最初からカーネルの中に入れていると、メモリを大量に消費してしまいます。そこで、必要な機能(例えばUSBマウスの認識やWi-Fiの通信機能など)だけを、必要に応じて後から付け足す仕組みがあります。この付け足される部品のことをカーネルモジュール(Kernel Module)と呼びます。Windowsでいう「デバイスドライバ」に近いイメージだと考えると分かりやすいでしょう。
lsmodは「List Modules(リスト・モジュールズ)」の略称で、その名の通り、今まさに活躍している部品のリストを出力してくれるツールなのです。
2. lsmodコマンドの基本的な使い方
lsmodコマンドの使い方は非常に簡単です。ターミナル(端末)を開いて、コマンドを入力するだけです。特別な権限がなくても、現在読み込まれている情報を閲覧することが可能です。
まずは、実際にコマンドを打ってみたときの動作を確認してみましょう。実行すると、画面に複数の列が表示されます。
lsmod
Module Size Used by
nls_utf8 16384 1
isofs 49152 1
udf 94208 0
vboxvideo 36864 1
ttm 106496 1 vboxvideo
このように、実行結果は「Module(モジュール名)」「Size(サイズ)」「Used by(使用状況)」の3つのカラムに分かれて表示されます。これにより、どの機能がどれくらいのメモリを使い、他のどの機能に関連しているのかを一目で把握できるのです。
3. 実行結果の項目の意味を知ろう
lsmodを実行して表示される各項目の意味を詳しく解説します。ここを理解すると、システムの内部で何が起きているのかが見えてきます。
| 項目名 | 読み方 | 説明 |
|---|---|---|
| Module | モジュール | 読み込まれているカーネルモジュールの名前です。 |
| Size | サイズ | そのモジュールがメモリ(主記憶装置:シュキオクソウチ)上で占有している容量(バイト単位)です。 |
| Used by | ユーズド・バイ | そのモジュールを使用している他のモジュールの数と、具体的な名前です。 |
「Used by」の数字が「0」の場合、そのモジュールは現在、他のプログラムやハードウェアから直接使われていないことを意味します。逆に数字が入っている場合は、そのモジュールを消してしまうと、関連する他の機能も動かなくなる可能性があるため注意が必要です。
4. grepコマンドと組み合わせて特定のモジュールを探す
lsmodを実行すると、非常に多くの行が表示されることがあります。自分の探したい特定のモジュール(例えばネットワーク関連やサウンド関連など)を見つけるのは大変です。そんな時は、文字列検索を行うgrep(グレップ)コマンドと一緒に使うのが一般的です。
例えば、ビデオ(映像)関連のモジュールを確認したい場合は、以下のように「パイプ(|)」を使って結果を渡します。
lsmod | grep video
vboxvideo 36864 1
videodev 212992 1 vboxvideo
videobuf2_v4l2 24576 1 vboxvideo
このように絞り込むことで、膨大なリストの中から「video」という文字が含まれるモジュールだけを抽出して確認することができます。これは実務でも非常によく使われるテクニックです。
5. lsmod情報の正体はどこにある?
実は、lsmodコマンドは、システム内の特定のファイルに書かれた情報を読みやすく整形して表示しているだけなのです。その元データは、/proc/modules(プロック・モジュールズ)という仮想的なファイルに格納されています。
試しに、cat(キャット)コマンドを使って、その中身を直接覗いてみましょう。ファイルの中身を表示する操作は、一般ユーザーで行えます。
cat /proc/modules
nls_utf8 16384 1 - Live 0xffffffffc0615000
isofs 49152 1 - Live 0xffffffffc0604000
udf 94208 0 - Live 0xffffffffc05e3000
lsmodの表示と似ていますが、少し生データっぽくて読みにくいですね。lsmodは、この複雑な情報を私たち人間が読みやすいように、綺麗に整列させて表示してくれている便利なツールなのです。
6. 管理者権限でのモジュール操作とlsmod
lsmodで確認した後、「新しいモジュールを追加したい」あるいは「不要なモジュールを削除したい」という場面が出てくるかもしれません。これには管理者権限(root:ルート)が必要です。モジュールの読み込みにはmodprobe(モッドプローブ)コマンドを使います。
ここでは、特定のモジュールを読み込んだ後に、正しく反映されたかをlsmodで確認する流れを見てみましょう。
modprobe dummy
lsmod | grep dummy
dummy 16384 0
上記のように、modprobeで「dummy」という仮想のネットワークモジュールをロードし、直後にlsmodで確認しています。モジュールが一覧に表示されれば、正常にシステムに組み込まれた証拠です。このように、lsmodは設定作業が成功したかどうかの答え合わせとしても活躍します。
7. modinfoコマンドでさらに詳細を調べる
lsmodでモジュールの名前は分かりましたが、「このモジュールは一体誰が作ったのか?」「どんなライセンスなのか?」といった詳細までは分かりません。そんな時にセットで使いたいのがmodinfo(モッドインフォ)コマンドです。
特定のモジュール名を指定することで、そのモジュールの作者や説明文、依存関係などの詳細情報を表示できます。
modinfo isofs
filename: /lib/modules/5.4.0/kernel/fs/isofs/isofs.ko
license: GPL
description: ISO9660 HTFS FileSystem
author: Eric Youngdale
lsmodで現在地を確認し、modinfoでその中身を深掘りする。この2つのコマンドをマスターすれば、Linuxのカーネル管理はぐっと楽になります。不具合が起きた際に、どのドライバが原因なのかを突き止める際にも非常に役立つ知識です。
8. 便利な周辺知識:なぜモジュールが必要なのか?
Linux(リナックス)が誕生した当初、すべての機能を一つの巨大なプログラムとしてまとめる「モノリシックカーネル」という考え方が主流でした。しかし、技術が進歩し、多種多様なハードウェアが登場するにつれ、すべてを内蔵するのは現実的ではなくなりました。
そこで「必要な時に、必要な部品だけを合体させる」という現在のカーネルモジュールの仕組み(動的ロード)が一般化したのです。これにより、パソコンを再起動することなく、USBメモリを挿すだけでドライバが読み込まれたり、新しいネットワーク設定を反映させたりすることが可能になりました。lsmodを使えば、その合体した部品たちが今、裏側でどのように働いているのかをリアルタイムで観察できるのです。
初心者の方にとって、最初は「Module」列に並ぶ専門用語のような名前(例えば ext4, usbcore, snd_hda_intel など)に圧倒されるかもしれません。しかし、これらはそれぞれ「ファイルシステム」「USBの基本機能」「Intelのサウンド機能」といった具合に、パソコンの各パーツに対応しています。自分の使っているパソコンの構成を知るための第一歩として、ぜひ色々なモジュールを眺めてみてください。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
今回の記事では、Linuxシステムを管理する上で非常に重要なlsmodコマンドについて詳しく解説しました。カーネルモジュールという言葉を初めて聞いた方も、このコマンドを使えば自分のパソコンがどのように周辺機器や機能を認識しているのかを視覚的に理解できたのではないでしょうか。lsmodは単に一覧を表示するだけでなく、システムのメモリ使用量や、モジュール同士の依存関係(どの機能がどの部品を必要としているか)を把握するための強力なツールです。
lsmodコマンドの要点チェック
- lsmodは現在ロードされているカーネルモジュールを一覧表示するコマンド。
- 実行結果にはModule(名前)、Size(容量)、Used by(依存関係)が表示される。
- 情報のソースは仮想ファイルの/proc/modulesである。
- 特定のモジュールを探すには、grepコマンドとの組み合わせが非常に効果的。
- 詳細を知りたいときは、modinfoコマンドを併用することで作者や説明を確認できる。
実務で役立つ応用テクニック
Linuxのトラブルシューティングにおいて、lsmodは頻繁に使用されます。例えば、「音が鳴らない」「ネットワークが繋がらない」といった問題が発生した際、まずはlsmodを実行して必要なドライバがロードされているかを確認します。もし表示されない場合は、modprobeコマンドで手動ロードを試みる、といった流れが基本となります。
また、システムのセキュリティを高めるために、不要なモジュール(例えば使っていない無線LANやBluetoothのドライバなど)が読み込まれていないかを確認し、無効化する判断材料にも使われます。Linuxエンジニアを目指すなら、lsmodの出力結果を見て「どのハードウェアが動いているか」を想像できるようになることが上達の近道です。
サンプルプログラム:シェルスクリプトでの活用例
特定のカーネルモジュールが読み込まれているかどうかをチェックし、結果をメッセージで表示する簡単なシェルスクリプトの例を紹介します。自動化や環境チェックに役立ててください。
#!/bin/bash
# チェックしたいモジュール名を変数に代入
TARGET_MODULE="vboxvideo"
# lsmodの結果をgrepで検索
if lsmod | grep -q "$TARGET_MODULE"; then
echo "Info: $TARGET_MODULE は現在システムにロードされています。"
else
echo "Warning: $TARGET_MODULE は見つかりませんでした。"
fi
このコードでは、grep -qオプションを使うことで、結果を画面に出力せずに「見つかったかどうか(終了ステータス)」だけを利用しています。このようにlsmodを組み合わせることで、システムの健康診断を自動化することも可能です。
生徒
「先生、ありがとうございました!lsmodを使ってみたら、私のパソコンでもたくさんのモジュールが動いているのが分かりました。特にUsed byの項目で、モジュール同士が助け合っているのが見えて面白かったです。」
先生
「それは素晴らしい発見ですね。モジュール同士の依存関係が分かると、なぜ特定の機能をオフにできないのか、といった理由も見えてきます。ちなみに、何か気になったモジュールはありましたか?」
生徒
「はい!usbcoreという名前を見つけました。これはUSB機器を使うための基本モジュールですよね?試しにmodinfo usbcoreと打ってみたら、詳細な情報がたくさん出てきて感動しました。」
先生
「その通りです。lsmodで全体を俯瞰し、modinfoで個別の詳細を調べるという流れは、Linux管理の王道ですよ。この調子で、自分のPCの裏側でどんな『部品』が活躍しているのか、時々覗いてみてくださいね。」
生徒
「はい!もし周辺機器が動かなくて困っている友達がいたら、lsmodとgrepを使ってドライバの状態を確認してあげようと思います!」
先生
「頼もしいですね!Linuxのカーネルは、まさに動くパズルのようなものです。lsmodはそのパズルのピースを教えてくれる魔法の鏡だと思って、これからも活用してください。」