カーネルとカーネルモジュール

 

●カーネル

OSの中核プログラムのこと
操作をするユーザはシェルを通してカーネルとやり取りをする
「Linux」という言葉は厳密にはLinuxカーネルを意味する

通常は /bootディレクトリ内にvmlinuzというファイル名で、カーネルイメージとして配置されている

カーネルのバージョンは、

2 . 4 . 18 - 3」 というように表記される
 a b  c  d

  1. メジャーバージョン:カーネルの大きな変更
  2. マイナーバージョン/パッチレベル:カーネルの小さな変更
  3. サブレベル:バグフィックスなどの追加
  4. エクストラバージョン/リリース番号:このカーネルに加えられた変更を識別する番号

 

コマンド 説明 書式 主なオプション 補足
uname 現在システムで使用されている
カーネルバージョン表示
uname [オプション] -a :すべての情報を表示
-r :カーネルバージョンを表示
-s :カーネル名を表示
-o :OS名を表示

 

 

●カーネルモジュール

カーネルモジュール:
カーネルの機能を分割し、必要に応じて部品のように動的に組み込める
それによりカーネルの肥大化を防ぎ、システムリソースの消費を抑えることができる

カーネルモジュールはカーネルのバージョンごとに用意する必要がある
通常は、 /lib/modules/カーネルバージョン ディレクトリ以下に機能別のサブディレクトリ毎に格納され、
.o という拡張子が付けられる

 

カーネルモジュールの設定ファイル:/etc/modules.conf
(一部のディストリビューションでは /etc/conf.modules )

カーネルモジュールの別名や、起動時に渡すオプション情報、モジュールを組み込む順序などが記録されている

 

カーネルモジュールの依存関係が記述:modules.dep

あるモジュールを利用するために必要になるモジュールがある場合、
依存関係にあるという表現を使う

このファイルの内容を更新するには depmod -a コマンドを実行する
(システム起動時やランレベル変更時には自動的に実行される)

 

 

 

 

 

カーネルとカーネルモジュールの管理

 

カーネルの機能をカスタマイズするには

2つの方法がある

 

●カーネルモジュールの管理
(既存のカーネルにカーネルモジュールを組み込む・削除する)

 

カーネルモジュールに関する情報の表示コマンド

コマンド 説明 書式 主なオプション 補足
lsmod カーネルに組み込まれている
カーネルモジュールの一覧表示
(/proc/modulesファイルが参照される)
lsmod 表示される項目

カーネルモジュール名
サイズ
カーネルモジュールを利用しているプロセス数

など

modinfo 特定のカーネルモジュール情報の表示 modinfo [オプション] モジュール名

オプションを省略すると
全ての情報を表示する

-n :モジュールのファイル名表示
-f / -d :モジュールの説明表示
-a :モジュールの作者名表示

 

カーネルモジュールの組み込みと削除コマンド

コマンド 説明 書式 主なオプション 補足
insmod カーネルモジュールをロードしてカーネルに組み込む insmod [オプション] モジュール名 依存関係のあるモジュールが
先に組み込まれている必要がある

-s :動作結果を標準出力ではなくsyslogへ出力する

-v :詳細な情報を表示する

modprobe カーネルモジュールをロードしてカーネルに組み込む

依存関係のあるモジュールが組み込まれてない場合は、自動的に組み込む
(依存関係はmodules.depファイルが参照される)

modprobe [オプション] モジュール名 -a :すべてのモジュールを組み込む

-t dir :ディレクトリ以下のモジュールを1つ組み込む

-l :組み込まれているすべてのモジュールを一覧表示

-r :モジュールを削除

rmmod モジュールの削除

ただし依存関係は考慮しない

rmmod [オプション] モジュール名 -a :使われていないモジュールをすべて削除する

-s :動作結果を標準出力ではなくsyslogへ出力する

 

 

●カーネルの再構築とインストール
(カーネル自体をソースコードからコンパイルして再構築する)

  1. Linuxカーネルのソースコードを入手し、 /usr/src/linux ディレクトリ以下に展開する
     ( http://www.kernel.org/  からダウンロード可能)
  2. make mrproper コマンドで以前の設定ファイルなどを削除(カーネルソースツリーを初期化)する
  3. 利用するカーネル機能の選択
    (カーネルに組み込む/カーネルモジュールとして用意しておく/カーネルに組み込まない のいずれかを選択)

     ・make config :テキストベースのツール、全ての設定項目を指定する
     ・make menuconfig :メニュー形式、必要な設定項目のみを指定できる
     ・make xconfig :グラフィカルツール、必要な設定項目のみを指定できる

    のいずれかのツールを使用
    設定した内容は、 /usr/src/linux/.config ファイルに保存される
  4. make dep コマンドで依存関係をチェック
  5. make clean コマンドで前のバージョンに関連のある不要なファイルを消去
  6. make bzImage コマンドでソースコードをコンパイルしてカーネルイメージを作成
      /usr/src/linux/arc/i386/boot ディレクトリにbzImageという名前でカーネルイメージが作成される
  7. カーネルイメージ(bzImage)を、vmlinuz-バージョン名 に名前を変えて /boot ディレクトリ以下にコピー
  8. /usr/src/linux/System.map ファイルをSystem.map-バージョン名 に名前を変えて /boot ディレクトリ以下にコピー
  9. make modules コマンドでカーネルモジュールをコンパイルする
  10. make modules_install コマンドでカーネルモジュールをインストールする
     /lib/modules/カーネルバージョン ディレクトリ以下にインストールされる
  11. 新しいカーネルで起動できるようにブートローダーの設定を変更する
     LILOを使用している場合は、/etc/lilo.conf ファイルを編集し、 /sbin/lilo コマンドを実行
  12. 再起動するとブートプロンプトで新しいカーネルを選択できるようになる

 

 

 

 

 

 

 

 

 

 

inserted by FC2 system