My original intention was to write a unikernel for Golang. However, learning about bootloaders, CPU architecture and operating systems turns out to be a rather time-consuming endeavour. While I was reading articles and tutorials the code present in this repository helped me understand how things work.
The first example is based on Writing a Simple Operating System - from Scratch.
The second example uses grub to create a bootable iso. Make sure you install
grub-mkrescue
.
The third example uses no existing bootloader and is based on How to write your own Operating System. Interrupts are handled that allow to process keyboard inputs and timer ticks.
The fourth example uses the bootloader protocol bootboot that is much more accessible than grub. I haven't explored all details but so far it's my favourite way to create bootable images for x86-64 (BIOS and UEFI) and ARM Raspberry Pis.
# Open folder and run
make
OS in your browser via WASM
Go specific
- Bare Metal Gophers with a really nice talk (but kind of outdated)
- Talk about Go Runtime
- EggOS (unikernel in Go)
Intel Developer Manuals with all the x86 details
Other