¿Es TianoCore + coreboot un verdadero UEFI de código abierto?

12

Ha habido mucha controversia en torno a UEFI, pero nos guste o no, se está convirtiendo en la única opción cuando se trata de placas base de escritorio generalmente disponibles. He estado evitando los mobos UEFI por algún tiempo, pero ahora se volvió bastante difícil ya que los vendedores de mobo envían productos UEFI con más características que los BIOS (es decir, soporte para más RAM). Con esto en mente, quiero asegurarme de que haya al menos una opción para usar el código abierto en el futuro, y si no la hay, puedo soportar menos funciones pero más libertad.

TianoCore es la implementación de código abierto de Intel de las interfaces UEFI y Wikipedia tiene esto que decir al respecto :

TianoCore carece de los controladores especializados que inicializan las funciones del conjunto de chips, que en su lugar son proporcionados por Coreboot, de los cuales TianoCore es una de las muchas opciones de carga útil. El desarrollo de Coreboot requiere la cooperación de los fabricantes de conjuntos de chips para proporcionar las especificaciones necesarias para desarrollar controladores de inicialización.

Mi pregunta es, ¿estos controladores proporcionados por coreboot todavía requieren algún tipo de blobs binarios de los proveedores de chipset? Además, Ronald G. Minnich tiene esto que decir sobre EFI:

Los accesos a las direcciones de E / S IDE, o ciertas direcciones de memoria, pueden quedar atrapados en el código EFI y potencialmente examinados, modificados o abortados. Muchos ven esto como un esfuerzo para construir un "DRM BIOS".

En una configuración de arranque de TianoCore +, ¿hay partes que podrían hacer ese firmware de código abierto o binario proporcionado por el proveedor de hardware?

rojo
fuente

Respuestas:

4

¿Es TianoCore + coreboot un verdadero UEFI de código abierto?

Para las plataformas Intel (he desarrollado para las placas Intel y no puedo hablar por AMD, aunque creo que el caso sigue siendo el mismo), no, porque TianoCore por sí solo no puede realizar una inicialización de hardware de bajo nivel y requiere coreboot para hacer este inicio de hardware primero. Pero, ¿cómo hace esto Coreboot? coreboot invoca blobs binarios específicos para realizar estas funciones. ¿Cómo se generan estos blobs binarios (por ejemplo, actualizaciones de microcódigo, binarios FSP, binarios ME, etc.)? Bueno, no puede compilar estos binarios usted mismo porque son código propiedad de Intel. En el mejor de los casos, puede recuperar los que sean pertinentes para su plataforma e incluirlos en el proceso de compilación coreboot. Hasta que pueda modificar libre y abiertamente la fuente de estos blobs binarios, no tendrá un UEFI de verdadero código abierto o un bootboot para el caso.

Mi pregunta es, ¿estos controladores proporcionados por coreboot todavía requieren algún tipo de blobs binarios de los proveedores de chipset?

si

Fuentes:

Experiencia

código fuente 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

Actualización de microcódigo (a menudo aplicada por el BIOS pero no tiene que hacerlo)
https://wiki.debian.org/Microcode

penguin4hire
fuente
2
Milind R también hace un buen punto en que el hardware abierto es un requisito necesario.
penguin4hire
4

Es posible combinar coreboot (inicialización temprana del hardware) y TianoCore (que proporciona la API UEFI) para una implementación completa de firmware UEFI. Sin embargo, eso todavía está en desarrollo. Tampoco será un UEFI "canónico" ya que la capa externa será coreboot.

Puede encontrar un enfoque, basado en Duet, en http://notabs.org/coreboot/duet-payload/ : se inicia un poco en hardware real.

Otro intento (divulgación: mi proyecto) que intenta reutilizar más de Tiano y permanecer más cerca de la arquitectura UEFI está en github: https://github.com/pgeorgi/edk2/ . Todavía no se han realizado muchas pruebas en hardware real, solo Qemu.

En principio, también podría funcionar tomar el código coreboot y hacer paquetes tianocore con ellos, por lo que se ve y se siente como UEFI en todos los aspectos (no solo aquellos visibles para el usuario y el sistema operativo). Obviamente, los desarrolladores de coreboot no están muy interesados ​​en eso.

Patrick Georgi
fuente
3

La inicialización del chipset y otro código específico de hardware de nivel extremadamente bajo siempre ha sido principalmente de código cerrado. BIOS / UEFI no cambia el hecho de que los detalles de la inicialización del controlador de memoria, etc., rara vez son revelados por los proveedores de la placa.

Para tener una verdadera placa de código abierto, deberá buscar hardware de código abierto, algún proveedor que exponga todas las especificaciones de cada componente de hardware en la placa base. Eso es difícil de encontrar, por decir lo menos.

Milind R
fuente