Drakmor
Un noyau de système d'exploitation minimal écrit en Rust, conçu pour l'architecture x86-64. Drakmor OS est un projet noyau de système d'exploitation en métal...
Choisir une liste...
Système d'exploitation Drakmor
Un noyau de système d'exploitation minimal écrit en Rust, conçu pour l'architecture x86-64.
Désignation des marchandises
Drakmor OS est un projet noyau de système d'exploitation en métal nu qui démontre des concepts de programmation de système de faible niveau utilisant Rust. Ce projet présente :
- Programmation des métaux de bare sans la bibliothèque standard Rust (
#![no_std]) - Intégration de bootloader personnalisée utilisant la caisse du chargeur de démarrage
- Interaction matérielle directe par manipulation de tampon VGA
- Sécurité de la mémoire dans le code du noyau en utilisant le système de propriété de Rust
- Spécification de la cible personnalisée pour x86-64 métal nu
Le noyau implémente actuellement la sortie en mode texte VGA de base, servant de base à la construction de fonctionnalités de système d'exploitation plus avancées. Ce projet est parfait pour apprendre sur:
- Principes fondamentaux du système d'exploitation
- Programmation des systèmes Rust
- x86-64 architecture
- Protocoles de chargement de démarrage
- Concepts de gestion de mémoire
Préalables
Avant de pouvoir construire et exécuter Drakmor OS, assurez-vous d'avoir installé ce qui suit:
- Rouille (dernière version de nuit)
- Cargo [Vient avec Rust]
- UEQ (pour l'émulation)
- image de démarrage caisse pour créer des images de disque amorçables
Installation des prérequis
Installer Rust :
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.cargo/envInstaller QEMU & #160;:
# On Ubuntu/Debian sudo apt install qemu-system-x86 # On macOS brew install qemu # On Arch Linux sudo pacman -S qemuInstaller l'image de démarrage & #160;:
cargo install bootimageInstaller les composants Rust requis :
rustup component add rust-src rustup component add llvm-tools-preview
Installation et configuration
Cloner le dépôt & #160;:
git clone cd drakmorAjouter la cible personnalisée & #160;:
rustup target add x86_64-unknown-none
Comment construire et courir
Construction du noyau
# Build the kernel
cargo build --target x86_64-drakmor.json
# Build in release mode for better performance
cargo build --target x86_64-drakmor.json --release
Création d'une image de démarrage
# Create a bootable disk image
cargo bootimage --target x86_64-drakmor.json
Courant en QEMU
# Run the OS in QEMU
qemu-system-x86_64 -drive format=raw,file=target/x86_64-drakmor/debug/bootimage-drakmor.bin
# Or with more verbose output
qemu-system-x86_64 -drive format=raw,file=target/x86_64-drakmor/debug/bootimage-drakmor.bin -serial stdio
Commande d'exécution rapide
Pour plus de commodité, vous pouvez combiner bâtiment et fonctionnement:
cargo bootimage --target x86_64-drakmor.json && qemu-system-x86_64 -drive format=raw,file=target/x86_64-drakmor/debug/bootimage-drakmor.bin
Utilisation
Une fois que vous exécutez le système d'exploitation dans QEMU, vous devriez voir:
- Un écran noir avec "Hello World!" affiché en texte cyan clair
- Le système sera dans une boucle infinie (comme prévu pour un noyau minimal)
Pour sortir de QEMU :
- Appuyez sur
Ctrl+ApuisX(dans la console QEMU) - Ou fermer la fenêtre QEMU
Structure du projet
drakmor/
├── src/
│ └── main.rs # Main kernel entry point
├── .cargo/ # Cargo configuration
├── target/ # Build artifacts
├── Cargo.toml # Project configuration
├── x86_64-drakmor.json # Custom target specification
├── .gitignore # Git ignore rules
└── README.md # This file
Fichiers de configuration
Cargo.toml: Définit les métadonnées du projet, les dépendances et les profils de constructionx86_64-drakmor.json: Spécification de cible personnalisée pour le métal nu x86-64.cargo/config.toml: Configuration du chargement pour les réglages de construction (si présent)
Contribution
Les contributions sont les bienvenues! Voici quelques façons de contribuer :
- Signaler les bogues en créant un problème
- Suggérer des fonctionnalités pour le système d'exploitation
- Soumettre les demandes de tirage avec des améliorations ou de nouvelles fonctionnalités
- Améliorer la documentation et commentaires de code
Directives pour le développement
- Suivre les conventions de codage Rust
- Ajouter des commentaires pour les opérations complexes de bas niveau
- Changements apportés à la QEMU avant de soumettre
- Mettre à jour la documentation pour les nouvelles fonctionnalités