丸山です。 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]
