カーネルさん

/ LPIC / Comment[0]
カーネルとは、オペレーティングシステムの中枢のプログラムで、ハードウェア管理、プロセスのスケジューリングなどの基本的な機能を提供する。
Linuxではカーネルイメージの形式でファイル化され、通常、/bootディレクトリにある。
vmlinuz*という名前が付けられている。

$ ls -l /boot/vmlinuz*
-rw-r--r-- 1 root root 3941696 2009-10-17 10:12 /boot/vmlinuz-2.6.31-14-generic
-rw-r--r-- 1 root root 3947008 2010-03-12 15:45 /boot/vmlinuz-2.6.31-20-generic

$ uname -r
2.6.31-14-generic

vmlinuz-2.6.31.14-generic
vmlinuz-メジャーバージョン.マイナーバージョン.サブレベル-エクストラバージョン

メジャーバージョン 大きな変更がある時に繰り上がる
マイナーバージョン やや大きな変更があるときに繰り上がる(偶数は安定、奇数は開発中)
サブレベル 不具合の修正や小さな機能の追加などで繰り上がる
エクストラバージョン カーネルに与えられた変更を識別する番号

Linuxカーネルには様々な機能をモジュールとして動的に組み込むことができる。
システムに必要な機能を読み込ませ、不必要な物を外し柔軟にカーネルを省スペース化させることが出来る。

モジュールを表示
$ lsmod
Module                  Size  Used by
binfmt_misc 10220 1
dm_crypt 14888 0
vmnet 53232 13
ppdev 8232 0
parport_pc 37352 0
vmblock 16868 1
vsock 49696 0
vmci 66240 1 vsock
vmmon 89600 0


あれ?parport_pcってなんだろう
モジュールの情報を取得
$ modinfo parport_pc
filename:       /lib/modules/2.6.31-14-generic/kernel/drivers/parport/parport_pc.ko
license: GPL
description: PC-style parallel port driver
author: Phil Blundell, Tim Waugh, others
srcversion: 35C1F6752D1A5CB194916E8
:
:
depends: parport
vermagic: 2.6.31-14-generic SMP mod_unload modversions
parm: io:Base I/O address (SPP regs) (array of int)
parm: io_hi:Base I/O address (ECR) (array of int)
parm: irq:IRQ line (array of charp)
parm: dma:DMA channel (array of charp)
parm: verbose_probing:Log chit-chat during initialisation (int)
parm: init_mode:Initialise mode for VIA VT8231 port (spp, ps2, epp, ecp or ecpepp) (charp)


作者のみ表示
$ modinfo -a parport_pc
Phil Blundell, Tim Waugh, others

モジュールの説明のみ表示
$ modinfo -d parport_pc
PC-style parallel port driver

モジュールファイル名のみ表示
$ modinfo -n parport_pc
/lib/modules/2.6.31-14-generic/kernel/drivers/parport/parport_pc.ko



モジュールをロード
# insmod オプション モジュール

オプション
-f カーネルバージョンチェックを無視してロードする
-k モジュールのauto-cleanフラグを設定して、一定期間使われないモジュールを自動で削除する。
-L 同じモジュールを同時にロードしないようにロックする。
-m ロード時のメモリマップを標準出力に出力する
-o モジュールに名前を付ける



モジュールをアンロード
# rmmod オプション モジュール

使用中のモジュールはアンロード出来ない。

オプション
-f 強制アンロードする。危険なので注意。
-s (or --syslog)結果を標準出力ではなく、syslogへ出力する



モジュールの依存関係を考えてロード、アンロード
# modprobe オプション モジュール

オプション
-a 全てのモジュールをロードする
-r モジュールをアンロードする
-l モジュールの一覧表示
-t 特定機能のモジュールのみ扱う

videoが含まれるモジュールを一覧表示
$ modprobe -l *video*
kernel/drivers/acpi/video.ko
kernel/drivers/ieee1394/video1394.ko
kernel/drivers/media/video/videodev.ko
kernel/drivers/media/video/zoran/videocodec.ko

kernel関係で利用可能なモジュールを表示
$ modprobe -lt kernel
kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko
kernel/arch/x86/kernel/cpu/cpufreq/speedstep-lib.ko
kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko
kernel/arch/x86/kernel/cpu/cpu_debug.ko
kernel/arch/x86/kernel/msr.ko
kernel/arch/x86/kernel/cpuid.ko
kernel/arch/x86/kernel/microcode.ko

modprobeが参照するモジュールの依存関係は
/lib/modules/`uname -r`/modules.depに記述されている。

「kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko: kernel/arch/x86/kernel/cpu/cpufreq/speedstep-lib.ko」
この場合、
kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.koは
kernel/arch/x86/kernel/cpu/cpufreq/speedstep-lib.ko
に依存しているということが読み取れる。



modules.depを更新
# depmod -a
通常、このコマンドはシステム起動時などに実行され、modules.depはシステム起動時に更新される。

関連記事

コメント

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