Skip to content
This repository was archived by the owner on Feb 2, 2025. It is now read-only.

chickensoftware/os

Repository files navigation

ChickenOS

ChickenOS is a lightweight hobby operating system for x86-64 developed in Rust.

This project is discontinued. But feel free to check out my current osdev project: NereusOS

Features

  • Higher Half Kernel: Built from scratch with Rust, providing a safe and modern approach to systems programming.
  • Bootloader: ChickenOS includes its own bootloader, designed to initialize the system and hand control over to the ChickenOS kernel.

Building and Running ChickenOS

ChickenOS can be built and run using the provided Makefile.

Prerequisites

Ensure you have the following tools installed:

  • Rust (nightly toolchain)
  • qemu (for running the OS in a virtualized environment)
  • OVMF (for UEFI support in QEMU)
  • parted, mkfs.fat (for preparing a USB drive)

Building ChickenOS

Building & running in QEMU

make run release=true

Building & running on real hardware

make usb USB_DEVICE=/dev/<device> release=true

Progress Overview

Kernel Entry

  • Higher Half Kernel Entry
  • Basic Bootloader

Kernel Base

  • Global Descriptor Table
  • Interrupt Handling
  • Complete ISR
  • ACPI Tables
    • RSDP
    • RSDT/XSDT
    • MADT
    • FADT
  • APIC IO
  • Timer
    • Programmable Interval Timer
  • Keyboard support
    • Receive Scancodes
    • Basic Keyboard Driver
    • Proper Keyboard Driver

Memory Management

  • Custom Memory Map
  • Physical Memory Manager
  • Paging
  • Global Page Table Manager
  • Virtual Memory Manager
  • Global Virtual Memory Manager
  • Basic Kernel Heap Allocator
    • Bump Allocator
    • Linked List Allocator
  • Full-fetched Kernel Heap Allocator

Video Output

  • Raw Framebuffer
  • Full-fetched Framebuffer
  • Text & Fonts
  • Global Writer

Scheduling

  • Scheduler
  • Processes: todo: fix process isolation pml4 switch
  • Resources
  • Threads
  • Thread API
    • Task Creation Helpers
    • Thread Sleep
    • Automatic Task Deletion
  • Spin Lock

Userspace

  • Switching Modes
  • Interrupt Handling in Userspace
  • System Calls
  • Userspace Heap Allocator

Inter-Process Communication

  • Shared Memory
  • Message Passing

Virtual Filesystem

  • Virtual Filesystem
  • TAR Filesystem
  • Loading ELFs
   \\
   (o>
\\_//)
 \_/_)
   _|_