この質問への遅い回答ですが、その間に発見されなかった場合は、次の点を追加できます。
たぶん、OS開発にとってEFIが何を意味するのか説明してください
実際、多くはありません。まあ少しかもしれません。わかりました、説明しましょう。UEFI は、起動前段階のファームウェア環境を提供します。また、オペレーティング システムにいくつかのランタイム サービスを提供しますが、最終的には UEFI ファームウェアではなくオペレーティング システムがシステムを駆動することが予想されます。これらのサービスにより、ブート構成に関連するさまざまなアクティビティを実行できます。
利点は、たとえばマルチブート 2に準拠するブートローダーを使用する準備ができている場合、実際に UEFI について何も知る必要がないことですExitBootServices()
。ファームウェア環境。
EFI スタブを持つ Linux カーネルを生成することは可能であり、したがってブートローダーを「使わずに」起動します -このブログではその方法を示します。カーネルに対してこれを行うことができます - ファームウェアのビット数に一致する PE/COFF カーネルを生成する必要があるだけです。
そして、私ができるテスト環境(できれば仮想)を教えてください
VMWare Workstationを購入する余裕がある場合、これは非常に役立ちます。任意の部分をデバッグできるように gdb スタブを含めるだけでなく、仮想マシン定義ファイル (*.vmx) を編集して含めることもできます。
firmware="efi"
出来上がり、VMWare は完全に機能する UEFI 環境を起動します。Linux および Windows で動作します。
インターネット上のさまざまな投稿で、QEMU のセットアップと、もちろん VirtualBox について言及されています。VirtualBox EFI プラットフォームで既存のシステムを個人的に正常に起動したことはなく、QEMU を試したこともありませんが、QEMU や他のさまざまなエミュレーターはおそらく動作すると思います。
また、ARMアセンブリを調べるのに時間を費やす必要がありますか?
それはあなたの目的に依存します。アセンブリの問題については、OS を作成するために知っておく必要があると思います。どのプラットフォームで作成するかは問題ではないと思います。実際、複数のプラットフォームで作成すると、マシン間の違いがより理解できるようになると思います。
ただし、一般的に、アセンブリで OS 全体を記述しようとはしません。これの主な理由は時間です。これは趣味のプロジェクトだと思います。そのため、特に慣れていないアセンブリのデバッグに苦労するよりも、多大な努力に対して報酬を得る方がはるかに楽しいものになるでしょう。特に、コードの残りの部分をテストするのに十分な量がある場合は特に、習熟度が上がるにつれて、選択ビットをアセンブラーに置き換えることができます。