📢 Note: The default branch is
main
MentOS (Mentoring Operating System) is an open-source educational operating system designed for learning OS development. It provides a realistic yet understandable environment that follows Linux design patterns.
- ✅ Follows Linux guidelines - Similar data structures and algorithms
- ✅ Beginner-friendly - Well-documented, easy to understand
- ✅ Fully functional - Real processes, filesystems, drivers, and syscalls
- ✅ Fast to compile - Builds in seconds on modern hardware
- ✅ Hands-on learning - Modify and extend real OS features
# Clone the repository
git clone https://github.com/mentos-team/MentOS.git
cd MentOS
# Build
mkdir build && cd build
cmake ..
make
# Create filesystem
make filesystem
# Run in QEMU
make qemuLogin: Use root or user (from filesystem/etc/passwd)
All documentation is in the Wiki:
- Getting Started - Set up your environment
- Building MentOS - Compile the OS
- Running MentOS - Boot in QEMU or GRUB
- Architecture - Project structure
- Kernel - Kernel components and data structures
- C Library - Standard library implementation
- System Calls - 60+ syscall reference
- Filesystem - VFS, EXT2, and ProcFS
- IPC - Semaphores, message queues, shared memory
- Programs - Userspace utilities (40+)
- Development Guide - Add programs and features
- Debugging - GDB and kernel logging
- Contributing - Contribution guidelines
- Features - Feature roadmap with priorities
mentos/
├── boot/ ← Bootloader (first code executed)
├── kernel/ ← Core OS (processes, memory, drivers, syscalls)
├── lib/ ← C library + system call wrappers
├── userspace/ ← User programs (40+) and tests (60+)
├── filesystem/ ← Root filesystem content (becomes rootfs.img)
├── iso/ ← GRUB boot configuration
├── doc/ ← Documentation
└── CMakeLists.txt ← Build configuration
- ✅ Process management (fork, exec, wait, signals)
- ✅ Memory management (paging, buddy system, slab allocator)
- ✅ File systems (VFS, EXT2, procfs)
- ✅ Device drivers (keyboard, ATA, RTC, video)
- ✅ System calls (60+ POSIX-like syscalls)
- ✅ IPC (semaphores, message queues, shared memory)
- ✅ Multiple schedulers (RR, Priority, CFS, EDF, RM, AEDF)
- ✅ User/group management (passwd, shadow, permissions)
- ✅ Shell with pipes and job control
- ✅ 40+ userspace programs (ls, cat, ps, etc.)
- ✅ 60+ test programs
See Features for the complete list of implemented features and roadmap.
# GDB debugging (two terminals needed)
make qemu-gdb # Terminal 1: Start QEMU
gdb --command=gdb.run # Terminal 2: Attach GDBSee the Debugging Guide for details.
We welcome contributions! Please see the Contributing Guide.
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes following our coding guidelines
- Commit using Conventional Commits:
git commit -m "feature(scope): description" - Push and open a Pull Request
Project Manager: Enrico Fraccaroli
Developers: Alessandro Danese, Luigi Capogrosso, Mirco De Marchi, Andrea Cracco, Linda Sacchetto, Marco Berti, Daniele Nicoletti, Filippo Ziche, and many valuable contributors.
Parts of MentOS are inherited or inspired by DreamOS by Ivan Gualandri.
See LICENSE.md for details.
Happy hacking! 🎉