coreboot , ранее известный как LinuxBIOS , [5] — это программный проект, направленный на замену фирменной прошивки ( BIOS или UEFI ), имеющейся в большинстве компьютеров, на облегченную прошивку, предназначенную для выполнения только минимального количества задач, необходимых для загрузки и запуска современной 32-разрядной или 64-разрядной операционной системы .
Поскольку coreboot инициализирует голое оборудование, его необходимо портировать на каждый чипсет и материнскую плату , которые он поддерживает. В результате coreboot доступен только для ограниченного числа аппаратных платформ и моделей материнских плат.
Проект coreboot начался с целью создания BIOS, который бы быстро запускался и разумно обрабатывал ошибки. [6] Он лицензирован в соответствии с условиями GNU General Public License версии 2 (GPLv2). Основными участниками являются LANL , SiS , AMD , Coresystems и Linux Networx, Inc, а также поставщики материнских плат MSI , Gigabyte и Tyan , которые предлагают coreboot вместе со своим стандартным BIOS или предоставляют спецификации аппаратных интерфейсов для некоторых своих материнских плат. Google частично спонсирует проект coreboot. [7] CME Group , финансовая публичная компания, начала поддерживать проект coreboot в 2009 году. [8]
За исключением первых трех моделей, все Chromebook работают под управлением coreboot. [9] Код из Das U-Boot был адаптирован для поддержки процессоров на основе набора инструкций ARM . [10]
Архитектуры ЦП, поддерживаемые coreboot, включают IA-32 , x86-64 , ARM , ARM64 , MIPS и RISC-V . Поддерживаемые платформы систем на кристалле (SOC) включают AMD Geode , начиная с процессора Geode GX, разработанного для OLPC . Artec Group добавила поддержку Geode LX для своей модели ThinCan DBE61; этот код был принят AMD и дополнительно улучшен для OLPC после его обновления до платформы Geode LX, и далее дорабатывается сообществом coreboot для поддержки других вариантов Geode. coreboot можно прошить на платформу Geode с помощью Flashrom .
С момента первоначальной разработки платформ на базе AMD Geode поддержка coreboot была расширена на многие процессоры и чипсеты AMD. Список процессоров включает семейства 0Fh и 10h ( ядро K8 ), а недавно и семейство 14h ( ядро Bobcat , Fusion APU ). Поддержка coreboot также распространяется на чипсеты AMD: RS690 , RS7xx , SB600 и SB8xx.
В AMD Generic Encapsulated Software Architecture ( AGESA ) — протокол начальной загрузки , с помощью которого инициализируются системные устройства на материнских платах AMD64 — был открыт исходный код в начале 2011 года с целью предоставления необходимой функциональности для инициализации системы основной загрузки на оборудовании AMD64. [12] Однако по состоянию на 2014 год такие выпуски так и не стали основой для будущих разработок AMD и впоследствии были остановлены. [13]
Устройства, на которые можно предварительно загрузить coreboot или одну из его производных, включают:
Некоторые ПК System76 используют встроенное ПО TianoCore coreboot, включая встроенное ПО Embedded Controller с открытым исходным кодом .
Dasharo предлагает альтернативный дистрибутив прошивки на основе coreboot для компьютеров от MSI , NovaCustom и Nitrokey , среди прочих. [19] [20] [21]
В качестве альтернативы StarLabs Systems использует прошивку coreboot. [22]
Дизайн
coreboot обычно загружает ядро Linux , но он может загрузить любой другой автономный исполняемый файл ELF , такой как iPXE , gPXE или Etherboot, который может загрузить ядро Linux по сети , или SeaBIOS [23] , который может загрузить ядро Linux, Windows 2000 и более поздние версии, а также BSD; поддержка Windows 2000/ XP и OpenBSD ранее предоставлялась ADLO. [24] [25] coreboot также может загрузить ядро с любого поддерживаемого устройства, такого как Myrinet, Quadrics или межсоединения кластера SCI. Также возможна прямая загрузка других ядер , таких как ядро Plan 9. Вместо прямой загрузки ядра coreboot может передать управление выделенному загрузчику, такому как версия GNU GRUB 2 с поддержкой coreboot.
coreboot написан в основном на C , с небольшим количеством ассемблерного кода . Выбор C в качестве основного языка программирования позволяет упростить аудит кода по сравнению с современными BIOS ПК, которые обычно писались на ассемблере, [26] что приводит к повышению безопасности. Существует поддержка сборки и времени выполнения для записи частей coreboot на Ada [27] для дальнейшего повышения планки безопасности, но в настоящее время она используется только спорадически. Исходный код выпущен под лицензией GNU GPL версии 2 .
coreboot выполняет абсолютный минимум инициализации оборудования, а затем передает управление операционной системе . В результате, после того как операционная система взяла управление на себя, код coreboot не выполняется. Особенностью coreboot является то, что версия x86 работает в 32-битном режиме после выполнения всего десяти инструкций [28] (почти все остальные BIOS x86 работают исключительно в 16-битном режиме). Это похоже на современную прошивку UEFI , которая используется на новом оборудовании ПК.
romcc, компилятор C , использующий регистры вместо RAM, облегчает задачу. Используя romcc, относительно легко сделать доступ SMBus к SPD ROM модулей DRAM DIMM , что позволяет использовать RAM.
С новыми процессорами x86 кэш процессора может использоваться как ОЗУ до инициализации DRAM. Кэш процессора также должен быть инициализирован в режиме Cache-as-RAM [29] [30] , но для этого требуется меньше инструкций, чем для инициализации DRAM. Кроме того, инициализация режима Cache-as-RAM специфична для архитектур ЦП, поэтому более универсальна, чем инициализация DRAM, которая специфична для каждого чипсета и материнской платы.
Для большинства современных платформ x86 для настройки DRAM используются компоненты с закрытым исходным кодом, предоставляемые поставщиком. Для систем Intel требуется FSP-M, в то время как AMD в настоящее время не поддерживает его. Двоичный AGESA в настоящее время используется для фирменной прошивки UEFI на системах AMD, и ожидается, что эта модель будет перенесена на любую будущую поддержку coreboot, связанную с AMD. [31]
Разработка и отладка coreboot
Существуют также эмуляторы ЦП , которые либо заменяют ЦП , либо подключаются через порт JTAG , например, Sage SmartProbe [32] [33] . Код может быть создан на эмуляторах BIOS или загружен в них, а не прошивать устройство BIOS.
Полезные нагрузки
coreboot может загрузить полезную нагрузку, которая может быть написана с использованием вспомогательной библиотеки libpayload . Существующие полезные нагрузки включают следующее:
Одной из очных встреч стала Европейская конференция Coreboot, которая была организована в октябре 2017 года и длилась три дня.
История конференции
Варианты
У coreboot есть несколько вариантов исходного кода, каждый из которых имеет несколько отличающиеся цели:
Libreboot — вариант, основной задачей которого является удаление некоторых [36] двоичных объектов.
osboot — вариант, аналогичный Libreboot, в котором отменена политика «только некоторые BLOB-объекты» для улучшения поддержки оборудования и стабильности. [37] С ноября 2022 г. объединен с libreboot. [38]
MrChromebox разработал модифицированную версию coreboot для устройств на базе ChromeOS. [39]
GNU Boot — вариант, основной целью которого является удаление всех двоичных объектов. [40]
Каноэбот [41]
Dasharo — дистрибутив на основе coreboot, разработанный 3mdeb. [42] Они стремятся облегчить производителям поставку продукции с coreboot. [43] [44]
Черепа - Вариант, нацеленный на простоту установки. [45]
Heads — вариант, нацеленный на физическую безопасность и использование свободного программного обеспечения, рекомендуется для использования с QubesOS . [46] [47] [ необходима цитата ]
^ "[LinuxBIOS] Добро пожаловать в coreboot". 12 января 2008 г.
^ Антон Борисов (2009). "The Open Source BIOS is Ten. Интервью с разработчиками coreboot". The H . Архивировано из оригинала 16 сентября 2012 года.'
^ "Google спонсирует проект LinuxBIOS". Архивировано из оригинала 6 февраля 2012 года . Получено 29 сентября 2023 года .{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
^ "CME Group погружается в Coreboot и другие проекты Linux с открытым исходным кодом". Wall Street & Technology . Архивировано из оригинала 12 августа 2010 г. Получено 23 сентября 2015 г.
^ "Chromebooks". coreboot. 16 января 2014 г. Архивировано из оригинала 8 мая 2016 г. Получено 17 февраля 2014 г.
^ "GSoC2011(Неделя 1): Анализ загрузочного кода U-boot ARM | блоги разработчиков coreboot". 5 июня 2011 г. Получено 12 апреля 2014 г.
^ "Coreboot nutzt NSA-Tool zum Reverse Engineering" . Golem.de . Проверено 4 мая 2023 г.
^ "Технические подробности о выпуске исходного кода coreboot от AMD". AMD . 28 февраля 2011 г. Архивировано из оригинала 25 марта 2014 г. Получено 1 февраля 2016 г.
^ Гриффит, Брюс (5 ноября 2014 г.). "Библиотеки AMD AGESA только для двоичного кода" . Получено 8 мая 2017 г.
^ "Minifree". Министерство Свободы - Продукты . Архивировано из оригинала 25 сентября 2015 года . Получено 24 сентября 2015 года .
^ "The Gluglug". fsf.org . Архивировано из оригинала 23 сентября 2015 . Получено 23 сентября 2015 .
^ "pcengines/coreboot". GitHub . Получено 16 сентября 2019 .
^ "Прошивка coreboot на устройствах Purism Librem" . Получено 19 июня 2020 г. .
^ "Ноутбуки Purism будут использовать прошивку 'Heads' для защиты от руткитов и взлома (обновлено)". 27 февраля 2018 г. Получено 19 июня 2020 г.
^ "Новая прошивка Dasharo v1.1 для платы MSI Z690 - Phoronix". 22 ноября 2022 г. Получено 27 октября 2023 г.
^ «Обновление прошивки NovaCustom-Dasharo, октябрь 2023 г. (ADL v1.7.0 и TGL v1.5.0) — NovaCustom» . 19 сентября 2023 г. Проверено 27 октября 2023 г.
^ "NitroPC Pro сертифицирован Qubes! - Nitrokey". 24 сентября 2023 г. Получено 27 октября 2023 г.
^ Обзор Starbook mk v - fossbytes
^ SeaBIOS (ранее известный как LegacyBIOS) — это устаревшая реализация BIOS с открытым исходным кодом.
^ "coreboot Add-on Layer (ADLO)". Архивировано из оригинала 25 ноября 2010 г.
^ "SEBOS, Security Enhanced Bootloader for Operating Systems, Phase 2". Архивировано из оригинала 19 июня 2007 г.- добавление служб BIOS ПК в загрузку ядра через BIOS Bochs
^ «Сравнение UEFI и устаревшего BIOS».провозглашая то же самое преимущество для UEFI
^ "совершить".добавив эту поддержку
^ "coreboot v3 early startup code". Архивировано из оригинала 10 июля 2012 г. Получено 17 августа 2008 г.
^ Yinghai Lu; Li-Ta Lo; Gregory R. Watson; Ronald G. Minnich (15 января 2009 г.). "CAR: Using Cache as RAM in Linux BIOS" (PDF) . qmqm.pl. Архивировано из оригинала (PDF) 3 марта 2016 г. Получено 25 февраля 2014 г.
^ «Структура использования кэша процессора в качестве оперативной памяти (CAR)» (PDF) .
^ Гриффит, Брюс (5 ноября 2014 г.). "[coreboot] Библиотеки AMD AGESA только для двоичного кода" . Получено 8 сентября 2019 г.
^ "Sage Electronic Engineering - отладчик SmartProbe JTAG, Sage EDK, coreboot и Embedded Systems and Software Engineering". www.se-eng.com . Архивировано из оригинала 15 марта 2011 г.{{cite web}}: CS1 maint: неподходящий URL ( ссылка )
^ «Часто задаваемые вопросы о Sage SmartProbe» . С.Дацковский . Проверено 30 апреля 2021 г.
^ "Depthcharge: загрузчик ChromeOS". docs.google.com . Получено 26 октября 2015 г. .
^ "Измените код u-boot, чтобы разрешить сборку полезной нагрузки coreboot. [chromiumos/third_party/u-boot-next : chromeos-v2011.03]". 24 июля 2011 г.
^ "Политика сокращения двоичных блобов". 1 ноября 2023 г. Архивировано из оригинала 1 ноября 2023 г. Получено 1 ноября 2023 г.
^ "osboot project". 15 марта 2021 г. Архивировано из оригинала 15 марта 2021 г. Получено 26 мая 2023 г.
^ "Libreboot – Osboot теперь является частью Libreboot". 19 декабря 2022 г. Архивировано из оригинала 19 декабря 2022 г. Получено 26 мая 2023 г.
^ "Как установить ChromeOS Flex на Chromebook". Android Police . 17 апреля 2022 г. Получено 30 мая 2023 г.
^ "GNU Boot Summary". 30 октября 2023 г. Архивировано из оригинала 30 октября 2023 г. Получено 30 октября 2023 г.
^ "Проект Canoeboot". 16 ноября 2023 г. Архивировано из оригинала 16 ноября 2023 г. Получено 16 ноября 2023 г.
^ "3mdeb Sp. z oo — Embedded Firmware development consultancy". 29 января 2024 г. Архивировано из оригинала 16 февраля 2024 г. Получено 16 февраля 2024 г.
^ "Dasharo • GitHub". 22 октября 2023 г. Архивировано из оригинала 16 февраля 2024 г. Получено 16 февраля 2024 г.
^ "About Dasharo - Dasharo Universe". 9 февраля 2024 г. Архивировано из оригинала 16 февраля 2024 г. Получено 16 февраля 2024 г.
↑ Kepplinger-Novakovic, Martin (28 мая 2024 г.), merge/skulls , получено 29 мая 2024 г.
^ "About Heads". Heads . Получено 29 мая 2024 .
^ linuxboot/heads, LinuxBoot, 28 мая 2024 г. , получено 29 мая 2024 г.
Дальнейшее чтение
Внутри процесса загрузки Linux, М. Джонс, IBM
Открытые BIOS для Linux, Питер Сибах (только архив)
LinuxBIOS готов к массовому использованию, автор Брюс Байфилд
Первая материнская плата для настольных ПК, поддерживаемая LinuxBIOS: GIGABYTE M57SLI-S4, от Брэндона Ховарда
Видеозапись доклада Рона Минниха о LinuxBIOS с FOSDEM 2007
Coreboot Your Service, Linux Journal , октябрь 2009 г.