トップ «前の日記 最新 次の日記»

2023-09-16 (Sa) [長年日記]

_ 続・/boot 分離

/boot と /efi の両方に grub ディレクトリがあることに気づいて悩み始めた。

ドキュメント読んだり試行錯誤したりした結果、

  • /boot
    • /boot/grub 全部, grub.cfg も含めて
    • kernel, initrd
  • /efi
    • /efi/EFI/GRUB/grubx64.efi

こういう構成になるのね。

で、grubx64.efi には、/boot/grub がどのパーティションの どの path にあるかが書いてあって、 そこから grub.cfg なり module なりを読んでくる、と。

ただ、そうすると、/boot は zfs にあるので、zfs.mod が 必要だけど、それが /boot/ にあると読めない。 そういうのは、preload する、と。

preload は2種類あって、

  • grub-install --modules=
    あらかじめ grubx64.efi にモジュールを含めておく機能
  • GRUB_PRELOAD_MODULES=
    grub.cfg に列挙されてて、 grubx64.efi 起動後に grub.cfg の指示で読み込む機能

となってる。つまり zfs の場合は前者を使う、ということ。

で、やってみたところ、怪しい warning が…

https://wiki.archlinux.org/title/ZFS#GRUB-compatible_pool_creation

↑これらしい。GRUB が対応してない機能も有効にしてしまってる。 まぁそりゃそうだけど…。 今更作り直す気はせんなぁ...

まぁいいや、別パーティション作ろ。 swap を 1GB ほど削って新たなパーティションを捻出。 そこを /boot (ext4) として使う。

ま、容量が大きくなったので意味がなかったわけではないな。

で、やってみたけど、まだ起動できない。 zfs kernel module が load できてないらしい。 なんで…? もうアレしか思いつかない。 きっと kernel module のビルドに失敗してる。

試してみて、やっぱり失敗した。 LTS なら起動できた。

そして zfs-dkms を git 版にしたら通った。

luna:~ % sudo zpool set feature@multi_vdev_crash_dump=disabled zroot
cannot set property for 'zroot': property 'feature@multi_vdev_crash_dump' can only be set to 'disabled' at creation time

やっぱ作成時にしか設定できないみたい。 次に作成する時には思い出せるといいんだけど。

ついでに2点。

  • Windows を os-prober に任せるようにした
  • テーマを starfield でなく名前を付けた。
    これで、grub-install しても上書きされないはず。

編集 パスワード変更