Skip to content

toast1599/CoreOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CoreOS

This is an experimental AMD64 operating system featuring a Rust no_std kernel, a Rust UEFI bootloader, and a minimal C userspace.

Current State

The tree boots through UEFI into a higher-half kernel, initializes memory management (PMM/Slab), interrupts, scheduling, VFS, and syscall handling. This system runs ring 3 ELF processes and starts a userspace shell from an in-memory filesystem.

This project uses a syscall dispatch system generated by custom Python tooling. While many Linux-numbered syscalls are implemented, this ABI is evolving toward broader compatibility for userspace applications.

Key Components

  • Bootloader: Rust UEFI loader handling memory map acquisition and PML4 paging setup.
  • Kernel: AMD64 higher-half kernel with a preemptive round-robin scheduler.
  • Memory: Physical Memory Manager (PMM), recursive page tables, and a Slab allocator for kernel heap.
  • Filesystem: VFS layer with support for RamFS, pipe-backed descriptors, and device nodes.
  • Hardware: IDT/GDT, PIT/RTC, PS/2 Keyboard, and PSF-font framebuffer console.
  • Userspace: Minimal libc shim, shell, and syscall regression tests.

Build Requirements

  • Rust nightly (with llvm-tools-preview)
  • clang, lld, and gcc-multilib
  • QEMU and OVMF firmware
  • mtools and dosfstools

Quick Start

./bootstrap.sh                 # Install and setup dependencies
cargo run -p xtask -- build    # Build the OS
cargo run -p xtask -- run      # Boot in QEMU

This build produces a bootable GPT image at build/coreos.img.

Note

This is NOT a production ready / daily-driver OS (if you couldn't tell already), so don't expect standard programs to run just yet without major modifications to many subsystems.

However, if you would prefer to see standard programs being ran or are just interested in the making of this OS, feel free to try to follow the steps above.

If you would like to report a bug in any of the subsystems, feel free to open an issue.

Repository Layout

abi/          Syscall definitions and auto-generated headers
assets/       System fonts and static resources
bootloader/   UEFI bootloader (Rust)
kernel/       64-bit Kernel (Rust)
user/         Userspace programs and libc shim (C)
tools/        Build and code-generation scripts

About

Experimental AMD64 OS in Rust with a UEFI bootloader, higher-half kernel, ring 3 userspace, and a syscall-tested shell.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors