An operating system kernel built from the ground up to understand the inner workings of x86 architecture, systems, and hardware communication.
This project is divided into 10 sections by 42 school. The current goal is to complete sections 1 to 4 with @SenseiTarzan.
- Status: Part 1 is now Completed! π
- Multiboot Compliance
- VBE Driver with:
- Pixel color drawing
- Bitmap drawing
- Glyph drawing
- Keyboard Polling System (PS/2)
- Basic Terminal with:
- Auto-scrolling
- 3-window context switching
- Special event handling (Shift, Alt, Ctrl)
- Recreate the GDT from Multiboot
- Implement a minimalist shell
- Basic commands (
echo,test,status) - Utility commands (
halt,reboot)
- Basic commands (
- Complete memory code structure with paging handling
- Read and Write memory permissions
- User space and Kernel space memory separation
- Physical and Virtual memory management
- Physical memory helpers (
kmalloc,kfree,ksize,kbrk) - Virtual memory helpers (
vmalloc,vfree,vsize,vbrk) - Kernel Panic handling
- Create, fill, and register an Interrupt Descriptor Table (IDT)
- Signal-callback system on the Kernel API
- Signal scheduling interface
- Clean registers interface before a panic / halt
- Stack saving interface before a panic
- Upgrade Keyboard Polling to the IDT system
Requires qemu and make. All other necessary cross-compilation tools are built directly via our toolchain script.
This project includes a shell script to build the toolchain. Run it once before building the kernel:
# Build the cross-compilation toolchain (This might take a while, you have time to go make a coffee β)
./tools/build_toolchain.sh
# Compile and launch the kernel in QEMU
make run