- Boot + Hello World
- Call C code from assembly
- Framebuffer driver
- Serial port driver
- Segmentation
- Interrupt handling
- Register interrupt handlers by interrupt number
- Setup timer interrupt handler
- Keyboard driver
- Run GRUB modules
- Enable paging
- Page frame allocation
- Create kernel heap
- Running C programs in User Mode
- Implement filesystem
- System calls
- Implement process scheduling
- Simple shell
- File editor
- Better logging / printing
- newline characters
- colors
- log levels
- Util file:
- itoa
- str_reverse
Install dependencies:
sudo apt install build-essential nasm genisoimage bochs bochs-sdl bochs-x
Make run
Generate loader.o: nasm -f elf32 loader.s
Link kernel.elf executable: ld -T link.ld -melf_i386 loader.o -o kernel.elf
Generate iso image:
genisoimage -R \
-b boot/grub/stage2_eltorito \
-no-emul-boot \
-boot-load-size 4 \
-A os \
-input-charset utf8 \
-quiet \
-boot-info-table \
-o os.iso \
iso
Run Bochs: bochs -f bochsrc.txt -q