My simple os, created by my own, from scratch
It aims only x86 platforms. It is tested on qemu + bochs.
What I want is not a fully fonctional system but a way to learn more on PC architecture.
based on OSDev's recommandations
- Working output system for logging on screen + helpers to show numbers in hex/dec/oct numbers (printf like interface)
- Working output system through serial port for debugging.
- Interupts handler + dumping all needed content (regs/stack frames/address default/other debugs things)
- Kcall interface
- Malloc/free -> memory model flat with headers before used/unused block
- And more...
- Need a working cross-compiler (CF http://wiki.osdev.org/GCC_Cross-Compiler) -- I use now clang, it works out of the box with archlinux's one
- Qemu
- Bochs (and mtools on archlinux)
It's a Makefile
- make qemu -> launch kernel on qemu
- make bochs -> launch kernel on bochs
- make clean -> remove the sysroot, .o, .kernel, .map...
- When you are on Ctrl+A then C to get the hand over the qemu monitor
- When changing a libk/libc/ component, do a make clean
- kernel -> the sources of my kernel
- libc -> the sources of my custom libc
Architecture (here i386 systems) dependant part of the kernel.
- console.h Everything that deals with output on screen (VGA) in text mode.
- gdt.h Initialize a proper GDT.
- idt.h Initialize and allow to manage interrupts (irq + isr)
- irq.h Initialize IRQs. Use handlers and unmask to allow to catch an IRQ.
- isr.h Initialize ISRs.
- serial.h Everything that deals with serial outputs/inputs (only COM1). Inputs don't really works.
Architecture independant part of the kernel.
I should adapt a newlib