Re: BIOSでハードディスクを選 択して、FreeBSDのどちらも起動さ せたい。

From: Tomoaki AOKI <junchoon_at_dec.sakura.ne.jp>
Date: Sun, 17 Aug 2025 00:33:23 UTC
青木@名古屋です。
(Legacy)BIOS起動は久しく使っていないので記憶違いがあるかもしれませんが、
GPTの場合、gptzfsbootは「自身が読み込まれたドライブ」の起動可能なpool
からの起動を試みたと思います。

boot1.efi(当時はloader.efiを直接ESPにインストールして起動することは
できませんでした)がRoot-on-ZFSでの起動をサポートし、インストール用
イメージ(memstick.imgだったと思います)がUEFI起動をサポートした初期、
Legacy BIOS では狙ったとおりに起動できたのに(例えばUSB memstickを
選んで起動するときちんとUSB memstick上のFreeBSDが起動する)UEFIだと
必ずada0から起動してしまうという症状があって、いろいろやりとりして
smh@に修正して貰ったので。
freebsd-bootパーティションに書き込むbootcodeはUFSとZFSで別々のもの
ですが、(恐らくサイズの制約の緩いUEFIでは複数のboot1.efiを作りたく
ないという意図と思いますが)boot1.efiではドライブ単位でZFS→UFSの
順で起動可能なプールorパーティションを探すようになっているという
違いはあるものの、ドライブ単位で考えるとLegacy BIOSと同じ挙動に
して貰ったという認識です。

※boot1.efiがpool・パーティションが起動可能かどうかを判断する
 ロジックはシンプルで、/boot/loader.efiがあるかないかを見ている
 だけですので、例えばUFS起動でZFSはデータ用なのに、ZFSの方に
 /boot/loader.efiが存在すると見事に起動不可能なドライブが
 出来上がります。 (/boot/loader.envも探すので、そちらで
 正しい設定を行えばUFSの方をキックするようにもできると思いますが、
 そういった手当をしていないと...)

ひとつ確認するのを忘れていました。

もちろんZFSのpool名はada0とada2で「異なる」ようにしていますよね?
万一同じ(例えばどちらもzroot)だと常にada0の方を探してしまう
可能性があります。 まさかとは思いますが念の為。

私の場合、NVMeのstable/14環境とSATAのmain環境のpool名は異なるものに
してあり、さらに念押しで各々の/boot/loader.confの先頭に

zfs_load=YES
vfs.root.mountfrom="zfs:<pool名からのbootfs名>"

を入れてあります。
ZFSの場合はここでドライブを指定する手段がないのでpool名で
区別できないとこの手で強制することができません。


On Sun, 17 Aug 2025 08:47:28 +0900
Hiroo Ono (小野寛生) <hiroo.ono+freebsd@gmail.com> wrote:

> 小野寛生です。
> 
> ここらへんの動きを私はちゃんと理解していないのですが、起動時のチェーン順としては、
> 
> BIOS → gptzfsboot → loader → kernel
> 
> のはずですが、それぞれの起動の動作はどうなっているのでしょう。
> 
> BIOS: 起動時のメニューで ada0 とada2 の起動選択が可能。
> gptzfsboot: ? (1)最初に見つけたディスクの loader を起動、
> つまり ada0 の gptzfsboot も ada2 のも ada0 の loader を起動するのか、
>     (2)gptzfsboot が置かれたパーティションと同じディスクの loader を起動するのか?
> loader: たぶん、起動した loader と同じパーティションの kernel を起動する
>     (loader.conf に vfsmountfrom の設定が無い場合)
>      (本当?)
> kernel: どの zfs を import するの?
> 
> gptzfsboot が (2) なら次へ進む。(1) なら諦めて boot environment と bectl を使う方向で。
> loader と kernel については、まず動作はどうなっているか整理が必要でしょうか。
> 
> よく分かっていないのに割り込んですみませんが。
> 
> 
> 
> 
> 2025年8月17日(日) 8:06 *** <dua_x@ymail.ne.jp>:
> 
> > Warnerさん、お返事ありがとうございます。
> >
> > > FreeBSD/ada2の/etc/fstabの内容は何ですか?
> > >
> > > FreeBSD installed on ada2, what is in /etc/fstab?
> > >
> > > Warner
> >
> > 新規にインストールしたので、編集していません、
> > インストールで勝手に作成されています。
> >
> > # Device                Mountpoint      FStype  Options         Dump
> > Pass#
> > /dev/ada2p2             none    swap    sw              0       0
> >
> >


-- 
青木 知明  [Tomoaki AOKI]    <junchoon@dec.sakura.ne.jp>