Parce que je peux.
Passer un bon moment est mon lecteur pour ce projet + J'apprends beaucoup de trucs de bas niveau cool à côté de ça!
Le noyau Cavos est un monolithique x86_64 écrit en C relativement simple avec quelques bits d'assemblage Intel ici et là. Il utilise le chargeur de démarrage Limine et exploite le système de fichiers FAT32 pour le démarrage avec EXT2 pour la partition racine. J'essaie de garder la structure du code propre et assez facile à comprendre, tout en évitant trop d'abstraction. Par conséquent, la qualité du code et la clarté sont parfois priorisées sur les gains de performances.
L'espace utilisateur est mon objectif principal à l'époque, le noyau étant assez stable. J'essaie de faire ce système d'exploitation aussi près de Linux que possible, tout en ajoutant mes propres trucs par-dessus. Ceci est visible avec les appels système qui sont exactement comme celui de Linux. Ce n'est pas aléatoire, je veux que les cavos soient aussi compatibles que possible!
Non! Le noyau Cavos ne partage pas le code source ou les en-têtes avec Linux. Le code source Linux est tiré lors de l'assemblage de l'espace utilisateur, mais uniquement parce que certains programmes tiers (portés) dépendent de ses en-têtes. Même alors, aucun code réel n'est partagé.
Important pour mentionner ces objectifs pour ne jamais être satisfaits, prendre beaucoup de temps pour être achevé (nous parlons des années plus tard) ou ne peut jamais être fait. De plus, cette liste n'inclura pas toutes les fonctionnalités implémentées ou planifiées et peuvent être modifiées à tout moment ...
systemcall Tout peut être trouvé sur install.md. Allez-y pour plus d'informations sur la construction correctement du système d'exploitation, le nettoyage des binaires inutilisés et d'autres choses.
Samedi 2 mars de 2024. Grâce à de nombreuses solutions de contournement, des décisions de "mauvaises" et une mentalité de "Just-Works", j'avais reconstitué un noyau purement x86 (32 bits) qui pouvait imprégner les applications d'espace utilisateur imprémables. Terminant toujours le vieux code (de retour quand j'ai à peine compris des concepts simples, comme disons la pagination), des bibliothèques obsolètes et beaucoup d'autres choses. Cela fonctionnait parfois , mais je n'étais pas satisfait.
17h00; Cet après-midi, j'ai décidé de commencer un long processus de migration de tout vers l'architecture x86_64 et de résoudre de nombreux problèmes de fiabilité, ce qui a fait de véritables cauchemars. J'ai essentiellement atteint un certain point pour comprendre que des solutions rapides et de la dité ne conduisent qu'à des erreurs complètement évitables, qui étaient extrêmement difficiles à identifier après que d'énormes quantités d'abstractions ont été ajoutées.
Ce projet est autorisé en vertu de GPL V3 (GNU General Public License v3.0). Pour plus d'informations, accédez au fichier de licence.