A 64-bit x86 kernel built from scratch in C with no standard library, loaded by a custom UEFI bootloader. (Debugging was literal hell) (This is made by a 16yr old with 0 formal background in CS, don't expect much!)
NovusKernel is an educational kernel project showcasing low-level OS concepts, including:
- Custom UEFI bootloader with ELF64 loader
- IDT and GDT table setup
- Physical memory detection via UEFI memory map
- Free list heap allocator (malloc/free)
- Bitmap TTY (draw_char, draw_string, clear_screen)
- Custom memcpy and memset
# make sure you are in the root directory (/NovusKernel)
make clean # clean previous build files
make # build kernel and bootloader
make r # run in QEMU
make flash # flash onto USB (MAKE SURE TO CHANGE VARIABLE <usb> TO YOUR USB NAME)Or if you're using the .nub file (thanks if you're using it!)
nub c # clean previous build files
nub # build bootloader and kernel
nub r # run in QEMU
nub f # flash onto USB (MAKE SURE TO CHANGE VARIABLE <usb> TO YOUR USB NAME)
nub g # push to github (if youre planning to contribute or you forked the repo)
nub i # install all dependencies. might take a few secondsAnd if you're not using NUB, you can find it here!!!
help #all this does is print some stupid text i cant deal with kernel dev anymore its getting hardThis bootloader and preset kernel work on my real hardware and has been tested multiple times. It is reccomended to not run it on any real machine as it may break unpredictably and crash your computer. I trust my creation, you don't have to.
- This version froze on my real machine
Look at CONTRIBUTING.md for more a detailed explanation.