変更要約: 初版(主題2.01・副主題2.01.1〜2.01.5に対応)
1.3Linuxカーネルの構成要素
カーネルイメージそのものの構造とソースツリーを学びます。圧縮された実行イメージ bzImage、その内部で使われる xz データ圧縮、カーネルソースが展開される /usr/src/linux/、付属ドキュメント /usr/src/linux/Documentation/ の位置づけを押さえます。
カーネルをコンパイルしたりモジュールを扱ったりする前に、カーネルという成果物が何でできているかを知っておく必要があります。この節は次節(コンパイル)・次々節(実行時管理)の土台となる、カーネルイメージとソースツリーの基礎です。
1.3.1カーネルイメージbzImage
- bzImage(big zImage)=x86系 Linux の圧縮済みカーネル実行イメージの標準形式。ブートローダーがロードして展開・実行する対象そのもの。
- bzImage 内部のカーネル本体は xz など複数のデータ圧縮方式のいずれかで圧縮される(カーネル設定で選択)。展開はブート時にカーネル自身の解凍スタブが行う。
1.3.2カーネルソースツリーの構成
- /usr/src/linux/=カーネルソースコードが展開される標準的な場所。多くのディストリでは実バージョン名のディレクトリへのシンボリックリンクとして存在する。
- /usr/src/linux/Documentation/=カーネルの各サブシステムの仕様・設定方法を記した公式ドキュメント群。設定項目の意味を確認する一次情報として参照する。
「実行可能な圧縮イメージ=bzImage」「ソースツリーの標準的な場所=/usr/src/linux/」「仕様確認の一次情報=Documentation/配下」 という素朴な対応関係が問われます。この副主題は重み2の小粒トピックですが、次節(コンパイル)の make bzImage ターゲットに直結するため取りこぼさないようにします。
カーネルパッケージを扱う実務のイメージをつかみましょう。ディストリのパッケージマネージャでカーネルソースパッケージを展開すると、多くの場合 /usr/src/linux-<version>/ という実体ディレクトリができ、/usr/src/linux はそれを指すシンボリックリンクとして用意されます。この慣習により、コンパイルスクリプトや DKMS のようなツールはバージョンを気にせず /usr/src/linux を参照できます。何らかの設定オプション(例えばファイルシステムのドライバや RAID サポート)の意味を確認したいときは、まず /usr/src/linux/Documentation/ 配下の該当サブシステムの説明を読むのが定石です。最終的に make でビルドされた成果物は bzImage という1つの実行可能イメージにまとまり、その中身は xz 等で圧縮されているため、実際のカーネルサイズよりディスク上のイメージははるかに小さく収まります。
| 要素 | 内容 | 備考 |
|---|---|---|
| bzImage | 圧縮済み実行可能カーネルイメージ | ブートローダーがロード・展開・実行 |
| xz | bzImage内部のデータ圧縮方式の一つ | カーネル設定で選択 |
| /usr/src/linux/ | カーネルソースツリーの標準的な場所 | 多くは実体へのシンボリックリンク |
| /usr/src/linux/Documentation/ | 公式ドキュメント | 設定項目の意味の一次情報 |
ひっかけ: 「bzImage はカーネルのソースコード一式である」は誤りです。bzImage はコンパイル済みの圧縮実行イメージであり、ソースコードは /usr/src/linux/ にあります。また「Documentation/ にはカーネルモジュールのバイナリが置かれる」も誤り=そこにあるのは文書であり、モジュールは /lib/modules/<kver>/ に置かれます。
1.3.3この節のまとめ
- bzImage=圧縮済みの実行可能カーネルイメージ(内部はxz等で圧縮)。ブートローダーがロードして展開・実行
- ソースは/usr/src/linux/(多くはシンボリックリンク)/仕様確認はDocumentation/配下が一次情報
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. x86系Linuxにおいて、ブートローダーがロードして展開・実行する圧縮済みカーネルの標準的な実行イメージ形式はどれ?
Q2. あるファイルシステムドライバのカーネル設定オプションの正確な意味を確認したい。最も適切な一次情報の参照先はどれ?
Q3. カーネルソースコードが展開される場所として、多くのディストリで慣習的に使われるパスはどれ?

