第1章


第1章 Linuxカーネル

カーネル

  • Linuxに限らずOSにはカーネルというOSのとなるプログラムが存在する
  • カーネルは、プロセススケジューリングやメモリ管理、デバイス管理など、OSとしての基本機能をアプリケーションに提供する。
  • Linux上で動作するアプリケーションは、直接ハードウェアを制御するのではなく、カーネルが制御を仲介する。
    ハードウェアを制御するにはデバイスドライバと呼ばれるソフトウェアが必要である。
  • 以前のカーネルの仕様では、デバイスドライバをカーネル本体に組み込むことが基本だったが、
    バージョン2以降からはカーネルモジュールというカーネルの機能を部品化した形で切り離すことが可能となった。
    この結果、カーネル本体のサイズが小さくなり起動する時間が短縮される。
    また、デバイスが必要なときだけデバイスドライバを読み込むのでメモリの節約にもなる。
  • カーネルモジュールを利用する場合は、
    /lib/modules/カーネルのバージョン名のディレクトリに配置する。

カーネルバージョン

Linuxのカーネルには、次のようにバージョン番号が付けられている。
パッチレベルが 偶数のものは安定版奇数のものは開発版を意味する。

  • unameコマンド
    unameコマンドは、現在稼動しているカーネルのバージョンを調べるときに使用する。
  • 書式   uname オプション
オプション説明
-a全ての情報を表示する。     
-rカーネルのバージョンを表示する。
-mハードウェアアーキテクチャを表示する
  • カーネルのバージョンは、/proc/versionでも確認できる。
    • (ex)cat /proc/version
  • カーネルをバージョンアップした場合など、
     カーネルソースからコンパイルしたカーネルを使用している場合は、
     /usr/src/linux/Makefileを参照することでもバージョンを確認できる。
  • カーネルイメージを作成するコマンド
    • カーネルイメージとはカーネルを格納したファイルのこと。
      カーネルイメージを作成するには、 make Image、make zImage、make bzImageコマンドがある。
  1. make Image・・・カーネルを圧縮せずにカーネルイメージを作成するため、カーネルのサイズが大きい場合は使用できない。
  2. make zImage・・・カーネルの圧縮を行うが、カーネルサイズが大きくなるとエラーが発生する。
  3. make bzImage・・・カーネルの圧縮を行うが、サイズ制限がないためより多くのデバイスドライバを
    組み込んだカーネルイメージを作成することができる。通常は、make bzImageコマンドを使用する。
  • 作成したカーネルイメージは、/bootディレクトリ
    vmlinuzという名前で配置する。
    配置したカーネルイメージは、システム起動時にブートリーダによって
    /bootディレクトリからロードされメモリに展開される。