OS de la lune
Moon OS est un micro-noyau modulaire ciblant l'architecture x86_64 et ARMV6, visant à ressembler à POSIX à l'avenir.

Captures d'écran:
Bootsplash:
Boot verbeux:
Panique du noyau: 
Caractéristiques
- Prise en charge de plusieurs architectures:
- x86_64 PC avec support ACPI
- Paging de 4 niveaux
- StackTrace / Backtrace Symbol
- Buddy zoné et allocateur de dalles.
- Appels système via
syscall (aucune prise en charge des appels système basés sur int )
- Nintendo 3DS (ARMV6)
- Pilote i2c
- Bootrom ivt
- Rendre les chaînes à l'affichage
Fonctionnalités partagées (les deux architectures prennent en charge ceci):
- ubsan
- Arguments de démarrage à pain (silencieux / verbeux)
- Chargeur elfe
- Primitive Scheduler (sera amélioré les heures supplémentaires, pour l'instant, je me concentre sur tout mettre en service (IPC, serveurs, libc, etc.)
Caractéristiques futures:
- Threads
- kasan
- ACPI
- SMBIOS
- Multitâche
- De nombreux chauffeurs de matériel, y compris, mais sans s'y limiter:
- Cartes réseau
- Conducteurs de stockage
- GPU
- Et bien plus encore
- Une libc pour le terres utilisateur
Liste de TODO proche de l'avenir
- Faites un meilleur usage de l'APIC (actuellement il est utilisé pour la minuterie uniquement)
- Sous-système de mémoire virtuelle
- Nouveau gestionnaire de mémoire physique? (Incertain.)
Cela travaille actuellement sur:
- Planificateur
- IPC
- Portage mlibc
- Initrd
- Dans la bibliothèque de décompression du noyau pour décompresser l'initiation
- Programme natif (build machine) Pour construire et ajouter des fichiers (pour maintenir la modularité décente) à l'IniTRD.
- Chargez et rendez une image de l'IniTrd (TGA, BMP)
- De nouveaux ajouts pour rendre le port ARMV6 beaucoup plus utilisable (pilote de carte SD, GPU, VBLANK)
Procédure pas à pas du répertoire:
- LIBS / - Utilitaires non strictement liés à un noyau (planificateur, gestionnaire de mémoire, etc.), mais requis pour qu'il fonctionne.
- noyau / - code source du noyau
- démarrer / - tout ce dont la lune a besoin pour démarrer
- Service / - Serveurs spéciaux de micro-noyau + LIBC
- USERSPACE / - Fichiers de chargeur de démarrage, configurations, modules, etc. De nombreux fichiers sont automatiquement ajoutés au moment de la construction.
Installation
Bâtiment: (en supposant que vous utilisez une distribution basée sur Debian)
Mon voyage: (inspiration pour les nouveaux arrivants)
J'ai toujours voulu faire un système d'exploitation, donc un jour j'ai décidé d'en construire un. Il s'avère que c'est beaucoup de travail et à l'époque, cela m'a totalement submergé au point où j'ai fait de longues pauses (pendant des mois) parce que l'information était si rare, et le peu d'informations qu'il y a est obsolète.
J'ai écrit environ 4 "noyaux" lors de mon expérience d'apprentissage du développement du système d'exploitation, et chaque fois que je recommençais parce que j'étais beaucoup trop dépassé - aucun n'a dépassé un GDT: / (diable, certains où des chargeurs de démarrage qui ont appelé une entrée de noyau et une boucle)
Si vous êtes un débutant qui cherche à comprendre ce que fait ce code et comment vous pouvez écrire votre propre noyau avec des informations à jour, veuillez rejoindre le serveur Osdev Discord (lié dans le Wiki OSDEV en bas) et n'abandonnez pas quand il devient dur au début.
J'ai commencé à développer des noyaux il y a environ 8 mois au moment de la rédaction (avec plusieurs mois de pauses d'un mois), et j'ai encore beaucoup de choses à apprendre, mais mon état d'esprit try harder s'est avéré utile pour m'aider à traverser les difficultés et à écrire un noyau pour lequel je n'avais pas à voler ou à copier du code à partir de tutoriels ou d'autres projets à partir d'un manque de connaissances.
J'espère que cela vous a inspiré à utiliser cet état d'esprit lorsque les choses semblent trop difficiles à gérer.
Bonne chance ~ V01D (TIM).
Merci spécial
- Merci à des sites Web comme LowLevel.EU ou le Wiki Osdev, mais aussi des développeurs de systèmes d'exploitation cool et très utiles sur GitHub et Discord.
Touche finale (ressources que j'utilise)
- https://www.cs.cmu.edu/~ralf/files.html
- https://ethv.net/workshops/osdev/notes/notes-3.html
- https://osdev.wiki (barebones mais à jour Osdev wiki)
- https://wiki.osdev.org