【 modprobe 】コマンド――カーネルモジュールのロード、アンロードを行うLinux基本コマンドTips(269)

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、カーネルモジュールのロード、アンロードを行う「modprobe」コマンドです。

» 2018年12月27日 05時00分 公開
[西村めぐみ@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、カーネルモジュールのロード、アンロードを行う「modprobe」コマンドです。

modprobeコマンドとは?

 「modprobe」は「カーネルモジュール(モジュール)」の組み込み(ロード)と取り外し(アンロード)を行うコマンドです。

 カーネルモジュールとは、Linuxカーネルの機能の一部を、カーネル本体とは別にロード、アンロードできるように分離したサイズの小さいバイナリファイルです。多くの場合、ハードウェアにアクセスし、操作するためのドライバ部分がカーネルモジュールとなっています。

 ドライバ自体をカーネルに組み込む古い方式では、ハードウェア構成を変更した場合に、カーネルの再構築が必要になります。現在では、ほとんどのドライバがモジュールとして提供されているため、ハードウェア構成変更後は、必要なカーネルモジュールをロードしてカーネルに組み込むだけで対応できるようになっています。

 modprobeは、モジュールの依存関係を確認し、必要なモジュールがあれば同時に組み込むといった処理も行います。モジュールの組み込みには内部的に「insmod」コマンドを用いており、取り外しでは「rmmod」コマンドを使っています。

 なお、現在どのようなモジュールが組み込まれているのかは、「lsmod」コマンド(連載第267回)で確認できます。



modprobeコマンドの書式

modprobe [オプション] [カーネルモジュール名...]

※[ ]は省略可能な引数を示しています。





modprobeの主なオプション

短いオプション 長いオプション 意味
-r --remove モジュールを取り外す
--first-time 既に組み込まれているモジュールを組み込もうとしたり、組み込まれていないモジュールを取り外そうとしたりした場合、エラーで終了する
-f --force モジュールのバージョンやマジック番号(バージョンを厳密にチェックするための文字列)を無視する(※1)
--force-modversion モジュールのバージョンを無視する(※1)
--force-vermagic モジュールのマジック番号を無視する(※1)

※1 不用意に「-f」などを利用すると、システムの停止やデータの損失を招くことがある。



表示関連のオプション

短いオプション 長いオプション 意味
-D --show-depends モジュールの依存関係を表示する
-c --show-config,--showconfig 設定ファイルの内容を表示する
-R --resolve-alias モジュールのエイリアスを探して表示する

その他のオプション

短いオプション 長いオプション 意味
-n --dry-run,--show モジュールの組み込みや取り外しを実際には実行せず実行内容の表示だけを行う(「-v」と組み合わせて使用)
-C ファイル --config=ファイル 設定ファイルを指定する(デフォルトは「/etc/modprobe.conf」または「/etc/modprobe.d/」)
-d ディレクトリ --dirname=ディレクトリ モジュールのディレクトリを指定する(デフォルトは「/lib/modules」)
-S バージョン --set-version=バージョン カーネルのバージョンを指定する(デフォルトは「uname -r」の実行結果)
-s --syslog エラーを標準エラー(stderr)ではなくsyslogに出力する
-q --quiet メッセージを表示しない
-v --verbose 詳しいメッセージを表示する


カーネルモジュールを組み込む

 「modprobe モジュール」で、指定したモジュールをメモリに組み込みます。実行にはroot権限が必要です(連載第68回)。

 モジュールの組み込みに成功した場合や、既にモジュールが組み込まれている場合には、メッセージを表示しません。メッセージを表示したい場合は「-v」(--verbose)オプションを付けて実行します。

 どのファイルが組み込まれるかなどをあらかじめ確認したい場合は、「-n」(--dry-run)を付けて試すことができます(画面1)。この場合、モジュールを組み込む際のコマンドが表示されますが、実際には何も実行しません。なお、「-n」オプション付きで実行する場合、root権限は不要です。

 指定したモジュールが既に組み込まれている場合、エラーメッセージを表示しません。組み込み済みのモジュールを指定した場合にエラーとしてメッセージを表示したい場合は「--first-time」オプションを指定します。

コマンド実行例

modprobe モジュール

(モジュールを組み込む、既に組み込まれている場合は何も行わない)

modprobe --first-time モジュール

(モジュールを組み込む、既に組み込まれている場合はエラーメッセージを表示する)

modprobe -n -v モジュール

(モジュールを組み込む際のコマンドを表示する)


画面1 画面1 カーネルモジュールを組み込んだ場合の挙動をあらかじめ調べた後、実際に組み込んだところ


カーネルモジュールを取り外す

 「modprobe -r モジュール」で、指定したモジュールを取り外します(画面2)。実行にはroot権限が必要です。

 カーネルモジュールを組み込む場合と同様に、「-n」(--dry-run)、「-v」(--verbose)や「--first-time」オプションを使用できます。

コマンド実行例

modprobe -r モジュール

(モジュールを取り外す、指定したモジュールがカーネルに組み込まれていない場合は何も行わない)

modprobe -r --first-time モジュール

(モジュールを取り外す、組み込まれていない場合はエラーメッセージを表示する)

modprobe -r -n -v モジュール

(モジュールを取り外す際のコマンドを表示する)


画面2 画面2 カーネルモジュールを取り外した場合の挙動をあらかじめ調べた後、実際に取り外したところ


カーネルモジュールの依存関係を確認する

 「modprobe -D モジュール」でモジュールの依存関係を確認できます(画面3)。なお、ロード済みのモジュールを一覧表示する「lsmod」コマンド(第267回)を使うと、ロード済みのモジュールに限って依存関係を表示できます。

コマンド実行例

modprobe -D モジュール

(モジュールの依存関係を表示する)


画面3 画面3 モジュールの依存関係を表示したところ


【訂正:2021年3月3日午後6時40分】本記事の初出時、「コマンド実行例」などでコマンド名を「modprove」としておりましたが、正しくは「modprobe」です。お詫びして訂正いたします。該当箇所は既に修正済みです(編集部)

筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。