This is my version of the Limine-based kernel. It's basically
just a stripped down version of the Limine C Template,
keeping only the x86-64 architecture support & restructuring the code(no more kernel/
directory).
Given this is only a template you can start with, the OSDev Wiki and the Limine Boot Protocol should give you a good headstart to your project.
You can change the name of the kernel in the boot menu inside of the limine.conf
file.
include/
- Contains external header files which do not generally belong to the source code(e.g. auto-generatedlimine.h
)build/
- Contains built kernel files & intermediary object filesdeps/
- Contains cloned dependencies required to run the projectres/
- Contains resources which should be converted into object files using theobjdump
command(see Makefile full command)src/
- Contains kernel's main source code, this is where you will spend most of your time
I'd say the Makefile is pretty well organized, so just a bit of knowledge of make should give you enough information about the project build and how you can customize it. But generally it follows these steps:
- Clone & build the dependencies(using the
get-deps.sh
script) - Compile & link the object files
- Create the ISO/HDD
- (Optional) Run inside QEMU
The Makefile also provides following targets:
all
- Builds the ISOall-hdd
- Builds the HDDrun
- Runs the ISO inside QEMUrun-hdd
- Runs the HDD inside QEMUrun-debug
- Runs the ISO inside QEMU and waits for the debugger to attach, also provides useful information inside of thelogs/
directoryclean
- Cleans the contents of thebuild/
directoryfreshen
- Removes all the downloaded dependencies and cleans the contents of thebuild/
directory
This project template is licensed under the MIT License