Drakmor

Lost-Saint Lost-Saint
Dépôt créer le : 07/09/2025
Forks: 0 Watcher: 0 0
Choisir une liste...
FR

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

  1. Installer Rust :

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    source ~/.cargo/env
    
  2. Installer QEMU & #160;:

    # On Ubuntu/Debian
    sudo apt install qemu-system-x86
    
    # On macOS
    brew install qemu
    
    # On Arch Linux
    sudo pacman -S qemu
    
  3. Installer l'image de démarrage & #160;:

    cargo install bootimage
    
  4. Installer les composants Rust requis :

    rustup component add rust-src
    rustup component add llvm-tools-preview
    

Installation et configuration

  1. Cloner le dépôt & #160;:

    git clone 
    cd drakmor
    
  2. Ajouter 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+A puis X (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 construction
  • x86_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 :

  1. Signaler les bogues en créant un problème
  2. Suggérer des fonctionnalités pour le système d'exploitation
  3. Soumettre les demandes de tirage avec des améliorations ou de nouvelles fonctionnalités
  4. 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

Contributeurs GitHub

Lost-Saint
Lost-Saint
2 contributions