丸山です。
「大袈裟な実験」のまとめです。
UEFIマシンにおいて FreeBSD13.1 の loader.efi がシステムを起動するプロセ
スを見ると
(A) loader.efi がデバイスから必要な情報を読み込んで「Welcome to FreeBSD」
画面を表示させる
(B) その後 カーネルをロードしてカーネルに制御を渡す
の2段階に分けて考えることができます。A段階で必要な情報を読み込むデバイス
(以下「Aデバイス」と呼びます)とB段階でカーネル等を読み込むデバイス(以下
「Bデバイス」と呼びます)は、通常の運用では同じデバイスですが、私は意図的
に異なるデバイスとなるようにしてみて、挙動を調べてみました。その方法は、
「Welcome to FreeBSD」画面でメニューエントリの3番を選んで OK プロンプト
を表示させ、
OK set currdev={Bデバイス}:
boot
とやる方法です。判ったことは
1. ディスクからの起動で、ディスク内に freebsd-ufs あるいは freebsd-zfs
のパーティションが複数存在する場合にはパーティション番号が一番小さい
freebsd-ufs, freebsd-zfs が Aデバイスとして選択される
2. loader.efi はA段階においても、B段階においても、 ufs ファイルシステム、
zfs ファイルシステムのいずれも読むことができる。(インストールメディア
FreeBSD-13.1-RELEASE-amd64-dvd1.isoから起動した場合も考慮すると、 iso
ファイルシステムも読めることがわかる。)
3. Bデバイスがzfsの場合、B段階においてロードされたカーネルがBデバイスを
ルートシステムとしてマウントできるかどうかは、loader.efi がAデバイス
から読み込んだ /boot/loader.conf の中に zfs_load="YES" があるかどうか
に依存している。
以上です。
--------
丸山 直昌 まるやま なおまさ
メールアドレス: [email protected]