カーネルモジュール関連のコマンド 201

/ LPIC / Comment[0]
Linuxにはローダブルモジュールという動的にロードアンロードできるローダブルモジュールというものがある。
ローダブルモジュールとはカーネルの機能の一部をモジュール化し、カーネルから分離して、必要な時に読み込むことが出来るモジュールである。
そうすることにより、カーネルサイズを縮小できるため起動が高速化し、メモリリソースの削減も可能となる。

ハードディスクやファイルシステムなどの使用頻度の非常に高いドライバはカーネルに組み込んでおき、
使用頻度の低いドライバはカーネルモジュールにすると良い。

lsmod - ロードされているモジュールのリストアップ


表示される項目は左から順に下記のようになっている。
  • モジュール名
  • サイズ
  • 参照回数
  • 依存しているモジュール

$ lsmod
Module                  Size  Used by
usblp 23015 0
btrfs 853031 0
raid6_pq 97812 1 btrfs
zlib_deflate 27139 1 btrfs
xor 21411 1 btrfs
ufs 75386 0
qnx4 13396 0
hfsplus 103553 0
hfs 54867 0
minix 40550 0
ntfs 97863 0
msdos 17332 0
jfs 186841 0
xfs 910633 0
reiserfs 249085 0
ext2 73909 0
parport_pc 32866 0
ppdev 17711 0
gpio_ich 13526 0
hid_generic 12548 0
snd_hda_codec_realtek 57219 1
usbhid 53329 0
snd_hda_intel 57134 0
i915 696769 1
psmouse 108721 0
hid 106315 2 hid_generic,usbhid
snd_hda_codec 194817 2 snd_hda_codec_realtek,snd_hda_intel
serio_raw 13413 0
drm_kms_helper 53237 1 i915
snd_hwdep 13613 1 snd_hda_codec
drm 306660 2 i915,drm_kms_helper
snd_pcm 107140 2 snd_hda_intel,snd_hda_codec
lpc_ich 21163 0
snd_timer 29989 1 snd_pcm
snd 73753 6 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
soundcore 12680 1 snd
i2c_algo_bit 13564 1 i915
snd_page_alloc 18798 2 snd_hda_intel,snd_pcm
mac_hid 13253 0
video 19574 1 i915
lp 17799 0
parport 42466 3 parport_pc,ppdev,lp
r8169 73299 0
mii 13981 1 r8169

ロード中のモジュールは/proc/modulesでも確認できる
$ cat /proc/modules
usblp 23015 0 - Live 0x0000000000000000
btrfs 853031 0 - Live 0x0000000000000000
raid6_pq 97812 1 btrfs, Live 0x0000000000000000
zlib_deflate 27139 1 btrfs, Live 0x0000000000000000
xor 21411 1 btrfs, Live 0x0000000000000000
ufs 75386 0 - Live 0x0000000000000000
qnx4 13396 0 - Live 0x0000000000000000
hfsplus 103553 0 - Live 0x0000000000000000
hfs 54867 0 - Live 0x0000000000000000
minix 40550 0 - Live 0x0000000000000000
ntfs 97863 0 - Live 0x0000000000000000
msdos 17332 0 - Live 0x0000000000000000
jfs 186841 0 - Live 0x0000000000000000
xfs 910633 0 - Live 0x0000000000000000
reiserfs 249085 0 - Live 0x0000000000000000
ext2 73909 0 - Live 0x0000000000000000
parport_pc 32866 0 - Live 0x0000000000000000
ppdev 17711 0 - Live 0x0000000000000000
gpio_ich 13526 0 - Live 0x0000000000000000
hid_generic 12548 0 - Live 0x0000000000000000
snd_hda_codec_realtek 57219 1 - Live 0x0000000000000000
usbhid 53329 0 - Live 0x0000000000000000
snd_hda_intel 57134 0 - Live 0x0000000000000000
i915 696769 1 - Live 0x0000000000000000
psmouse 108721 0 - Live 0x0000000000000000
hid 106315 2 hid_generic,usbhid, Live 0x0000000000000000
snd_hda_codec 194817 2 snd_hda_codec_realtek,snd_hda_intel, Live 0x0000000000000000
serio_raw 13413 0 - Live 0x0000000000000000
drm_kms_helper 53237 1 i915, Live 0x0000000000000000
snd_hwdep 13613 1 snd_hda_codec, Live 0x0000000000000000
drm 306660 2 i915,drm_kms_helper, Live 0x0000000000000000
snd_pcm 107140 2 snd_hda_intel,snd_hda_codec, Live 0x0000000000000000
lpc_ich 21163 0 - Live 0x0000000000000000
snd_timer 29989 1 snd_pcm, Live 0x0000000000000000
snd 73753 6 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer, Live 0x0000000000000000
soundcore 12680 1 snd, Live 0x0000000000000000
i2c_algo_bit 13564 1 i915, Live 0x0000000000000000
snd_page_alloc 18798 2 snd_hda_intel,snd_pcm, Live 0x0000000000000000
mac_hid 13253 0 - Live 0x0000000000000000
video 19574 1 i915, Live 0x0000000000000000
lp 17799 0 - Live 0x0000000000000000
parport 42466 3 parport_pc,ppdev,lp, Live 0x0000000000000000
r8169 73299 0 - Live 0x0000000000000000


modinfo - モジュールの情報を表示


modinfoはオプション無しで実行すると全ての情報が表示されるようになっているため
下記のオプションをつけることで絞り込んで表示させられる
  • -a モジュールの作者
  • -d モジュールの説明
  • -l モジュールのライセンス
  • -n モジュールのファイル名

$ modinfo -a e1000
Intel Corporation, <linux.nics@intel.com>

$ modinfo -a e1000
Intel(R) PRO/1000 Network Driver

$ modinfo -l e1000
GPL

$ modinfo -n e1000
/lib/modules/3.11.0-24-generic/kernel/drivers/net/ethernet/intel/e1000/e1000.ko

e1000モジュールの情報を全て表示
$ modinfo e1000
filename:       /lib/modules/3.11.0-24-generic/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
version: 7.3.21-k8-NAPI
license: GPL
description: Intel(R) PRO/1000 Network Driver
author: Intel Corporation,
srcversion: A22763B320997927521362C
alias: pci:v00008086d00002E6Esv*sd*bc*sc*i*
:
depends:
intree: Y
vermagic: 3.11.0-24-generic SMP mod_unload modversions
parm: TxDescriptors:Number of transmit descriptors (array of int)
parm: RxDescriptors:Number of receive descriptors (array of int)
parm: Speed:Speed setting (array of int)
parm: Duplex:Duplex setting (array of int)
parm: AutoNeg:Advertised auto-negotiation setting (array of int)
parm: FlowControl:Flow Control setting (array of int)
parm: XsumRX:Disable or enable Receive Checksum offload (array of int)
parm: TxIntDelay:Transmit Interrupt Delay (array of int)
parm: TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
parm: RxIntDelay:Receive Interrupt Delay (array of int)
parm: RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
parm: InterruptThrottleRate:Interrupt Throttling Rate (array of int)
parm: SmartPowerDownEnable:Enable PHY smart power down (array of int)
parm: copybreak:Maximum size of packet that is copied to a new buffer on receive (uint)
parm: eeprom_bad_csum_allow:Allow bad EEPROM checksums (int)
parm: debug:Debug level (0=none,...,16=all) (int)


insmod - ローダブルモジュールをロード


依存関係とか考えずに指定したモジュールのロードを試みる
# insmod /lib/modules/3.16.0/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
または
# insmod `modinfo -n e1000`

rmmod - モジュールをアンロード


rmmodではフルパスでなくておk
# rmmod e1000

modprobe - 依存関係を考えてモジュールをロード/アンロード


modprobeはinsmodやrmmodと違い、依存関係が記されたmodules.depファイルを元に
ロードしたいモジュールに依存したモジュールもロード/アンロードを行う

ロード
# modprobe e1000

アンロード
# modprobe -r e1000

依存しているモジュールを表示
# modprobe --show-depends snd_hda_codec
insmod /lib/modules/3.16.0/kernel/sound/soundcore.ko
insmod /lib/modules/3.16.0/kernel/sound/core/snd.ko
insmod /lib/modules/3.16.0/kernel/sound/core/snd-hwdep.ko
insmod /lib/modules/3.16.0/kernel/sound/core/snd-timer.ko
insmod /lib/modules/3.16.0/kernel/sound/core/snd-pcm.ko
insmod /lib/modules/3.16.0/kernel/sound/pci/hda/snd-hda-codec.ko


-lオプションでモジュールの一覧を取得、-tオプションでタイプ(ディレクトリ)で表示を絞れる
$ modprobe -l -t intel
kernel/drivers/net/ethernet/intel/e100.ko
kernel/drivers/net/ethernet/intel/e1000/e1000.ko
kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
kernel/drivers/net/ethernet/intel/igb/igb.ko
kernel/drivers/net/ethernet/intel/igbvf/igbvf.ko
kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
kernel/drivers/net/ethernet/intel/ixgbevf/ixgbevf.ko
kernel/drivers/net/ethernet/intel/ixgb/ixgb.ko


modprobeが参照するmodules.depのパス
/lib/modules/`uname -r`/modules.dep

書式は左が対象モジュールで「:」の右側がそれに依存するモジュール(スペース区切り)
$ cat /lib/modules/`uname -r`/modules.dep | grep e1000
kernel/drivers/net/ethernet/intel/e1000/e1000.ko:
kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko: kernel/drivers/ptp/ptp.ko kernel/drivers/pps/pps_core.ko

modules.depを最新状態にするにはdepmodコマンドを実行
# depmod
関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可