過去問ドリル

LinuCレベル2 システムの起動とLinuxカーネル 問42

システムの起動とLinuxカーネル/Linuxカーネルの構成要素

x86_64のシステムで、カーネルのソースツリーの最上位ディレクトリでmake bzImageを実行し、ビルドが完了した。生成されたbzImageが置かれる場所として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル2の出題範囲「システムの起動とLinuxカーネル」に対応。実際の試験問題ではありません)

正解:D

解説

x86系でビルドしたbzImageは、ソースツリーのarch/x86/boot/bzImageとして生成されます。ビルドの過程ではソースツリーの最上位に圧縮されていないカーネルのvmlinuxも作られ、bzImageはこれを圧縮して起動用のコードを付けたものです。ビルドしただけでは/bootには何も置かれず、make install等でインストールしたときに/boot/vmlinuz-<バージョン>のような名前でコピーされます。

選択肢ごとの解説

  • A誤り。/boot/vmlinuz-<バージョン>は、make install等でカーネルをインストールしたときにコピーされる先の名前です。ビルドしただけでは作られません。
  • B誤り。ソースツリー最上位のvmlinuxは、圧縮されていないELF形式のカーネルです。bzImageはこれを圧縮して起動用のコードを付けたもので、別のファイルです。
  • C誤り。/lib/modules/<バージョン>/kernel/は、make modules_installでカーネルモジュールが配置される場所です。カーネルイメージは置かれません。
  • D正しい。x86系ではarch/x86/boot/bzImageとして生成され、これを/bootへコピーしてブートローダから読み込ませます。
LinuCレベル2の問題を演習モードで解く