JBootloader is a custom bootloader and kernel with a shell that has basic functionality made in c and assembly x86_64. The kernel currently can load a fat-16 filesystem image in read only mode and commands such as cat and ls can be used. Everything that is required to boot is all compiled into os.bin (Releases) including the kernel, stage1/stage2.asm and the fat16 filesystem which is designed to work on QEMU. This project isnt made to be actually used (obviously) but its more of a learning journey helping me learn how a bootloader and kernel work.
Initially I wanted to just make a bootloader like GRUB that could boot any operating system but at the time I was overestimating my skills in asm so I decided to steer off and make a simple kernel instead.
The challenging part was the agonizing “why won’t the fat-16 partition show up” because it just would show up no matter what I did so I pulled up gemini and put in my fat_16.c code and asked it to edit my code to push out any debugging info to the vm so that I’d be able to see what went wrong, using this I overcame my problems. Also at the start I spent almost an hour trying to find an issue since my C/C++ extension in VS wasn’t working and my build command just refused to tell me what was wrong but turns out I did #include print.c :sob
To test the project I have all the instructions on the release page linked on the demo button and the download to os.bin which includes all the parts with the assembly bootloader, the kernel and the filesystem’s .img file. You also require qemu to be installed and if your on windows PLEASE just use wsl it’s a pain to use qemu on windows natively.
- 5 devlogs
- 15h
- 13.86x multiplier
- 204 Stardust