デバイスドライバのロード
Linuxにおいてハードウェアを使用するにはデバイスドライバというソフトウェアが必要になります。
デバイスドライバとはOSが個別デバイス操作(制御)をするためのソフトウェアです。
通常、システムを稼働させる上で必要なデバイスドライバは
カーネルの一部として提供されており、このデバイスドライバを
カーネルモジュールと呼び、必要なデバイスドライバをカーネルに
取り込むことをカーネルモジュールをロードするといいます。
ロードされているデバイスドライバ一覧を確認するには、
コマンド’cat /proc/modules’で確認するか、lsmodコマンドを利用します。
[コマンド]
# cat /proc/modules
[実行例]
nfnetlink_log 17746 0 – Live 0xffffffffa015e000
nfnetlink 13904 1 nfnetlink_log, Live 0xffffffffa010f000
bluetooth 298929 0 – Live 0xffffffffa0114000
rfkill 21384 1 bluetooth, Live 0xffffffffa0108000
binfmt_misc 17463 1 – Live 0xffffffffa00f3000
i2c_piix4 13694 0 – Live 0xffffffffa00b2000
i2c_core 38177 1 i2c_piix4, Live 0xffffffffa00fd000
e1000 145398 0 – Live 0xffffffffa00ce000
virtio_balloon 13346 0 – Live 0xffffffffa005b000
microcode 23435 0 – Live 0xffffffffa00ab000
nfsd 277156 13 – Live 0xffffffffa0066000
nfs_acl 12741 1 nfsd, Live 0xffffffffa0061000
auth_rpcgss 44154 1 nfsd, Live 0xffffffffa004f000
lockd 89250 1 nfsd, Live 0xffffffffa00b7000
sunrpc 255029 17 nfsd,nfs_acl,auth_rpcgss,lockd, Live 0xffffffffa000f000
crc32c_intel 12901 0 – Live 0xffffffffa000a000
virtio_blk 17550 3 – Live 0xffffffffa0000000
[コマンド]
# lsmod
[実行例]
Module Size Used by
nfnetlink_log 17746 0
nfnetlink 13904 1 nfnetlink_log
bluetooth 298929 0
rfkill 21384 1 bluetooth
binfmt_misc 17463 1
i2c_piix4 13694 0
i2c_core 38177 1 i2c_piix4
e1000 145398 0
virtio_balloon 13346 0
microcode 23435 0
nfsd 277156 13
nfs_acl 12741 1 nfsd
auth_rpcgss 44154 1 nfsd
lockd 89250 1 nfsd
sunrpc 255029 17 nfsd,auth_rpcgss,lockd,nfs_acl
crc32c_intel 12901 0
virtio_blk 17550 3
また、手動でデバイスドライバをロード/アンロードする時は
modprobeコマンドを実行します。
ホットプラグ
Linuxでもマシンに電源を入れたままデバイスの取り付け・取り外しができる
ホットプラグに対応しています。
以前は/sbin/hotplugを実行認識していましたが、最近では一般的にudevが使用されています。
udevを使用したホットプラグでのデバイス認識の手順は以下になります。
- マシンにデバイスを接続します。
- カーネルがデバイスが接続されたことを認識し、udevdに通知します。
- udevdは/etc/udevd/配下のスクリプトファイルを実行し、動的にデバイスファイルが生成します。
- 接続されたデバイスに関する情報がhaldに通知され、新規のデバイスの登録が行われます。
- D-BUSにより名アプリケーションにデバイス情報が通知され、アプリケーションがデバイスを使えるようになります。