Bienvenue dans le ... euh ... BrightSystem?
C'est un système d'exploitation x86_64 entièrement écrit à partir de zéro (pas de dépendances), réalisé par le vôtre.
Ce projet a été rédigé sans l'aide de GitHub CodesEStealer, de ChatGpThief d'Openai ou d'autres algorithmes prédictifs de vol de contenu similaires.
TLDR: Moyenne-Vrette et catastrophe partielle! Amusant!
_old a un noyau fonctionnel qui utilise les grandes bibliothèques de Phil-OPP et quelques autres. Le code n'est pas super bien documenté, mais il n'est pas trop compliqué, donc il devrait être assez lisible. Il a été fait pour un forum de développement du système d'exploitation génial à mon lycée.
Tout le reste est ma réécriture sans dépendance WIP. À l'heure actuelle, il n'a qu'un chargeur de démarrage BIOS qui peut entrer en mode 64 bits. L'étape suivante consiste à implémenter un analyseur ELF, puis à un chargeur ELF, puis à charger le noyau (qui sera simplement un fichier ELF).
La nouvelle version de BS est extrêmement bien documentée, y compris des ressources pour de nouvelles recherches. Une partie de mon objectif est de faire de cet excellent code de démonstration pour que les futurs programmeurs se référent et apprennent.
Chaque dossier a un Readme et, espérons-le, est explicite, mais voici une table des matières approximative pour ce repo:
boot : Toutes les caisses du chargeur de démarrage de BS.kernel : le noyau BS (actuellement vide jusqu'à l'écriture du chargeur elfe).lib : Bibliothèques d'assistance utilisée par BS. Cela a des outils de construction, Frière (le chargeur ELF WIP) et une bibliothèque commune (qui sera bientôt divisée en caisses multiples). Ces caisses ont leurs propres bibliothèques car elles sont utilisées par plusieurs caisses en BS (par exemple, le chargeur de démarrage charge un ELF, mais le système d'exploitation final pourra également le faire).qemu : une caisse qui construit BS en disque final et la lance dans Qemu. Pour l'ancienne version plus fonctionnelle de BS avec les dépendances, exécutez cargo r dans le dossier _old .
La nouvelle version utilise mon système de construction personnalisé, Bargo, vous devrez donc l'installer d'abord (craindre non - Bargo n'a qu'une seule dépendance, un analyseur Toml sans dépendance et devrait compiler en quelques secondes). Bargo est en quelque sorte un emballage autour de la cargaison, vous pouvez donc l'utiliser presque exactement de la même manière - bargo b pour construire, bargo r pour fonctionner, -r pour le mode de libération, etc.
Si vous vous demandez pourquoi BS utilise Bargo au lieu de la cargaison, c'est parce que Cargo n'a pas toutes les fonctionnalités dont j'ai besoin. J'ai besoin de scripts post-construction et de la possibilité d'utiliser build-std pour plusieurs cibles, car le chargeur de démarrage a une cible différente de celle du noyau et du système d'exploitation. J'ai essayé pendant des heures, mais je n'ai pas pu trouver un moyen sain de mettre en œuvre cela dans la cargaison de vanille.
Les deux versions s'exécutent dans Qemu, alors assurez-vous que cela est installé en premier. Si vous souhaitez le construire et l'exécuter manuellement, la commande utilisée sous le capuchon se résume essentiellement à ceci: cargo b; qemu-system-x86_64 -drive format=raw,file=target/bs.bin,index=0 . Pour l'ancienne version, vous voudrez charger le fichier _old/disk.bin au lieu de target/bs.bin .