連載
» 2019年01月11日 05時00分 公開

Linux基本コマンドTips(272):【 rmmod 】コマンド――カーネルモジュールをアンロードする

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

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

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

rmmodコマンドとは?

 「rmmod」はカーネルモジュール(モジュール)をアンロードするコマンドです。

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

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

 なお、コマンドラインでモジュールをアンロードする際は、rmmodコマンドよりも、「modprobe」コマンド(連載第269回)を使う方がよいでしょう。「modprobe」コマンドの「-r」オプションでモジュールをアンロードできます。



rmmodコマンドの書式

rmmod [オプション] モジュールファイル名

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





rmmodの主なオプション

短いオプション 長いオプション 意味
-f --force 使用中のモジュールも強制的にアンロードする(※1)
-w --wait モジュールが使用中の場合は終了するまで待つ(※2)
-s --syslog エラーを標準エラー(stderr)ではなくsyslogに出力する
-v --verbose 詳しいメッセージを表示する

※1 使用中のモジュールを強制的にアンロードすると、システムのクラッシュを招くことがある。
※2 Ubuntu 18.04.1 LTSに含まれるrmmodコマンドでは「-w」を利用できない。





モジュールをアンロードする

 「rmmod モジュールファイル名」でモジュールをアンロードします。問題なくアンロードできた場合、メッセージを表示しません(画面1)。

 使用中のモジュールや、他のモジュールが依存しているモジュールをアンロードしようとした場合は、エラーメッセージを表示します(画面2)。

コマンド実行例

rmmod モジュールファイル名

(モジュールをアンロードする)


画面1 画面1 モジュールをアンロードしたところ アンロードできた場合はメッセージを表示しない
画面2 画面2 モジュールのアンロードに失敗したところ 失敗する場合を3種類示した


依存するモジュールがある場合

 モジュールをアンロードする際に「modprobe」コマンドを使うと、アンロードした結果不要になる別のモジュールも、同時に自動でアンロードします。

 「rmmod」コマンドでは違います。指定されたモジュールをアンロードするだけで、被依存モジュールについては何も行いません。

 例を挙げてみましょう。vfatモジュールはfatモジュールに依存しており、fatモジュールはvfatモジュール以外からは依存されていません(vfatモジュールはfatモジュールを利用し、fatモジュールを利用しているモジュールはvfatモジュールのみ)。

 ここで「rmmod vfat」を実行した場合、アンロードされるのはvfatモジュールのみで、fatモジュールを別途「rmmod fat」でアンロードする必要があります(画面3)。

 「modprobe -r vfat」を実行した場合は、vfatモジュールと同時にfatモジュールもアンロードされます(画面4)(※3)。

※3 「modprobe -rv モジュール名」のように、「-v」オプションを併用すると、実行内容を表示するため、どのモジュールをアンロードするのか確認できる。



 画面3と画面4では、モジュールをアンロードする前後に、lsmodコマンドで現在ロードされているモジュールを確認しています。

 lsmodコマンドは、現在ロードされているモジュールを一覧表示します。その際、どのモジュールから依存されているかも併せて表示します。ここでは、grepコマンドを使って「fat」という文字列で出力結果を絞り込みました。

 なお、rmmodコマンド、modprobeコマンドともに、他のモジュールから依存されているモジュールをアンロードすることはできません(「-f」オプションを除く)。

画面3 画面3 vfatモジュールをアンロードしたところ fatモジュールを別途アンロードしなければならない
画面4 画面4 vfatモジュールをアンロードしたところ fatモジュールも自動的にアンロードされた


筆者紹介

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

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.

RSSについて

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

メールマガジン登録

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