Typically in a computer system, the boot sequence is like this: firmware -> bootloader -> Operating System. The problem is that nowadays we have the largest variety of operating systems, boot loaders, and firmwares (UEFI/Legacy), and even some of them are proprietary software that are not public. So, the interaction might be a problem if the interface is not well-defined.