ディストリビューションは、カーネルを module、initramfs integration、boot-loader update、signature、support policy とまとめて package 化します。custom kernel を意図して開発・テストし、マシンを復旧できる場合を除き、その管理された workflow を使ってください。
Kernel · レッスン 4
カーネルのインストール
検証済み fallback を残し、distribution kernel をインストール、boot、検証、保持する方法を学びます。
実行中カーネルとインストール済みカーネル
現在動作中カーネルの release を表示します。
$ uname -r
6.8.0-00-generic
これはインストール済み全カーネルを一覧表示せず、新しい package をインストールした直後にも変わりません。uname -r が新しい version を報告するには、その image を boot する必要があります。インストール済み package と boot entry はディストリビューション固有のツールで問い合わせてください。
uname -r は何を表示しますか?
Distribution の Tracking Package を優先する
将来の security update を受け続けられるよう、ディストリビューションが対応する kernel tracking package または meta-package をインストール・保持します。package 名は release、architecture、hardware class、kernel flavor に依存します。Ubuntu では通常 linux-generic がありますが、cloud、low-latency、HWE、OEM、real-time、architecture 固有の system は別 package を使います。
uname -r の version string をそのまま apt install operand にして、有効だと想定しないでください。インストール前に現在のディストリビューション文書を参照し、package manager で候補を調べます。
対応済み kernel meta-package が役立つのはなぜですか?
変更前に確認する
kernel transaction の前に次を行います。
- 対応 repository、package signature、release lifecycle、意図する kernel flavor を確認する。
/bootまたは EFI System Partition の空き容量を確認する。- 少なくとも一つの既知の正常な kernel と、選択可能な boot entry を残す。
- console、remote management、rescue media、encryption recovery、rollback access を確認する。
- out-of-tree module、storage/network driver、Secure Boot signing、hibernation、virtualization compatibility を確認する。
package transaction は、対応する initramfs を生成し、ディストリビューションの hook で boot entry を更新する必要があります。すべての error を確認してください。initramfs または loader の生成に失敗したなら、package が installed と表示されても十分ではありません。
initramfs 生成 error があると、成功したと判断してはいけないのはなぜですか?
Boot して検証する
stakeholder と active workload を考慮し、管理された reboot を予定します。default が失敗した場合に、console から古い entry を選べるようにします。boot 後に確認します。
$ uname -r
$ journalctl -k -b
$ systemctl --failed
非 systemd system では同等のツールを使います。storage、filesystem、networking、graphics、input、security module、external module、container、virtual machine、application health を検証します。login prompt だけでは完全な検証になりません。
通常の新しい kernel package が動作中カーネルになるのはいつですか?
古いカーネルを削除する
新カーネルの検証合格後に限り、package manager が対応する cleanup workflow を使います。現在動作中カーネル、唯一の既知の正常な fallback、active tracking package が必要とする package は削除しないでください。正確な削除候補と、その後の boot entry を確認します。
/boot から手動削除すると、package と loader の state が不整合になります。すでに容量が尽きている場合も、任意の image を消さず、ファイル変更前に復旧計画を作ってください。
新カーネルの初期検証中に残すべき kernel はどれですか?
GRUB2 ブートメニューのカスタマイズラボは、複数 entry を理解するための復旧可能な環境を提供します。
レッスン完了
カーネルのインストール を完了しました
これで、kernel update を boot chain と互換性の変更として扱えます。
動作中 release とインストール済み image を区別する。
正しい distribution package で対応済み update を追跡する。
storage、initramfs、signature、module、recovery access を事前確認する。
boot して hardware と application の動作を検証する。
新カーネルが実証されるまで、既知の正常な fallback を保持する。