LinuCレベル2 システムの起動とLinuxカーネル 問42
システムの起動とLinuxカーネル/Linuxカーネルの構成要素x86_64のシステムで、カーネルのソースツリーの最上位ディレクトリでmake bzImageを実行し、ビルドが完了した。生成されたbzImageが置かれる場所として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル2の出題範囲「システムの起動とLinuxカーネル」に対応。実際の試験問題ではありません)
- A/boot/vmlinuz-<バージョン>
- Bソースツリー最上位のvmlinux
- C/lib/modules/<バージョン>/kernel/
- Dソースツリーのarch/x86/boot/bzImage
正解: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へコピーしてブートローダから読み込ませます。