Gibt es eine Open Source-Software zum Simulieren und virtuellen Programmieren eines Computer-BIOS?

7

Ich suche eine Open-Source-Software wie Virtual-Box, die ich unter Linux ausführen kann, aber die Möglichkeit bietet, das BIOS zu programmieren (verwenden Sie ein persönliches BIOS-Programm).

Ich möchte (auf praktische Weise) den Prozess des Hochfahrens des Computers verstehen und den x86-Real-Modus genauer manipulieren. Ich möchte auch die verschiedenen Mechanismen für die Kommunikation mit den Peripheriegeräten verstehen, dh die Steuerung von Geräten wie der Tastatur und der Festplatte, sowie die E / A-Modi und Interrupts.

Karim Manaouil
quelle
2
Das Programmieren Ihres eigenen BIOS ermöglicht weder eine tiefere Manipulation des Real-Modus noch ist es besonders hilfreich, die Mechanismen der Kommunikation mit Peripheriegeräten zu verstehen. Es wird nicht einmal ein vollständiges Verständnis dafür liefern, wie echte Computer gestartet werden, es sei denn, Sie schreiben tatsächlich ein BIOS für einen echten Computer. Es gibt viele Dinge, die ein BIOS auf einem virtuellen PC nicht tun muss, die ein BIOS auf einem realen PC tun muss.
Ross Ridge
Der Quellcode von SeaBIOS (Legacy) und edk2 (UEFI) ist verfügbar. Habe Spaß!
Michael Hampton
Möglicherweise interessieren Sie sich für Softwareempfehlungen . Wenn diese Frage hier nicht zum Thema gehört, wird sie wahrscheinlich dorthin migriert.
wizzwizz4

Antworten:

15

Es gibt mehrere Emulatoren für virtuelle Maschinen, die einen x86-Prozessor und Peripheriegeräte emulieren können. Jedes verfügt über ein BIOS, einige davon über ein Open-Source-BIOS. Sie sollten sich QEMU ansehen , das völlig unabhängig vom Host arbeitet (es kann auf jedem Computer ausgeführt werden, verfügt jedoch über Mechanismen, um schneller ausgeführt zu werden, wenn der emulierte Computer dieselbe Architektur wie der Host aufweist). QEMU wird mit PC-BIOS geliefert .

Wenn Sie im x86-Real-Modus arbeiten möchten, können Sie sich auch Dosbox ansehen .

Coreboot sollte auch für Sie von Interesse sein. Es ist ein Open Source BIOS für x86.

Wenn Sie sich ein BIOS ansehen, erhalten Sie einige Einblicke in das Booten eines x86-Prozessors, einschließlich aller Macken, die aus mehr als 30 Jahren Geschichte stammen und deren Hardwarefunktionen erheblich weiterentwickelt wurden. Es ist nicht das Beste, sich anzusehen, ob Sie verstehen möchten, wie Sie mit Peripheriegeräten kommunizieren. Schauen Sie sich dazu die Gerätetreiber in einem Betriebssystemkern an - entweder Linux oder einfachere wie MINIX 3 .

Ich würde auch empfehlen, einen Blick auf andere CPU-Architekturen wie ARM und MIPS zu werfen, damit Sie eine Vorstellung davon bekommen, was bei Betriebssystem- / Hardware-Interaktionen üblich ist und was für die PC-Architektur spezifisch ist.

Gilles 'SO - hör auf böse zu sein'
quelle