カーネルとモジュール

[サーバの実験室 Redhat/Fedora]

作成 : 2002/12/08

"サーバの実験室"の検索


常駐カーネルとカーネルモジュール

linux のカーネルは、起動時にロードされる常駐カーネルと、必要に応じてロードされるカーネルモジュールから構成される。 常駐カーネルにするか、カーネルモジュールにするかは、カーネルをコンパイルするときに決めることができる。

現在のカーネルの構成を確認するためには、kernel-source パッケージがインストールされていなければならない。 rpm -qa でパッケージを確認して、存在しなければインストールする。

# rpm -qa | grep kernel-source

kernel-source-2.4.18-14

kernel-source は、/usr/src/linux-(version) にインストールされる。 現在使用しているカーネルのバージョンは、uname -r で確認することができる。

# uname -r

2.4.18-14

/usr/src/linux-(version) ディレクトリに移動する。 そして、make oldconfig を実行すると、デフォルト構成の設定ファイル .config が作成される。 または、/usr/src/linux-(version)/configs/kernel-(version)-(cpu).config を /usr/src/linux-(version)/.config にコピーする。

構成を確認するには、make menuconfig(テキストベース)か make xconfig(X Window System使用)を実行する。 メニュー形式で、常駐カーネルに含まれるか、カーネルモジュールになっているかを確認することができる。

/etc/modules.conf

/etc/modules.conf で、カーネルモジュールをロード・アンロードをコントロールすることができる。

alias parport_lowlevel parport_pc
alias eth0 8139too
alias sound-slot-0 via82cxxx_audio
post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L gt;/dev/null 2>&1 || :
pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :
alias usb-controller usb-uhci

path[TAG]

モジュールを探すディレクトリを指定する。

generic_stringfile

depmod によって作成され、モジュールからの文字列情報が必要なインストールスクリプトが利用する、generic_string ファイル。

pcimapfile

depmod によって作成され、インストールスクリプトが PCI デバイスをサポートするモジュールを検索する際に用いられる、pcimap ファイル。

isapnpmapfile

depmod によって作成され、インストールスクリプトが ISA PNP デバイスをサポートするモジュールを検索する際に用いられる、isapnpmap ファイル。

usbmapfile

depmod によって作成され、インストールスクリプトが USB デバイスをサポートするモジュールを検索する際に用いられる、usbmap ファイル。

parportmapfile

depmod によって作成され、インストールスクリプトが parport デバイスをサポートするモジュールを検索する際に用いられる、parportmap ファイル。

ieee1394mapfile

depmod によって作成され、インストールスクリプトが IEEE1394 デバイスをサポートするモジュールを検索する際に用いられる、ieee1394map ファイル。

pnpbiosmapfile

depmod によって作成され、インストールスクリプトが pnpbios デバイスをサポートするモジュールを検索する際に用いられる、pnpbiosmap ファイル。

depfile

depmod によって作成され、 modprobe によってモジュールとその依存モジュールを探すために利用されるファイル。

prune

モジュールディレクトリに存在する、モジュールでないファイル(modules.dep など)を宣言する。 宣言しないと、depmod が「not an ELF file」というエラーを出す。

alias B A

モジュール A に別名 B をつける。 実際に B というモジュールがなくても、「modprobe B」という形でモジュールをロードできるようになる。

post-install

指定したモジュールをインストールした後に実行するコマンド。

pre-remove

指定したモジュールを削除する前に実行するコマンド。

modules.conf ファイルに記述がなくてもデフォルトの設定があり、/sbin/modprobe -c ですべての設定を確認することができる。 modprobe -c の出力を、次に示す。

# Generated by modprobe -c (2.4.18)
path[boot]=/lib/modules/boot
path[toplevel]=/lib/modules/2.4.18-14
path[toplevel]=/lib/modules/2.4
path[kernel]=/lib/modules/kernel
path[fs]=/lib/modules/fs
path[net]=/lib/modules/net
path[scsi]=/lib/modules/scsi
path[block]=/lib/modules/block
path[cdrom]=/lib/modules/cdrom
path[ipv4]=/lib/modules/ipv4
path[ipv6]=/lib/modules/ipv6
path[sound]=/lib/modules/sound
path[fc4]=/lib/modules/fc4
path[video]=/lib/modules/video
path[misc]=/lib/modules/misc
path[pcmcia]=/lib/modules/pcmcia
path[atm]=/lib/modules/atm
path[usb]=/lib/modules/usb
path[ide]=/lib/modules/ide
path[ieee1394]=/lib/modules/ieee1394
path[mtd]=/lib/modules/mtd
# Prune
prune modules.dep
prune modules.generic_string
prune modules.pcimap
prune modules.isapnpmap
prune modules.usbmap
prune modules.parportmap
prune modules.ieee1394map
prune modules.pnpbiosmap
prune System.map
prune .config
prune build
prune vmlinux
prune vmlinuz
prune bzImage
prune zImage
prune .rhkmvtag
# Aliases
alias binfmt-0000 off
alias binfmt-204 binfmt_aout
alias binfmt-263 binfmt_aout
alias binfmt-264 binfmt_aout
alias binfmt-267 binfmt_aout
alias binfmt-387 binfmt_aout
alias binfmt-332 iBCS
alias binfmt--310 binfmt_java
alias block-major-1 rd
alias block-major-2 floppy
alias block-major-3 ide-probe-mod
alias block-major-7 loop
alias block-major-8 sd_mod
alias block-major-9 md
alias block-major-11 sr_mod
alias block-major-13 xd
alias block-major-15 cdu31a
alias block-major-16 gscd
alias block-major-17 optcd
alias block-major-18 sjcd
alias block-major-20 mcdx
alias block-major-22 ide-probe-mod
alias block-major-23 mcd
alias block-major-24 sonycd535
alias block-major-25 sbpcd
alias block-major-26 sbpcd
alias block-major-27 sbpcd
alias block-major-29 aztcd
alias block-major-32 cm206
alias block-major-33 ide-probe-mod
alias block-major-34 ide-probe-mod
alias block-major-37 ide-tape
alias block-major-44 ftl
alias block-major-46 pcd
alias block-major-47 pf
alias block-major-56 ide-probe-mod
alias block-major-57 ide-probe-mod
alias block-major-58 lvm-mod
alias block-major-88 ide-probe-mod
alias block-major-89 ide-probe-mod
alias block-major-90 ide-probe-mod
alias block-major-91 ide-probe-mod
alias block-major-93 nftl
alias block-major-97 pg
alias char-major-4 serial
alias char-major-5 serial
alias char-major-6 lp
alias char-major-9 st
alias char-major-10 off
alias char-major-10-0 busmouse
alias char-major-10-1 off
alias char-major-10-2 msbusmouse
alias char-major-10-3 atixlmouse
alias char-major-10-130 wdt
alias char-major-10-131 wdt
alias char-major-10-135 rtc
alias char-major-10-139 openprom
alias char-major-10-144 nvram
alias char-major-10-157 applicom
alias char-major-10-175 agpgart
alias char-major-10-184 microcode
alias char-major-13 input
alias char-major-13-32 mousedev
alias char-major-14 soundcore
alias char-major-19 cyclades
alias char-major-20 cyclades
alias char-major-21 sg
alias char-major-22 pcxx
alias char-major-23 pcxx
alias char-major-27 ftape
alias char-major-34 scc
alias char-major-35 tclmidi
alias char-major-36 netlink
alias char-major-37 ide-tape
alias char-major-48 riscom8
alias char-major-49 riscom8
alias char-major-57 esp
alias char-major-58 esp
alias char-major-63 kdebug
alias char-major-90 mtdchar
alias char-major-96 pt
alias char-major-99 ppdev
alias char-major-107 3dfx
alias char-major-108 ppp_generic
alias char-major-109 lvm-mod
alias char-major-161 ircomm-tty
alias char-major-171 raw1394
alias char-major-200 vxspec
alias dos msdos
alias dummy0 dummy
alias dummy1 dummy
alias eth0 8139too
alias iso9660 isofs
alias md-personality-1 linear
alias md-personality-2 raid0
alias md-personality-3 raid1
alias md-personality-4 raid5
alias md-personality-7 multipath
alias net-pf-1 unix
alias net-pf-2 ipv4
alias net-pf-3 off
alias net-pf-4 ipx
alias net-pf-5 appletalk
alias net-pf-6 off
alias net-pf-10 off
alias net-pf-17 af_packet
alias net-pf-19 off
alias netalias-2 ip_alias
alias plip0 plip
alias plip1 plip
alias tunl0 ipip
alias cipcb0 cipcb
alias cipcb1 cipcb
alias cipcb2 cipcb
alias cipcb3 cipcb
alias ppp0 ppp
alias ppp1 ppp
alias scsi_hostadapter off
alias slip0 slip
alias slip1 slip
alias tty-ldisc-1 slip
alias tty-ldisc-3 ppp_async
alias tty-ldisc-11 irtty
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
alias parport_lowlevel parport_pc
alias usbdevfs usbcore
alias sound-slot-0 via82cxxx_audio
alias usb-controller usb-uhci
# Options
options dummy0 -o dummy0
options dummy1 -o dummy1
options sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330
# Commands
post-install binfmt_misc /bin/mount -t binfmt_misc none /proc/sys/fs/binfmt_misc > /dev/null 2>&1 || :
pre-remove binfmt_misc /bin/umount /proc/sys/fs/binfmt_misc > /dev/null 2>&1 || :
post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :
pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :
# Miscellaneous file and directory names
generic_stringfile=/lib/modules/2.4.18-14/modules.generic_string
pcimapfile=/lib/modules/2.4.18-14/modules.pcimap
isapnpmapfile=/lib/modules/2.4.18-14/modules.isapnpmap
usbmapfile=/lib/modules/2.4.18-14/modules.usbmap
parportmapfile=/lib/modules/2.4.18-14/modules.parportmap
ieee1394mapfile=/lib/modules/2.4.18-14/modules.ieee1394map
pnpbiosmapfile=/lib/modules/2.4.18-14/modules.pnpbiosmap
depfile=/lib/modules/2.4.18-14/modules.dep
persistdir=/var/lib/modules/persist

depmod / modprobe / rmmod

depmod は依存関係ファイルを作成、modprobe はモジュールをロード、rmmod はモジュールを削除。 いまいち....

lsmod

ロードされているモジュールを表示する。

# lsmod

Module                  Size  Used by    Not tainted
8139too                16680   1
via-rhine              14668   1
mii                     1996   0  [8139too via-rhine]
ipchains               39720  16
ext3                   64224   2
jbd                    48180   2  [ext3]

modinfo

モジュールの情報を表示する。

# modinfo 8139too

filename:    /lib/modules/2.4.18-18.8.0/kernel/drivers/net/8139too.o
description: "RealTek RTL-8139 Fast Ethernet driver"
author:      "Jeff Garzik <jgarzik@mandrakesoft.com>"
license:     "GPL"
parm:        multicast_filter_limit int, description "8139too maximum number of filtered multicast addresses"
parm:        max_interrupt_work int, description "8139too maximum events handled per interrupt"
parm:        media int array (min = 1, max = 8), description "8139too: Bits 4+9: force full duplex, bit 5: 100Mbps"
parm:        full_duplex int array (min = 1, max = 8), description "8139too: Force full duplex for board(s) (1)"
parm:        debug int, description "8139too bitmapped message enable number"

[サーバの実験室 Redhat/Fedora]