stringtranslate.com

arranque del núcleo

coreboot , anteriormente conocido como LinuxBIOS , [5] es un proyecto de software destinado a reemplazar el firmware propietario ( BIOS o UEFI ) que se encuentra en la mayoría de las computadoras con un firmware liviano diseñado para realizar solo la cantidad mínima de tareas necesarias para cargar y ejecutar un sistema operativo moderno de 32 o 64 bits .

Dado que coreboot inicializa el hardware básico, debe trasladarse a todos los conjuntos de chips y placas base que admita. Como resultado, coreboot solo está disponible para una cantidad limitada de plataformas de hardware y modelos de placas base.

Una de las variantes de coreboot es Libreboot , una distribución de software parcialmente libre de blobs propietarios , dirigida a los usuarios finales.

Historia

El proyecto coreboot comenzó con el objetivo de crear un BIOS que se iniciara rápidamente y manejara los errores de forma inteligente. [6] Está licenciado bajo los términos de la Licencia Pública General GNU versión 2 (GPLv2). Los principales contribuyentes incluyen LANL , SiS , AMD , Coresystems y Linux Networx, Inc, así como los proveedores de placas base MSI , Gigabyte y Tyan , que ofrecen coreboot junto con su BIOS estándar o proporcionan especificaciones de las interfaces de hardware para algunas de sus placas base. Google patrocina parcialmente el proyecto coreboot. [7] CME Group , una empresa pública financiera, comenzó a apoyar el proyecto coreboot en 2009. [8]

A excepción de los tres primeros modelos, todos los Chromebooks ejecutan coreboot. [9] El código de Das U-Boot ha sido asimilado para permitir la compatibilidad con procesadores basados ​​en el conjunto de instrucciones ARM . [10]

En junio de 2019, coreboot comenzó a utilizar el software Ghidra de la NSA para sus esfuerzos de ingeniería inversa en problemas específicos del firmware luego del lanzamiento de la suite como software gratuito y de código abierto . [11]

Plataformas compatibles

Las arquitecturas de CPU compatibles con coreboot incluyen IA-32 , x86-64 , ARM , ARM64 , MIPS y RISC-V . Las plataformas de sistema en un chip (SOC) compatibles incluyen AMD Geode , comenzando con el procesador Geode GX desarrollado para OLPC . Artec Group agregó soporte Geode LX para su modelo ThinCan DBE61; ese código fue adoptado por AMD y mejorado aún más para OLPC después de que se actualizó a la plataforma Geode LX, y la comunidad coreboot lo desarrolla aún más para admitir otras variantes de Geode. coreboot se puede flashear en una plataforma Geode usando Flashrom .

A partir de ese desarrollo inicial en plataformas basadas en AMD Geode, la compatibilidad con coreboot se ha extendido a muchos procesadores y chipsets de AMD. La lista de procesadores incluye la Familia 0Fh y 10h ( núcleo K8 ) y, recientemente, la Familia 14h ( núcleo Bobcat , APU Fusion ). La compatibilidad con coreboot también se extiende a los chipsets de AMD: RS690 , RS7xx , SB600 y SB8xx.

En AMD Generic Encapsulated Software Architecture ( AGESA ), un protocolo de arranque mediante el cual se inicializan los dispositivos del sistema en las placas base AMD64, se lanzó al mercado de código abierto a principios de 2011, con el objetivo de proporcionar la funcionalidad necesaria para la inicialización del sistema coreboot en el hardware AMD64. [12] Sin embargo, a partir de 2014, dichos lanzamientos nunca se convirtieron en la base para el desarrollo futuro de AMD y, posteriormente, se detuvieron. [13]

Los dispositivos que podrían precargarse con coreboot o uno de sus derivados incluyen:

Lenovo / IBM
Los Libreboot T400 y X200 (rebautizados ThinkPad T400 y X200, respectivamente, disponibles en Minifree, anteriormente conocido como Gluglug). [14] [15]
Grupo Artec
Modelos ThinCan DBE61, DBE62 y DBE63 y hardware de enrutador/servidor sin ventilador fabricado por PC Engines. [16]
Purismo
Las computadoras portátiles Librem vienen con coreboot. [17] [18]
Otros
Algunas PC System76 usan el firmware coreboot TianoCore, incluido el firmware Embedded Controller de código abierto .
Dasharo ofrece una distribución de firmware alternativa basada en coreboot para computadoras de MSI , NovaCustom y Nitrokey , entre otros. [19] [20] [21]
Los sistemas StarLabs utilizan el firmware coreboot como alternativa. [22]

Diseño

coreboot normalmente carga un kernel de Linux , pero puede cargar cualquier otro ejecutable ELF independiente , como iPXE , gPXE o Etherboot que pueden arrancar un kernel de Linux a través de una red , o SeaBIOS [23] que puede cargar un kernel de Linux, Windows 2000 y posteriores, y BSD; ADLO proporcionaba anteriormente compatibilidad con Windows 2000/ XP y OpenBSD . [24] [25] coreboot también puede cargar un kernel desde cualquier dispositivo compatible, como Myrinet, Quadrics o interconexiones de clúster SCI. También es posible arrancar otros kernels directamente, como un kernel Plan 9. En lugar de cargar un kernel directamente, coreboot puede pasar el control a un cargador de arranque dedicado, como una versión de GNU GRUB 2 compatible con coreboot.

Coreboot está escrito principalmente en C , con una pequeña cantidad de código ensamblador . Elegir C como el lenguaje de programación principal permite realizar auditorías de código más sencillas en comparación con el BIOS de PC contemporáneo que generalmente se escribía en ensamblador, [26] lo que da como resultado una seguridad mejorada. Existe soporte de compilación y tiempo de ejecución para escribir partes de Coreboot en Ada [27] para elevar aún más el nivel de seguridad, pero actualmente solo se usa esporádicamente. El código fuente se publica bajo la licencia GNU GPL versión 2 .

coreboot realiza la cantidad mínima absoluta de inicialización de hardware y luego pasa el control al sistema operativo . Como resultado, no hay código coreboot ejecutándose una vez que el sistema operativo ha tomado el control. Una característica de coreboot es que la versión x86 se ejecuta en modo de 32 bits después de ejecutar solo diez instrucciones [28] (casi todos los demás BIOS x86 se ejecutan exclusivamente en modo de 16 bits ). Esto es similar al firmware UEFI moderno , que se utiliza en el hardware de PC más nuevo.

Inicializando DRAM

El hardware más difícil de inicializar con coreboot son los controladores DRAM y la memoria DRAM . En algunos casos, la documentación técnica sobre este tema está restringida por NDA o no está disponible. La inicialización de la RAM es particularmente difícil porque antes de que la RAM se inicialice no se puede utilizar. Por lo tanto, para inicializar los controladores DRAM y la memoria DRAM, el código de inicialización puede tener solo los registros de propósito general de la CPU o la memoria caché como RAM como almacenamiento temporal.

Romcc, un compilador de C que utiliza registros en lugar de RAM, facilita la tarea. Con Romcc, es relativamente fácil realizar accesos SMBus a las ROM SPD de las DIMM de la DRAM , lo que permite utilizar la RAM.

En los procesadores x86 más nuevos, la caché del procesador se puede utilizar como RAM hasta que se inicialice la DRAM. La caché del procesador también debe inicializarse en modo Cache-as-RAM [29] [30] , pero esto requiere menos instrucciones que la inicialización de la DRAM. Además, la inicialización en modo Cache-as-RAM es específica de las arquitecturas de CPU, por lo que es más genérica que la inicialización de la DRAM, que es específica de cada chipset y placa base.

En la mayoría de las plataformas x86 modernas, se utilizan componentes binarios de código cerrado proporcionados por el proveedor para la configuración de la DRAM. En el caso de los sistemas Intel, se requiere FSP-M, mientras que AMD no ofrece soporte actualmente. Actualmente, se utiliza AGESA binario para el firmware UEFI propietario en los sistemas AMD, y se espera que este modelo se traslade a cualquier soporte de coreboot relacionado con AMD en el futuro. [31]

Desarrollo y depuración de coreboot

Hackeando coreboot en la cumbre de Denver 2008.

También existen emuladores de CPU que reemplazan la CPU o se conectan a través de un puerto JTAG , como por ejemplo Sage SmartProbe [32] [33] . Se puede crear código en emuladores de BIOS o descargarlo en ellos en lugar de flashear el dispositivo BIOS.

Cargas útiles

Carga útil SeaBIOS ejecutándose en un Lenovo ThinkPad X60

coreboot puede cargar una carga útil, que puede escribirse utilizando la biblioteca auxiliar libpayload . Las cargas útiles existentes incluyen las siguientes:

Conferencia Europea Coreboot

Una reunión física es la Conferencia Europea Coreboot que se organizó en octubre de 2017 y duró tres días.

Historial de conferencias

Variantes

coreboot tiene varias variantes de su base de código original, cada una con objetivos ligeramente diferentes:

Véase también

Referencias

  1. ^ Martin Roth (2 de septiembre de 2024). «lanzamiento de coreboot 24.08» . Consultado el 3 de septiembre de 2024 .
  2. ^ "Lanzamientos". coreboot . nd
  3. ^ "ARM". coreboot. 15 de octubre de 2013. Consultado el 1 de febrero de 2014 .
  4. ^ "Licencia de coreboot". github.com . 1991 . Consultado el 13 de octubre de 2018 .
  5. ^ "[LinuxBIOS] Bienvenido a coreboot". 12 de enero de 2008.
  6. ^ Anton Borisov (2009). "La BIOS de código abierto es diez. Una entrevista con los desarrolladores de coreboot". El H. Archivado desde el original el 16 de septiembre de 2012.'
  7. ^ "Google patrocina el proyecto LinuxBIOS". Archivado desde el original el 6 de febrero de 2012. Consultado el 29 de septiembre de 2023 .{{cite web}}: CS1 maint: bot: estado de URL original desconocido ( enlace )
  8. ^ "CME Group se adentra en Coreboot y otros proyectos de código abierto de Linux". Wall Street & Technology . Archivado desde el original el 12 de agosto de 2010 . Consultado el 23 de septiembre de 2015 .
  9. ^ "Chromebooks". coreboot. 16 de enero de 2014. Archivado desde el original el 8 de mayo de 2016 . Consultado el 17 de febrero de 2014 .
  10. ^ "GSoC2011 (Semana 1): Análisis del código de arranque ARM de U-boot | Blogs de desarrolladores de coreboot". 5 de junio de 2011. Consultado el 12 de abril de 2014 .
  11. ^ "Coreboot nutzt NSA-Tool para ingeniería inversa". Golem.de . Consultado el 4 de mayo de 2023 .
  12. ^ "Detalles técnicos sobre la publicación del código fuente de Coreboot de AMD". AMD . 28 de febrero de 2011. Archivado desde el original el 25 de marzo de 2014 . Consultado el 1 de febrero de 2016 .
  13. ^ Griffith, Bruce (5 de noviembre de 2014). «Bibliotecas AGESA solo binarias de AMD» . Consultado el 8 de mayo de 2017 .
  14. ^ "Minifree". Ministerio de la Libertad - Productos . Archivado desde el original el 25 de septiembre de 2015 . Consultado el 24 de septiembre de 2015 .
  15. ^ "El Gluglug". fsf.org . Archivado desde el original el 23 de septiembre de 2015. Consultado el 23 de septiembre de 2015 .
  16. ^ "pcengines/coreboot". GitHub . Consultado el 16 de septiembre de 2019 .
  17. ^ "Firmware coreboot en dispositivos Purism Librem" . Consultado el 19 de junio de 2020 .
  18. ^ "Las computadoras portátiles Purism usarán el firmware 'Heads' para protegerse contra rootkits y manipulación (actualizado)". 27 de febrero de 2018. Consultado el 19 de junio de 2020 .
  19. ^ "Nuevo firmware Dasharo v1.1 para la placa base MSI Z690 - Phoronix". 22 de noviembre de 2022. Consultado el 27 de octubre de 2023 .
  20. ^ "Actualización de firmware de NovaCustom-Dasharo de octubre de 2023 (ADL v1.7.0 y TGL v1.5.0) - NovaCustom". 19 de septiembre de 2023 . Consultado el 27 de octubre de 2023 .
  21. ^ "¡NitroPC Pro está certificado por Qubes! - Nitrokey". 24 de septiembre de 2023. Consultado el 27 de octubre de 2023 .
  22. ^ Reseña de Starbook MK V - Fossbytes
  23. ^ SeaBIOS (anteriormente conocido como LegacyBIOS) es una implementación de BIOS heredada de código abierto
  24. ^ "Capa adicional de coreboot (ADLO)". Archivado desde el original el 25 de noviembre de 2010.
  25. ^ "SEBOS, cargador de arranque con seguridad mejorada para sistemas operativos, fase 2". Archivado desde el original el 19 de junio de 2007.- agregar servicios de BIOS de PC a coreboot a través de BIOS de Bochs
  26. ^ "Comparación de UEFI y BIOS heredados".pronunciando esa misma ventaja para UEFI
  27. ^ "comprometerse".añadiendo ese apoyo
  28. ^ "Código de inicio temprano de Coreboot v3". Archivado desde el original el 10 de julio de 2012. Consultado el 17 de agosto de 2008 .
  29. ^ Yinghai Lu; Li-Ta Lo; Gregory R. Watson; Ronald G. Minnich (15 de enero de 2009). «CAR: Uso de la caché como RAM en la BIOS de Linux» (PDF) . qmqm.pl. Archivado desde el original (PDF) el 3 de marzo de 2016 . Consultado el 25 de febrero de 2014 .
  30. ^ "Un marco para utilizar la caché del procesador como RAM (CAR)" (PDF) .
  31. ^ Griffith, Bruce (5 de noviembre de 2014). «[coreboot] Bibliotecas AGESA de solo binarios de AMD» . Consultado el 8 de septiembre de 2019 .
  32. ^ "Sage Electronic Engineering - Depurador JTAG SmartProbe, Sage EDK, coreboot y sistemas integrados e ingeniería de software". www.se-eng.com . Archivado desde el original el 15 de marzo de 2011.{{cite web}}: CS1 maint: URL no apta ( enlace )
  33. ^ "Preguntas frecuentes sobre Sage SmartProbe". S. Datskovskiy . Consultado el 30 de abril de 2021 .
  34. ^ "Depthcharge: el gestor de arranque de ChromeOS". docs.google.com . Consultado el 26 de octubre de 2015 .
  35. ^ "Modificar el código de u-boot para permitir la creación de la carga útil de coreboot. [chromiumos/third_party/u-boot-next : chromeos-v2011.03]". 24 de julio de 2011.
  36. ^ "Política de reducción de blobs binarios". 1 de noviembre de 2023. Archivado desde el original el 1 de noviembre de 2023 . Consultado el 1 de noviembre de 2023 .
  37. ^ "Proyecto osboot". 15 de marzo de 2021. Archivado desde el original el 15 de marzo de 2021 . Consultado el 26 de mayo de 2023 .
  38. ^ «Libreboot – Osboot ahora forma parte de Libreboot». 19 de diciembre de 2022. Archivado desde el original el 19 de diciembre de 2022. Consultado el 26 de mayo de 2023 .
  39. ^ "Cómo instalar ChromeOS Flex en una Chromebook". Android Police . 17 de abril de 2022 . Consultado el 30 de mayo de 2023 .
  40. ^ "Resumen de GNU Boot". 30 de octubre de 2023. Archivado desde el original el 30 de octubre de 2023 . Consultado el 30 de octubre de 2023 .
  41. ^ "Proyecto Canoeboot". 16 de noviembre de 2023. Archivado desde el original el 16 de noviembre de 2023. Consultado el 16 de noviembre de 2023 .
  42. ^ "3mdeb Sp. z oo — Consultoría de desarrollo de firmware integrado". 29 de enero de 2024. Archivado desde el original el 16 de febrero de 2024 . Consultado el 16 de febrero de 2024 .
  43. ^ "Dasharo • GitHub". 22 de octubre de 2023. Archivado desde el original el 16 de febrero de 2024. Consultado el 16 de febrero de 2024 .
  44. ^ "Acerca de Dasharo - Universo Dasharo". 9 de febrero de 2024. Archivado desde el original el 16 de febrero de 2024 . Consultado el 16 de febrero de 2024 .
  45. ^ Kepplinger-Novakovic, Martin (28 de mayo de 2024), merge/skulls , consultado el 29 de mayo de 2024
  46. ^ "Acerca de Heads". Heads . Consultado el 29 de mayo de 2024 .
  47. ^ linuxboot/heads, LinuxBoot, 28 de mayo de 2024 , consultado el 29 de mayo de 2024

Lectura adicional

Enlaces externos