Samux

An operating system written in Rust!

Samux

Language Status License GitHub Actions Workflow Status

A no_std operating system kernel written from scratch in Rust.


Goals

  • Learn OS design and implementation fundamentals.
  • Explore Rust for safe, efficient systems-level code.
  • Understand hardware interaction, memory management, and process scheduling from the ground up.

Building and Running

Prerequisites

  1. QEMU:

    sudo apt-get update && sudo apt-get install -y qemu-system-x86
    
  2. Rust nightly toolchain:

    rustup toolchain install nightly
    rustup override set nightly
    
  3. rust-src component:

    rustup component add rust-src
    
  4. llvm-tools-preview component:

    rustup component add llvm-tools-preview
    
  5. bootimage:

    cargo install bootimage
    

Running

  1. Clone the repository:

    git clone https://github.com/sammme/samux.git
    cd samux
    
  2. Run the OS:

    cargo run -- uefi
    

Roadmap

Phase 1: Core Kernel and Bootstrapping

  • Project setup (no_std Rust binary)
  • Bootloader integration (bootimage crate)
  • Framebuffer-based text output
  • Panic handler

Phase 2: Interrupts and Memory Management

  • GDT (Global Descriptor Table)
  • IDT (Interrupt Descriptor Table)
  • Paging (4-level page tables)
  • Heap allocator (linked_list_allocator)
  • Physical frame allocator

Phase 3: Hardware and Concurrency

  • PIC/APIC interrupt handling
  • PIT (Programmable Interval Timer)
  • PS/2 keyboard driver
  • Preemptive multitasking

Phase 4: Userspace and Filesystems

  • Syscall interface
  • Userspace program execution
  • FAT32 filesystem
  • Basic shell

Documentation

Memory Layout


Contributing

Contributions are welcome. Please follow these guidelines:

  1. Fork the repository.
  2. Create a new branch: git checkout -b feature/your-new-feature
  3. Make your changes.
  4. Format your code: cargo fmt
  5. Lint your code: cargo clippy
  6. Ensure the project builds: cargo build
  7. Open a Pull Request with a clear description of your changes.

License

This project is licensed under the MIT License. See the LICENSE file for details.