A modern, feature-rich kernel implementation written in C and Assembly, featuring comprehensive hardware support and advanced system capabilities.
- Multiboot2 Compliant: Compatible with GRUB and other multiboot-compliant bootloaders
- VGA Text Mode Driver: Full-featured 80x25 character display with color support
- PS/2 Keyboard Driver: Complete keyboard input handling with scancode translation
- Memory Management: Physical and virtual memory management with paging
- Interrupt Handling: Comprehensive interrupt descriptor table and exception handling
- Dynamic Memory: Kernel heap with malloc/free functionality
- System Calls: Basic system call interface for kernel services
- Interactive Shell: Built-in command-line interface for kernel interaction
- Timer Support: Programmable Interval Timer for scheduling and timing
- Architecture: x86 (32-bit)
- Bootloader: GRUB or any Multiboot2-compliant bootloader
- Memory: Minimum 4MB RAM
- Hardware: VGA-compatible graphics, PS/2 keyboard
- GCC cross-compiler for i686-elf target
- GNU Make
- NASM assembler
- GRUB utilities (grub-mkrescue)
- xorriso (for ISO creation)
# Install dependencies (Ubuntu/Debian)
sudo apt-get install build-essential nasm grub-pc-bin grub-common xorriso
# Build the kernel
make all
# Create bootable ISO
make iso
# Clean build artifacts
make clean# Run with QEMU
qemu-system-i386 -cdrom kernel.iso
# Run with debugging
qemu-system-i386 -cdrom kernel.iso -s -S- Create a new VM with at least 32MB RAM
- Mount the
kernel.isofile as a CD/DVD - Boot the VM
kernel/
├── src/
│ ├── boot/ # Bootloader and entry point
│ ├── kernel/ # Core kernel functionality
│ ├── drivers/ # Hardware drivers
│ └── include/ # Header files
├── build/ # Build artifacts
└── iso/ # ISO creation workspace
The kernel is structured in a modular way:
- Boot: Assembly bootloader stub and kernel entry
- Kernel: Core system functionality and main loop
- Drivers: Hardware abstraction layer
- Memory: Physical and virtual memory management
- Interrupts: Exception and interrupt handling
- Shell: User interface and command processing
This kernel was built to move beyond bootstrapping and explore how core operating system subsystems interact in a real execution environment. The goal was to understand interrupt handling, memory management, and device drivers as an integrated system, rather than as isolated components.
- Single-core only
- No user-mode separation yet
- No filesystem support
- No SMP or preemptive multitasking
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- OSDev Wiki for comprehensive OS development documentation
- Multiboot2 specification
- x86 architecture references