coreboot (anteriormente LinuxBIOS ) [ 5 ] es un proyecto gratuito y de código abierto que proporciona firmware ligero para inicializar el hardware y luego cargar un sistema operativo . Está diseñado para reemplazar el firmware propietario (implementaciones tradicionales de BIOS o UEFI ) al realizar las tareas mínimas necesarias para iniciar un sistema operativo moderno de 32 o 64 bits .
Debido a que coreboot realiza la inicialización del hardware a bajo nivel, debe adaptarse a cada chipset y modelo de placa base compatible ; en consecuencia, su disponibilidad se limita a las plataformas para las que se ha implementado la compatibilidad.
Una de las variantes más conocidas de coreboot es Libreboot , una distribución de software que se centra en eliminar los bloques binarios propietarios de la pila de firmware.
Historia
El proyecto coreboot comenzó con el objetivo de crear una BIOS que arrancara rápidamente y manejara los errores de forma inteligente. [ 6 ] Se distribuye bajo los términos de la Licencia Pública General GNU versión 2 (GPLv2). Entre los principales contribuyentes se encuentran LANL , SiS , AMD , Coresystems y Linux Networx, Inc., así como los fabricantes 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 financiera pública, comenzó a apoyar el proyecto coreboot en 2009. [ 8 ]
Excepto los tres primeros modelos, todos los Chromebooks ejecutan coreboot. [ 9 ] Se ha asimilado código de Das U-Boot para habilitar 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 tras el lanzamiento del paquete como software libre y de código abierto . [ 11 ]
Plataformas compatibles
coreboot admite múltiples arquitecturas de CPU, incluyendo IA-32 , x86-64 , ARM , ARM64 , MIPS y RISC-V . También admite una variedad de plataformas de sistema en un chip (SoC); el desarrollo inicial se centró en los procesadores AMD Geode (en particular los utilizados en el proyecto OLPC ). Artec Group agregó soporte para 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 de coreboot continúa desarrollándolo 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 las familias 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.
La arquitectura de software encapsulado genérico de AMD ( AGESA ) , un protocolo de arranque mediante el cual se inicializan los dispositivos del sistema en las placas base AMD64 , se publicó comocó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, dichas versiones nunca se convirtieron en la base para el desarrollo futuro de AMD y posteriormente se detuvieron. [ 13 ]
Entre los dispositivos que podrían venir precargados con coreboot o alguno de sus derivados se incluyen:
- Lenovo / IBM
- Los Libreboot T400 y X200 (ThinkPad T400 y X200 renombrados, respectivamente, disponibles en Minifree, anteriormente conocido como Gluglug). [ 14 ] [ 15 ]
- Grupo Artec
- Modelos ThinCan DBE61, DBE62 y DBE63, y hardware de servidor/enrutador sin ventilador fabricado por PC Engines . [ 16 ]
- Purismo
- Los portátiles Librem vienen con coreboot. [ 17 ] [ 18 ]
- Otros
- Algunos ordenadores System76 utilizan el firmware coreboot TianoCore, incluido el firmware de controlador integrado de código abierto .
- Dasharo ofrece una distribución de firmware alternativa basada en coreboot para ordenadores de MSI , NovaCustom y Nitrokey , entre otros. [ 19 ] [ 20 ] [ 21 ]
- StarLabs Systems utiliza el firmware coreboot como alternativa. [ 22 ]
- Algunos modelos de Tesla Model 3 han adoptado un procesador Ryzen Embedded o Intel Atom en el ordenador del vehículo, y han adoptado coreboot como gestor de arranque.
Diseño
Coreboot normalmente carga un kernel de Linux , pero puede cargar cualquier otro ejecutable ELF independiente , como iPXE , gPXE o Etherboot que puede 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; el soporte para Windows 2000/ XP y OpenBSD fue proporcionado previamente por ADLO. [ 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 de 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 se implementa principalmente en C , con una pequeña cantidad de código ensamblador . La elección de C como lenguaje de programación principal facilita las auditorías de código en comparación con las BIOS de PC contemporáneas, que generalmente se escribían en ensamblador [ 26 ] , lo que resulta en una mayor seguridad. Existe soporte de compilación y ejecución para escribir partes de Coreboot en Ada [ 27 ] para aumentar aún más el nivel de seguridad, pero actualmente solo se utiliza esporádicamente. El código fuente se publica bajo la licencia GNU GPL versión 2 .
Coreboot realiza la mínima inicialización de hardware posible y luego transfiere el control al sistema operativo . Como resultado, no se ejecuta ningún código de Coreboot 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 tras ejecutar solo diez instrucciones [ 28 ] (casi todas las demás BIOS x86 se ejecutan exclusivamente en modo de 16 bits ). Esto es similar al firmware UEFI moderno , que se utiliza en hardware de PC más reciente.
Inicializando la DRAM
El hardware más difícil de inicializar para coreboot son los controladores y la memoria DRAM . En algunos casos, la documentación técnica sobre este tema está restringida por acuerdos de confidencialidad o no está disponible. La inicialización de la RAM es particularmente difícil porque, antes de inicializarse, no se puede utilizar. Por lo tanto, para inicializar los controladores y la memoria DRAM, el código de inicialización puede utilizar únicamente los registros de propósito general de la CPU o la 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 sencillo acceder mediante SMBus a las ROM SPD de los módulos DIMM DRAM , lo que permite utilizar la RAM.
Con los procesadores x86 más recientes, la caché del procesador puede usarse como RAM hasta que se inicialice la DRAM. La caché del procesador también debe inicializarse en modo Caché como RAM [ 29 ] [ 30 ] , pero esto requiere menos instrucciones que la inicialización de la DRAM. Además, la inicialización en modo Caché como 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.
Para la mayoría de las plataformas x86 modernas, se utilizan componentes binarios de código cerrado proporcionados por el fabricante para la configuración de la DRAM. Para 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 mantenga en cualquier soporte futuro de coreboot relacionado con AMD. [ 31 ]
Desarrollo y depuración de coreboot

Los desarrolladores utilizan una variedad de herramientas de depuración de hardware y software cuando trabajan en coreboot. Estas incluyen emuladores en circuito , sondas JTAG (por ejemplo, Sage SmartProbe) y emuladores de BIOS/firmware. El código puede probarse en emuladores o descargarse al hardware de destino en lugar de flashearse inmediatamente en un dispositivo BIOS. [ 32 ] [ 33 ] es un ejemplo. El código puede compilarse o descargarse en emuladores de BIOS en lugar de flashear el dispositivo BIOS.
Cargas útiles
coreboot carga una carga útil después de la inicialización del hardware. Las cargas útiles pueden escribirse con la biblioteca auxiliar libpayload o ser proyectos independientes. Algunas cargas útiles destacadas incluyen las siguientes:
- SeaBIO proporciona una interfaz de "BIOS heredado"
- TianoCore EDK II , la implementación de servicios UEFI genéricos estándar de facto
- GRUB 2 , que se usa con mayor frecuencia como gestor de arranque en disco, también se puede compilar como una carga útil de coreboot.
- También se puede utilizar un kernel de Linux como carga útil, normalmente en forma de LinuxBoot.
- Depthcharge es utilizado por Google para ChromeOS [ 34 ]
- Una rama de Das U-Boot fue utilizada por Google para ChromiumOS en el pasado [ 35 ].
Conferencia Europea Coreboot
Una de las reuniones presenciales fue la Conferencia Europea Coreboot, que se organizó en octubre de 2017 y tuvo una duración de tres días.
Historia de la conferencia
Variantes
coreboot tiene varias variantes de su código base original, cada una con objetivos ligeramente diferentes:
- Libreboot : una variante cuyo objetivo principal es eliminar algunos [ 36 ] blobs binarios.
- osboot - Una variante similar a Libreboot que abandonó su política de solo algunos blobs para aumentar la compatibilidad con el hardware y la estabilidad. [ 37 ] Fusionado con libreboot en noviembre de 2022. [ 38 ]
- MrChromebox ha desarrollado una versión modificada de coreboot para dispositivos basados en ChromeOS. [ 39 ]
- GNU Boot: una variante cuyo objetivo principal es eliminar todos los blobs binarios propietarios. [ 40 ]
- Canoeboot: una variante de Libreboot con una política más estricta, que nuevamente busca eliminar todos los blobs binarios propietarios. [ 41 ]
- Dasharo - Una distribución basada en coreboot desarrollada por 3mdeb, destinada a simplificar a los fabricantes el envío de coreboot en sus productos. [ 42 ] Su objetivo es facilitar a los fabricantes el envío de productos con coreboot. [ 43 ] [ 44 ]
- Calaveras - Una variante orientada a la facilidad de instalación. [ 45 ]
- Heads - Una variante orientada a la seguridad física y al uso de software libre, recomendada para su uso con QubesOS . [ 46 ] [ 47 ]
- oreboot - una bifurcación reescrita en Rust [ 48 ]
Véase también
Referencias
- ↑ Martin Roth (25 de junio de 2026). "Anuncio del lanzamiento de coreboot 26.06" . Consultado el 25 de junio de 2026 .
- ↑ "Versiones " . coreboot.nd
- ↑ "ARM" . coreboot. 15 de octubre de 2013. Consultado el 1 de febrero de 2014 .
- ↑ "licencia de coreboot" . github.com . 1991. Consultado el 13 de octubre de 2018 .
- ↑ Ron Minnich (12 de enero de 2008). " [ LinuxBIOS ] Bienvenido a coreboot" . LinuxBIOS (Lista de correo). Archivado del original el 1 de junio de 2013. Recuperado el 12 de enero de 2008 .
- ↑ Anton Borisov (2009). "El BIOS de código abierto cumple diez años. Entrevista con los desarrolladores de coreboot" . The H. Archivado del original el 16 de septiembre de 2012.'
- ↑ "Google patrocina el proyecto LinuxBIOS" . Archivado del original el 6 de febrero de 2012. Consultado el 29 de septiembre de 2023 .
{{cite web}}: CS1 maint: bot: estado de la URL original desconocido ( enlace ) - ↑ "CME Group se adentra en Coreboot y otros proyectos de código abierto de Linux" . Wall Street & Technology . Archivado del original el 12 de agosto de 2010. Consultado el 23 de septiembre de 2015 .
- ↑ "Chromebooks" . coreboot. 16 de enero de 2014. Archivado del original el 8 de mayo de 2016. Consultado el 17 de febrero de 2014 .
- ↑ "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 .
- ^ "Coreboot nutzt NSA-Tool para ingeniería inversa" . Golem.de . Consultado el 4 de mayo de 2023 .
- ↑ "Detalles técnicos sobre la publicación del código fuente de coreboot de AMD" . AMD . 28 de febrero de 2011. Archivado del original el 25 de marzo de 2014. Consultado el 1 de febrero de 2016 .
- ↑ Griffith, Bruce (5 de noviembre de 2014). "Bibliotecas AGESA de AMD solo en formato binario" . Recuperado el 8 de mayo de 2017 .
- ↑ "Minifree" . Ministerio de la Libertad - Productos . Archivado del original el 25 de septiembre de 2015. Consultado el 24 de septiembre de 2015 .
- ↑ "The Gluglug" . fsf.org . Archivado del original el 23 de septiembre de 2015. Consultado el 23 de septiembre de 2015 .
- ↑ "pcengines/coreboot" . GitHub . Consultado el 16 de septiembre de 2019 .
- ↑ "Firmware coreboot en dispositivos Purism Librem" . Consultado el 19 de junio de 2020 .
- ↑ "Los portátiles Purism utilizarán el firmware 'Heads' para protegerse contra rootkits y manipulaciones (actualizado)" . 27 de febrero de 2018. Consultado el 19 de junio de 2020 .
- ↑ "Nuevo firmware Dasharo v1.1 para la placa base MSI Z690 - Phoronix" . 22 de noviembre de 2022. Consultado el 27 de octubre de 2023 .
- ^ "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 .
- ↑ "¡El NitroPC Pro cuenta con la certificación Qubes! - Nitrokey" . 24 de septiembre de 2023. Consultado el 27 de octubre de 2023 .
- ↑ Reseña de Starbook mk v - fossbytes
- ↑ SeaBIOS (anteriormente conocido como LegacyBIOS) es una implementación de BIOS heredada de código abierto.
- ↑ "coreboot Add-on Layer (ADLO)" . Archivado del original el 25 de noviembre de 2010.
- ↑ "SEBOS, cargador de arranque con seguridad mejorada para sistemas operativos, fase 2" . Archivado del original el 19 de junio de 2007.- Agregar servicios de BIOS de PC a coreboot a través de la BIOS de Bochs
- ↑ "Comparación entre UEFI y BIOS tradicional" .proclamando esa misma ventaja para UEFI
- ↑ "compromiso" .agregando ese apoyo
- ↑ "código de inicio temprano de coreboot v3" . Consultado el 17 de agosto de 2008 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ 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 del original (PDF) el 3 de marzo de 2016. Recuperado el 25 de febrero de 2014 .
- ↑ "Un marco para usar la caché del procesador como RAM (CAR)" (PDF) .
- ↑ Griffith, Bruce (5 de noviembre de 2014). " [ coreboot ] Bibliotecas AGESA de AMD solo binarias" . Recuperado el 8 de septiembre de 2019 .
- ↑ "Sage Electronic Engineering - Depurador JTAG SmartProbe, Sage EDK, coreboot e ingeniería de software y sistemas embebidos" . www.se-eng.com . Archivado del original el 15 de marzo de 2011.
- ^ "Preguntas frecuentes sobre Sage SmartProbe" . S. Datskovskiy . Consultado el 30 de abril de 2021 .
- ↑ "Depthcharge: El gestor de arranque de ChromeOS" . docs.google.com . Consultado el 26 de octubre de 2015 .
- ↑ "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.
- ↑ "Política de reducción de objetos binarios" . 1 de noviembre de 2023. Archivado del original el 1 de noviembre de 2023. Recuperado el 1 de noviembre de 2023 .
- ↑ "proyecto osboot" . 15 de marzo de 2021. Archivado del original el 15 de marzo de 2021. Consultado el 26 de mayo de 2023 .
- ↑ "Libreboot – Osboot ahora forma parte de Libreboot" . 19 de diciembre de 2022. Archivado del original el 19 de diciembre de 2022. Consultado el 26 de mayo de 2023 .
- ↑ "Cómo instalar ChromeOS Flex en un Chromebook" . Android Police . 17 de abril de 2022. Consultado el 30 de mayo de 2023 .
- ↑ "Resumen de arranque de GNU" . 30 de octubre de 2023. Archivado del original el 30 de octubre de 2023. Consultado el 30 de octubre de 2023 .
- ↑ "Proyecto Canoeboot" . 16 de noviembre de 2023. Archivado del original el 16 de noviembre de 2023. Consultado el 16 de noviembre de 2023 .
- ↑ "3mdeb Sp. z oo — Consultoría de desarrollo de firmware embebido" . 29 de enero de 2024. Archivado del original el 16 de febrero de 2024. Recuperado el 16 de febrero de 2024 .
- ↑ "Dasharo • GitHub" . 22 de octubre de 2023. Archivado del original el 16 de febrero de 2024. Consultado el 16 de febrero de 2024 .
- ↑ "Acerca de Dasharo - Universo Dasharo" . 9 de febrero de 2024. Archivado del original el 16 de febrero de 2024. Consultado el 16 de febrero de 2024 .
- ↑ Kepplinger-Novakovic, Martin (28 de mayo de 2024), merge/skulls , consultado el 29 de mayo de 2024
- ↑ "Sobre Heads" . Heads . Consultado el 29 de mayo de 2024 .
- ↑ linuxboot/heads , LinuxBoot, 28 de mayo de 2024 , consultado el 29 de mayo de 2024
- ↑ oreboot/oreboot , oreboot, 27 de marzo de 2025 , consultado el 31 de marzo de 2025
Lecturas adicionales
- Dentro del proceso de arranque de Linux , por M. Jones, IBM
- BIOS abiertas para Linux , por Peter Seebach (solo archivo)
- LinuxBIOS listo para popularizarse , por Bruce Byfield
- Primera placa base de escritorio compatible con LinuxBIOS: GIGABYTE M57SLI-S4 , por Brandon Howard
- Grabación en vídeo de la charla de Ron Minnich sobre LinuxBIOS en FOSDEM 2007.
- Coreboot Your Service , Linux Journal , octubre de 2009
- media.ccc.de - Buscar "Peter Stuge"
Enlaces externos
- Firmware personalizado
- Firmware
- Implementaciones de BIOS gratuitas
- Software relacionado con Linux embebido