8.11.1. Debian カーネルパッケージの特徴
Debian カーネルパッケージはカーネルイメージ (vmlinuz-version
) をインストールします。カーネルの設定 (config-version
) とシンボルテーブル (System.map-version
) は /boot/
に置かれます。シンボルテーブルは開発者がカーネルエラーメッセージの意味を理解する際の手助けになります。それどころかシンボルテーブルがなければ、カーネルの「oops」(「oops」とはカーネル空間で起こるユーザ空間プログラムのセグメンテーション違反に相当するエラーです。言い換えれば、不正なポインタを参照して値を取得したことで生成されるメッセージです) に含まれる情報は、数字で表したメモリアドレスだけになります。アドレスとシンボルや関数名を対応付けるテーブルがなければ、この情報は役に立ちません。モジュールは /lib/modules/version/
ディレクトリにインストールされます。
カーネルパッケージの設定スクリプトは自動的に initrd イメージを生成します。initrd はブートローダによってメモリに読み込まれる小さなシステムで (このため「init RAM ディスク」と名付けられています)、Linux カーネルは initrd を使って完全な Debian システムを含むデバイス (たとえば SATA ディスクのドライバ) にアクセスするために必要なモジュールを読み込みます。最後に、カーネルパッケージの post-installation スクリプトが /vmlinuz
、/vmlinuz.old
、/initrd.img
、/initrd.img.old
のシンボリックリンクを更新します。これらはそれぞれインストールされた最新の 2 つのカーネルとカーネルに対応する initrd イメージを指します。
これらの作業のほとんどは /etc/kernel/*.d/
ディレクトリの中にあるフックスクリプトが担っています。たとえば、grub
との統合は、カーネルがインストールまたは削除された際に update-grub
を呼び出す /etc/kernel/postinst.d/zz-update-grub
と /etc/kernel/postrm.d/zz-update-grub
が担っています。
apt
はとても便利なので、簡単に低レベルツールについて忘れてしまいます。しかし、コンパイルされたカーネルをインストールする最も簡単な方法は dpkg -i package.deb
などのコマンドを使うやり方です。ここで package.deb
は linux-image パッケージの名前で、たとえば linux-image-4.9.30-ckt4-falcot_1_amd64.deb
です。
この章で説明されている設定手順は基本であり、サーバシステムにもワークステーションにも適用でき、半自動化された方法で広く適用できます。しかしながら、この設定手順だけで完全に設定されたシステムを十分に提供することは不可能です。「Unix サービス」として知られている低レベルプログラムを初めとする、いくつかの要素に対する設定がまだ必要です。