丸山です。

13.1 の loader.efi の話の続きです。loader.env の話です。

Fri, 2 Sep 2022 08:50:39 +0900
Tomoaki AOKI <[email protected]> writes:

>ESPのefi/boot/freebsd/loader.env に
>
> rootdev=zfs:NEWPOOLNAME/ROOT/default:
>
>を入力しておけばいけそうです。

との情報を元に実験してみてうまくできた、という話を

Date: Sat, 10 Sep 2022 10:44:49 +0900
Message-ID: <[email protected]>

に書きました。ところがその後更に調べてみると、私がテストに使ったマシンの
中でもうまくゆくマシン(pc06)とうまくゆかない(EPSの
/EFI/freebsd/loader.env を読んでくれない)マシン(pc03)があって、どこに違
いがあるのか、結局わからず、途方に暮れた次第です。

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=229770

のコメント9, 10, 11 というのを見つけて、それで 13.1-STABLE から 

9月 16 13:35   base.txz

をダウンロードして /boot/loader.efi を取り出して試してみましたが、それで
もダメでした。

ダメな場合の調査はもう諦めましたが、一応うまくゆく場合にどうなるかを説明
しておきます。

ESP の /EFI/freebsd/loader.env に rootdev を指定すると、「Welcome to
FreeBSD」が表示されるところまで、その指定デバイスから必要情報を読み取り
ます。(9月11日に書いた説明のAデバイス。)「Welcome to FreeBSD」画面がタイ
ムアウトすれば、同じデバイスからカーネルを読み取り boot が進行しますが、
通常の場合と同じく、メニューエントリを選ぶか、スペースキーを押せばタイム
アウトは阻止できます。メニューエントリ3を選べばローダーの OKプロンプトが
表示されますので、そこで

OK show

とやって変数の値を見ると、 rootdev という変数が表示され、その値は
loader.env で指定したものになっています。関連しそうな変数として loaddev
と currdev が表示されますが、これらも rootdev と同じ値でした。ここから

set currdev=zfs:NEWPOOL/ROOT/default:
boot

などとやればカーネル等の読み込むデバイスを希望のものに変更できることは通
常の(loader.env を使わない)起動と同じです。ここで気になるところは、そも
そも通常の起動では show で見ると rootdev という変数はありません(表示され
ません)。loaddev と currdev はあります。rootdev と loaddev の役割の違い
は何なのか、不明です。

何とか rootdev を指定して loader.efi を動かす方法を模索して、 rEFInd の
menuentry で options を指定する方法を試してみました。これは
https://www.ish.org/blog/?p=963 に書いてありますが、私が13.1の
loader.efiで試した限りでは成功しませんでした。rEFInd のバージョンも複数
試してみましたが、ダメでした。この ish.org の話は Release 12 の時の話で
ある上に、 rEFInd の前段にclover とか grub2 とか aio bootとかいう物を使っ
ているらしいので、とてもじゃないですが、再現実験をやる気にはなれません。

この方法も諦めました。

この話はここまでにしておきます。

--------
丸山 直昌 まるやま なおまさ
メールアドレス: [email protected]

Reply via email to