Eine späte Antwort auf diese Frage, aber ich kann die folgenden Punkte hinzufügen, wenn Sie sie in der Zwischenzeit nicht entdeckt haben:
Vielleicht erklären, was EFI bedeutet OS Entwicklung
Eigentlich nicht viel. Nun, vielleicht ein bisschen. Okay, lass uns das erklären. UEFI stellt die Firmware-Umgebung für eine Pre-Boot-Phase bereit. Es bietet auch einige Laufzeitdienste für das Betriebssystem, es wird jedoch erwartet, dass das Betriebssystem, nicht die UEFI-Firmware, das System letztendlich antreibt. Mit diesen Diensten können Sie verschiedene Bootkonfigurationsaktivitäten ausführen - example.
Der Vorteil ist, dass, wenn Sie bereit sind, einen Bootloader zu verwenden, die multiboot 2 Sie nicht wirklich wissen müssen, etwas über UEFI zu sagen, entspricht - der Bootloader geladen werden Sie am nach der Multi-Boot-Spezifikation, dann ExitBootServices()
nennt die in UEFI-Begriffe zerstören die Firmware-Umgebung.
Es ist möglich, einen Linux-Kernel zu erzeugen, der einen EFI-Stub besitzt und daher "ohne" einen Bootloader bootet - this blog shows you how. Sie können dies für Ihren Kernel tun - Sie müssen lediglich einen PE/COFF-Kernel erzeugen, der der Firmware-Bitness entspricht.
und sagen Sie mir vielleicht, welche Testumgebungen (vorzugsweise virtuell) Ich kann uns
Wenn Sie VMWare Workstation sich leisten können, das Sie massiv helfen. Sowie einen GDB Stub enthält, so dass Sie einen Teil etwas debuggen können, können Sie auch die virtuelle Maschine Definitionsdateien (* .vmx) bearbeiten
firmware="efi"
enthalten und voila, wird VMWare eine voll funktionsfähige UEFI booten Umgebung. Funktioniert mit Linux und Windows.
Verschiedene Beiträge im Internet erwähnen QEMU-Setups und natürlich VirtualBox. Ich habe nie persönlich erfolgreich irgendein existierendes System auf der VirtualBox EFI-Plattform gebootet, und ich habe QEMU noch nicht ausprobiert, obwohl ich glaube, dass es und die verschiedenen anderen Emulatoren da draußen wahrscheinlich funktionieren.
Auch sollte ich investieren Zeit in ARM Montage suchen?
Das hängt von Ihren Zielen ab. Bei der Frage der Assembly sollte man es wissen, um ein OS zu schreiben. Ich denke nicht, dass es wichtig ist, für welche Plattform du schreibst - in der Tat denke ich, dass das Schreiben für mehrere dich die Unterschiede zwischen Maschinen wertschätzender machen wird.
Im Allgemeinen würde ich jedoch nicht versuchen, ein gesamtes Betriebssystem in Assembly zu schreiben. Der Hauptgrund dafür ist Zeit - ich nehme an, dies ist ein Hobby-Projekt, so dass etwas Belohnung für Ihre umfangreichen Bemühungen viel lustiger sein wird, als es zu versuchen, Montage zu debuggen, besonders für Sie, die Sie nicht kennen. Sie können immer, wenn Sie kompetenter werden, die Auswahlbits durch Assembler ersetzen, besonders da Sie genug vom Rest des Codes haben, um es zu testen.