CubeCactusOS
A custom operating system based on MINIX3 microkernel architecture.
Overview
CubeCactusOS is a microkernel-based operating system inspired by MINIX3, designed for educational purposes and modern system development. It follows the MINIX3 philosophy of modularity and reliability.
Project Structure
os/
├── kernel/ # Microkernel core
├── servers/ # System servers (PM, VFS, etc.)
├── drivers/ # Device drivers
├── userland/ # User-space programs and utilities
├── lib/ # System libraries
└── boot/ # Boot loader and initialization
Architecture
Following MINIX3's microkernel design:
- Microkernel: Minimal kernel handling IPC, scheduling, and low-level operations
- Servers: System services running as user-space processes (Process Manager, Virtual File System, etc.)
- Drivers: Device drivers isolated in separate processes
- User Programs: Standard utilities and applications
Prerequisites
- GCC/Clang compiler toolchain
- GNU Make
- QEMU or VirtualBox (for testing)
- Git (for MINIX3 source)
- Cross-compilation tools (optional for x86 targets)
Building from MINIX3 Source
Step 1: Get MINIX3 Source Code
# Clone MINIX3 repository
git clone https://github.com/Stichting-MINIX-Research-Foundation/minix.git minix3-source
cd minix3-source
Step 2: Build the OS
# From the project root
make os-build
Step 3: Create Bootable Image
make os-image
Step 4: Run in QEMU
make os-run
Development Workflow
- Modify Kernel: Edit files in
os/kernel/
- Add Drivers: Create new drivers in
os/drivers/
- Build: Run
make os-build
- Test: Run
make os-run to test in QEMU
Customization
Adding a New System Call
- Define the system call in
os/kernel/syscall.h
- Implement the handler in
os/kernel/syscall.c
- Update the system call table
- Rebuild the kernel
Creating a New Driver
- Create driver directory in
os/drivers/
- Implement driver following MINIX3 driver interface
- Register driver with the system
- Rebuild and test
Key Features (Planned)
Resources
Contributing
This is an educational project. Contributions and learning improvements are welcome!
License
Based on MINIX3 (BSD-style license). Check MINIX3 source for complete license terms.
Acknowledgments
- Andrew S. Tanenbaum and the MINIX3 team
- The MINIX Research Foundation
- OSDev community
Note: Building a complete OS is a complex undertaking. Start with understanding MINIX3's architecture before making modifications.