Libreboot: Freedom-Respecting Boot Firmware
libreboot.org
libreboot.org
[0] https://libreboot.org/docs/hardware/#supported-hardware. It seems that the Chromebook is an exception?
I personally feel that is a practical solution, as I have the FOSS bootloader, and I don't think Intel has backdoors in their microcode, it would much more likely be in Intel ME.
"Products not planned": https://www.intel.com/content/dam/www/public/us/en/documents...
I'm not sure why you think the government has anything to do with it though. I don't know what motivated them but I would suspect DRM lobbies first.
Regarding why I was thinking the government(s) involve in it, actually it quite natural. At the very beginning, I would say it might be for IT management purpose only, and soon someone just like you mentioned DRM etc. get added to it. And I don't see a reason why government(s) don't see the value of it and would not want to get in as there is nothing better for large scale surveillance: built-in with almost every single machine, have access to virtually everything on the machine, powerful enough to do what ever they might want to do and most importantly, most people have no idea about it and even if someone like us happen to know it but nonetheless, we still almost absolutely have no way to remove it or at least disable it.
> Technically yes, you were right, there is a chance for us to intercept the communication between PCH and the Intel CPU then reverse engineer the protocol or even directly RE the PCH chip and create a substitute. But how practical, I don't really know. Firstly, the effort required is beyond most people can afford IMO. Put those cost/effort etc. aside, there might some undocumented CPU features actually need ME to work and if I were the designer, I would at least use signed if not encrypted payload, then make the RE process much less likely.
Well, yes, but I see this more as a project that would show up at DEFCON as a hack or maybe something commissioned by System76, Purism, Raptor, Pine or one of these companies.
1. https://libreboot.org/faq.html#amd
2. https://en.wikipedia.org/wiki/AMD_Platform_Security_Processo...
Modern high speed links are very finicky, to the extent that various parameters (timing, etc.) on each end of the link can't be hardcoded. The link training is part of initializing the link where the FW on each end of the link try out various parameters in order to enable full speed operation.
> Where's this memory training fit in?
I believe it happens even before POST.
Exactly. Initialising DDR memory in any kind of system is a bit of a black art for this reason, even when the chips are soldered to the same PCB as the SOC, let alone when there's two unknown PCBs and two sockets in the mix.
* All cores are brought out of reset. All cores start executing code from the end of 32b physical address space, hopefully some EPROM with firmware lives there. (One thing of note is that yes, intel says that there is no such thing as "unreal mode", but everything after i386 boots into unreal mode)
* Initial state of EDX signifies the position of CPU in SMP system, one core is designated as system processor, all other are application processors and thus do minimal APIC initialization and then enter halt and wait for IPI.
* The system processor continues executing its firmware and its first order of bussiness is to configure cache controllers as to get even a few kilobytes of writable SRAM for its data area.
* SP initializes enough of on-board PCIe devices to be able to access SMBus/SPD
* SP scans SPD to get list of populated DIMMs, their sizing and timing
* SP converts the SPD data into memory controller configuration and writes it there (note that at this point we are still doing XIP from slow-ish SPI Flash and have no RAM to speak of, so code that does this has to be very efficient, which is the reason for various RAM incompatibilities, as somehow common approach is to just hardcode expected configurations into the firmware).
* SP looks into NVRAM if the DIMM configuration is same as was on previous boot, if it is it skips the next step
* If it changed the SP enters the DDR4 link training algorithm. This essentially involves measuring lengths of wires from memory controller to individual DRAM chips. The idea there is that it is impossible to make them well-enough matched for the frequencies involved, so the deliberate difference is compensated for in logic and software (also it saves space on PCB of both motherboard and the DIMMs themselves).
* The result of training is written into configuration registers of the DRAM chips and memory controller (and saved into NVRAM for next boot, as the training is somewhat slow)
* We have RAM.
* Firmware completes initialization of PCIe topology, enables LPC bridge.
* Firmware does PCI(e) resource allocation. (The "PNP OS installed" switch in many BIOS configurations controls whether it configures all PCI devices or only these that it deems relevant)
* We have something that looks like PC.
* What one would call traditional PC-style POST happens now. First phase of ROM SCAN (in BIOS/CSM case) causes the VGA controller to come out of reset. Display turns on and user sees something like "Copyright (C) NVidia/AMD" in top-left corner
* Firmware draws its splashscreen/UI.
* Firmware completes all other initialization tasks (now running in somewhat sane environment). This involves entering protected mode and in CSM/BIOS case exiting it again (sometimes even multiple times). Various datastructures that are going to be passed to OS get filled in. List of boot devices is built. (this is the step that user perceives as "POST")
* Bootloader gets loaded from whatever device was selected and control is passed to it.
[Edit: and to make it even more interesting modern CPUs often need microcode update to be applied somewhere pretty early along this process]
[Edit2: it is my understanging that on at least some x86 server platforms the memory initialization is done by BMC although I'm not sure how exactly that works... bitbanging the DDR4 controller over JTAG?]
It all went to hell when the website changed from a very functional wiki to some standard template filled with marketing buzz.
They did then drop support for a lot of chipsets and boards, for some sort of commercial focus that as far as I can tell went nowhere.
Not sure if anyone else installs it by default, it's been awhile since I've looked.
As unrealistic as it would be it would be an incredibly fun project if you could stick to it
Not sure how it’s licensed, but I can’t help but the think of Niklaus Wirth and Oberon.
https://www.andrewrobbins.info/libreboot.html
but later was apology from Leah Rowe:
It should be noted, that I have apologized directly to John Sullivan (executive director of the FSF) and Richard Stallman (founder and leader of the GNU project, and president of the FSF). Both have accepted my apology, and are happy that I am doing this and that Libreboot will once again work with them.
https://www.reddit.com/r/libreboot/comments/66tdds/proposal_...
Ultra-based. Thanks for changing my mind about Leah :)
reboot
It's parasitical removalware, riding on the real project's value and competing with it in market share after removing parts of it.
I'd rather see an honest fork that's properly maintained than this.