Tiny OS est un système d'exploitation fonctionnant sur l'architecture x86_64 .
Ce projet est développé sur le système linux . Sur les systèmes windows , vous pouvez exécuter linux en installant WSL .
Si vous utilisez WSL :
windows ; Il est recommandé d'installer XMing ou VCXSVR.-ac ou vérifier disable access control via l'interface graphique.WSL :WSL (version 1): export DISPLAY=:0WSL2 (version 2): export DISPLAY= $( cat /etc/resolv.conf | grep nameserver | awk ' {print $2} ' ) :0~/.bashrc ou ~/.profile .Could not initialize SDL (No available video device) ... ou aucune erreur sur GTK, vérifiez si votre serveur X est démarré et si l' DISPLAY de la variable d'environnement est correctement défini. Rust est un langage de programmation moderne au niveau du système, et ce projet est principalement développé à l'aide Rust . Téléchargez et installez-le via le site officiel de Rust. Remarque: Ce projet nécessite l'installation de nightly de la chaîne d'outils.
Une fois l'installation terminée, installez llvm-tools via rustup :
rustup component add llvm-tools-preview Installez des outils utiles via cargo pour le développement:
cargo install cargo-binutilsbochs Simulation via bochs Simulator. Lien de téléchargement de code source: Source Forge - Bochs x86 PC Emulator. Après téléchargement, compiler et installer.
La commande est la suivante:
cargo run --release Le chemin d'image du noyau compilé est target/os.img .
Créez un fichier os.img dans le répertoire ./bochs via bximage :
bximage -func=create -hd=10M -imgmode=flat ./bochs/os.img -q Engrave ./target/os.img dans ./bochs/os.img via l'outil dd :
# 注意下面的参数 count 要根据生成的 target/os.img 文件的大小进行调整
dd if=target/os.img of=bochs/os.img bs=512 count=250 conv=notruncbochs bochs/conf a les fichiers de configuration suivants dans le répertoire:
bochsdbg-gdb.bxrc : vous pouvez déboguer à distance via gdb et lier localhost:1234 (vous devez activer --enable-gdb-stub lors de la compilation bochs )bochsdbg-win : Open bochs debugger avec interface graphique sur la plate-forme windowbochsrc.bxrc : le fichier de configuration bochs le plus basique, sans fonction debug Exécutez bochs pour activer la simulation:
bochs -q -f bochs/conf/bochsrc.bxrcqemu Contrairement aux bochs , qemu peut charger directement la target/os.img :
qemu-system-x86_64 -drive format=raw,file=bochs/os.img -boot c
Il y a un fichier Makefile dans le répertoire racine du projet, qui définit certaines commandes d'exécution et de débogage:
clean : utilisé pour nettoyer les fichiers générésbuild-release : Utilisé pour compiler les images du noyau de version release versionbuild-debug : Utilisé pour compiler les images du noyau de la version debug (non terminée)run-bochs : Utilisé pour compiler les images du noyau et démarrer la simulation bochsrun-qemu : utilisé pour compiler les images du noyau et démarrer la simulation qemudebug-bochs : Utilisé pour compiler les images du noyau, démarrer bochs et debug à distance via rust-gdbdebug-qemu : Utilisé pour compiler les images du noyau, démarrer qemu et debug à distance via rust-gdb Ce projet est principalement divisé en 4 parties:
builder : Situé dans le répertoire src , il est principalement utilisé pour compiler et construire des images du noyauboot : Situé dans le répertoire boot , c'est bootloader pour tiny OSboot_info : situé dans le répertoire boot_info , il fournit BootInfokernel : Situé dans le répertoire kernel , c'est le code du noyau du tiny OS long mode BootInfo pour passer les informations de bootloader au kernel elf du noyau logger (utilisé pour implémenter tiny os d'exploitation et le débogage pendant le développement du noyau) Page Fault de traitement préliminaire GP Fault Double Fault linked_list_allocator buddy system spawn disponible mondialement FAT32 shellBuilder plus flexible (vous pouvez choisir de compiler les images debug et release ) bochs peuvent être chargés directement, au lieu de le graver dans bochs/os.img via l'outil dd