Monkos est un système d'exploitation expérimental 64 bits pour les processeurs Intel et AMD. Il s'agit d'un mélange de C et de langage d'assemblage et est un travail en cours. Actuellement, il se compose d'un chargeur de démarrage de BIOS, d'un système de console virtuel, d'un système de manutention d'interruption, d'un gestionnaire de mémoire paginée, d'un allocateur de tas, de quelques pilotes de périphérique simples et d'un shell interactif primitif. Le chargeur de démarrage est conçu pour lancer le système d'exploitation à partir d'un CDROM.
Le système d'exploitation construit actuellement sous Linux à l'aide d'un compilateur croisé. Il existe deux façons de le construire: (1) en installant tous les outils nécessaires sur votre système et en cours d' make , ou (2) en utilisant un conteneur Docker prêt à l'emploi qui contient tous les outils de construction dont vous aurez besoin.
Pour construire avec des outils installés sur votre système local, vous devrez que le logiciel suivant soit déjà installé:
La plupart de ces outils sont disponibles auprès des gestionnaires de packages Linux standard. Le compilateur croisé, cependant, ne l'est pas. Pour construire un compilateur croisé, consultez les instructions sur cette page. Assurez-vous de suivre également le libgcc sans instructions de la zone rouge.
Une fois que vous avez installé tous les outils et vous êtes assuré que le compilateur croisé est sur votre chemin, exécutez make .
$ make Il en résulte un fichier ISO CDRRom boobleable appelé monk.iso dans votre sous-répertoire de construction.
Parce que cela peut être un peu compliqué à construire et à installer un compilateur croisé, un conteneur Docker a été préparé, vous permettant d'éviter de construire vous-même le compilateur croisé. Pour exécuter la version basée sur Docker, assurez-vous d'avoir une version récente de Docker installée sur votre système, ajoutez-vous au groupe d'utilisateurs Docker de votre système, puis saisissez ce qui suit:
$ make docker Cela réduira le conteneur Docker ( brett/monkos-build ) si vous ne l'avez pas déjà, exécutez la construction à l'intérieur du conteneur et générez le fichier ISO (et tous les autres fichiers de sortie intermédiaires) dans votre sous-répertoire de construction. Il se comporte presque exactement comme si vous make à l'aide d'un compilateur transversal installé localement sur votre système.
Il existe plusieurs façons d'exécuter Monkos une fois que vous avez le fichier ISO. Le premier moyen et le plus long est de le brûler à un CD ou une ROM DVD en utilisant votre utilitaire de brûlage préféré. C'est le seul moyen de tester Monkos sur un système à métal nu.
Alternativement, vous pouvez lancer le système d'exploitation à l'aide d'un logiciel Virtual Machine comme VMware ou VirtualBox.
Ou vous pouvez exécuter le système d'exploitation dans un émulateur basé sur Linux comme Qemu ou Bochs. Le Monkos Makefile rend cette alternative particulièrement facile en fournissant une règle de construction simple pour lancer le système d'exploitation dans QEMU:
$ make testVous pouvez également utiliser le MakeFile pour démarrer une session de débogage du noyau sous Qemu et GDB. Tout d'abord, lancez Qemu en mode débogage:
$ make debugEnsuite, démarrez une session de débogueur GDB en attachant GDB au point de terminaison du débogueur QEMU:
$ gdb
(gdb) set arch i386:x86-64
(gdb) symbol-file build/monk.sys
(gdb) target remote localhost:8864
(gdb) layout src
Exécutez make docs pour construire une documentation bien formatée pour Monkos. Vous aurez besoin de Doxygen installé sur votre système pour ce faire.
$ make docs Les documents Doxygen apparaîtront dans le sous-répertoire docs/monk . Pour les voir, lancez-les dans votre navigateur (dans ce cas Firefox):
$ firefox docs/monk/index.htmlPour créer des balises de code pour une recherche de symboles faciles au sein de votre éditeur, utilisez le MakeFile pour exécuter l'utilitaire d'exubérant-Tags:
$ make tags Cela produit un fichier .tags dans votre répertoire Monkos.
Pour nettoyer tous les fichiers intermédiaires, utilisez la construction propre:
$ make cleanPour nettoyer tous les fichiers de dépendances générés, utilisez la construction CleanDeps:
$ make cleandepsVeuillez consulter la documentation formée par le doxygène, qui fait partie de l'ensemble de documentation Monkos.
Ce sont quelques-unes des ressources sur lesquelles je me suis appuyée dans ma tentative de mieux comprendre les nombreux et divers aspects du développement de chargeur de démarrage et de système d'exploitation:
L'utilisation de ce code source est régie par une licence de style BSD qui peut être trouvée dans le fichier de licence.