kernel command lineを指定してやれば,boot loaderを介さずにrEFIndみたいなboot managerとしての役目のみに徹しているようなソフトウェアからLinuxを起動することってできるよね?
Conversation
Notices
-
B̅ (cmplstofb@mathtod.online)'s status on Monday, 08-Feb-2021 23:43:22 JST B̅
-
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Monday, 08-Feb-2021 23:43:21 JST まちカドおるみん御嬢様
@cmplstofB そもそも rEFInd は boot loader です
-
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Monday, 08-Feb-2021 23:45:37 JST まちカドおるみん御嬢様
@cmplstofB omasanori さんが point した EFI_STUB 機能のやつは、そもそも UEFI は .efi イメージを kick できることから、boot loader の類は一切なく、直接 ESP に PE/COFF イメージとしてビルドした Linux kernel を配置してしまえばそのまま UEFI が直接 OS kernel を起動できる、ということ
-
B̅ (cmplstofb@mathtod.online)'s status on Monday, 08-Feb-2021 23:48:24 JST B̅
> rEFInd is a boot manager, meaning that it presents a menu of options to the user when the computer first starts up, as shown below. rEFInd is not a boot loader, which is a program that loads an OS kernel and hands off control to it.http://www.rodsbooks.com/refind/
とあるんですが、これは定義の違いでしょうか。
-
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Monday, 08-Feb-2021 23:48:38 JST まちカドおるみん御嬢様
@cmplstofB これは UEFI で言うとこの前 toot した ExitBootServices() までやるような boot loader ではないというだけであって、boot loader の一種だとは思います。
-
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Monday, 08-Feb-2021 23:49:35 JST まちカドおるみん御嬢様
@cmplstofB そういう定義で行くとそもそも EFI_STUB を有効化した Linux だと Linux そのものに boot loader が一体化しているという話になる
-
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Monday, 08-Feb-2021 23:52:01 JST まちカドおるみん御嬢様
@cmplstofB まあ OS の起動のために OS が利用するファームウェアから取得するデータを用意してメモリに配置したりページテーブルを構築したり、といった難しいことは一切せずに、UEFI の API 機能で .efi の実行イメージを読み込んで実行する(それ自体は C 言語でも 4 行ぐらいで実装できる)、ということぐらいしかしてないよ、という話を強調したいだけだと思うけれど。
-
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Monday, 08-Feb-2021 23:53:55 JST まちカドおるみん御嬢様
@cmplstofB 昔の boot loader は IBM PC BIOS の制約を掻い潜って色々な機能を追加するために、BIOS が呼び出す MBR に埋め込まれているコードを 1st bootloader、パーティションテーブルの先頭を 2nd bootloader と言って複数の bootloader を多段にして boot していたし、そういう見方をすると rEFInd は 1st bootloader でそこから起動する Linux kernel の EFI_STUB 部分が 2nd bootloader です、とも言えちゃう
-
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Monday, 08-Feb-2021 23:55:01 JST まちカドおるみん御嬢様
@cmplstofB そもそも Intel CPU 単体でみたとき UEFI BIOS にあたる ROM のコードは必ずしも UEFI BIOS でなくても、さらにここが ROM でなくたって計算機は作れるので、BIOS ないし UEFI BIOS そのものが 1st bootloader というものの見方もできる
-
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Monday, 08-Feb-2021 23:56:58 JST まちカドおるみん御嬢様
@cmplstofB まあこの場合 BIOS や UEFI BIOS は最初に RAM に読み込まれるプログラムだから bootloader じゃなくて特別に IPL (initial program loader) と言ったりもするが。
-
B̅ (cmplstofb@mathtod.online)'s status on Monday, 08-Feb-2021 23:59:49 JST B̅
@orumin いまやりたいこと(そしてできないでいること)は,「EPSとは別の領域(具体的にはESP=/dev/sda1としたら/dev/sda5あたり)にある,ext4 formatのfile system上の/boot/vmlinuz-4.9.16-gentooをrEFIndからkickする」ことなんです。(rEFIndの公式文書にもvolumeを設定できるとの記載があるので可能な筈です)https://rodsbooks.com/refind/configfile.html#stanzas
で,ここでrEFIndが担っている役目はあくまで利用者が選択したあ項目を「(あらかじめ利用者が決めておいた方法で)実行する」ことでしかなく,rEFIndがGRUBのようにLinux kernelの詳細に立ち入った設定を自動で行ってくれるものではない,ということを言いたかったのでした。要はroot=PARTUUID=... rw,みたいなkernel command lineを自力で指定する必要があるってことです。
まちカドおるみん御嬢様 repeated this. -
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Monday, 08-Feb-2021 23:59:49 JST まちカドおるみん御嬢様
-
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Tuesday, 09-Feb-2021 00:00:29 JST まちカドおるみん御嬢様
@cmplstofB べつに GRUB でも適切な設定絶対できるわけじゃなくて普通に起動できないときはできないです(/etc/default/grub を手動で編集しないと起動できないことはいくらでもある)
In conversation permalink -
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Tuesday, 09-Feb-2021 00:01:32 JST まちカドおるみん御嬢様
@cmplstofB そしてそれは GRUB と rEFInd の違いとかより、単に GRUB には mkconfig とか os-proper のような kernel を検知して cmdline をある程度設定作るような周辺ツールが豊富ってだけなので……(べつに rEFInd 向けにも作れると思うし
In conversation permalink -
B̅ (cmplstofb@mathtod.online)'s status on Tuesday, 09-Feb-2021 00:03:17 JST B̅
@orumin いやまあ,それはそうなんですが,GRUBだと普通はこちらがなにも指定しなくても適切なACPI設定を組んでくれません?
In conversation permalink -
まちカドおるみん御嬢様 (orumin@mstdn.maud.io)'s status on Tuesday, 09-Feb-2021 00:03:17 JST まちカドおるみん御嬢様
@cmplstofB せいぜいが rootfs の指定ぐらいで、LVM とか使って rootfs 組んでも普通に起動しないし、あんま関係ないです。Ubuntu のインストーラーとかだとそもそも distro が用意した構成でしかインストールしないから設定ファイルとかも distro が用意したやつで上手く行くように distro の開発者が死ぬほどがんばったというだけですね。
In conversation permalink -
B̅ (cmplstofb@mathtod.online)'s status on Tuesday, 09-Feb-2021 00:04:26 JST B̅
menuentry Arch { icon /EFI/refind/icons/os_arch.png volume ARCHBOOT loader /vmlinuz-linux initrd /initramfs-linux.img options "root=/dev/sda3 ro"}
これはrEFIndの解説書に載ってる一例だけど,あきらかに別領域にあるvmlinuzを読み込むように指示してあるので,やろうとしていることがrEFIndの機能外,って訳じゃない筈。
In conversation permalink
-