Is TianoCore+coreboot a true open source UEFI?

Is TianoCore+coreboot a true open source UEFI?

For Intel platforms(I have done development for Intel boards and I cannot speak for AMD though I believe the case is still the same), no, because TianoCore by itself cannot perform low level hardware initialization and requires coreboot to do this hardware init first. But how does coreboot do this? coreboot invokes specific binary blobs to perform these functions. How are these binary blobs(e.g. microcode updates, FSP binaries, ME binaries, etc) generated? Well you cannot build these binaries yourself because they are Intel proprietary code. At best, you can retrieve the ones pertinent to your platform and have them included in the coreboot build process. Until you are able to freely and openly modify the source for these binary blobs you will not have a true open source UEFI or coreboot for that matter.

My question is, do these drivers provided by coreboot still require some kind of binary blobs from chipset vendors?

Yes

Sources:

Experience

coreboot source code

http://www.coreboot.org/TianoCore

Intel Firmware Support Package(FSP)
http://www.intel.com/content/www/us/en/intelligent-systems/intel-firmware-support-package/intel-fsp-overview.html

Microcode Update (Often applied by the BIOS but doesn't have to.)
https://wiki.debian.org/Microcode


It's possible to combine coreboot (doing early hardware initialization) and TianoCore (providing the UEFI API) to a complete UEFI firmware implementation. However that's still in development. It also won't be a "canonical" UEFI since the outer layer will be coreboot.

One approach, based on Duet, can be found at http://notabs.org/coreboot/duet-payload/ - it boots somewhat on real hardware.

Another (disclosure: my project) attempt that tries to reuse more of Tiano and stay closer to the UEFI architecture is on github: https://github.com/pgeorgi/edk2/. This one hasn't seen much testing on real hardware yet, just Qemu.

In principle it could also work to take coreboot code and make tianocore packages out of them, so it looks and feels like UEFI in every aspect (not just those visible to the user and the OS). Obviously coreboot developers aren't very interested in that.


Chipset initialization and such other extremely low-level hardware specific code has always been mostly closed-source. BIOS/UEFI does not change the fact that details of memory controller initialization etc. are rarely disclosed by board vendors.

To have a true open-source board, you'll have to look for open-source hardware, some vendor who exposes all the specifications of each hardware component on the motherboard. That's difficult to find, to say the least.