+[[diary/Kojima]] ・Plamo Linux 小技集 - カーネルパッケージの安全な更新方法 MLの方でも書いたけど、手元で作っているカーネルパッケージ(例えばkernel-5.4.30-x86_64-1.txz)には grub.cfg を作る処理は仕込んでいないので、手動で grub-mkconfig を実行する必要がある。 なぜ grub-mkconfig を仕込んでいないのかと言うと、新しいカーネルで何かトラブルがあった場合は古いカーネルにfall backできるようにしたいのだけど、そのためには新しいカーネルパッケージと既存のカーネルパッケージを共存させる必要があるためだ。 Plamo Linuxの場合、パッケージの有無は /var/log/packages/<パッケージ名> というファイルの有無で管理しているので、例えば複数のカーネルパッケージを共存させたい場合、既存の/var/log/packages/kernel というファイルを別の名前にしておけば、新しいカーネルパッケージを installpkg で(= 古いパッケージを削除することなく)インストールできる。 例えばこんな感じ。 # mv /var/log/packages/kernel{,_5.2.11} # installpkg kernel-5.4.30-x86_64-B1.txz こうすれば /lib/modules/ 以下に 5.2.11_plamo64/ と 5.4.30_plamo64/ のモジュールディレクトリ、/boot 以下に {vmlinuz,initrd}-5.2.11-plamo64 と {vmlinuz,initrd}-5.3.40-plamote というカーネルイメージが共存できるので、 # grub-mkconfig -o test.cfg してやれば2世代のカーネルとinitrdイメージを見付けて、適切な設定ファイルを作ってくれる。test.cfg を確認して、 # mv test.cfg /boot/grub/grub.cfg してやれば、古い 5.2.11 カーネルと新しい 5.4.30 カーネルがデュアルブート可能になるので、何か問題が起きた場合は古いカーネルに fallback 可能になる。 ちなみにこのテクニックはカーネルパッケージ以外にも使用可能なものの、Plamo Linuxでは既存のファイルへの上書きを保護するような仕組みは用意してないため、ファイル名やディレクトリ名にバージョン番号を含むような形で区別していない場合は、既存のファイルを上書きしてしまうので要注意。 #comment