On 23.09.2021 17:34, Peter Stuge wrote:
Brian Milliron wrote:
Can you elaborate on what factors determine whether setting up coreboot on a previously unsupported laptop takes days or years?
Mainboards are more or less modified reference designs for a given platform, where platform means the combination of Intel or AMD chips intended to be used together.
coreboot supports several or even many platforms, but not all, and more than likely the support for each platform covers only what is required for the supported mainboards using that platform.
If your platform is unsupported you have thousands of registers to study, most of which are either not at all or merely not correctly described in public documentation.
This case is the "years" end of the spectrum, when no source code and no usable documentation is publically available. I'd guess that this is actually still the common case, even though coreboot has good industry traction. (Many companies do use coreboot but not on all possible platforms.)
If your platform is supported to some degree but your specific mainboard is not then you have to understand the exact details of all differences between your mainboard and the general platform support in coreboot.
Maybe there is no code for things you require or maybe it's there but you must correctly describe how your hardware differs from a reference design or one particular supported mainboard.
Those differences are usually never well-documented, are never purposely published and are quite unlikely to ever leak. Leaked schematics can be helpful, but may not always suffice.
This means another pile of unknowns to first discover and then study in depth.
Once that's done, turn learned knowledge into working coreboot support for your mainboard.
There is tooling (in coreboot) to help with parts of the latter. Tools extract as much information as possible from a running system and try to automatically turn that into coreboot support.
The "days" end of the spectrum is when you are lucky and such tools can completely and accurately capture all required information for your hardware without requiring much learning.
Personal experience and background are further factors, someone with zero knowledge about hardware and zero interest to learn will likely fail no matter how much time they invest.
Zero knowledge with significant interest is a completely different story and can yield a successful world class coreboot developer. :)
There's no x86 firmware development "course", I think you have to just start doing it and teach yourself as you go.
Actually, there is: [1], [2]. What is more, it's 100% free and much more classes are coming soon. We are working on hardware hands-on class currently [3]. We will be using the Dell OptiPlex 7010 here [4], which we added into the coreboot tree some time ago.
[1] https://p.ost2.fyi/ [2] https://p.ost2.fyi/courses/course-v1:OpenSecurityTraining2+Arch4031_x86-64_R... [3] https://p.ost2.fyi/courses/course-v1:OpenSecurityTraining2+Arch4032_coreboot... [4] https://3mdeb.com/shop/open-source-hardware/ost2-arch4032-minimum-configurat...
Kind regards
//Peter