カーネルとモジュール
作成 : 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"