Création d'un système d'exploitation à partir de zéro. Ce système d'exploitation est construit pour i386 + 32 bits Intel x86. Toutes les autres plateformes peuvent ne pas fonctionner et n'ont été testées.
Tapez simplement make run , qui créera tous les fichiers nécessaires et s'exécutera dans l'émulateur Qemu. Le Makefile est une pagaille, donc toutes les suggestions sur de meilleures maquaires sont appréciées.
nasm - pour assembler le chargeur de démarragegcc - pour compiller le noyau et inclus C Libraryld - pour lier tous les fichiers du noyau ensembleobjcopy - pour créer le noyau binaire à partir du fichier elfear - pour créer la bibliothèque de la bibliothèque Cmake - faire fonctionner le makefileqemu - Pour exécuter le système d'exploitationWindows Linux subsystem :cmd - Pour utiliser les commandes Windows dans le terminal du sous-système Linuxpartcopy - Windows CMD pour la création du secteur de démarrageimdisk - Windows CMD pour la création et le montage de l'image de disquettecopy - Windows CMS pour la copie de fichiers sur l'image de disquette Je suis désolé que cela blesse les gens à voir comme utiliser Windows et Linux ensemble, donc si quelqu'un a des suggestions et / ou une meilleure marque qui fonctionne que je peux utiliser, faites-le moi savoir. Makefiles est nouveau pour moi, donc toutes les modifications apportées, pouvez-vous les commenter afin que je puisse comprendre ce qui se passe. Surtout un MakeFile qui utilise simplement les commandes Linux serait le meilleur. J'ai essayé d'utiliser dd pour créer le secteur de démarrage, mais je n'ai pas pu le faire fonctionner correctement, donc tout moyen d'obtenir des commandes Windows sera bon. Vous pouvez m'envoyer un e-mail à [email protected] si vous avez des modifications.
Vous pouvez exécuter make debug qui créera tous les fichiers nécessaires et exécuter dans l'émulateur Qemu. Vous pouvez ensuite attacher un débogueur GDB en ajoutant les lignes dans .gdbinit ou tapez directement les commandes:
set architecture i386
target remote localhost:1234
br *0x7c00
c
Cela définira l'architecture sur 16 bits x86 car c'est ce que le chargeur de démarrage est codé pour commencer. Se connecte ensuite à l'émulateur sur le port 1234 (par défaut pour QEMU). Définit ensuite un point de rupture au début du chargeur de démarrage. Le démarrage du système d'exploitation et s'arrête au début du chargeur de démarrage.
Si vous souhaitez rompre au début du noyau, l'adresse dans laquelle il est chargé est de 0x100000. Remplacez donc br *0x7c00 par br *0x100000 .
Vous exécutez mon système d'exploitation à vos propres risques sur le matériel réel. Il n'y a aucune garantie que le matériel ne sera pas endommagé en exécutant le système d'exploitation. Donc, exécutez dans une machine virtuelle ou un émulateur pour la sécurité.