MINIOS est un noyau de système d'exploitation miniature pour les apprenants du développement du système d'exploitation qui peuvent fonctionner sur un processeur d'architecture x86 32 bits. Minios se concentre sur l'apprentissage et la recherche des concepts de base et des principes de base dans le développement du système d'exploitation, et met en œuvre divers sous-systèmes ou modules de base dans le système d'exploitation en fonction du matériel général.
Les grains de système d'exploitation populaires tels que Linux et FreeBSD sont bons, mais ils ne conviennent pas aux débutants du développement du noyau. D'une part, ces noyaux du système d'exploitation se développent depuis de nombreuses années et ont accumulé une énorme quantité de code (la première version du noyau Linux V2.6.12 publié en 2005 avait déjà environ 4 millions de lignes de code). D'un autre côté, en raison des besoins des applications dans les environnements de production, ces codes de noyau contiennent un grand nombre de détails qui ne sont pas liés aux principes de base du système d'exploitation, ce qui est difficile pour les débutants de saisir les points clés. Par conséquent, commencer par un simple noyau de système d'exploitation avec une petite quantité de code, en utilisant peu de temps pour vous familiariser avec les concepts de base et maîtriser les concepts de base et les principes de base du domaine de développement du noyau du système d'exploitation, la maîtrise de ces connaissances de base à un certain niveau, puis vous consacrer au développement de noyaux pratiques tels que Linux, est une stratégie relativement réalisée et réalisable pour les débutants de noyau. Même si vous ne prévoyez pas de vous engager dans le développement du noyau, l'apprentissage de certaines connaissances de base sur le système d'exploitation via un noyau facile à démarrer vous aidera à écrire des applications plus robustes et exécutantes.
MiniOS est principalement développé sur la base du langage C et du langage d'assemblage x86, et les outils de développement utilisés comprennent:
Parmi eux, Binutils est un ensemble d'outils pour faire fonctionner des fichiers binaires, y compris des outils pour créer des bibliothèques statiques, des outils pour les bandes de suppression des tables de symboles des fichiers binaires pour réduire la taille des fichiers, etc.
MiniOS est actuellement démarré à partir du disque de disquette, et le processus de démarrage est:
Étant donné que MiniOS est un noyau du système d'exploitation pour les apprenants, il s'exécute actuellement principalement dans des machines virtuelles, avec des machines virtuelles en option, notamment des bochs et du QEMU.
Exécutez des minios à Bochs
sudo apt-get install bochs sous le système Ubuntu pour l'installer. Vous pouvez d'abord télécharger le code source des bochs, puis le compiler et l'installer. Vous pouvez sélectionner la version souhaitée de Bochs lors de l'installation via le code source.tar zxvf misc/80m.img.tar.gz . et décompressez l'image du disque dur du package de compression d'image du disque dur.bochs dans le répertoire actuel pour démarrer la machine virtuelle Bochs. Bochs lira d'abord les informations de configuration du fichier bochsrc, puis confirmera les informations d'invite d'exécution fournies par Bochs pour permettre à MiniOS d'exécuter en bochs.Exécutez des miniios à Qemu
sudo apt-get install qemu-system-x86 sous le système Ubuntu pour l'installation, ou vous pouvez télécharger le code source de Qemu pour la compilation et l'installation.tar zxvf misc/80m.img.tar.gz . et décompressez l'image du disque dur du package de compression d'image du disque dur../launch-qemu.sh dans le répertoire actuel pour démarrer la machine virtuelle Qemu, puis MiniOS commencera à fonctionner directement dans Qemu. La machine virtuelle Qemu n'utilise pas de fichier de configuration comme Bochsrc. Les informations de configuration sont spécifiées via des options de ligne de commande. Le script Launch-Qemu.sh contient les options de configuration actuellement utilisées. Les minios peuvent être débogués au niveau de l'assemblée en utilisant la fonction de débogage incluse dans Bochs ou Qemu, mais cette méthode de débogage n'est pas très pratique à utiliser car le programme d'assemblage est long et difficile à lire. Heureusement, Bochs et Qemu ont un support GDB intégré. En combinant avec la fonction de débogage à distance fournie par GDB, MiniOS peut être débogué au code source C.
Débogage de minios avec bochs + gdb
./launch-bochs-gdb.sh dans le répertoire source MiniOS. Le script de shell en cours d'exécution exécutera GDB dans une nouvelle fenêtre de terminal et chargera la version de débogage du binaire du noyau.target remote :2345 dans l'interface de commande GDB pour établir une connexion avec Bochs.Débogage des minios avec QemU + GDB
./launch-bochs-gdb.sh dans le répertoire source MiniOS. Le script de shell en cours d'exécution exécutera GDB dans une nouvelle fenêtre de terminal et chargera la version de débogage du binaire du noyau.target remote :1234 dans l'interface de commande GDB pour établir une connexion avec QEMU. # 编译 MiniOS 内核和用户程序 init,并写入到软盘镜像 a.img 中
make image
# 清除所有 .o 目标文件
make clean
# 清除所有 .o 目标文件和可执行文件
make realclean