Zo geschiedde. Met Google en ChromeOS stond coreboot in een klap weer op de kaart. Op de eerste paar Chromebooks na, maken alle ChromeOS-apparaten gebruik van coreboot. Dat is zo sinds 2012 en is sindsdien niet meer veranderd. Gaandeweg werd op andere fronten aan de weg getimmerd. Minnich besloot een jaar later dat coreboot ook van pas zou komen voor Chromebooks met Arm-chips, waarmee de firmware voor het eerst in jaren weer ondersteuning bood voor meerdere architecturen. Ron Minnich startte later bovendien LinuxBoot, wat tegenwoordig onderdeel is van The Linux Foundation. Hiermee kan Linux weer als firmware ingezet worden; in feite een soort terugkeer naar de roots van coreboot en LinuxBIOS.
Coreboot op andere apparaten en waarom ieder bord een eigen port nodig heeft
Coreboot is dan ook nog altijd draaiend, ook op andere platformen. De makkelijkste manier om aan een coreboot-systeem te komen, is met voorgebouwde apparaten, zoals laptops. Onder meer Linux-laptopmaker System76 biedt bepaalde modellen met eigen firmware op basis van coreboot aan. Ook andere bedrijven, waaronder StarLabs en Purism, bieden coreboot-laptops aan, die specifiek bedoeld zijn voor Linux. Qua oudere platformen ondersteunen bijvoorbeeld veel oude ThinkPads coreboot, zoals de X200- en T400-series.
:strip_exif()/i/2005085702.jpeg?f=thumblarge)
Bron: Minifree
De Nederlandse laptopmaker Nova Customs levert sinds kort ook bepaalde coreboot-laptops. Dat zijn laptops van oem Clevo, waarvoor het bedrijf coreboot-firmware heeft ontwikkeld in samenwerking met andere Europese bedrijven. Tot nu toe zijn dat modellen met elfdegeneratie-Intel Core-cpu's, maar later dit jaar moeten ook Alder Lake-modellen volgen. Een bekend voorbeeld voor andere gebruiksgevallen is routersoftwaremaker pfSense, die coreboot gebruikt in bepaalde Netgate-routers.
Soms wordt coreboot ook geport naar nieuwe consumentenhardware. Een voorbeeld daarvan is het MSI Pro Z690-A-moederbord voor Alder Lake-cpu's. Dat gebeurt echter niet regelmatig: coreboot vereist nog altijd een aparte build voor ieder moederbord en gelet op de geslotenheid van x86 is dat niet altijd even makkelijk.
:strip_exif()/i/2005085704.jpeg?f=thumblarge)
"Het hele doel van firmware is om een soort Potemkin-dorp te maken waarvan een OS zegt: 'O, ik weet hoe ik dit moet draaien! Dit is gewoon een pc'", legt Minnich uit. "Maar bij het opstarten is het helemaal nog geen pc. Onder de motorkap zit een enorme hoeveelheid variatie. Om een voorbeeld te geven: op bepaalde moederborden zit een gpio, die de dram inschakelt. En het lijkt erop dat niemand het er over eens is welke gpio gebruikt moet worden. Dus je kunt twee identieke borden van twee fabrikanten hebben, waarvan het enige verschil is welke gpio gebruikt wordt. Die hebben dan beide andere firmware-images nodig. Op bijvoorbeeld x86 heb je dus mooie uniformiteit, maar een deel van de uniformiteit moet gemaakt worden door de firmware. Dat is waarom ieder bord een eigen build nodig heeft."
Libreboot en blobs
In 2013 verscheen daarnaast Libreboot, een door de community onderhouden coreboot-fork voor oudere platformen die relatief makkelijk te installeren moet zijn en bovendien volledig vrij is van blobs, anders dan coreboot. Blobs zijn gesloten stukjes firmwarecode waarvan de broncode niet beschikbaar is. Die zijn bijvoorbeeld nodig om bepaalde delen van een systeem te doen werken. Een bekend voorbeeld daarvan is de Intel Management Engine. Die blobs zijn nodig om een modern x86-systeem op te kunnen starten. Tegelijkertijd zijn dit dus stukjes gesloten code in een opensourceproject, compleet met de eerdergenoemde bezwaren.
Coreboot bevat enkele van die blobs, maar volgens Minnich is dat onvermijdelijk op moderne platformen. "Het lastige is dat nieuwere processors niet functioneren zonder blobs, tot op het punt dat ze geheugen niet correct kunnen aansturen", zegt Minnich. "Je kunt blob-vrij zijn op een moderne cpu, maar dat zorgt voor silent data corruption. Dat is geen prijs die ik bereid ben te betalen. Volledig blob-vrij zijn, is dus een zeer lastig probleem. Om nog een voorbeeld te geven: er staan kleine spanningsregelaars op je moederbord, de vrm's. Die vrm's hebben firmware. Overal zit firmware. Een bord bouwen zonder gesloten firmware gaat dus veel verder dan alleen de firmware van de cpu. Om dat goed te krijgen, moet je helemaal tot de kern gaan en schoon beginnen. Dat kan niet met x86."
Oreboot: coreboot zonder C
In 2019 werd dan ook oreboot gestart, een officiële fork van coreboot die ook geen blobs bevat. Oreboot staat voor coreboot zonder C (de programmeertaal). "Ik was klaar met C. Er waren door de tijd heen een hoop pogingen gedaan om C te vervangen, en het leek erop dat Rust de taal zou zijn die het daadwerkelijk zou lukken."
Daarop werd coreboot geforkt en herschreven in Rust. Tegenwoordig wordt oreboot nog altijd onderhouden als een downstream fork van coreboot. "Er waren heel veel onderdelen van coreboot die uitstekend werken. De structuur van de directory, bijvoorbeeld. We forkten daarom coreboot, verwijderden alle C-code, lieten de directorystructuur hetzelfde en begonnen in Rust te schrijven."
Oreboot is momenteel vooral gericht op RISC-V, een opensource-instructiesetarchitectuur voor processors. "We overwogen om x86 naar oreboot te brengen, inclusief de benodigde blobs. Maar uiteindelijk hebben we dat allemaal verwijderd, omdat we niet meer met x86 wilden dealen. We hebben onze focus voor oreboot gevonden en dat is alles wat we volledig opensource kunnen doen. RISC-V in het bijzonder is daar erg geschikt voor."
Oreboot is dan ook geen coreboot-vervanger, maar eerder een losstaand project. "Het is niet mijn plan om oreboot en coreboot samen te voegen. Volgens mij is dat niemands plan. Op zich zou het wel kunnen. Er zitten al verschillende programmeertalen in coreboot. We hebben Assembly en C. En niemand weet dit, maar er zit ook een derde taal in coreboot: we hebben een 'dialect' van de Ada-programmeertaal, Spark. Die code is geschreven door een paar mensen in Duitsland en initialiseert de x86-framebuffers."
"Zou coreboot een vierde programmeertaal kunnen huisvesten? Makkelijk. Het punt is: coreboot heeft echt goed werk gedaan om met de benodigde blobs om te gaan en die te accommoderen. En bij oreboot doen we daar dus niet meer aan."
Tot slot
Zo blijkt dat een dergelijk klein stukje van je pc, de firmware, toch een behoorlijke geschiedenis kan hebben. Zo vertelt ook Ron Minnich: "Voor de gebruiker horen we niet uit te maken. Ons doel is om in hooguit een tiende van een seconde weg te zijn. Voordat je scherm oplicht, zijn we al verdwenen. Dus, voor bijna iedereen doen we er niet toe. Maar tegelijkertijd: geen firmware, geen computer. We zijn net zo belangrijk als de hardware, want zonder firmware heb je een brick. De kernel heeft het daarom makkelijk, want wij doen al het vuile werk. Als de processor wordt aangezet, functioneert die niet. En het is aan ons om ervoor te zorgen dat het werkt. Dus ik vind dat we erg belangrijk zijn. Het is een stuk zeer gecompliceerde code, maar niemand weet dat het bestaat."