Skip to content

waseemnaseeven/Tarnished

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tarnished

Tarnished is an experimental minimal operating system kernel written in Rust. It is built to produce a bootable GRUB (Multiboot) ISO that contains an ELF kernel and a static Rust library (libkfs.a). The Rust code is compiled without the standard library (no_std, no_main) and targets 32-bit x86 (i386).

Key features

  • GRUB bootable ISO: the Makefile builds a bootable ISO via GRUB, embedding the ELF kernel and the static Rust library.

  • Modular architecture: the project is organized into major modules

    • arch contains low-level x86 code (GDT, interrupts)
    • drivers handles basic devices (VGA text output, PS/2 keyboard)
    • subsystems implements the console and a small shell (tiny one...)
    • sync provides a spinlock-based synchronization layer
  • Interactive console + shell: VGA text-mode output (via a printk! macro) with an ASCII banner at boot. PS/2 keyboard input is handled through interrupts. A minimal built-in shell supports simple commands like clear, echo, color, reboot, etc.

  • Interrupts and exception handling: PIC/IDT setup and IRQ enabling for keyboard support. The panic handler disables interrupts and prints a stack dump on failure.

  • Thread-safe output: the VGA console uses a spinlock to ensure atomic writes. All output goes through a centralized printk! path.

  • [INCOMING] MEMORY MANAGEMENT...

Getting started

Requirements

  • Rust nightly (+ rust-src)
  • Low-level tooling: ld.lld, nasm, grub-mkrescue, xorriso, mtools
  • Emulator: qemu-system-i386 (or equivalent QEMU x86 package)
  • Container: docker

Build

make docker
make qemu

About

Tarnished is an experimental minimal operating system kernel, written in Rust.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors