- NASM
- gcc && g++
- Qemu (
sudo apt install qemu qemu-utils qemu-system-x86 qemu-system-gui
)
- Download a GNU-EFI source code. Place it in the
bootloader/gnuefi
directory. ./init.sh
Tool chain: ./recompile.sh && ./build-img.sh && ./run.sh
64-bit simple hobby kernel written in C++ for educational purpose and fun.
- CPUID - state and features checking
- Framebuffer (double-buffering) driver, writing output, colors
- Basic read-only console (+ auto-scroll)
- GDT - flat model
- Physical memory allocator
- Virtual memory - 64-bit paging
- IDT - basic interrupts
- Very basic libc (it will be written further if needed)
- Kernel panic && asserts
- ACPI support
- Local APIC and I/O APIC support
- High Precision Event Timer (HPET): one-shot and periodic mode
- Heap (kmalloc & free)
- PS/2 driver (keyboard support)
- All x86 exceptions
- Uniprocessor multitasking
- User mode
- Virtual relocation over 0xFFFFFFFF
My GNU-EFI (UEFI) bootloader written in C for fun and education.
- Reading kernel file from drive
- ELF kernel parsing and loading into memory
- Framebuffer initialization
- Memory map gathering
- Psf font loading
- ACPI support
- Error checking
- Jumping into kernel
- IM3 - Intel Manual, vol. 3
- EFI - UEFI Specification
- ACP - ACPI Documentation
- APC - APIC Specification
- IOA - IO APIC Documentation
- HPT - HPET Documentation