カーネル

しばらく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である。

詳しいところは、

カーネルモジュール

モジュールの基本的なコマンドは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)に書かれている。書式も出そうだな・・・。

なかなか詳しそうな資料。

カーネルコンパイル

  • patchコマンドの-pオプションが出そうな予感。
  • 後はLevel 1の範囲と同じような感じがするんだけど。

カーネルパラメーター

仕組み的には、Windowsレジストリと同じような感じ。LPIC2からの範囲らしい。

  • /proc/kernel,/proc/fs,/proc/net以下にテキストファイルがあるので確認、変更等が行える。
  • sysctlコマンドを使って確認、変更することも可能。書式は「proc.kernel.キー.キー=値」
  • 起動時から反映させる場合はsysctl.confをいじる。

代表的なカーネルパラメータの役割は覚えておいたほうが良さそうだorz


基本的にはLPIC Level 1とそれほど変わりないのだけど、内容が深い!!

Level 2は格段にレベルが上がりそうなので覚悟して勉強していかないと・・・。