|
|
@ -10,38 +10,64 @@ Windows 10 on it, it would just be an old slow laptop. But I want more, I want |
|
|
|
lightning fast boot times, I want a good experience and most of all I want |
|
|
|
lightning fast boot times, I want a good experience and most of all I want |
|
|
|
freedom where I can get it. |
|
|
|
freedom where I can get it. |
|
|
|
|
|
|
|
|
|
|
|
## [Libreboot][lboot] |
|
|
|
## [Coreboot][cboot] |
|
|
|
|
|
|
|
|
|
|
|
Yes! After some 5 years of dormancy the Libreboot project came out with a |
|
|
|
|
|
|
|
[new beta release][newboot] that [adds support for the x301][xboot]. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Basically Libreboot is a BIOS replacement, it completely replaces all of the |
|
|
|
|
|
|
|
old BIOS stuff with a _libre_ alternative, which has many advantages: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. MUCH faster boot times |
|
|
|
|
|
|
|
2. Completely respects your freedom |
|
|
|
|
|
|
|
3. Completely disables the intel ME and replaces all proprietary firmware with |
|
|
|
|
|
|
|
libre software |
|
|
|
|
|
|
|
4. While being simpler (no menu, no live configuration, etc.) it actually |
|
|
|
|
|
|
|
allows for much greater flexibility in the boot process |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Libreboot works by setting up a minimal environment, enough to load |
|
|
|
|
|
|
|
[GRUB][grub], then GRUB proceeds to load the OS or other things. |
|
|
|
|
|
|
|
Libreboot has also other _payload_ options like [SeaBIOS][sbios] or |
|
|
|
|
|
|
|
[Tianocore][tcore] (an open-source UEFI implementation), they allow to load |
|
|
|
|
|
|
|
other operating systems normally (not via GRUB) but generally this is slower. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The method I will use is an hybrid, Libreboot will load GRUB, which when a key |
|
|
|
|
|
|
|
is pressed like shift, during the boot process, will load a menu of options |
|
|
|
|
|
|
|
containing all the operating systems, some diagnostic, Tianocore and SeaBIOS |
|
|
|
|
|
|
|
(everything needs to boot). Otherwise when no key is pressed it should boot |
|
|
|
|
|
|
|
straight into the first available OS. |
|
|
|
|
|
|
|
Disclaimer: I have not seen this elsewhere and although I think it should be |
|
|
|
|
|
|
|
possible, I don't really know. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[lboot]: https://libreboot.org/ |
|
|
|
> coreboot is an extended firmware platform that delivers a lightning fast and |
|
|
|
[newboot]: https://libreboot.org/docs/release/libreboot20210522.html |
|
|
|
> secure boot experience on modern computers and embedded systems. As an Open |
|
|
|
[xboot]: https://libreboot.org/docs/release/libreboot20210522.html#lenovo-thinkpad-x301 |
|
|
|
> Source project it provides auditability and maximum control over technology. |
|
|
|
[grub]: https://www.gnu.org/software/grub/ |
|
|
|
|
|
|
|
|
|
|
|
Basically coreboot is a platform that provides basic hardware initialization |
|
|
|
|
|
|
|
for other programs to run on and start your bootloader (or OS) of choice. Such |
|
|
|
|
|
|
|
programs are called payloads, I decided to go with [SeaBIOS][sbios] a free |
|
|
|
|
|
|
|
[BIOS][bios] implementation, but you can choose |
|
|
|
|
|
|
|
[from a variety of available payloads][payloads], there's even a linux distro |
|
|
|
|
|
|
|
in there! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Now to the ones who know coreboot is a bit difficult to configure, that's why |
|
|
|
|
|
|
|
projects such as [Libreboot][lboot] and [Skulls][skulls] exist, but being the |
|
|
|
|
|
|
|
masochist I am, I decided to have a go at configuring it on my own and in the |
|
|
|
|
|
|
|
process also remove the [Intel Management Engine (ME)][ime] like Libreboot does. |
|
|
|
|
|
|
|
**I lied** this is not just software, unfortunately the flashing of the new BIOS |
|
|
|
|
|
|
|
cannot be done within the operating system, only official ones can be installed |
|
|
|
|
|
|
|
that way (at least on this machine), so to do this you'll need some things, some |
|
|
|
|
|
|
|
knownledge, and a lot of patience. |
|
|
|
|
|
|
|
Oh and [here's the coreboot page for the x301][corex301]. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Getting the stuff you'll need |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
First of all one cannot go further in this intent witout some "basic" gear, what |
|
|
|
|
|
|
|
we need to do is find a chip on the mainboard of the laptop, access it's pins |
|
|
|
|
|
|
|
(in a way we're hijacking it), connect it to an external device called a |
|
|
|
|
|
|
|
programmer and load the new [firmware][fware] on that chip so that the machine |
|
|
|
|
|
|
|
can execute what's on it. |
|
|
|
|
|
|
|
There is one complication, the chip is in [WSON8][wson] package, which |
|
|
|
|
|
|
|
is not easy to work with since the pins do not exent to the side but on the |
|
|
|
|
|
|
|
bottom making them almost impossible to attach an [IC clip][icclip] to. |
|
|
|
|
|
|
|
Since if anything goes wrong during the next steps you'd want to reprogram |
|
|
|
|
|
|
|
the chip, and that cannot be easily done without a clip, you really want that |
|
|
|
|
|
|
|
old chip gone in favor of a new one. But that requires soldering. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
So here's a handy list of everything you will need to proceed: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. A [Raspberry Pi][rpi], used for the actual programming; it is not strictly |
|
|
|
|
|
|
|
necessary but if you have it already it is the easiest method. |
|
|
|
|
|
|
|
An alternative method is by using a [CH341A][ch341a] programmer and applying |
|
|
|
|
|
|
|
[this fix][ch341fix] to avoid burning the whole board. |
|
|
|
|
|
|
|
2. A [SOIC8 IC clip][soicclip] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[cboot]: https://www.coreboot.org/ |
|
|
|
[sbios]: https://www.seabios.org/SeaBIOS |
|
|
|
[sbios]: https://www.seabios.org/SeaBIOS |
|
|
|
[tcore]: https://www.tianocore.org/ |
|
|
|
[bios]: https://wikipedia.org/wiki/BIOS |
|
|
|
|
|
|
|
[payloads]: https://www.coreboot.org/Payloads |
|
|
|
|
|
|
|
[lboot]: https://libreboot.org/ |
|
|
|
|
|
|
|
[skulls]: https://github.com/merge/skulls |
|
|
|
|
|
|
|
[ime]: https://wikipedia.org/wiki/Intel_Management_Engine |
|
|
|
|
|
|
|
[corex301]: https://doc.coreboot.org/mainboard/lenovo/x301.html |
|
|
|
|
|
|
|
[fware]: https://en.wikipedia.org/wiki/Firmware |
|
|
|
|
|
|
|
[wson]: https://blog.mbedded.ninja/pcb-design/component-packages/wson-component-package/ |
|
|
|
|
|
|
|
[icclip]: https://www.sparkfun.com/products/13153 |
|
|
|
|
|
|
|
[rpi]: https://www.raspberrypi.org/ |
|
|
|
|
|
|
|
[ch341a]: https://www.amazon.it/Programmatore-Youmile-CH341A-Burner-EEPROM/dp/B07YDFNYDS |
|
|
|
|
|
|
|
[ch341fix]: https://www.eevblog.com/forum/repair/ch341a-serial-memory-programmer-power-supply-fix/ |
|
|
|
|
|
|
|
[soicclip]: https://www.amazon.it/WINGONEER-eeprom-programmazione-circuit-adattatori/dp/B012VSGQ0Q |
|
|
|