Goodbye Librem - welcome Librem

Det officielle lydspor til dette indlæg er sangen der spillede under projektetssuccesfulde afslutning. Det er også en sang jeg kan huske fra min ungdom :-D
https://open.spotify.com/album/7nHnKElXt4cxSvgGlH9RQQ
https://www.youtube.com/watch?v=mUzQv71iVeU

Gimme Open Source overalt!

Så er tiden til at snakke om Coreboot - kig eventuelt selv på Libreboot, som er en distribution af Coreboot. Der er også en spændende udvikling med Heads
https://puri.sm/posts/demonstrating-tamper-detection-with-heads/

Jeg købte for nogle år siden en laptop Librem og fik leveret Librem 15 version 2, 15v2. Den blev designet med så frie komponenter som muligt, så den kunne køre Open Source.

Den skrev jeg om i blogindlægget Maj 2016:
https://www.version2.dk/blog/naesten-fri-laptop-librem-15v2-first-impres...

Siden dengang har jeg brugt den laptop som min private, men jeg tøver lidt med at sige primære - har haft lønarbejderjob hvor jeg har haft Macbooks.

Det har dog været irriterende at den stadig kørte AMI BIOS, ufrit og trist. Gennem årene har Purism, firmaet bagved, lavet nye modeller, som blev leveret med Coreboot - en friere BIOS. Jeg har fulgt det med spænding, og tænkt om jeg skulle opgradere.

Der kom instruktioner til at opgradere til coreboot på min model, men jeg lod være.

Desværre var der jo nogle alvorlige overvejelser:

  • Installation af coreboot ville formentlig kræve geninstallation af Qubes OS og restore af alle mine data. Det har jeg prøvet før da jeg skiftede interne SSD fra 500Gb til en større.
  • Installation af coreboot kunne gå galt. Det ville betyde at jeg skulle finde en der kunne smække ledninger på hardware chip og skrive et "godt image" til flashen. Da man ikke bare sådan kan downloade image var det lidt risikofyldt

Den sidste kunne gøre at jeg ikke kunne bruge min laptop og det virker voldsomt at smide en så ny laptop over i skuffen.

2019 ny laptop, tilbage til coreboot

I 2019 skete der det at Purism frigav Librem 15 version 4, 15v4. Det var en udvikling jeg havde ventet længe på. Der kom en bedre 4K skærm, men hverken version 3 eller version 4 har væsentligt voldsommere CPU.

Min 15v2 flimrer dog lidt i skærmen, og jeg vil hellere lave en kontrolleret udskiftning af laptop. Så jeg bestilte mindste model - $1.674,00 inkl USPS forsikring. Det kostede så 3.416DKK at få den ind i landet. Siden har jeg smækket en stang ram og en NVMe i den.

Det blev leveret her for noget tid siden og spiller som forventet 100% med Qubes OS og der ER coreboot på den laptop. NB: den er ikke såååå lysstærk at den blænder, men ellers er skærmen fuldt ud tilfredsstillende.

Trouble in coreboot paradise

Så nu er det tid til at opgradere den gamle til Coreboot! Søgninger viste mange vejledninger, og det er lidt en jungle.

Når vi snakker coreboot er der nogle vigtige pointer.

Coreboot images er ikke 100% frie. De består ofte af nogle binære objektfilter - bin streams, bits med kode og konfiguration til hardware. Det betyder at selvom alt det omkringliggende er open source må de færdige images ikke distribueres ... fuck mig.

Det er selvfølgelig nemt at downloade filerne, hvis man kan finde en url og udpakke dem. Specielt frustrerende er det jo at man har en BIOS installeret som har disse bits.

Nå, jeg søgte på internet og gik så småt igang fredag aften.

Processen var basalt set:
1) Hent script til at bygge coreboot image
2) Find manglende filer
3) Installer image - hvis du tør

Den mest officielle vejledning er:
https://forums.puri.sm/t/building-coreboot-from-source-official-script/1264

og jeg brugte også et script fra:
https://github.com/kakaroto/purism-playground/blob/master/purism-librem-...

Which coreboot image do you want to build:
 
# Broadwell/5th-Gen
1 - Librem 13 v1 (4.8.1-Purism-4)
2 - Librem 15 v2 (4.8.1-Purism-4)
# Skylake/6th-Gen
3 - Librem 13 v2 (4.8.1-Purism-4)
4 - Librem 13 v3 (4.8.1-Purism-4)
5 - Librem 15 v3 (4.8.1-Purism-4)
# Kabylake/7th-Gen
6 - Librem 13 v4 (4.8.1-Purism-4)
7 - Librem 15 v4 (4.8.1-Purism-4)
 
Enter your choice (1-7): 2
 
How do you want to extract binary blob files:
1 - Extract from the current machine (must be same as target machine and run coreboot)
2 - Extract from a pre-built coreboot image (filename must be coreboot-orig.rom)
3 - Files are copied manually (copy to coreboot/3rdparty/blobs/mainboard/purism/librem_bdw/)
 
The following files are needed :
 
descriptor.bin         - The Intel Descriptor               - SHA256: be34b19b4de387a07d4fc859d2e4ee44723756f5f54552f236136679b4e52c46
me.bin                 - The Intel Management Engine image  - File contents may vary
mrc.bin                - The Memory Reference Code          - SHA256: dd05ab481e1fe0ce20ade164cf3dbef3c479592801470e6e79faa17624751343
refcode.elf            - The PCH Reference Code             - SHA256: 8a919ffece61ba21664b1028b0ebbfabcd727d90c1ae2f72b48152b8774323a4
vgabios.bin            - The VGA BIOS                       - SHA256: e1cd1b4f2bd21e036145856e2d092eb47c27cdb4b717c3b182a18d8c0b1d0f01
cpu_microcode_blob.bin - The CPU Microcode Update           - SHA256: 69537c27d152ada7dce9e35bfa16e3cede81a18428d1011bd3c33ecae7afb467
 
Enter your choice (default: 1):

grmpf, det er sgu aligevel mange filer den mangler. Nå, jeg var jo så heldig at have en Librem 15v4 og andre havde brugt eksisterende Librem 13. Så jeg brugte en Kali Linux boot til at hente en coreboot-orig.rom ud med :-D

Det gav bingo med en række med lidt Intel ME, Management Engine - totalt evil stuff! Læs om det på https://en.wikipedia.org/wiki/Intel_Management_Engine som også fortæller om me_cleaner projektet som er det vildeste, god historie også!

https://github.com/corna/me_cleaner - me_cleaner is a Python script able to modify an Intel ME firmware image with the final purpose of reducing its ability to interact with the system.

Jeg manglede dog stadig mrc.bin, Intel Broadwell Reference Code, CPU cpu_microcode_blob, VGA BIOS osv. Jeg kan dog læse scripts!

Det ene script havde blandt andet teksten:
"These binaries will need to be extracted from the recovery image of the Tidus chromebook (Lenovo ThinkCentre ChromeBox)" og havde både links og kommandoerne. Så via den vej fik jeg mrc.bin og refcode.elf. Bingo - en række mere!

Nå, hvad så med den fucking ucode der! Det ene script havde URL, men hentede den sgu ikke. I know wget!

Wget that shit
https://github.com/platomav/CPUMicrocodes/raw/18a85ffed180447aa16c279614...
og smed den ind hvor build scriptet forventede som cpu_microcode_blob.bin yay!

Kom så med den VGA BIOS. Jeg søgte og fandt ingenting :-(

Nu er jeg jo på Linux, og det er både farligt og kraftfuldt.

Så med lidt vejledning fra internet kunne jeg se hvordan man læser ROM. Så med output fra lspci -tv kunne jeg finde den enhed jeg skulle læse fra:

hlk@hlk-Librem-15-v2:~$ lspci -tv
-[0000:00]-+-00.0  Intel Corporation Broadwell-U Host Bridge -OPI
           +-02.0  Intel Corporation Iris Graphics 6100
 
sudo cat /sys/devices/pci0000:00/0000:00:02.0/rom > vgabios.bin

Alt er filer! Bingo, fuld plade!

Kompileringsprocessen skal jeg ikke belemre jer med, men ved at starte den to gange virkede det - og jeg fik en coreboot fil ud!

Hashen var dog ikke den forventede, fordi min vgabios var anderledes end den forventede. Jeg ignorerede og smed den ind med flashrom :-D

Der er ellers reproducible builds nu!

Success coreboot på Librem 15v2

Stor var spændningen, havde jeg lykkedes med at bricke min laptop eller installere coreboot - føltes vel som 50/50. Pludselig stod der SeaBIOS på skærmen - YAY, den gør noget! Den bootede dog ikke fra harddisken, som forventet.

Jeg smed en Ubuntu USB install ind, og nu kører den Ubuntu 18.04 :-D

Hvad så nu?

Det første er at jeg har lært mere om BIOS og coreboot, det har været skønt. Jeg ved også at mine to laptops nu kører "ME clean", dvs med så lidt kode at jeg mener det er mere sikkert.

Nu har jeg også en understøttet BIOS på min laptop - som kan opdateres og ændres. Det betyder at selvom purism skulle forsvinde kan jeg downloade opdaterede coreboot komponenter og installere disse.

Jeg smider heller ikke min gamle laptop ud bare fordi jeg har fået en ny. Det er jo min gode ven som har været brugt til mange ting. Eksempelvis har den jo været med til at lave netværk på BornHack siden starten.

Måske bliver det min virtualiseringsplatform til kurser?

Kommentarer (7)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Jacob Rasmussen

Hvor mange af filerne stammer fra Intel, og hvor mange fra andre leverandører? (Librem selv?)

Det virker som om at Intel er det manglende led i at få de sidste 'blobs' væk.

Jeg forstår ikke Intels position. De er hardware leverandører.
Hvis de tilbageholder de her stumper kode, for at undgå at AMD og andre leverandører kopierer dem, må de vel have patenter eller andet, der kan beskytte dem?
Jeg tror ikke jeg ville holde op med at købe Intel CPU'er og Chipsets, hvis de pludselig gik ud og frigav de her stumper kode, snarere tværtimod.

Findes der en komplet RISC-V platform endnu, hvor man kan få koden til alle stumper?

Log ind eller Opret konto for at kommentere
Brugerundersøgelse Version2
maximize minimize