カーネル 201

/ LPIC / Comment[0]
Linuxという言葉はカーネルの部分のみを差す。

カーネルのバージョンを確認
$ cat /proc/version
Linux version 2.6.32-22-generic (buildd@yellow) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) )

カーネルのMakefileを参照することでも確認できる
/usr/src/linux-headers-`uname -r`/Makefile
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 32
EXTRAVERSION = .11+drm33.2


カーネルは通常イメージファイルとして/boot/vmlinuz-*という名前で置かれている
カーネルをコンパイルするときにzImagebzImageを選択することができる。
zImageはメモリ制限があるため、作成できるサイズに上限がある。
通常はbzImageを利用することが多い。

カーネルモジュールが配置されるディレクトリ
/lib/modules/`uname -r`/kernel/

ロード済みのモジュールを表示
$ lsmod
Module                  Size  Used by
nls_iso8859_1 4633 1
nls_cp437 6351 1
vfat 10802 1
fat 55350 1 vfat
binfmt_misc 7960 1
ppdev 6375 0
fbcon 39270 71
tileblit 2487 1 fbcon
font 8053 1 fbcon

$ cat /proc/modules
nls_iso8859_1 4633 1 - Live 0xffffffffa03b9000
nls_cp437 6351 1 - Live 0xffffffffa0364000
vfat 10802 1 - Live 0xffffffffa035f000
fat 55350 1 vfat, Live 0xffffffffa02d7000
binfmt_misc 7960 1 - Live 0xffffffffa02d3000
ppdev 6375 0 - Live 0xffffffffa01fb000
fbcon 39270 71 - Live 0xffffffffa03c2000
tileblit 2487 1 fbcon, Live 0xffffffffa03bc000
font 8053 1 fbcon, Live 0xffffffffa03b5000


モジュールをロード
# insmod /lib/modules/`uname -r`/kernel/drivers/acpi/video.ko

依存関係を考えながら表示/ロード/アンロード
# modprobe オプション モジュール

-a 全てのモジュールをロード
-r モジュールをアンロード
-c 現在使われてる設定を表示
-l 指定したパターンにマッチするロード可能なモジュール一覧を表示する
-n 何も行わず表示
-t 特定機能のモジュールのみ扱う
-C 設定ファイルを指定する
--show-depends モジュールの依存関係を表示する

Video関係のモジュールを表示
# modprobe -lt video
kernel/drivers/video/console/fbcon.ko
kernel/drivers/video/console/bitblit.ko
kernel/drivers/video/console/font.ko
kernel/drivers/video/console/softcursor.ko
kernel/drivers/video/console/tileblit.ko
kernel/drivers/video/backlight/lcd.ko
kernel/drivers/video/backlight/lms283gf05.ko
kernel/drivers/video/backlight/ltv350qv.ko
kernel/drivers/video/backlight/ili9320.ko
:

Videoモジュールに依存関係があるモジュールを表示
# modprobe --show-depends video
insmod /lib/modules/2.6.32-22-generic/kernel/drivers/video/output.ko
insmod /lib/modules/2.6.32-22-generic/kernel/drivers/acpi/video.ko


modprobeが参照するモジュールの依存関係が記述されているファイル
/lib/modules/`uname -r`/modules.dep
モジュールのパス: 依存するモジュールのパス
kernel/ubuntu/lirc/lirc_ttusbir/lirc_ttusbir.ko: kernel/ubuntu/lirc/lirc_dev/lirc_dev.ko

modules.depファイルを更新するにはdepmodコマンドを実行する。

modprobeの設定ファイル
/etc/modprobe.d/*
/etc/modprobe.conf

書式
alias  モジュールのエイリアス名を指定
options モジュールのオプションを指定
install 指定されたシェルコマンドを実行
remove  modprobe -rが実行された時にシェルコマンドを実行

カーネルモジュールが必要になるとkmodというカーネルの機能が自動的に読み込んでくれる。

カーネルのパッチ当て
差分データ(パッチ)の適用
# patch オプション < パッチファイル
# patch オプション 元ファイル パッチファイル


オプション
-d 作業ディレクトリ
-p0 パス名の修正無し
-p1 パス名の最初の/までを削除
-p2 パス名の次のディレクトリまで削除
-C 処理のテスト
-R パッチの適用を取り消す

解凍しながらパッチを適用
# bzip2 -dc patch.bz2|patch -p1

パッチを取り消し
# patch -R < patch

何らかの理由でパッチが当てられなかった場合は、差分情報が記述された.rejリジェクトファイルが生成される.


カーネルパッチをまとめて適応するスクリプト
patch-kernelスクリプト
# /usr/src/linux-headers-`uname -r`/scripts/patch-kernel
関連記事

コメント

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