カーネル
しばらくLPIC Level 2の勉強でも。覚えたり調べたりしたことをまとめていくよ。
カーネルのバージョン
カーネルのバージョンを調べる時はuname。バージョン番号のみを表示する時は、
# uname -r
uname -rとして、シェルスクリプトと組み合わせて使うことが多い。
# ls /lib/modules/$(uname -r)
とかとか。LPICでは`コマンド`という形で出ると思うけど、$()形式だとネストも可能なので、応用範囲がググっと広がるぞ。
unameは/proc/versionを参照する。
/proc/versionは何処から出てくるのかといえば、カーネルのMakefileの一番上の4行に書かれてる。
My Linuxを作りたい時はココの値をいじればオリジナルバージョンが作れるかも。
Makefileを読んでみると、filechk_version.hというファイルを生成しているらしい。makeを使ってヘッダファイルを生成する技は使えそうだ。
カーネルイメージ
カーネルイメージは「/boot/vmlinuz-バージョン名」で格納されている。
カーネルイメージはカーネルコンパイル時にmake zImageかmake bzImageをすると構築できる。bzImageのbはbigの略なので、両方とも圧縮形式はgzipである。
詳しいところは、
- Linux2.4カーネル開始まで
- 電源投入からinitプロセス開始まで詳細に解説してあります。
カーネルモジュール
モジュールの基本的なコマンドはlsmod,insmod,rmmod,modprobe,depmod,modinfo。ここら辺はLevel 1の範囲なので使い方はきっちりマスターしておきたいところ。
Level 2の範囲でもうちょっと詳しく見ていく。
- カーネルモジュールは「/lib/modules/バージョン名」以下に機能ごとに分かれて配置されている。
- モジュールの拡張子は2.4系は.o 2.6系はkoとなっている。
- lsmodの内容は/proc/modules以下の内容を反映したもの。
- modprobeでの依存関係の解消はmodprobe.depファイルの記述を参照している。カーネルを構築後はdepmodコマンドを使ってmodprove.depファイルを再構築すべし。
- 書式は「モジュール : 依存するモジュール 依存するモジュール ...」
- モジュールのパラメータは/etc/modulees.conf(2.4),/etc/modprobe.conf(2.6)に書かれている。書式も出そうだな・・・。
なかなか詳しそうな資料。
- Kernel/Module - PukiWiki
- モジュールの作成まで。
カーネルパラメーター
仕組み的には、Windowsのレジストリと同じような感じ。LPIC2からの範囲らしい。
- /proc/kernel,/proc/fs,/proc/net以下にテキストファイルがあるので確認、変更等が行える。
- sysctlコマンドを使って確認、変更することも可能。書式は「proc.kernel.キー.キー=値」
- 起動時から反映させる場合はsysctl.confをいじる。
代表的なカーネルパラメータの役割は覚えておいたほうが良さそうだorz
基本的にはLPIC Level 1とそれほど変わりないのだけど、内容が深い!!
Level 2は格段にレベルが上がりそうなので覚悟して勉強していかないと・・・。