
新Linux入門|デバイス管理の仕組み:Linuxにおけるドライバとカーネルモジュール
Linuxを使っていると、「このデバイスどうやって動いてるんだろう?」と思ったことはありませんか?
実は、Linuxの世界では「ドライバ」と「カーネルモジュール」が、ハードウェアを自在に操るための重要なキーパーソンなんです✨
この記事では、デバイス・ドライバ・カーネルモジュールの関係をやさしく解説していきます。
🧩 ドライバとカーネルモジュールの関係
Linuxでは、「デバイス ↔ ドライバ ↔ カーネルモジュール」がきれいな階層構造で連携しています🔄

🖥️ デバイスとは?
Linuxにおける「デバイス」は、ハードウェアや外部機器のことを指します。
たとえば、こんなものがあります👇
| デバイスの種類 | 具体例 | ファイルとしての扱い |
|---|---|---|
| 💽 ストレージデバイス | HDD, SSD, USBメモリ | /dev/sda, /dev/nvme0n1 |
| 🌐 ネットワークデバイス | LANカード, Wi-Fiアダプタ | /sys/class/net/eth0 |
| ⌨️ 入出力デバイス | キーボード, マウス, プリンタ | /dev/input/* |
Linuxでは、デバイスはファイルとして表現されるのが特徴です📂
つまり、「ハードウェアもファイル」として扱えるんです。
試しに確認してみましょう👇
[suzuki@AlmaLinux ~]$ ls -l /dev/sda
brw-rw----. 1 root disk 8, 0 11月 24 14:15 /dev/sda👀 /dev/sda はブロックデバイス(bで始まる)として表示され、
「HDDやSSD」を表しています。
⚙️ デバイスドライバとは?
ドライバは、ハードウェアとカーネルの橋渡し役です。
たとえば、プリンタの命令を「印刷命令」として理解できるよう翻訳するのがドライバの仕事なんです🖨️
| 役割 | 説明 |
|---|---|
| 💡 インタフェース提供 | アプリケーションからのリクエストをハードウェアが理解できる形に変換 |
| ⚡ 初期化 | デバイスの起動・認識を担当 |
| 🔁 入出力処理 | データの読み書きや通信を制御 |
ドライバがなければ、Linuxはハードウェアと話ができません。
そのため、ほとんどのドライバはカーネルに組み込まれているか、モジュールとして読み込まれます。
🧱 カーネルモジュールとは?
カーネルモジュール(Kernel Module)は、
Linuxカーネルの機能を拡張するための追加部品です。
通常のカーネルはOS起動時に読み込まれますが、
モジュールは「必要なときだけ動的に読み込める」のがポイント👍
| 特徴 | 内容 |
|---|---|
| 🔄 動的ロード | insmod / modprobe でいつでも追加できる。 |
| 🚀 柔軟性 | カーネルの再起動や再コンパイルが不要 |
| 🧩 拡張性 | 新しいデバイスや機能をあとから追加できる。 |
🧰 カーネルモジュールの管理コマンド
Linuxでは、カーネルモジュールを管理するための便利なコマンドがいくつかあります🔍
| コマンド | 説明 | 主なオプション |
|---|---|---|
| lsmod | 現在ロード中のモジュール一覧を表示 | なし |
| modprobe | モジュールのロード/アンロード(依存関係も自動処理) | -r:削除 --show-depends:依存関係表示 |
| insmod | モジュールを手動でロード | モジュールファイル名(例:insmod usb-storage.ko) |
| rmmod | モジュールをアンロード | -f:強制的に削除 |
| modinfo | モジュールの情報を表示 | -F:指定フィールドのみ表示 |
🧪 実行例(AlmaLinux 9.6)
[suzuki@AlmaLinux ~]$ lsmod | head
Module Size Used by
tls 159744 0
uinput 24576 0
nls_utf8 12288 1
isofs 65536 1
snd_seq_dummy 12288 0
snd_hrtimer 12288 1
rfkill 40960 3
nft_fib_inet 12288 1
nft_fib_ipv4 12288 1 nft_fib_inet👆 lsmod は、現在読み込まれているモジュール(ドライバ)を確認できます。
たとえば「nvidia」モジュールはGPUドライバ、「snd_hda_codec_hdmi」はHDMIオーディオ出力用のドライバです🎧
💡 モジュールを追加・削除してみよう
例として、USBストレージ用モジュールを手動で読み込む場合👇
[root@AlmaLinux ~]# modprobe usb_storage削除したいときは
[root@AlmaLinux ~]# modprobe -r usb_storageこれだけでOKです🙆♀️
modprobeは依存関係も自動的に処理してくれるので、安全にロード/アンロードができます。
🔍 モジュール情報を調べる
モジュールの詳細を見たいときは modinfo を使います👇
[suzuki@AlmaLinux ~]$ modinfo e1000e
filename: /lib/modules/5.14.0-611.5.1.el9_7.x86_64/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko.xz
license: GPL v2
description: Intel(R) PRO/1000 Network Driver
rhelversion: 9.7
(省略)📘 このように、モジュールファイルの場所やライセンス情報などが確認できます。
どのハードウェア用のドライバかを調べるのにとても便利です!
🌟 まとめ
Linuxでは、カーネルモジュールとデバイスドライバがタッグを組んで
あらゆるハードウェアを自在に扱っています💪
ドライバが正しく動いていれば、プリンタもネットワークも音声も問題なく動作します。
まさに、Linuxの柔軟性と安定性を支える「縁の下の力持ち」なんです😊
