diff --git a/content/news/20251006-bringing-bios-support.md b/content/news/20251006-bringing-bios-support.md new file mode 100644 index 0000000..c323823 --- /dev/null +++ b/content/news/20251006-bringing-bios-support.md @@ -0,0 +1,38 @@ ++++ +title = 'ExectOS Expands Beyond UEFI: Bringing BIOS Support' +author = 'Aiken Harris' +date = '2025-10-06T10:36:18+01:00' ++++ +When we first started building ExectOS, we envisioned it as an operating system designed exclusively for UEFI-based +systems. Over time, however, we realized that this requirement was an artificial limitation. Today, we are excited to +announce that we have begun taking concrete steps toward supporting traditional PC/AT hardware with classic +BIOS - broadening the reach of ExectOS to a much wider range of systems. + + +## First Steps Toward BIOS Compatibility +We have already implemented an MBR boot sector and updated our CMake configuration to support BIOS-based emulation. As +of now, ExectOS can be launched in several new testing configurations: + * **bochsvm**: Bochs with BIOS + * **testkvm/testtcg**: QEMU with classic BIOS (with KVM/WHPX acceleration or TCG without acceleration) + * **testefikvm/testefitcg**: QEMU with modern UEFI (with or without acceleration), as before + +This means developers can now experiment with ExectOS under both UEFI and BIOS environments using familiar tools like +Bochs and QEMU. + +## A Unified Boot Partition Model +To simplify BIOS support, we are introducing a dedicated BOOT partition - similar to the recommended practice on +Unix-like systems and analogous to the ESP (EFI System Partition) used by UEFI. Our bootloader will exclusively support +FAT32 on this partition. It will house the bootloader itself, its configuration, and all modules. In other words, we are +effectively bringing the concept of the ESP from the UEFI world into the BIOS realm. + +## What's Next? +Full BIOS support is still some way off. The current MBR implementation and CMake adjustments are just the first step. We +still need to: +* Implement a VBR (Volume Boot Record) capable of locating and loading files from disk +* Develop a preloader to prepare the environment for the main bootloader (enabling paging, long mode, etc.) +* Significantly refactor XTLDR, to eliminate assumptions about UEFI, such as memory allocation APIs +* Ensure all modules are environment-agnostic, running seamlessly on both BIOS and UEFI systems +* Move PE/COFF file handling from the module level into the main XTLDR code + +While there is still a long road ahead, this change opens up new possibilities for ExectOS. By removing the UEFI-only +limitation, we are making the system more flexible and accessible.