PaulOS My take on geohot's fromthetransistor operating system section (section 5) Kernel Design: Monolithic Linux-ish: * only user space threads * open, read, write, close * fork, execve, wait, sleep, exit * mmap, munmap, mprotect * Consider the debug interface you are using, ranging from printf to perhaps a gdbremote stub into kernel Requirements: - make - cross compiler for i386 (check out [https://wiki.osdev.org/GCC_Cross-Compiler]) - grub - xorriso - qemu NOTE: these requriements are not exactly the packages needed to be installed Build: ./build.sh Clean: ./clean.sh Run (using qemu-system-i386): ./run.sh For multiboot kernel (directly without bootable medium): $ qemu-system-i386 -kernel PaulOS.bin STEPS: - interrupt handlers - process management - paging + memory map (physical first, then paging) - usermode -> syscalls (open, read, write, ...) - shell - drivers(?) - filesystem TODO: * output object files in build/ (modify Makefile) * replace "" with <> in includes * implement interrupts and exceptions * plan memory map (virtual and physical) * move on with syscalls * malloc/free (mmap, munmap, mprotect) * open, read, write, close * fork, execve, wait, sleep, exit * build drivers check out: - https://wiki.osdev.org/Main_Page - https://github.com/SerenityOS/serenity