hwpplayers

Home Coreboot procyberian hackathon

hwpplayers_Rainbow_Circle_40px_87x82.svg.png

hard working philosophers players is a hackerspace please look at Hackerspace for free software developers , admins and other content makers.

For the meaning of hwpplayers please look at On hacking

It is hard to write a simple definition of something as varied as hacking, but I think what these activities have in common is playfulness, cleverness, and exploration. Thus, hacking means exploring the limits of what is possible, in a spirit of playful cleverness. Activities that display playful cleverness have "hack value".


What we understand from Coreboot and why it is important

The LinuxBIOS project began in 1999 at Los Alamos National Laboratory with the clear goal of creating a firmware for PCs that could be reliable, fast, well integrated and that could be more secure. LinuxBIOS is now known under the Coreboot name, and is the only free as in freedom BIOS released under GPL version 2 that supports IA-32, x86-64, ARM, ARM64, MIPS and RISC-V architectures.
Coreboot, as its old name means it, was designed with a Linux kernel at first, highly rewritten and remastered to become a full firmware that can load a GNU/Linux distribution or any other OS. There is in fact four steps for Coreboot to load our OS, all of that written mostly in C.
First, the Coreboot's mission is to pass the "Bootblock stage". In fact, this is actually prepare and initialize flash memory that contains firmwares. Then comes the "ROM stage" that is the initialization of the chipset and memory to work correctly. The third step is the "RAM stage" that involves copying the payload in memory and preparing its environment to work properly. And eventually, the "Payload stage", that is actually where Coreboot can load an operating system in memory and make it work !

The Bootblock stage

This is mostly done by initializing stack point, exceptions and interrupts with some assembly code then jumping to C code (src/lib/bootblock.c).
The code is compiled with a special cross-compiler that uses L1 cache of CPU as RAM (since RAM isn't initialized at this time). That code is weight-optimized to fit in ROM chips.
Then Coreboot initializes the mainboard and jump to the next stage.

The ROM stage

This stage, written in C uses the same compiler than the Bootblock stage. It intends to initialize the clock and memory to work for the future OS. It involves verifying informations of each material, such as capabilities and compatibilities, and checking ervything is OK to boot.
At this time, the VGA BIOS is initialized. Then, the RAM stage is invoked.

The RAM stage

This stage intends to populate the RAM for the OS to work : it means enumerating the PCI and PCI-e buses, creating ACPI tables, SMM handlers, legacy BIOS interrupt vectors, and so on.
This step is really important because many OSes rely on ACPI tables to enumerate buses (as manual probing is sometimes harmful).
Then the Payload stage is loaded and invoked.

The Payload stage

Coreboot doesn’t try to mandate how the boot process should look, it merely does hardware init and then passes on control to another piece of software that it carry along in firmware storage, the payload.
This payload can be anything like

After this stage, only the SMM handler remain active, and Coreboot does not let any service resident. The machine is now controlled by the OS.


Coreboot, at this time when proprietary software spies on our computers, since Intel ME exists with awesome and terrible capabilities, is our only hope to bring freedom to our machines.
GNU/Linux is no longer free if someone or something can control it without limit, without control from the user, and without audit about security of this intrusion.
With Coreboot, it became possible to not have a UEFI full resident kernel functionning alongside the user's OS, and to disable the hidden cores inside AMD and Intel processors that run something that can read your data even if your computer is shutdown and transmit these data via the Internet.

There is some distribution of Coreboot, that are more or less different.
As Coreboot tries to work correctly on most of hardware, the Coreboot team accepts at this time a small amount of proprietary blobs.
Libreboot is a distribution of Coreboot that removes these blobs and contribute to Coreboot to help the team to remove them permanently.
Libreboot was a GNU package, and is still supported by the FSF.