Eine Sache, die ich schon immer machen wollte, ist mein eigenes Betriebssystem zu entwickeln (nicht unbedingt schick wie Linux oder Windows, aber besser als ein einfacher Bootloader, den ich bereits gemacht habe).
Es fällt mir schwer, Ressourcen / Anleitungen zu finden, die Sie daran hindern, ein einfaches "Hello World" -Betriebssystem zu schreiben.
Ich weiß, dass viele Leute wahrscheinlich empfehlen werden, sich Linux oder BSD anzuschauen. Aber die Codebasis für solche Systeme ist (vermutlich) so groß, dass ich nicht wissen würde, wo ich anfangen soll.
Irgendwelche Vorschläge?
Update: Um es den Nutzern zu erleichtern, die über Google auf diesem Beitrag landen, finden Sie hier einige Ressourcen zur Betriebssystementwicklung:
Schreiben Sie Ihr eigenes Betriebssystem (Danke Adam)
Linux von Grund auf neu (Danke John)
SharpOS (C # Betriebssystem) (Danke lomaxx)
OS Dev Wiki und Foren (Danke Steve)
BonaFide (Danke Steve)
Bran (Danke Steve)
Rollen Sie Ihr eigenes Spielzeug UNIX-Klon-Betriebssystem (Danke Steve)
Andere Ressourcen:
Ich fand eine nette Ressource namens MikeOS : "MikeOS ist ein Lernwerkzeug, um zu demonstrieren, wie einfache Betriebssysteme funktionieren. Es verwendet den 16-Bit-Real-Modus für den BIOS-Zugriff, sodass keine komplexen Treiber benötigt werden."
Aktualisiert am 14.11.08
Ich habe einige Ressourcen in Freebyte's Guide to ... Free und non-free Operating Systems gefunden , die auf Kits wie OSKit und ExOS Library verweisen. Diese scheinen sehr nützlich für den Einstieg in die Betriebssystementwicklung zu sein.
Aktualisiert am 23.02.09
Ric Tokyo hat in dieser Frage Nanoos empfohlen . Nanoos ist ein in C ++ geschriebenes Betriebssystem.
Aktualisiert am 09.03.09
Dinah lieferte einige nützliche Stack Overflow-Diskussionen über aufstrebende Betriebssystementwickler: Roadblocks beim Erstellen eines benutzerdefinierten Betriebssystems erläutern, auf welche Fallstricke Sie beim Entwickeln eines Betriebssystems stoßen können, und die Betriebssystementwicklung ist eine allgemeinere Diskussion.
Aktualisiert am 09.07.09
LB stellte einen Link zum Pintos-Projekt bereit , einem Bildungsbetriebssystem, das für Schüler entwickelt wurde, die die Entwicklung von Betriebssystemen lernen.
Aktualisiert 27.07.09 (Immer noch stark!)
Ich bin auf einen Online-OS-Kurs von Berkley mit 23 Vorträgen gestoßen .
TomOS ist eine Abzweigung von MikeOS , die einen kleinen Speichermanager und Mausunterstützung enthält. Als MikeOS ist es als Bildungsprojekt konzipiert. Es ist in NASM Assembler geschrieben.
Aktualisiert am 04.08.09
Ich fand die Folien und andere Materialien , die zu den oben aufgeführten Online-Vorlesungen in Berkeley passen.
Aktualisiert am 23.08.09
Alle Fragen mit dem Tag osdev on stackoverflow
OS / 161 ist ein in c geschriebenes akademisches Betriebssystem, das auf einer simulierten Hardware ausgeführt wird. Dieses Betriebssystem ist in Nachos ähnlich. Danke Novelocrat!
tangurena empfiehlt http://en.wikipedia.org/wiki/MicroC/OS-II , ein Betriebssystem für eingebettete Systeme. Es gibt auch ein Begleitbuch .
Die Linux-Kernel-Entwicklung von Robert Love wird von Anders vorgeschlagen. Es ist ein "weithin anerkannter Insider-Blick auf den Linux-Kernel".
Aktualisiert am 18.09.2009
Vielen Dank an Tim S. Van Haren, der uns von Cosmos erzählt hat , einem Betriebssystem, das vollständig in c # geschrieben wurde.
tgiphil berichtet über das MOSA-Framework (Managed Operating System Alliance) , "eine Reihe von Tools, Spezifikationen und Quellcode zur Förderung der Entwicklung verwalteter Betriebssysteme auf der Basis der Common Intermediate Language".
Update 24.09.2009
Steve hat einige Ressourcen für die Entwicklung unter Windows mit Visual Studio gefunden. Lesen Sie das Setup des BrokenThorn-Handbuchs mit VS 2005 oder den VS-Abschnitt von OSDev .
Aktualisiert am 05.09.2012
kerneltrap.org ist nicht mehr verfügbar. Das Linux - Kernel v0.01 ist von kernel.org
Aktualisiert 21.12.2012 Ein grundlegendes Tutorial zur Betriebssystementwicklung , das als Semesterprojekt konzipiert wurde. Es führt Sie durch die Erstellung eines Betriebssystems mit grundlegenden Komponenten. Sehr guter Start für Anfänger. Verwandte Artikel . Danke Srujan!
Aktualisiert am 15.11.2013
Ein einfaches Betriebssystem von Grund auf neu schreiben . Danke James Moore!
Aktualisiert am 08.12.2013
Wie erstelle ich ein Computer-Betriebssystem ? Danke ddtoni!
Aktualisiert am 18.03.2014
Aktualisiert am 12. September 2016
Schreiben Sie Ihr eigenes Spielzeug-Betriebssystem
Aktualisiert am 10. Dezember 2016
Schreiben eines einfachen Betriebssystems - von Grund auf neu (danke @Tyler C)
quelle
Antworten:
Nach dieser kurzen Übersicht über das Schreiben eines Betriebssystems für die X86-Plattform gibt es viele Links .
Der vielversprechendste Link (www.nondot.org/sabre/os/articles) ist nicht mehr verfügbar. Sie müssen daher die Archive.org-Version durchsehen , um ihn zu lesen.
Am Ende des Tages nimmt der Bootloader den Maschinencode des Kernels, speichert ihn und springt dorthin. Sie können jeden gewünschten Maschinencode in den Kernel einfügen, aber die meisten C-Programme erwarten ein Betriebssystem. Daher müssen Sie Ihrem Compiler mitteilen, dass er nicht über all das verfügt, oder der Bootloader muss einen Teil davon erstellen.
Der Kernel erledigt dann das ganze schwere Heben, und ich vermute, es ist der Beispielkernel, den Sie wollen. Es ist jedoch ein langer Weg zwischen einem Kernel mit der Aufschrift "Hallo Welt" und einem Kernel, der einen Befehlsinterpreter lädt, Festplattendienste bereitstellt und Programme lädt und verwaltet.
Vielleicht möchten Sie ACM abonnieren, um Zugang zu älterer Literatur zu erhalten. In den frühen 80er und frühen 90er Jahren finden Sie in frühen Computermagazinen zahlreiche Artikel zum Erstellen alternativer Betriebssysteme . Es gibt wahrscheinlich auch Bücher, die aus dieser Zeit vergriffen sind. Möglicherweise können Sie dieselben Informationen kostenlos abrufen, indem Sie die Indexe dieser Magazine (die auf dieser Website verfügbar sind - klicken Sie auf "Index" neben dem Namen des Magazins) nachschlagen und dann nach Personen mit einer Kopie fragen.
Schließlich weiß ich, dass Usenet tot ist (so sagen die Propheten des Internet-Untergangs), aber Sie werden feststellen, dass viele der schroffen alten Experten aus dieser Zeit immer noch dort leben. Sie sollten nach Google-Gruppen suchen (sie haben das alte Repository von dejanews), und ich gehe davon aus, dass Sie vor einem Jahrzehnt oder vor 1,5 Jahren viele Leute finden werden, die dieselben Fragen stellen wie jetzt. Sie können sogar auf Linus Torvalds 'viele Fragen zur Hilfe stoßen, als er ursprünglich Linux entwickelte. Wenn bei Suchvorgängen nichts angezeigt wird, fragen Sie in der entsprechenden Newsgroup nach (beginnt wahrscheinlich mit comp.arch, sucht aber nach Suchanfragen mit Betriebssystem im Namen).
quelle
Minix ist viel kleiner und für Lernzwecke konzipiert, und das dazugehörige Buch ist auch gut.
Update: Ich denke, Minix 3 ist ein etwas anderes Ziel, aber Minix 2 (und natürlich die erste Version) waren für Unterrichtszwecke.
quelle
Tanenbaum book and minix3
mir irgendwann helfen, zum Linux-Kernel beizutragen, wenn ich genug Änderungen an minix3 vornehme?Als jemand, der ein Echtzeit-Multitasking-Betriebssystem von Grund auf neu geschrieben hat ...
Tastaturentprellungsroutine, Tastaturtreiber, Festplattentreiber, Videotreiber, Dateisystem und schließlich ein Bootloader - und das nur, um es zum ersten Mal zu starten, ohne etwas zu tun!
... Ich kann gar nicht genug betonen, wie wichtig es ist, sich mit der Hardware vertraut zu machen! Dies gilt insbesondere dann, wenn Sie wirklich alles selbst erledigen möchten, anstatt nur ein primitives System aufzunehmen, das bereits jemand anderes für Sie ausgelegt hat. Wenden Sie sich beispielsweise an Intel und fragen Sie nach einer CPU-Karte für Ihren CPU-Typ! Dies wird es für Sie auslegen - die "Pin-Outs", Interrupts, Opcodes, Sie nennen es!
Denken Sie daran, dass die Hardware alles möglich macht. Studieren Sie die Hardware. Du wirst es nicht bereuen.
.
quelle
Schreiben Sie ein Mikrocontroller-Betriebssystem. Ich empfehle einen x86-basierten Mikrocontroller. Ein modernes Betriebssystem ist einfach riesig . Lerne zuerst die Grundlagen.
quelle
Ich wünschte, es gäbe einen Ort, an dem Sie alle Informationen zur Entwicklung Ihres eigenen Betriebssystems erhalten könnten. Am nächsten dran sind OS Dev Wiki und Foren . Sie bieten eine Menge guter Informationen zu Setup, Entwicklung und Gerätehardware.
Außerdem gibt es bei BoneFide einige großartige Tutorials . Ich habe das Tutorial für den Einstieg von Bran verwendet und schaue mir jetzt ein neueres an, das auf seinem UNIX-Klon-Betriebssystem Roll your own toy basiert .
Ich checkte zum zweiten Mal aus: "Betriebssysteme: Design und Implementierung"
Und wenn Sie unter Windows entwickeln möchten, lesen Sie den Blog-Beitrag von jolson.Bearbeiten: Informationen zur Entwicklung unter Windows mit Visual Studio finden Sie im BrokenThorn-Handbuch oder im OSDev-Wiki .
quelle
Eine hervorragende Ressource ist das Material des MIT-Kurses 6.828: Operating System Engineering.
XV6 - einfaches Unix-ähnliches Lernbetriebssystem, geschrieben in ANSI C für x86 http://pdos.csail.mit.edu/6.828/2012/xv6.html
XV6-Quelle - als gedruckte Broschüre mit Zeilennummern http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf
XV6 Buch - erklärt die Hauptideen von OS Design http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf
Das Material ist kompakt: 92 Seiten Quelle und 96 Seiten Kommentar.
Ich mag es mehr als das Minix-Buch! Es ist ein wahres Juwel!
quelle
Vielleicht möchten Sie auch einen Blick auf SharpOS werfen , ein Betriebssystem, das in c # geschrieben wird.
quelle
Es gibt gute Ressourcen für die Grundlagen des Betriebssystems in Büchern. Da es nicht viel Zeit gibt, neue Betriebssysteme von Grund auf neu zu erstellen, finden Sie im Internet nicht viele Informationen vom Typ Hobbyist.
Ich empfehle das Standardlehrbuch "Modern Operating Systems" von Tanenbaum. Möglicherweise finden Sie auch "Betriebssystemelemente" von Calingaert nützlich - es ist eine dünne Übersicht über ein Buch, die eine grobe Skizze darüber gibt, was ein Betriebssystem aus der Sicht eines Designers ist.
Wenn Sie Interesse an Echtzeitsystemen haben (und zumindest die Unterschiede und Gründe für Echtzeitbetriebssysteme verstehen sollten), würde ich auch "MicroC / OS-II" von Labrosse empfehlen.
Bearbeiten:
Können Sie angeben, was Sie unter "technischer" verstehen? Diese Bücher enthalten Details zur Implementierung von Pseudocode. Suchen Sie jedoch nach einem Beispielbetriebssystem oder nach Codefragmenten für eine bestimmte Maschine / Sprache?
-Adam
quelle
Ich komme nur von einer anderen Frage. Ich möchte Pintos erwähnen ... Ich erinnerte mich, dass mein Betriebssystemkurs mit Nachos und Pintos die gleiche Art von Dingen zu sein scheint, die auf x86 ausgeführt werden können.
quelle
Ich fand die Linux-Kernel-Entwicklung von Robert Love ziemlich interessant. Hier erfahren Sie, wie die verschiedenen Subsysteme im Linux-Kernel sehr bodenständig funktionieren. Da die Quelle verfügbar ist, ist Linux ein Hauptkandidat für etwas, auf das man sich hacken kann.
quelle
Hier sind einige andere Stapelüberlaufseiten, die es wert sind, in diese Diskussion einbezogen zu werden:
Hindernisse beim Erstellen eines benutzerdefinierten Betriebssystems
Entwickeln eines Betriebssystems für die x86-Architektur
quelle
In meinem Bachelor-Studiengang für Betriebssysteme haben wir eine Reihe von Subsystemen für OS / 161 erstellt , einen einfachen, BSD-ähnlichen Kernel, der einige der Grundlagen bietet und gleichzeitig die Freiheit lässt, verschiedene Entscheidungen zum Entwurfsraum bei der Implementierung übergeordneter Dienste zu untersuchen.
quelle
Fangen Sie an, sich bei Minix zu hacken. Es ist viel kleiner als Linux (offensichtlich) und wurde für Unterrichtszwecke entwickelt (zumindest einige). Nicht Minix 3, das ist eine ganz andere Geschichte.
quelle
Ich antworte bereits, aber als ich im College Betriebssysteme studierte, begannen wir mit einem frühen Linux-Kernel und fügten vereinfachte moderne Funktionen hinzu (grundlegende Dateisysteme, virtueller Speicher, Multitasking, Mutexe). Viel Spaß. Sie können einige der WIRKLICH verrückten Low-Level-Assembly-Dinge überspringen, die nur zum Mucking mit geschütztem Modus und Seitentabellen gedacht sind, während Sie noch einige der Eingeweide gelernt haben.
http://kerneltrap.org/node/14002 http://kerneltrap.org/files/linux-0.01.tar.bz2
quelle
Vielleicht möchten Sie sich linuxfromscratch ansehen .
quelle
Ein einfaches und grundlegendes Tutorial zur Betriebssystementwicklung , das als Semesterprojekt konzipiert wurde. Es führt Sie durch die Erstellung eines Betriebssystems mit grundlegenden Komponenten. Sehr guter Start für Anfänger. Zugehöriges Papier ist hier .
quelle
Ich möchte dieses Repo How-to-Make-a-Computer-Betriebssystem von Samy Pesse aufnehmen. Ist in Arbeit. Sehr interessant.
quelle
Ein relativ einfach zu untersuchendes Betriebssystem wäre µC / OS. Das Buch hat eine Diskette mit der Quelle.
http://en.wikipedia.org/wiki/MicroC/OS-II
quelle
Schauen Sie sich das MOSA-Projekt (Managed Operating System Alliance) unter www.mosa-project.org an . Sie entwerfen einen AOT / JIT-Compiler und ein vollständig verwaltetes Betriebssystem in C #. Einige der Entwickler stammen aus dem inaktiven SharpOS-Projekt.
quelle
Ich habe mit Cosmos gespielt , einem "Betriebssystemprojekt, das vollständig in CIL-kompatiblen Sprachen implementiert ist". Es ist in C # geschrieben, also war das genau das Richtige für mich. Für jemanden wie mich, der noch nie versucht hat, ein Betriebssystem zu erstellen, war es eigentlich ziemlich cool, ein "Hello World" -Betriebssystem in kürzester Zeit zum Laufen zu bringen.
quelle
Schauen Sie sich diese Site an: http://osix.net/modules/article/?id=359
quelle
Wie oben erwähnt, ist das OSDev-Wiki (bei weitem) die beste Quelle für die Betriebssystementwicklung. Für diejenigen unter Ihnen, die Deutsch sprechen, ist das lowlevel.eu Wiki auch großartig. Etwas relativ unbekanntes Incitatus-Betriebssystem , ein einfacher Kernel mit einer winzigen Anzahl von Userspace-Apps. Es ist großartig, um in das komplizierte Thema der Betriebssystementwicklung einzusteigen.
quelle
Movitz ist eine Lisp-Umgebung, die in Common Lisp geschrieben ist und "on the metal" läuft. Leider verweigern einige Links auf der Movitz-Hauptseite den Zugriff, aber Sie finden Anweisungen zum Herunterladen und Kompilieren des Quellcodes von der Trac-Seite . Ein fertiges Bild finden Sie auch im Archiv dieser Seite .
IMHO ist dies äußerst interessant, da es das Lisp-Maschinenkonzept auf der derzeit verfügbaren Hardware zurückbringt . Es ist kommerziell gescheitert, aber das beweist mir nicht, dass die Idee schlecht war.
Das Unix -Hasserhandbuch ist ein unterhaltsames Buch, das das Konzept von Unix und seinen Derivaten halb ernsthaft kritisiert. In vielen Abschnitten wird darüber gestritten, wie besser das Lisp-Maschinenkonzept war.
quelle
Hier ist ein Artikel mit dem Titel " Ein einfaches Betriebssystem von Grund auf neu schreiben ". Es behandelt das Schreiben eines Bootloaders, das Aufrufen des x86-32-geschützten Modus und das Schreiben eines grundlegenden Kernels in C. Es scheint gute Arbeit darin zu leisten, alles im Detail zu erklären.
quelle
Der x86 JS-Simulator und der ARM-Simulator können auch sehr nützlich sein, um zu verstehen, wie verschiedene Teile der Hardware funktionieren, und um Tests durchzuführen, ohne Ihren bevorzugten Browser zu verlassen.
quelle
Interessante Frage an die Programmierer. Es wird lange dauern, bis ein Betriebssystem wie Windows oder Mac erstellt ist. Wenn Sie jedoch ein einfaches Betriebssystem erstellen möchten, können Sie Ihr Bestes geben
Jetzt haben Sie den Master-Abschluss (nicht nur noch ein bisschen mehr) in der Erstellung von Betriebssystemen erworben. Verteilen Sie dieses Wissen nun an Ihre Freunde und versuchen Sie mit deren Hilfe, ein Betriebssystem zu erstellen, das so leistungsfähig ist wie Mac, Linux oder Windows
quelle
Wenn Sie ein Basisbetriebssystem erstellt haben, ist es tatsächlich schwierig, fortzufahren, da es nicht viele Ressourcen zum Erstellen von GUIs oder zum Portieren von Bibliotheken gibt. Aber ich denke, ein Blick auf ToAruOS würde viel helfen!
Der Code unter der Oberfläche dieses Betriebssystems ist so verdammt einfach! Gleichzeitig hat er Dinge wie cairo, python (noch nicht aber bald) sdl portiert, Speicher freigegeben und sein eigenes Widget-Toolkit erstellt. Es ist alles in C geschrieben.
Ein weiteres interessantes Betriebssystem wäre pedigreeOS . Es wurde von JamesM erstellt (dem Mann hinter dem Kernel-Tutorial von jamesM . Es hat zwar mehr Funktionen als ToaruOS, ist aber auch größer und verwirrender.
Aber trotzdem werden diese 2 Betriebssysteme Ihnen sehr helfen, besonders ToAruOS.
quelle
Als ich anfing, an meinen grundlegenden Betriebssystemen zu arbeiten, brauchte ich eine grundlegende Anleitung wie Sprungbrett für ein grundlegendes Betriebssystem . Es half mir, meinen Kopf nicht zu verlieren.
Das, wenn Sie es aus absolut nichts machen wollen (reiner Assembler-Code)
quelle