ほとんどのディストリビューションがUEFIとgrubを接続するのはなぜですか?

ほとんどのディストリビューションがUEFIとgrubを接続するのはなぜですか?

ほとんどのディストリビューションはUEFIシステムに追加のブートローダをインストールします。 UEFI自体は、さまざまなオペレーティングシステムまたは個々のカーネルを選択できるメニューを提供するブートローダです。またefibootmgr

3.3以降のカーネルはEFI_STUBをサポートします。つまり、UEFIからカーネルを直接ロードできます。ディストリビューションが追加のブートローダを使用することにしたのはなぜですか? Linux / UEFIのほとんどのチュートリアルでは、EFI_STUBを使用してLinuxを起動するのではなく、追加のブートローダ(rEFInd、grub2、ELILOなど)を設定することに焦点を当てています。

ディストリビューションに欠けている唯一のものはサポートです。ほとんどのディストリビューションは2番目のブートローダに接続されているため、カーネルはUEFIブートメニューに追加されず、EFIシステムパーティションにコピーされません。

3つのスクリプトだけですべての魔法を実現できます。 initramfsをESPにコピーする方法です。 2番目はカーネルをESPにコピーし、UEFIブートメニューに新しいエントリを作成します。 3番目のスクリプトは、ESPから古いカーネルとinitramfsを削除し、UEFIブートメニュー項目を削除します。これにより、ユーザーとの対話なしで完全に自動化されたカーネル/initramfsの更新/クリーンアップが可能になります。私はこの方法を1年以上使用しており、完璧に動作します。

ほとんどのディストリビューションで EFI_STUB の代わりに grub を使用するのはなぜですか?

リンク:

編集:私はgrubサポートを完全に削除することについて話すのではなく、さまざまな理由でgrubサポートを使用したい人にオプションを提供することについて話しています。ディストリビューションでは、grub-efiUEFIとGrubを接続したい人のためのパッケージだけでなく、efistub-boot上記のスクリプトを含むパッケージも提供できます。

答え1

UEFIのみが適用される点を考慮すると2005年の定義この仕様をサポートしていない古いデバイスがたくさんあります。標準ディストリビューションにUEFIを追加するには、1つではなく2つのコードパスをテストする必要があります。

答え2

配布にリソースが制限されていること以外に、他に理由がない可能性があります。おそらく非常にシンプルで安全です。より多くのメンテナンスが必要ですUEFI以外のシステムにのみ適用可能な場合は、grubオプションを維持する必要があるためです。

私は誰もがdistroが採用したい機能とオプションのリストを持っていると確信しています(いくつかのページを提供します、ハハ)。そして間違いなくその多くは「完全に単純で面倒ではありません。正直に言えば……」。ただし、これを実装するのに必要な作業時間は無制限ではありません。このような決定(「他の機能の代わりにこの機能に仕事を投入しますか?」)に直面したときの主な質問は次のとおりです。

  • それは必要ですか? (ここで答えは「いいえ」です。)
  • どのくらいの人が恩恵を受け、どのくらいの恩恵を受けるのでしょうか。 (IMO:一部ですがあまりありません)
  • 私たちが何もしなくてもユーザーが自分で適応できる合理的な選択肢はありますか? (明らかに存在します。)

人がディストリビューションを使う理由はみんなリソースが制限されています(そうでない場合は、チームを雇ってスペースと機器を購入し、必要な方法ですべての作業を実行してください)。だから現実は、分布が反映されているということです。一般化ユーザーのニーズ。

つまり、私はこれが時間が経つにつれてオプションとして採用されると思い、この問題について賛成票を投げました。

答え3

Grubに加えてUEFIブートローダをターゲットにすると、品質管理とサポートが複雑になります。 grubはフリーソフトウェアで、ハッキング可能で、より柔軟で高品質なので、これらのディストリビューションはUEFI仕様ではなくgrubを対象としています。チュートリアルに従い、ここにUEFIパーティションをインストールすると、純粋なUEFIブートを取得できます/boot。そうするとメンテナンスコストが発生するためです。

答え4

本当の問題は、人々がそれがどのように機能するかを理解していないということです。たとえば、あなたの質問には3つのスクリプトが必要であると言われました。ただし、実際にはそのスクリプトや追加の操作は必要ありません。

必要なのは、ESP(またはカーネルを維持したい場所)をバインドマウントするだけです。/boot1行でこれを行うことができます/etc/fstab。これにより、現在のすべてのカーネル更新スクリプトが引き続き機能します。

私の「/etc/fstab」は次のとおりです。

LABEL=ESP /esp vfat defaults 0 2
#
#^ i like a separate mount point - not necessary though
#
/esp/EFI/arch_root /boot none bind,defaults 0 2
#
#^ i keep separate installations in separate directories
#

しかし、ここにはメーカー固有の設定に関する良い点があります。 UEFI明らかにするいいえスタートメニューのインターフェースを指定します。これはキャッチするためのものであり、機械間で一貫性がありません。迷惑なことだが本当だ。

だから荷物を載せる人たとえば、grub実際にはもっと作業するには、rEFIndなどのメニューアプリを使用して違いをなくし、すべてを簡素化できます。

関連情報