Skip to content

siddhp1/ChaOS

Repository files navigation

ChaOS

ChaOS terminal output

About

Freestanding AArch64 (ARMv8) OS kernel for Raspberry Pi.

Includes UART console output, a preemptive scheduler, memory management, a userspace with syscalls, and initramfs loader.

More information in the Wiki (coming soon!)

Setup

Prerequisites

  • QEMU (AArch64): qemu-system-aarch64
  • A cross compiler:
    • Bare-metal (default): aarch64-elf-*
    • Linux cross: aarch64-linux-gnu-*

Build

Bare-metal (default):

make

Linux cross toolchain:

make TOOLCHAIN=aarch64-linux-gnu

Debug build:

make DEBUG=true

Usage

QEMU

qemu-system-aarch64 \
  -M virt,gic-version=3 \
  -cpu cortex-a53 \
  -m 512M \
  -kernel kernel.elf \
  -nographic

Add -S -s when running debug builds

Next Steps

  • Port to Raspberry Pi hardware
  • Develop filesystem
  • I/O and device drivers
  • Graphics drivers
  • Improved scheduler
  • Power management

About

AArch64 (ARMv8) OS kernel for Raspberry Pi.

Resources

Stars

Watchers

Forks

Contributors