Ist TianoCore + Coreboot ein echtes Open Source UEFI?

12

Es gab viele Kontroversen um UEFI, aber ob es Ihnen gefällt oder nicht, es wird die einzige Option, wenn es um allgemein verfügbare Desktop-Motherboards geht. Ich habe UEFI-Mobos seit einiger Zeit vermieden, aber jetzt wurde es ziemlich schwierig, da Mobo-Anbieter UEFI-Produkte mit mehr Funktionen als BIOS-Produkten ausliefern (dh Unterstützung für mehr RAM). Vor diesem Hintergrund möchte ich sicher sein, dass es in Zukunft zumindest eine Option für Open Source gibt, und wenn dies nicht der Fall ist, kann ich weniger Funktionen, aber mehr Freiheit ertragen.

TianoCore ist Intels Open-Source-Implementierung von UEFI-Schnittstellen, und Wikipedia hat Folgendes zu sagen :

TianoCore fehlen die speziellen Treiber, die Chipsatzfunktionen initialisieren, die stattdessen von Coreboot bereitgestellt werden. TianoCore ist eine von vielen Nutzlastoptionen. Die Entwicklung von Coreboot erfordert die Zusammenarbeit der Chipsatzhersteller, um die für die Entwicklung der Initialisierungstreiber erforderlichen Spezifikationen bereitzustellen.

Meine Frage ist, erfordern diese von Coreboot bereitgestellten Treiber immer noch eine Art Binär-Blobs von Chipsatz-Anbietern? Auch Ronald G. Minnich hat folgendes über EFI zu sagen :

Zugriffe auf IDE-E / A-Adressen oder bestimmte Speicheradressen können im EFI-Code abgefangen und möglicherweise geprüft und geändert oder abgebrochen werden. Viele sehen dies als Versuch, ein "DRM-BIOS" aufzubauen.

Gibt es in einem TianoCore + Coreboot-Setup Teile, die möglicherweise die vom Hardwarehersteller bereitgestellte Open Source- oder Binär-Firmware ausführen könnten?

rot
quelle

Antworten:

4

Ist TianoCore + Coreboot ein echtes Open Source UEFI?

Für Intel-Plattformen (ich habe für Intel-Boards entwickelt und kann nicht für AMD sprechen, obwohl ich glaube, dass der Fall immer noch der gleiche ist), nein, da TianoCore selbst keine Hardware-Initialisierung auf niedriger Ebene durchführen kann und Coreboot benötigt, um diese Hardware-Initialisierung zuerst durchzuführen. Aber wie macht Coreboot das? coreboot ruft bestimmte binäre Blobs auf, um diese Funktionen auszuführen. Wie werden diese binären Blobs (z. B. Mikrocode-Updates, FSP-Binärdateien, ME-Binärdateien usw.) generiert? Sie können diese Binärdateien nicht selbst erstellen, da es sich um proprietären Intel-Code handelt. Bestenfalls können Sie diejenigen abrufen, die für Ihre Plattform relevant sind, und sie in den Coreboot-Erstellungsprozess einbeziehen. Solange Sie nicht in der Lage sind, die Quelle für diese binären Blobs frei und offen zu ändern, verfügen Sie nicht über eine echte Open-Source-UEFI oder einen Coreboot.

Meine Frage ist, benötigen diese von Coreboot bereitgestellten Treiber immer noch eine Art Binär-Blobs von Chipsatz-Anbietern?

Ja

Quellen:

Erfahrung

Coreboot-Quellcode

http://www.coreboot.org/TianoCore

Intel Firmware Support Package (FSP)
http://www.intel.com/content/www/us/en/intelligent-systems/intel-firmware-support-package/intel-fsp-overview.html

Microcode-Update (Wird häufig vom BIOS angewendet, muss aber nicht.)
Https://wiki.debian.org/Microcode

penguin4hire
quelle
2
Milind R macht auch einen guten Punkt darin, dass offene Hardware eine notwendige Voraussetzung ist.
Penguin4hire
4

Es ist möglich, Coreboot (frühzeitige Hardwareinitialisierung) und TianoCore (Bereitstellung der UEFI-API) zu einer vollständigen UEFI-Firmware-Implementierung zu kombinieren. Das ist jedoch noch in der Entwicklung. Es wird auch kein "kanonisches" UEFI sein, da die äußere Schicht Coreboot sein wird.

Ein Ansatz, der auf Duet basiert, ist unter http://notabs.org/coreboot/duet-payload/ zu finden - er bootet etwas auf echter Hardware.

Ein weiterer Versuch (Offenlegung: mein Projekt), bei dem versucht wird, mehr von Tiano wiederzuverwenden und näher an der UEFI-Architektur zu bleiben, ist auf github: https://github.com/pgeorgi/edk2/ . Dieser hat noch nicht viele Tests auf echter Hardware gesehen, nur Qemu.

Im Prinzip könnte es auch funktionieren, Coreboot-Code zu verwenden und daraus Tianocore-Pakete zu erstellen, sodass es in jeder Hinsicht wie UEFI aussieht und sich anfühlt (nicht nur diejenigen, die für den Benutzer und das Betriebssystem sichtbar sind). Offensichtlich sind Coreboot-Entwickler daran nicht sehr interessiert.

Patrick Georgi
quelle
3

Die Chipsatzinitialisierung und dieser andere hardwarespezifische Code auf extrem niedriger Ebene waren immer größtenteils Closed-Source. BIOS / UEFI ändert nichts an der Tatsache, dass Details der Speichercontrollerinitialisierung usw. von Kartenanbietern selten veröffentlicht werden.

Um eine echte Open-Source-Karte zu haben, müssen Sie nach Open-Source-Hardware suchen, einem Anbieter, der alle Spezifikationen jeder Hardwarekomponente auf der Hauptplatine verfügbar macht. Das ist, gelinde gesagt, schwer zu finden.

Milind R.
quelle