A hobby operating system built from scratch.
MyOS is a bare-metal operating system written in C++/Assembly. This project is a work in progress — currently in the earliest stages of development.
- Bootloader — the OS successfully boots on [real hardware / QEMU / Bochs]
- Prints
Hello World!to the screen - Basic interrupt handling — a test software interrupt is fired from
KernelMain()
- GCC, NASM
- Virtual Box
- Make
git clone https://github.com/SirOrangePeel/OrangeOS.git
cd OrangeOS
makemake run
# or manually:
qemu-system-i386 -kernel myos.binOrangeOS/
├── includes/
│ ├── gdt.h # Global Descriptor Table declarations
│ ├── interrupts.h # Interrupt handling declarations
| ├── keyboard.h # Keyboard function definitions
│ ├── port.h # Port I/O declarations
│ └── types.h # Common type definitions
├── src/
│ ├── bootloader/
│ │ └── loader.s # Assembly bootloader entry point
│ ├── cpu/
│ │ ├── gdt.cpp # Global Descriptor Table implementation
│ │ ├── interrupts.cpp # Interrupt handling implementation
│ │ ├── interruptstubs.s # Low-level interrupt stubs in assembly
│ │ └── port.cpp # Port I/O implementation
| ├── drivers/
| | └── keyboardDriver.cpp # Keyboard Driver implementation
│ └── kernel/
│ └── kernel.cpp # Kernel entry point
├── .gitignore
├── LICENSE
├── linker.ld # Linker script
├── Makefile
├── README.md
└── toggle_kvm_for_vbox.sh # Helper script to toggle KVM for VirtualBox
- Hello World Kernel
- Memory Segments & Global Descriptor Table (GDT)
- Hardware Communication & Ports
- Interrupts & IRQ handling (IDT, PIC remapping)
- Keyboard driver
- Mouse driver
- Driver abstractions
- PCI (Peripheral Component Interconnect)
- Base Address Registers (BARs)
- Graphics Mode (VGA)
- GUI Framework basics
- Desktop & Windows
- Dynamic Memory Management / Heap
- Physical memory manager & paging
- Kernel panic handler & stack traces
- Multitasking
- System calls & POSIX compliance
- ELF binary loader
- Privilege separation (Ring 3)
- Minimal shell / terminal
- Hard Drives (ATA/IDE)
- Virtual filesystem (VFS) abstraction layer
- FAT32 or ext2 filesystem
- Networking basics (AMD PCNet driver)
- Ethernet & ARP
- IPv4, UDP, TCP
- DHCP & DNS support
- Sound driver (SoundBlaster / AC97)
- USB support
- Minimal userspace C library