From nobody Sun Oct 02 08:31:45 2022 X-Original-To: freebsd-users-jp@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4MgHJ82qMWz4fJMf for ; Sun, 2 Oct 2022 08:31:52 +0000 (UTC) (envelope-from junchoon@dec.sakura.ne.jp) Received: from www121.sakura.ne.jp (www121.sakura.ne.jp [153.125.133.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4MgHJ64mGVz3WkD for ; Sun, 2 Oct 2022 08:31:50 +0000 (UTC) (envelope-from junchoon@dec.sakura.ne.jp) Received: from kalamity.joker.local (123-1-88-210.area1b.commufa.jp [123.1.88.210]) (authenticated bits=0) by www121.sakura.ne.jp (8.16.1/8.16.1/[SAKURA-WEB]/20201212) with ESMTPA id 2928VjBo036905; Sun, 2 Oct 2022 17:31:46 +0900 (JST) (envelope-from junchoon@dec.sakura.ne.jp) Date: Sun, 2 Oct 2022 17:31:45 +0900 From: Tomoaki AOKI To: masa@amogha.jp Cc: freebsd-users-jp@freebsd.org Subject: Re: rEFInd - a UEFI boot selector Message-Id: <20221002173145.adadfcef8cebb26d32a28e91@dec.sakura.ne.jp> In-Reply-To: References: Organization: Junchoon corps X-Mailer: Sylpheed 3.7.0 (GTK+ 2.24.33; amd64-portbld-freebsd13.0) List-Id: Discussion relevant to FreeBSD communities in Japan List-Archive: https://lists.freebsd.org/archives/freebsd-users-jp List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-users-jp@freebsd.org X-BeenThere: freebsd-users-jp@freebsd.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4MgHJ64mGVz3WkD X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=none (mx1.freebsd.org: domain of junchoon@dec.sakura.ne.jp has no SPF policy when checking 153.125.133.21) smtp.mailfrom=junchoon@dec.sakura.ne.jp X-Spamd-Result: default: False [-1.60 / 15.00]; AUTH_NA(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; MV_CASE(0.50)[]; MIME_GOOD(-0.10)[text/plain]; MLMMJ_DEST(0.00)[freebsd-users-jp@freebsd.org]; R_SPF_NA(0.00)[no SPF record]; RCVD_TLS_LAST(0.00)[]; R_DKIM_NA(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; ASN(0.00)[asn:7684, ipnet:153.125.128.0/18, country:JP]; MIME_TRACE(0.00)[0:+]; RCPT_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_SOME(0.00)[]; HAS_ORG_HEADER(0.00)[]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; FROM_HAS_DN(0.00)[]; DMARC_NA(0.00)[sakura.ne.jp]; TO_DN_NONE(0.00)[]; MID_RHS_MATCH_FROM(0.00)[] X-ThisMailContainsUnwantedMimeParts: N On Sat, 24 Sep 2022 18:23:11 +0900 masa@amogha.jp (丸山直昌) wrote: > 年金生活者 丸山です。 > > Subject を変えて、私が抱えている問題を説明し、お知恵をお借りしたいと思い > ます。絶滅危惧種の legacy BIOSのみのマシンのことは無視して、話を UEFI マ > シンに限定したいと思います。 > > 困っていることを手短に書くと > > https://efi.akeo.ie/downloads/efifs-1.9/x64/zfs_x64.efi > > を rEFInd のドライバとして使っても動かない > > という事です。ufs2_x64.efi の方は期待通りに動くのですが、、、。 > > 以下ちょっと長くなりますが、誰にでもわかるように詳しく説明したいと思いま > す。 > > 欲しいのは gpt スキーム上にある複数の FreeBSD を選択的に起動する仕組みで > す。いわゆる multi-bootの話の一環です。世の中には一つのディスク上に > Windows, Linux, Ubunstu, Debian など、何種類ものOSを載せて、「どれでも起 > 動できる」と威張っている人がいますが、ここで話題にするのはそれとはちょっ > と違っています。「複数の FreeBSD を選択的に起動する」というのは、複数の > OSを、各OS一個ずつのパーティションがある中から選択的に起動することに比べ > て意外なほど面倒なのです。 > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=207940 > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=229770 > > などを見ると、野中さん、青木さん、Masachika ISHIZUKAさん等が長い年月に渡っ > てこの問題に関心をお持ちのことがわかります。ですが、これら諸先輩方のよう > にboot1.efi や loader.efi にパッチを当てるやり方は、私の手に余ります。と > ても真似はできません。 > > 私は長い間この問題への対処として仕方なく gnu grub2 を使っていましたが、 > 本当のところこの方法は気に入りません。その理由は別途説明したいと思います > が、最近試しているrEFIndを使う方法について、わかったことを以下に少し説明 > したいと思います。rEFIndは FreeBSD外のソフトウェアなので恐縮ですが、、、。 > > ESP の/EFI/BOOT/REFIND.CONF に > > menuentry "loader.efi of FreeBSD13.1" { > loader /EFI/Boot/loader.efi > icon /EFI/Boot/ICONS/os_freebsd.png >   options "rootdev=zfs:fbsd131/ROOT/default:" > } > > のように options を指定するやり方は、先日のメールに書いた通り、何故か成 > 功しませんでした。 > > https://www.ish.org/blog/?p=2271 には > > P.P.S. refind 0.12.0が不調な原因が判りました。optionsでloader.efiに > parameterを渡す際に、最初のパラメータが正常に渡らないようです。optionsの > 2番目以降のパラメータは正常に渡りますので、optionsの最初にdummyのパラメー > タを追加すれば一応0.12.0も動きます。 > > という話が書いてありますが、 > >   options "rootdev=zfs:fbsd131/ROOT/default: rootdev=zfs:fbsd131/ROOT/default:" > > と書いてもダメでした。 > > 次に試したのは > > https://www.starlink.jp/freebsd/boot-from-another-fbsd-partition/ > > にある volume を指定する方法です。私がやった実験の状況は以下の通りです。 > > % gpart show ada0 > => 34 1953525101 ada0 GPT (932G) > 34 1600 1 bios-boot (800K) > 1634 414 2 freebsd-boot (207K) > 2048 204800 3 efi (100M) > 206848 6291456 4 freebsd-ufs (3.0G) > 6498304 6291456 5 freebsd-zfs (3.0G) > 12789760 6291456 6 freebsd-ufs (3.0G) > (以下略) > > となっている状況で、 REFIND.CONF には > > menuentry "ufs2 driver test ada0p6" { > volume 521461b8-3b05-11ed-9405-3417eb9e0b90 > loader /boot/loader.efi > icon /boot/images/freebsd-logo-rev.png > } > > というエントリを作っておきます。ここに volume の行にある長い数字の羅列は > ada0p6 の rawuuid で、gpart list で調べることができます。 > > 14. Name: ada0p6 > Mediasize: 3221225472 (3.0G) > Sectorsize: 512 > Stripesize: 4096 > Stripeoffset: 0 > Mode: r1w1e1 > efimedia: HD(6,GPT,521461b8-3b05-11ed-9405-3417eb9e0b90,0xc32800,0x600000) > rawuuid: 521461b8-3b05-11ed-9405-3417eb9e0b90 > rawtype: 516e7cb6-6ecf-11d6-8ff8-00022d09712b > label: (null) > length: 3221225472 > offset: 6548357120 > type: freebsd-ufs > index: 6 > end: 19081215 > start: 12789760 > > 更に、 ESP に /EFI/BOOT/drivers というディレクトリを作って、 > > https://efi.akeo.ie/downloads/efifs-1.9/x64/ > > から取ってきた ufs2_x64.efi を入れておきます。これで rEFInd を起動して選 > 択メニューから "ufs2 driver test ada0p6" を選びますと、ちゃんと「Welcome > to FreeBSD」が表示されます。そこで メニューエントリ3を選んで > > OK show > > とやると、 currdev, loaddev ともに値が disk2p6: になっています(外付け > USB disk を2台接続しているために disk2がada0)。rootdev はありません。こ > の結果に私は小躍りしました。rEFInd は ada0p6 の /boot/loader.efi を起動 > しているわけで、OK bootとやるか、或いは「Welcome to FreeBSD」画面をその > ままタイムアウトさせると ada0p6 からカーネルをロードしてスタートさせます。 > ada0p4にある /boot/loadef.efi が ada0p6にあるカーネルをロードするわけで > ないのです。これにより、バージョンが異なる FreeBSD をいくつか持っている > gptスキームのディスクで、loader.efi の挙動も含めて各バージョンの動きを再 > 現できることになります。 > > しかし喜んだのもつかの間。 zfs のパーティションで同じことをしようと同じ > サイトから zfs_x64.efi を持ってきて /EFI/BOOT/drivers に入れてみましたが、 > 成功しませんでした。 > > 困った。 > > -------- > 丸山 直昌 まるやま なおまさ > メールアドレス: masa@amogha.jp 青木@名古屋です。 rEFIndは全く経験が無く、現在新たに調べて試してみる余力がないの ですが、ご入用ならBug 207940のパッチ適用済のboot1.efiをお送り しますよ。 最新の野中さんのパッチを適用したものは、`gpart list`で表示される rawuuidを見て選択する形、 私のパッチ(アップロードしていませんが、野中さんのものに倣って proto.cだけにパッチを当てれば良いように微修正したもの)は インターフェース毎にUEFIファームウェアが何番のディスクと 認識しているかの番号とその中のパーティション番号との組合せから 選択する形です。 いずれも0がデフォルトで起動されるパーティションを受け入れる 場合で、それ以外は1~9とA~Zで計35個以内の候補から選択、 一旦停止してよく見たければスペースを押せばタイマーが停止 します。 何もしなければ10秒後に0を押したのと同様に起動します。 両方とも、stable/13でビルドし、loader.envが存在しない状態で stable/13もmainも起動できます。 但し、  ・最後にzpool upgradeを行ったのは、stable/13が作成された   直後(mainとstable/13のZFS関係のコードが100%一致している   状況)にmainとstable/13(stable/12から移行)双方のpoolを   upgrade。  ・テストしたのは、stable/13のドライブはZFSのみ、mainのドライブは   UFSの後ろにZFSがあり、UFSの方はZFSのROOTFSをrootとして   マウントしようとするようにしてあるものの、あえてエラーに   なるよう古いままにしてある状態の環境です。  ・NVMeのドライブは、FreeBSDのsrcに取り込まれているUEFI関係の   ヘッダが古いためNVMe(NVM Express namespace messaging   device path node)の定義が存在せず、私のものでは表示上   diskにフォールバックし、番号も通常とかけ離れた番号が出る。  ・野中さんの方だと、どのrawuuidがどのドライブか覚えておく   必要がある。 ので、それでもよろしければ。 -- 青木 知明 [Tomoaki AOKI]