I am new to OSDev, and I am currently trying to write my OS from bare bones, i.e. using GRUP as my bootloader, on x86 arch. I want my OS to support both BIOS and UEFI boot.
I am currently trying to write my own graphical interface. And I am kind of confused on how to do it so it would work on all platforms.
I observed that on UEFI 2.x I must use GOP, while on UEFI 1.x I should use UGA and on BIOS I must use either VESA or VGA.
Does it means that in order to implement a cross-firmware OS I would have to support all of them? And only choose one from the supported interfaces? How can I even tell from my OS if I was booted by UEFI? And what version of UEFI?
Should I just abandon the compatibility goal and simply pick one setting and implement my OS for that one?