Linux豆知識 013

モジュール

moduleには、「交換可能な部品」という意味があります。Linuxでモジュールと言えば多くの場合カーネルに組み込むモジュールを指しますが、モジュールという概念はハードウェアやプログラミングなどの分野で広く取り入れられている概念です。今回は、例の一つとしてカーネルのモジュールを取り上げます。

カーネルのモジュールとは、簡単に言えば「メインとなるカーネルのプログラムに組み込んで使用する、小さなパーツのようなプログラム」といえます。すなわち、モジュールだけでは何もできません。カーネルに「取り付けて」利用するというイメージです。

モジュールが利用されるのは、たとえば新しいデバイスや新たな機能を追加するときに利用されます(デバイスに対するドライバはモジュールとして提供される、と考えるとよいでしょう)。このようなとき、対応するモジュールをカーネル本体に取り付けて利用します。これをモジュールとせずにカーネル本体に直接組み込んでしまうと、いつ、どのデバイスが必要になるかわかりませんから、多数のプログラムを付け加えることになり、カーネルのサイズが巨大なものになってしまいます。それだけでなく、メモリ消費量が非常に大きなものになってしまいます。また、新しいデバイスがリリースされ、これを利用したい場合、カーネルにプログラムを書き加えた上でコンパイルする必要が生じることになるので、大きな手間がかかります。

ここで「モジュール」を利用すると、必要なデバイスや機能だけを選択して組み込むことができますので、カーネルのサイズをコンパクトにできます。また、新しいデバイスや機能がリリースされても、カーネルをコンパイルし直す手間がありません。

このようにメリットの多いモジュールという仕組みですが、欠点がないわけではありません。そもそもモジュールにすることができない機能も数多くありますし、モジュールとするとパフォーマンスが落ちる、ということもあります。

モジュールを管理するコマンドとして「modprobeコマンド」があります。このコマンドは、モジュールをロード(取り付け)することができるコマンドです。モジュールには依存関係が存在するものがありますが、modprobeコマンドはこの依存関係をチェックしながらモジュールをロードするので、モジュールをロードする場合にはmodprobeコマンドを利用するのが良いでしょう。


ページトップへ