2010-05-10 3 views
25

Ich möchte ein neues Betriebssystem für x86 PC-Computer erstellen. Ich möchte, dass es 64-Bit ist, aber möglicherweise auch als 32-Bit ausgeführt wird.So erstellen Sie Ihr eigenes x86-Betriebssystem für moderne PC-Computer

Ich habe diese Art von Fragen:

Welche Arten von Dingen soll man anfangen auf den ersten zu arbeiten? Zu wissen, wo ich mit dem Schreiben eines eigenen Betriebssystems anfangen soll, scheint mir ein heikles Thema zu sein, deshalb bin ich an Ihrer Eingabe interessiert.

Im Allgemeinen, wie Sie Ihr eigenes 32-Bit/64-Bit-Betriebssystem machen, oder gute Ressourcen, die nützliche Informationen über das Schreiben Ihres eigenen Betriebssystems für x86-Computer erwähnen. Es ist mir egal, wie alt Quellen sind, solange sie für das, was ich mache, relevant und nützlich sind.

Ich weiß, dass ich will, dass es Kerneltreiber hat, die direkt auf Peripheriegeräte zugreifen. Wo sollte ich nach Rat und Dokumentation suchen, um die Schnittstelle zu Peripheriegeräten zu programmieren und zu verstehen, mit denen das Betriebssystem kommuniziert? Ich muss verstehen, wie das Betriebssystem Eingaben erhält und mit Tastaturen, Mäusen, Computermonitoren, Festplatten, USB usw. interagieren. Dies ist wahrscheinlich der Bereich, von dem ich am wenigsten weiß.

Ich habe die Intel Befehlssatz Handbücher und habe mehr vertraut mit Assembly-Programmierung, so dass die CPU-Seite der Dinge ist, was ich am meisten kenne.

An dieser Stelle denke ich, dass ich die Linux-Systemaufrufe innerhalb meines Betriebssystems implementieren möchte, so dass Programme, die auf Linux ausgeführt werden, auf meinem Betriebssystem ausgeführt werden können. Ich möchte, dass mein Betriebssystem das ELF-Binärformat verwendet. Ich frage mich, welche Hindernisse ich überwinden muss, um diese Linux-Kompatibilität zu erreichen. Sind die Hauptsachen, die die Systemaufrufe implementieren, die Linux bereitstellt, und das ELF-Format zu verwenden? Was sonst?

Ich interessiere mich auch für die Gedanken der Leute darüber, warum es nicht eine gute Idee ist, Ihr eigenes Betriebssystem zu machen, und warum es eine gute Idee ist, Ihr eigenes Betriebssystem zu machen.

Vielen Dank für jede Eingabe.

+2

Ähnlich wie http://stackoverflow.com/questions/1224617/how-can-i-build-a-small-operating-system-on-an-old-desktop-computer –

+7

Es ist schön, kein "don Versuch es nicht einmal, es ist zu schwer! Antworten. –

+2

Wenn Sie nach Code suchen, um zu beginnen, lesen Sie [dieses minimale Betriebssystem] (http://stackoverflow.com/a/6143888/309483). –

Antwort

13

Sie möchten es wahrscheinlich zunächst nur in einer virtuellen Maschine ausführen. Es ist ein PITA, der versucht, ein Betriebssystem auf der tatsächlichen Hardware zu entwickeln (mit dem ständigen Neustart und dem Debugging-über-Seriell-Kabel).

In einer VM haben Sie normalerweise eine vereinfachte (und relativ standardisierte) Hardware zur Unterstützung, die auch die anfängliche Entwicklung erleichtern kann. Insbesondere, wenn Sie jemand anderem Ihr Betriebssystem zeigen möchten, geben Sie ihm einfach eine .vhd-Datei und sind einigermaßen zuversichtlich, dass, wenn es für Sie funktioniert, es auch für sie arbeiten wird.

Sie möchten vielleicht auch mit etwas beginnen, das bereits & läuft zunächst (zum Beispiel Microsofts Singularity ist ziemlich ordentlich). Damit können Sie den langweiligen Bootloader und die grundlegenden Gerätetreiber aus dem Weg schaffen und schneller auf die "fleischigen" Sachen zugreifen.

+1

Ehrfürchtig.Ein Emulator wie Bochs http://bochs.sourceforge.net/? – mudge

+1

Bochs ist sehr beliebt unter OS devers, yeah. VMWare, Virtual PC und VirtualBox würden ebenfalls ausreichen (obwohl Bochs große Unterstützung für OS-Debugging hat) –

+0

Ich habe Qemu als schnellere und einfach zu scriptierende Alternative zu Bochs gefunden. Bochs wird entweder zur Laufzeit (nervig, wenn Sie es häufig ausführen, wie nach jedem Update) oder mit einer Konfigurationsdatei konfiguriert. Persönlich mag ich es nicht, Konfigurationsdateien zu verwenden. Sie erhalten mehr Debug-Informationen, besonders wenn Sie es selbst mit aktiviertem Debugging selbst erstellen. Qemu hingegen kann über die Befehlszeile konfiguriert werden. Auch Bochs ist ein Emulator, während Qemu eine JIT-basierte virtuelle Maschine ist. Es ist ein Kompromiss in beide Richtungen. – Tyler

4

Sie werden verschiedene Arten von Descriptor Tabellen implementieren müssen, um 32-Bit-Modus zu aktivieren. Das Aktivieren von Multithreading ist keine einfache Aufgabe und wird mit ziemlicher Sicherheit vorausgesetzt. Wahrscheinlich möchten Sie auch die Dateisystemunterstützung früh genug entwickeln, um ein Diskettenimage oder das, was Sie gerade verwenden, zu entfernen.

Ich bin sicher, dass Sie in der Vergangenheit auf diese Website in der Vergangenheit http://wiki.osdev.org/Main_Page gestoßen sind, aber es hat eine Menge toller Artikel.

Sie könnten dieses Buch auch nützlich für die Stufe der Entwicklung finden Sie unter: The Indispensable PC Hardware Book es geht sehr ins Detail und hat viele Diagramme, sowie einige Code-Schnipsel.

6

Ich würde empfehlen, zuerst ein kleines OS wie Minix1 zu studieren, das für Bildungszwecke oder Minix3 gebaut wurde, die POSIX-kompatibel ist.

20

Es ist besser, dass Sie sich Linux 0.01 Quellcode ansehen. Es ist die erste Version des Betriebssystems. es ist sehr einfach und informativ. Es ist ein guter Ausgangspunkt

1

Beginnen Sie mit einem Bootloader, lernen Sie, wie Sie eine Speicherkarte erstellen, scannen Sie den PCI-Bus, initialisieren Sie verschiedene Chips wie den APIC und wechseln Sie in den geschützten Modus.

Ein Sie haben die Anfänge eines Kernels geladen, versuchen, schreiben Routinen, die auf den Bildschirm ausgegeben werden, lesen von der Tastatur, bekommen einen einfachen Debugger gehen, gefolgt von einem physischen Speichermanager und dann einem virtuellen Speichermanager. Die letzten beiden können nicht lange aufgeschoben werden, weil jedes Programm, einschließlich des Betriebssystems, eine Möglichkeit benötigt, Speicher geordnet zuzuordnen und freizugeben.

1

Nur um einen neuartigen Vorschlag zu bieten ... man könnte den Bootloader auf eine USB oder RW CD abbilden und dann den Computer anweisen, diesen als primäres Gerät zu benutzen. Ich habe Vista installiert und ich stecke einfach einen USB mit dem Bootloader und der kernel.bin Datei an, um mein Spielzeug OS zu testen. Stellen Sie sicher, dass Sie dasselbe Gerät zum Speichern zusätzlicher Dateien oder zusätzlicher Extras verwenden, damit Ihre Festplatte nicht beschädigt wird. Wenn dein Betriebssystem alle notwendigen Voraussetzungen erfüllt, kaufe einen Junk-Computer, installiere dein Betriebssystem und erweitere es von dort.

1

https://github.com/rajneshrat/ratos

Dies ist die minimalen os mit folgenden Stütz- Vernetzung, vm Unterstützung, Interrupt-Unterstützung, Pci Unterstützung.

+0

Ich habe dieses Betriebssystem nicht getestet. Können Sie ein Standard-Disketten-Image für diejenigen bereitstellen, die es sehen möchten, bevor Sie versuchen, eine eigene Version zu erstellen? – ssh

2

Wenn Sie Ihr eigenes Betriebssystem entwickeln möchten, ist Ihr bester erster Schritt, im osdev forum zu looten (http://forum.osdev.org/), und haben Sie eine gute Lektüre ihres Wikis: http://wiki.osdev.org/Main_Page.

Ich habe die Leute dort gefunden, um nicht nur sachkundig, sondern auch unglaublich hilfreich zu sein, sie werden sogar Fehler in Ihren Codeausschnitten aufzeigen!

Ich begann mit dem x86-Tutorial von James Molloy (google it Ich darf diesen Link nicht posten). Sie können mit seinem Code beginnen und dann hacken, hacken, hacken :-).

+0

Beachten Sie, dass James Molloy Tutorial ist fehlerhaft. Weitere Informationen finden Sie unter http://wiki.osdev.org/James_Molloy_Tutorial_Known_Bugs. – glauxosdever

Verwandte Themen