This is a personal playground for tinkering with OS kernel development. It's not meant for production or serious use; it's a space for experimenting, learning, and having fun with low-level code.
Nonetheless...
For building kernull
you'll need:
nasm
assembler.clang
compiler.lld
linker.make
tool.grub-mkrescue
from thegrub
package.- An emulator, such as
qemu
.
Typically to check it out you want to type
make run
(there's nothing interesting you can do at the moment). All make options are:
make
- build kernel binary.make iso
- above + generate kernel image.make run
- above + launch it in QEMU.make clean
- remove binary and image.make clean_all
- remove generated objects, binary and image.
To achieve usability and, as a victory gesture, compile kernull under kernull, the following must be done:
- Boot
- Enter 64-bit mode
- Setup interrupts
- Setup paging
- Frame allocator
- Kernel heap allocator
- PS/2 support
- Multitasking support
- VFS
- Userspace
- Keyboard support
- Program loading
- Syscalls
- Fork and execute
- Shell
After that I can have some fun and do:
- Symmetric multiprocessing
- ext2 support
- Bitmap graphics instead of VGA text mode
- TCP/IP stack
- USB support
...and so on.