[FreeBSD-users-jp 96744] Re: BOOTIA32.efi は未対応か

Tomoaki AOKI junchoon @ dec.sakura.ne.jp
2021年 3月 28日 (日) 07:23:56 UTC


青木@名古屋です。

4.については、検索してみるとLinux界隈では32bitのUEFIローダから
64bitのカーネルを起動する事例があるようですが、詳細の記憶が
飛んでいて当時の経緯も見失ってしまっているのですが、UEFI版の
ローダが入る最初の.0 Release準備期間に32bit・64bit間の遷移が
うまくいかない(場合がある)という話があったかと。

その記憶が正しければLinuxはどうやっているんだろう?という
のは気になるところですが、これでバッチリという話をFreeBSD界隈
では見た記憶がないので、望みは薄いかもしれません。


5.については、64bitでも、現用のThinkPad P52で溜めしたときは
うまくいきましたが、以前使っていたT420ではESPに/EFI/BOOT/BOOTx64.EFI
として/boot/loader.efiを使うと似たような状態になり、/boot/boot1.efi
だと問題なく起動できる(BOOTx64.EFIとしてインストールしたboot1.efiが
ブートパーティションの/boot/loader.efiを起動し、/boot/loader.efiが
/boot/loader.confの設定に基づきカーネル・カーネルモジュールを
読み込んでチェーンロードする流れ)という現象に遭遇しました。

ダメ元で、32bit版の/boot/boot1.efiを/EFI/BOOT/BOOTIA32.efiとして
使ってみてはいかがでしょうか?

 ※現状のトレンドとしては、(少なくともWarnerの意向としては)
  boot1.efiは将来のReleaseのどこかのタイミングで削除する
  方向で、既にインストーラでは使われなくなっているようですが、
  boot1.efiでないとうまくいかない事例が積み重なっていけば
  流れが変わるかもしれません。

なお、boot1.efiは、

 1.それ自体が読み込まれたドライブ
 2.UEFIファームウェアが1台目として認識しているドライブ
 3.以降、UEFIファームウェアが認識している順に最後のドライブまで

の順番で、各ドライブで/boot/boot1.efiが存在する

 1.ZFS pool
 2.UFSパーティション

の優先順位で探し、最初に見つかったところの/boot/loader.efiを
起動します。 後の処理は起動されたloader.efiにお任せですね。

初期は一番目の処理が抜けていたためEFIブートでインストール済の
FreeBSDが存在して、かつ、UEFIファームウェアでの認識順がmemstick
より先になっていると、memstickのインストーラをどうやっても
起動できない(インストール済の方しか起動できない)という致命的
問題があって、結構ギリギリセーフでリリース前に直して貰った経緯が
あったりします。


ところで、念の為確認ですが、ご自身で(memstick上の)/boot/loader.conf
に追加で読み込む.koは設定していませんよね?
loader.efiがkernelや*.koを読み込む領域は64MBしか確保されていない
(ARM系のみ32MBですが)ので、それ以上読み込もうとするとそこで
止まってしまうと思います。

 ※以前、GENERICカーネルの肥大化でzfs.koを読み込もうとすると
  その時点でアウトという事態に陥り、拡大された経緯があります。
  以降、カーネルが起動する時点で読み込まれていないと起動不能な
  もの・構成不能なもの以外は極力/ete/rc.confのkld_listに追加して
  読ませようね、という流れになっています。


外していたらごめんなさい。


On Wed, 24 Mar 2021 17:07:54 +0900
skyblue <zyxjulep @ gmail.com> wrote:

> 悸村です。
> その後、試行錯誤的なテストをしてみたので報告します。X205TA の話。
> 
> 4.
> UEFI - FreeBSD wiki を参考にし、64bit FreeBSD + 32bit bootloader /
> UEFI, gpt
> の USB メモリ・スティック インストーラを作製し、試す。
> https://wiki.freebsd.org/UEFI
> (事前に buidworld, buildkernel 等の作業が必要)。
> ”Bootable UEFI memory stick or Hard Disk” の項目のうち、
> /boot/loader.efi を /EFI/BOOT/BOOTIA32.efi に変更する。
> 
> bootloader の起動まではした。'Can't load 'kernel'' と言われる。
> FreeBSD-12.2R (amd64) / UEFI, gpt, 32bit bootoloader (改造インストーラ)
> https://twitter.com/xlsvx/with_replies
> 
> 
> 5.
> UEFI - FreeBSD wiki を参考にし、i386 FreeBSD / UEFI, gpt
> の USB メモリ・スティック インストーラを作製し、試す。
> (事前に buidworld, buildkernel 等の作業が必要)。
> (URL同上)
> ”Bootable UEFI memory stick or Hard Disk” の項目のうち、
> /boot/loader.efi を /EFI/BOOT/BOOTIA32.efi に変更する。
> 
> kernel をロードしているあたり、途中で止まっているw
> FreeBSD-12.2R (i386) / UEFI, gpt (改造インストーラ)
> https://twitter.com/xlsvx/status/1374592663345717254
> 
> どうも巧くいかないようです。
> 
> ---
> 悸村成一
> _______________________________________________
> freebsd-users-jp @ freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
> To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe @ freebsd.org"


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


freebsd-users-jp メーリングリストの案内