-
Notifications
You must be signed in to change notification settings - Fork 69
Home
Galfurian edited this page Aug 19, 2026
·
8 revisions
MentOS (Mentoring Operating System) is an open-source educational operating system designed to provide a realistic yet understandable environment for learning OS development.
- Getting Started - Set up your development environment
- Building MentOS - Compile and build the OS
- Running MentOS - Launch MentOS in QEMU or GRUB
- Architecture - Understand the project structure
- Development Guide - Add programs and features
- Features - Feature overview and roadmap
- Bootloader - First code executed, loads the kernel
- Kernel - Core OS functionality (processes, memory, drivers)
- C Library - Standard library and system call wrappers
- Userspace Programs - User applications and utilities
- Debugging - GDB debugging and kernel logging
- Unit Testing - Writing kernel unit tests safely
-
Process Management - Processes,
fork(),execve(), task state - Scheduling - CPU scheduling algorithms
- System Calls - Adding and using system calls
- File Systems - EXT2 and VFS implementation
- IPC - Inter-process communication mechanisms
MentOS is an educational operating system that aims to:
- Follow Linux guidelines - Uses Linux-inspired data structures and design patterns
- Be beginner-friendly - Well-documented, simple enough to understand
- Provide realistic experience - Real OS features (processes, filesystems, drivers)
- Enable hands-on learning - Students can modify and extend it
There are many educational operating systems, but MentOS stands out by:
- Following Linux's design patterns and structures
- Providing comprehensive documentation
- Offering a build-time choice of scheduling policy (RR, Priority, CFS, EDF, RM, AEDF), where Round-Robin is the complete default and the others are deliberately left as guided student exercises
- Including a project-provided C library and a set of userspace programs
- Building quickly on modern hardware (typically seconds)
Parts of MentOS are inherited or inspired by DreamOS by Ivan Gualandri.
The following items are directly supported by the current codebase:
-
Scheduling policy: selectable at build time through the CMake
SCHEDULER_TYPEoption (SCHEDULER_RR,SCHEDULER_PRIORITY,SCHEDULER_CFS,SCHEDULER_EDF,SCHEDULER_RM,SCHEDULER_AEDF; seekernel/CMakeLists.txt). OnlySCHEDULER_RR— the default — is fully implemented; the other branches inkernel/src/process/scheduler_algorithm.ccontain/*...*/placeholders and fall back to Round-Robin until a student completes them. See Scheduling. -
File systems: VFS with EXT2 and procfs implementations; EXT2 on
/dev/hdais mounted as/and procfs is mounted at/proc -
Userspace stack: project-provided C library (
lib/) + statically linked user programs underuserspace/ -
Boot flow: Multiboot boot path in
boot/andiso/; MentOS is started by a Multiboot-compliant loader such as GRUB and its own bootstrap code runs in 32-bit protected mode
Choose a path based on your interests and experience level:
- Getting Started - Install prerequisites and tools
- Building MentOS - Compile the OS
- Running MentOS - Boot and interact with the OS
- Development Guide - Make your first change
- Debugging - Learn basic debugging with GDB
- Architecture - Project structure and layers
- Bootloader - How the OS starts
- Kernel - Process management, memory, filesystems
- Scheduling - How the CPU is shared between processes
- System Calls - How user programs request kernel services
- IPC - How processes communicate
- System Calls - Learn syscall architecture
- Userspace Programs - Write C programs for MentOS
- File Systems - Understand how files work
- Debugging - Advanced debugging techniques
- Development Guide - Add new features
- Debugging - GDB, kernel logs, common issues
- Running MentOS - Boot problems
- System Calls - Syscall issues
I want to understand...
- How processes work → Kernel (Process Management section)
- How memory is managed → Kernel (Memory Management section)
- How files are stored → File Systems
- How programs run → Userspace Programs
- How processes talk → IPC
- How programs communicate with kernel → System Calls
- How the OS starts → Bootloader
- How to write a program → Userspace Programs → Development Guide
- How to test my kernel changes → Unit Testing
- How to debug issues → Debugging
- How to contribute code → Contributing
Interested in contributing? See the Contributing guide for:
- Code style guidelines
- Git workflow
- Testing procedures
- Documentation standards
See Features for a complete list of implemented and planned features.
Having issues? Check:
- Debugging - Common debugging techniques
- GitHub Issues - Report bugs or ask questions
- GitHub: mentos-team/MentOS
- Issues: Report bugs or request features
Happy hacking! 🎉