過去問ドリル

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

システムの起動とLinuxカーネル/Linuxカーネルのコンパイル

カーネルのソースツリーでmake modulesを実行し、カーネルモジュールのビルドが終わった。ビルドしたモジュールを/lib/modules/<カーネルのバージョン>/以下へ配置するmakeのターゲットとして適切なものはどれか。

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

正解:B

解説

make modules_installは、ビルド済みのモジュールを/lib/modules/<カーネルのバージョン>/以下へ配置し、あわせてdepmodを実行してmodules.dep等を作成します。変数INSTALL_MOD_PATHを指定すると、配置先の前に付けるディレクトリを変えられます。カーネルイメージ本体を/bootへ置くのは別のターゲットのmake installで、ソースからカーネルを入れ替えるときは両方を実行します。

選択肢ごとの解説

  • A誤り。make installは、カーネルイメージをSystem.map等とともに/bootへインストールするターゲットです。モジュールは配置しません。
  • B正しい。make modules_installはモジュールを/lib/modules/<カーネルのバージョン>/以下へ配置し、depmodも実行します。
  • C誤り。make headers_installは、ユーザー空間のプログラム向けにカーネルのヘッダファイルを書き出すターゲットです。モジュールは配置しません。
  • D誤り。make allはカーネルイメージやモジュール等をまとめてビルドするターゲットで、ビルド結果をシステムへ配置する処理は含みません。
LinuCレベル2の問題を演習モードで解く