Salut à tous, ce tutoriel est censé être une expansion mise à jour sur les tutoriels existants qui se concentrent davantage sur l'architecture 64 bits x86_64. Ce n'est pas censé être une introduction à C ou à l'assemblage, vous voudrez donc peut-être les apprendre en premier. Nous avons fait de notre mieux pour tout documenter correctement, donc s'il y a quelque chose que vous ne comprenez pas, alors vous devrez peut-être revenir en arrière quelques chapitres.
Ce n'est pas encore complet, mais c'est arrivé à un point où nous avons estimé que cela pouvait être utile.
Ce tutoriel s'adresse aux personnes qui ont une compréhension générale de C et de l'assemblage, mais qui ne sont pas nécessairement des experts en informatique. Il est conçu pour être aussi accessible que possible, il peut donc se sentir parfois comme si nous avons surévaluer certains concepts (et ce n'est pas grave). Cependant, si vous vous retrouvez désespérément perdu, veuillez nous le faire savoir. Nous avons créé ce projet parce que nous n'aimions pas le gardien vu dans le développement du système d'exploitation, et nous serions heureux de modifier nos explications ou de vous indiquer une autre ressource qui peut être plus utile.
Si vous souhaitez contribuer à ce projet ou ajouter quelque chose de votre propre, veuillez soumettre une demande de traction. J'essaierai de les atteindre tous dès que possible :)
Ce tutoriel utilise la suite de compilateur LLVM, y compris clang et ld.lld . Si vous n'en avez pas installé, vous devrez le faire et les ajouter à votre chemin. Nous utilisons également nasm pour notre assembleur et qemu-system-x86_64 comme émulateur. Facultativement, gdb peut être utilisé pour déboguer le code du noyau. Bien qu'il ne soit pas nécessaire, ce tutoriel utilise des scripts shell pour faciliter la construction et le débogage. Nous vous recommandons fortement que vous ayez bash installée à /bin/bash (ou du moins symbolique là-bas). Sinon, vous pouvez exécuter les scripts à l'aide de la commande bash .
Vous devriez être en mesure d'exécuter toutes les commandes ci-dessus dans une fenêtre de terminal sans spécifier le chemin complet. Si vous ne pouvez pas, vous devrez probablement les installer et les ajouter à votre chemin. Ce tutoriel a été testé sur MacOS (Catalina et Big Sur) ainsi que Ubuntu (20.04). Aucun autre système d'exploitation n'est officiellement pris en charge, bien qu'il devrait fonctionner bien sur la plupart des machines * Nix.
Remarque: MacOS
gdba des difficultés avec les symboles de débogage du noyau (ELF64). Vous devrez peut-être modifier le niveau de sortie de débogage en -glldb dans les MakeFiles et l'utiliser à la place, ou construire un nouveaugdbà partir de la source.
C'est ça! Pas besoin d'installer descompilateurs ou d'autres outils, car Clang en a déjà la plupart couverts. Bonne chance, et si vous avez du mal, n'hésitez pas à nous le faire savoir!