grubがraspberry piと互換性がないのはなぜですか?


10

ラズベリーパイがグラブをサポートしていないことを何度も読んだことがあります。非互換性に関する詳細を見つけることができませんでした。「サポートされていません」という形式のかなり率直な発言しか見つかりませんでした。

問題が何であるか、それを機能させるために何を書き直す必要があるかを正確に理解したいと思います。

これまでに見つけたのは、ステージ3のブートローダーがstart.elfを読み取り、次にカーネルイメージを読み取ることです。私の心には、grubが機能する場合、start.elfが(完全に)置き換えられます。UEFIブートローダーのフォーマットを調べたところ、PEフォーマットの実行可能ファイルを使用していることがわかりました。したがって、私の最初の仮説は、非互換性は(のみ)grubがPEとしてコンパイルされ、ステージ3がELFのみを読み取るということです。

他の主要な非互換性を見逃しましたか?start.elfgrubに置き換えられた場合に失われる、他のいくつかの主要なタスクを逃したことがありますか?


私はこれについて完全ではありませんが、問題はARMプロセッサにあると思います。AFAIK、grubIntelアーキテクチャでのみ機能します。
Seamus

@Seamus考えてくれてありがとう。Debianパッケージgrub-efi-armの存在は、grubがARMで使用できることを示唆しています。
Philip Couling

start.elfの機能については、raspberrypi.org / documentation / configuration / boot_folder.mdを参照してください。
Dirk

それを知りませんでした-ありがとう!ARMバージョンのGRUBを試しましたか?
Seamus

4
この質問を「Raspberry Piに固有ではない」として締めくくったユーザーからのコメントを希望します。Raspberry Piと互換性のない問題が特定の問題ではないのはなぜですか?
Dmitry Grigoryev

回答:


5

実際、Raspberry Piに一般的なカーネルでUbuntuをインストールする場合ここで説明するように、grub2 使用する必要があります

唯一の互換性の問題は、grub2がブートパーティションにEFIフラグを設定する可能性があり、RPiブートローダーがEFIフラグが設定されたパーティションからのブートを拒否することです。フラグは任意のパーティションエディターで手動でクリアでき、RPiブートローダーとgrub2の両方でパーティションが正しく認識されます。


それは私が見つけなかった光沢のあるリンクです。EFIチェックをオフにできるかどうか。
Philip Couling

@PhilipCouling私はそうは思わない、私の理解では、チェックはブートローダーチェーンのクローズドソース部分で行われます。
Dmitry Grigoryev

2

Raspberry Piは特別であり、プライマリ(オンチップROM)、セカンダリ(bootcode.bin)、および3番目のブートローダー(start.elf)がGPUで実行され、一方が他方をチェーンロードします。命令セットは適切に文書化されておらず、start.elf自体が極秘です。

(SuSEとMicrosoftが実証したように)実行できることは、TernCore(オープンソースのUEFI実装)のカスタムバージョンまたはU-Bootでも、kernel.imgを自由に置き換えることです。これを使用して、UEFI互換のGRUB2またはBOOTMGRバイナリを起動できます。


確かに。Raspberry Pi 3は現在、成熟したUEFIファームウェアを備えており、Pi 4にも同じものを提供するための作業が進行中です。これにより、バニラLinuxディストリビューションを簡単にインストールし、GRUBをブートローダーとして使用できます。GRUBを使用したバニラDebianのインストールの例は、たとえばここにあります。
Akeo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.