Hallo allerseits, dieses Tutorial soll eine aktualisierte Erweiterung vorhandenen Tutorials sein, die sich mehr auf die 64-Bit-X86_64-Architektur konzentriert. Es soll nicht eine Einführung in C oder Montage sein, also möchten Sie diese vielleicht zuerst an anderer Stelle lernen. Wir haben unser Bestes getan, um alles richtig zu dokumentieren. Wenn Sie also etwas nicht verstehen, müssen Sie möglicherweise ein paar Kapitel zurückgehen.
Es ist noch nicht vollständig, aber es ist zu einem Punkt, an dem wir das Gefühl hatten, dass es hilfreich sein könnte.
Dieses Tutorial richtet sich an Personen, die ein allgemeines Verständnis für C und Versammlung haben, aber nicht unbedingt Computerexperten sind. Es ist so konzipiert, dass es so zugänglich wie möglich ist, sodass es sich möglicherweise manchmal so anfühlt, als ob wir einige Konzepte erläutern (und das ist in Ordnung). Wenn Sie jedoch hoffnungslos verloren sind, lassen Sie es uns bitte wissen. Wir haben dieses Projekt erstellt, weil uns die Gatekeeping in der OS -Entwicklung nicht gefallen hat, und wir würden uns freuen, unsere Erklärungen zu ändern oder Sie auf eine andere Ressource zu verweisen, die möglicherweise hilfreicher ist.
Wenn Sie zu diesem Projekt beitragen oder etwas Eigene hinzufügen möchten, senden Sie bitte eine Pull -Anfrage. Ich werde versuchen, alle so schnell wie möglich zu ihnen zu gelangen :)
In diesem Tutorial wird die LLVM Compiler Suite einschließlich clang und ld.lld verwendet. Wenn Sie diese nicht installiert haben, müssen Sie dies tun und sie zu Ihrem Weg hinzufügen. Wir verwenden auch nasm für unseren Assembler und qemu-system-x86_64 als unseren Emulator. Optional kann gdb verwendet werden, um den Kernelcode zu debugieren. Dieses Tutorial wird zwar nicht benötigt, aber es wird Shell -Skripte verwendet, um das Erstellen und Debuggen zu vereinfachen. Wir empfehlen dringend, dass Sie bash an /bin/bash installiert haben (oder zumindest dort symlyiert). Wenn nicht, können Sie die Skripte mit dem Befehl bash ausführen.
Sie sollten in der Lage sein, alle oben genannten Befehle in einem Terminalfenster auszuführen, ohne den vollständigen Pfad anzugeben. Wenn Sie nicht können, müssen Sie sie wahrscheinlich installieren und Ihrem Weg hinzufügen. Dieses Tutorial wurde sowohl auf MacOS (Catalina und Big Sur) als auch auf Ubuntu (20.04) getestet. Offiziell werden keine anderen Betriebssysteme unterstützt, obwohl es auf den meisten *Nix -Maschinen gut laufen sollte.
Hinweis: MacOS
gdbhat Schwierigkeiten mit den Debug -Symbolen aus dem Kernel (ELF64). Möglicherweise müssen Sie den Debug -Ausgangsniveau in den Makefiles in -glLDB ändern und diese stattdessen verwenden oder ein neuesgdbaus der Quelle erstellen.
Das war's! Es ist nicht erforderlich, Crosscompiler oder andere Werkzeuge zu installieren, da Clang das meiste bereits abgedeckt hat. Viel Glück, und wenn Sie Probleme haben, können Sie uns gerne wissen!