This is a work-in-progress operating system kernel being developed with a specific purpose in mind. As part of an ongoing journey in OS development, it's a creative playground where new concepts and skills are discovered.
![Screenshot at Jun 16 19-41-07](https://private-user-images.githubusercontent.com/39236929/340118473-0db862e3-89a0-43b3-bb7d-c9b6362714a5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNTg0NzYsIm5iZiI6MTcyMDI1ODE3NiwicGF0aCI6Ii8zOTIzNjkyOS8zNDAxMTg0NzMtMGRiODYyZTMtODlhMC00M2IzLWJiN2QtYzliNjM2MjcxNGE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA5MjkzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRiMjgzNGU3OTIwNTFmODJlZmIyYzQ0ZGQ3ZWNhNmI1MmFiYmU1MTJlODQ3MTJhYmY2NWRjMTA3OWJhMjU1YTgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.mOTx9Z0iSekLOh8SrSGc3oL-4TxgTmupZ_y1piKDXGI)
- GRUB bootloader
- 32-bit protected mode
- Global Descriptor Table (GDT)
- C runtime Integration
- Basic Memory Management
- Interrupt Handling
- VGA Display Features
- File System Support
- Device Drivers
- Graphical User Interface (GUI)
- Networking Capabilities
- Multitasking Support
The ISO is built using Docker and upon successful completion, the ISO file will be created in the output directory. To initiate the process, the start.sh script is run.
./build.sh
Once the ISO is built, it will be tested using QEMU. Please ensure QEMU is installed on your host machine.
To test purposes, use QEMU. Run the assembled kernel binary with the following command:
qemu-system-x86_64 -cdrom output/KernarchOS.iso
Manual building and linking is not recommended. However, if needed, the assembly can be done with NASM and the compilation with GCC as shown below:
# Assemble with NASM
nasm -f elf32 boot.asm -o boot.o
# Compile with GCC
gcc -m32 -c kernel.cpp -o kernel.o
# Link with ld
ld -m elf_i386 -T link.ld -o kernel.bin boot.o kernel.o