TianoCore + coreboot est-il un véritable UEFI open source?

12

Il y a eu beaucoup de controverse autour de UEFI, mais que cela plaise ou non, cela devient la seule option en ce qui concerne les cartes mères de bureau généralement disponibles. J'évite les mobos UEFI depuis un certain temps, mais maintenant c'est devenu assez difficile car les fournisseurs de mobo livrent des produits UEFI avec plus de fonctionnalités que ceux du BIOS (c'est-à-dire un support pour plus de RAM). Dans cet esprit, je veux être sûr qu'il y a au moins une option pour aller open source à l'avenir, et s'il n'y en a pas, je peux supporter moins de fonctionnalités mais plus de liberté.

TianoCore est l'implémentation open source d'Intel des interfaces UEFI et Wikipedia a ceci à dire à ce sujet :

TianoCore n'a pas les pilotes spécialisés qui initialisent les fonctions du chipset, qui sont plutôt fournis par Coreboot, dont TianoCore est l'une des nombreuses options de charge utile. Le développement de Coreboot nécessite la coopération des fabricants de chipsets pour fournir les spécifications nécessaires au développement des pilotes d'initialisation.

Ma question est la suivante: ces pilotes fournis par coreboot nécessitent-ils toujours des blobs binaires de la part des fournisseurs de chipsets? Aussi, Ronald G. Minnich a ceci à dire à propos d'EFI:

Les accès aux adresses d'E / S IDE, ou à certaines adresses de mémoire, peuvent être piégés dans le code EFI et potentiellement examinés et modifiés ou abandonnés. Beaucoup voient cela comme un effort pour construire un "BIOS DRM".

Dans une configuration TianoCore + coreboot, les composants susceptibles de faire ce micrologiciel open source ou binaire sont-ils fournis par le fournisseur de matériel?

rouge
la source

Réponses:

4

TianoCore + coreboot est-il un véritable UEFI open source?

Pour les plates-formes Intel (j'ai fait du développement pour les cartes Intel et je ne peux pas parler pour AMD bien que je pense que le cas est toujours le même), non, car TianoCore en lui-même ne peut pas effectuer l'initialisation matérielle de bas niveau et nécessite coreboot pour faire cette initialisation matérielle en premier. Mais comment Coreboot fait-il cela? coreboot invoque des objets binaires spécifiques pour exécuter ces fonctions. Comment ces blobs binaires (par exemple, mises à jour de microcode, binaires FSP, binaires ME, etc.) sont-ils générés? Eh bien, vous ne pouvez pas construire vous-même ces binaires car ils sont du code propriétaire Intel. Au mieux, vous pouvez récupérer celles pertinentes pour votre plate-forme et les inclure dans le processus de génération de coreboot. Tant que vous ne pourrez pas modifier librement et ouvertement la source de ces blobs binaires, vous n'aurez pas de véritable UEFI ou coreboot open source.

Ma question est la suivante: ces pilotes fournis par coreboot nécessitent-ils toujours des blobs binaires de la part des fournisseurs de chipsets?

Oui

Sources:

Expérience

code source de coreboot

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

Mise à jour du microcode (souvent appliquée par le BIOS, mais ce n'est pas obligatoire.)
Https://wiki.debian.org/Microcode

pingouin4hire
la source
2
Milind R fait également un bon point en ce que le matériel ouvert est une exigence nécessaire.
penguin4hire
4

Il est possible de combiner le coreboot (initialisation matérielle précoce) et TianoCore (fournissant l'API UEFI) à une implémentation complète du firmware UEFI. Cependant, c'est toujours en développement. Ce ne sera pas non plus un UEFI "canonique" puisque la couche externe sera coreboot.

Une approche, basée sur Duet, peut être trouvée à http://notabs.org/coreboot/duet-payload/ - elle démarre quelque peu sur du matériel réel.

Une autre tentative (divulgation: mon projet) qui tente de réutiliser plus de Tiano et de rester plus proche de l'architecture UEFI est sur github: https://github.com/pgeorgi/edk2/ . Celui-ci n'a pas encore vu beaucoup de tests sur du vrai matériel, juste Qemu.

En principe, cela pourrait aussi fonctionner pour prendre du code coreboot et en faire des packages tianocore, donc il ressemble et se sent comme UEFI dans tous les aspects (pas seulement ceux visibles par l'utilisateur et le système d'exploitation). De toute évidence, les développeurs de coreboot ne sont pas très intéressés par cela.

Patrick Georgi
la source
3

L'initialisation du chipset et tout autre code spécifique au matériel de très bas niveau a toujours été principalement à source fermée. Le BIOS / UEFI ne change pas le fait que les détails de l'initialisation du contrôleur de mémoire, etc. sont rarement divulgués par les fournisseurs de cartes.

Pour avoir une véritable carte open-source, vous devrez rechercher du matériel open-source, un fournisseur qui expose toutes les spécifications de chaque composant matériel sur la carte mère. C'est difficile à trouver, c'est le moins qu'on puisse dire.

Milind R
la source