webentwicklung-frage-antwort-db.com.de

Ich schreibe mein eigenes BIOS

Ich bin nicht verrückt, nur das Rad neu zu erfinden: D
Ich habe Bootloader, Mini-Treiber für Maus und Tastatur, Mini-Betriebssysteme usw. geschrieben.

Ich versuche immer, DOS-Interrupts zu vermeiden, indem ich nur BIOS-Interrupts verwende und versuche, ein Unity-Mini-Betriebssystem voranzutreiben, aber plötzlich habe ich beschlossen, mein eigenes BIOS zu schreiben :)

Die Legende sagte:
Ich war ein High-Level-Programmierer, dann ein Low-Level-Programmierer. Eines Tages werde ich maschinensprachiger Programmierer sein!

Ist ein BIOS in Assembly geschrieben? Wie kann ich es flashen? Was ist der Mechanismus? Kann ich mein aktuelles BIOS bearbeiten?

32
Ahmed Ghoneim

Ein BIOS kann in Assembly geschrieben werden, muss es aber nicht sein. Einige Teile müssen die Parameter für den Systemaufruf abrufen, da sie nicht mit der Aufrufkonvention des Compilers übereinstimmen.

Wie flashen Sie es? Variiert von Motherboard zu Motherboard, ich würde mit einer virtuellen Open-Source-Maschine beginnen und ein BIOS dafür schreiben. Oder erstellen Sie eine virtuelle Maschine, in der Sie das BIOS geschrieben haben. Der Mechanismus ist von Hersteller zu Hersteller unterschiedlich, im Allgemeinen booten Sie DOS (DOS ist nicht tot, es ist sehr lebendig in der PC-Welt, insbesondere in der Motherboard-Entwicklung und in eingebetteten Systemen). Ich würde nicht mit einem echten Motherboard herumspielen, wenn Sie nicht bereits die Antworten auf all diese Fragen kennen, werden Sie eine Reihe von Motherboards ziegeln, wenn Sie diesen Weg einschlagen.

Sie können versuchen, ein BIOS-Upgrade für Ihr Motherboard vorzunehmen und es rückzuentwickeln (obwohl es wahrscheinlich eine Durchklickvereinbarung gibt, die besagt, dass Sie dies nicht tun). Wenn Sie es herausfinden, können Sie es laden und an an hacken. Ich würde da nicht hingehen, du wirst dein System ziegeln, bevor du es herausfindest.

Ist das Schreiben eines BIOS wirklich das, wonach Sie suchen? Ziemlich alte Schule, wäre wie das Schreiben von 6502-Code zum Spaß. Es gibt viele Probleme auf niedriger Ebene, die nützlicher und ebenso interessant sind.

Wenn Sie so schreiben können, dass der Code der Schreibmaschine gar nicht so schwer ist, können Sie das einfach zum Spaß tun. x86 ist furchtbar, Sie sollten einige Zeit damit verbringen, andere Systeme und deren ASM- und Maschinencode zu erlernen (und Betriebssysteme für sie zu schreiben). ARM dominiert die Welt und ist nicht auf ein BIOS angewiesen. Mir wurde gesagt, dass man immer noch etwas in x86 auf dem x86 fummeln muss, um eine Grafikkarte auf einem Nicht-x86-System zu installieren Bios, könnte herausfinden, wie man eine Mainstream-Grafikkarte aufruft, ohne das x86-Bios ausführen zu müssen. Beobachte einen Emulator, der das Bios ausführt und sehe, was es tut. Das Schreiben eines Befehlssatz - Simulators oder - Disassemblers ist der nächste Schritt über das Schreiben von Maschinencode hinaus. Ich würde jedoch nicht einmal eine Sekunde Zeit mit x86 verschwenden. Ich kann eine Liste von Alternativen vorschlagen (oder Sie könnten einfach mit den von mir geschriebenen Simulatoren oder spielen) gesammelt).

Wenn Sie ein x86-BIOS verwenden möchten, ist es am besten, ein BIOS für eine virtuelle Maschine wie qemu, virtualbox oder eine andere zu schreiben, zu ersetzen oder zu hacken. Das Ersetzen dieses BIOS durch Ihr BIOS würde wahrscheinlich das Ersetzen einer Datei in einem Verzeichnis oder die Verwendung einer Befehlszeilenoption zum Angeben eines alternativen BIOS bedeuten. Wenn Sie sich damit gut auskennen, können Sie sich vielleicht in die Programmierung eines Motherboards einschleichen, wenn es noch Motherboards mit älteren BIOS-Versionen gibt (Sie müssen mehrere von jedem Motherboard-Typ kaufen, während Sie einige vorbereiten). Bei so vielen Embedded-Systemen, die für 20 bis 200 US-Dollar mit der gleichen Erfahrung erhältlich sind, ist es nicht sinnvoll, ein PC-Motherboard ohne vernünftige Schaltpläne und Dokumentation zu hacken. Sie könnten einen Original-PC ausgraben, auf dem die Schaltplan- und BIOS-Liste dokumentiert und das BIOS gesockelt ist. Wenn Ihr PC also nicht bootet (und das Motherboard nicht zerstört), können Sie das BIOS nicht neu programmieren oder ersetzen Chip. Vielleicht möchten Sie einen Mikrocontroller als falsches BIOS einsetzen, da es möglicherweise schwieriger ist, die richtige Hardware zu finden, um mehr BIOS-Chips neu zu programmieren, als bei Original-PCs ... Es gibt eine Amiga-Community, die wahrscheinlich viel mehr Spaß macht und dies auch tun würde Seien Sie froh, dass Sie Ihr BIOS verbessern/optimieren, indem Sie beispielsweise moderne Hardware hinter die alten Systemaufrufe stellen.

24
old_timer

Wenn Sie ein BIOS für einen IBM PC-kompatiblen Computer schreiben möchten (wie es die meisten Desktop-PCs heute sind, wenn auch mit mehr Erweiterungen des CPU-Befehlssatzes und einigen verschiedenen BUS-Schnittstellen), sollten Sie sich die folgenden IBM PC, IBM PC XT und IBM PC AT Technical Reference Manuals. Insbesondere das IBM PC AT Manual, wie das ist, was der De-facto-Standard ist.

Diese Handbücher enthalten eine Programmliste des vollständigen BIOS, das IBM auf ihren Computern verwendet hat, und sie sind in Assemblersprache. Möglicherweise müssen Sie diese Handbücher ein wenig durchgehen (insbesondere den IBM-PC AT= eins)), um sie zu finden, da einige nicht direkt im Inhaltsverzeichnis aufgeführt sind, sie aber vorhanden sind. Hoffentlich können Sie mit diesen BIOS loslegen.

1
SeanRamey

Das BIOS kann in jeder Ihrer Lieblingssprachen geschrieben werden, obwohl niedrigere Sprachen Ihnen mehr Kontrolle geben. Baugruppen- und Maschinencode sind fast gleich, der Unterschied besteht in der Mikrocode-Schnittstelle und der Eingabe, z. Für Maschinencode würden Sie nur 2 Zeichen eingeben, und Assembly gibt Ihnen alphanumerische Zeichen. Meine Suche nach einem benutzerdefinierten BIOS begann, als ich alle paar Stunden einen Computer zum Hochfahren benötigte und kein BIOS gefunden habe, das dies tut.

Befolgen Sie zum Flashen des BIOS die Richtlinien des Herstellers. Das BIOS wurde jetzt durch UEFI ersetzt (für zusätzliche Sicherheit). Checkout: https://www.pcworld.com/article/187437/how-to-update-your-bios.html

referenz zu x86- und AMD64-Anweisungen: https://www.felixcloutier.com/x86/
x86-Anweisungen mit Erweiterungen: https://en.wikipedia.org/wiki/X86_instruction_listings
i386 Anweisungsreferenz: https://css.csail.mit.edu/6.858/2014/readings/i386.pdf
x86 Assembly Guide: https://www.cs.virginia.edu/~evans/cs216/guides/x86.html
Intel Instruction Set Ref: https://software.intel.com/sites/default/files/managed/a4/60/325383-sdm-vol-2abcd.pdf

1
Zimba

FWIW Modbin ist ein DOS-Programm, das, wie der Name schon sagt, BIN-Images modifiziert, um sowohl einfache als auch ziemlich extreme Änderungen am vorhandenen BIOS-Code vorzunehmen.

Wenn Sie einen alten Mobo bekommen können (viele sind weggeworfen und arbeiten noch), würde ich Sie ermutigen, mit dem BIOS herumzuspielen. Es ist informativ und macht Spaß, wenn man so geneigt ist und Sie scheinen zu sein :) Es gab eine Zeit, in der ich BIOS-Images von Mobos heruntergeladen habe, die die gleichen oder ähnlich genug Chipsätze hatten, obwohl sie von einem anderen Hersteller hergestellt wurden ... manchmal mit erheblichem Vorteil, einschließlich B. weiterhin BIOS-Updates zu erhalten, nachdem der ursprüngliche Mobo-Hersteller den Ball fallen gelassen oder sich in die Knie gezwungen hat, aber auch funktions- und leistungsorientierte Optionen und Änderungen.

Dies führte zu "HOT Flashing", bei dem ein gesockelter BIOS-Chip so hochgezogen wird, dass die Stifte gerade noch Kontakt haben und einmal hochgefahren wurden. Dabei wurde dieser gezogen und ein fehlerhafter ersetzt (oft ein, den ich gefickt hatte), während er noch ausgeführt wurde und unter Verwendung von Flashing die zwischengespeicherte BIOS-Funktion, die das System aktiv gehalten hat. Unterhaltsame Dinge für diejenigen von uns, die von Geeks überzeugt sind, und die mir das Selbstvertrauen gaben, Gerätetreiber für OS/2 zu schreiben

1
Jmes Hanley

Es gibt andere Möglichkeiten, das BIOS zu flashen, als den PC möglicherweise laufen zu lassen. Dafür ist jedoch etwas Hardware erforderlich. Sollte aber nicht sehr teuer sein.

Sie könnten so etwas ausprobieren: http://hackaday.com/2010/11/18/build-your-own-soic-progamming-clip/

Diesen Vortrag habe ich heute gesehen: https://conference.hitb.org/hitbsecconf2015ams/sessions/how-many-million-bioses-would-you-like-to-infect/

Es hat es ausführlicher erklärt, obwohl Sie möglicherweise nicht nach einer Infektion suchen, werden einige Techniken zum Erreichen des BIOS behandelt, wobei der Programmierclip einer davon ist.

0
hallo