This project is my attempt at making my own (very simple) operating system from scratch. I just wanted to try making one to force myself to better understand how actual modern operating systems work, so I doubt it will ever become featured or powerful enough to be useful to anyone, but feel free to read through the code or ask any questions about it if you're interested in learning more yourself.
- Booting from a multiboot-compliant bootloader
- Primitive VGA and PS/2 keyboard drivers
- Hardware and software interrupt handlers
- Allocating and mapping pages into kernel virtual memory
- Dynamic heap allocator
- TTYs with buffered input/output
- Clock and system time
- Simple shell interface
- Basic filesystem
- Loading programs (ring 0)
- Better graphics driver
- Multitaksing
run
: Runs the operating system through QEMU (x86_64)build
: Builds the project without running. The linked kernel binary is placed atbuild/kernel.bin
and a disk image with grub and the os installed is placed atbuild/disk.iso
debug
: Runs qemu with a gdb server listening on port1234
gdb
: Runs gdb, connects to qemu's server, and sets a breakpoint atkernel_bootstrap
bochs
: Runs the operating system through the Bochs emulator for more debugging informationclean
: Deletes thebuild/
folder and all it's contents
Thank's for reading this and I hope this repo has been able to help you in some way! Feel free to email me or create an issue is you have any questions and I hope I can answer them. Have a great day!