stringtranslate.com

coreboot

coreboot , ранее известный как LinuxBIOS , [5] — это программный проект, направленный на замену фирменной прошивки ( BIOS или UEFI ), имеющейся в большинстве компьютеров, на облегченную прошивку, предназначенную для выполнения только минимального количества задач, необходимых для загрузки и запуска современной 32-разрядной или 64-разрядной операционной системы .

Поскольку coreboot инициализирует голое оборудование, его необходимо портировать на каждый чипсет и материнскую плату , которые он поддерживает. В результате coreboot доступен только для ограниченного числа аппаратных платформ и моделей материнских плат.

Одним из вариантов coreboot является Libreboot , дистрибутив программного обеспечения, частично свободный от проприетарных фрагментов , предназначенный для конечных пользователей.

История

Проект 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]

В июне 2019 года coreboot начал использовать программное обеспечение АНБ Ghidra для своих усилий по обратному проектированию проблем, связанных с прошивками, после выпуска пакета в качестве бесплатного программного обеспечения с открытым исходным кодом . [11]

Поддерживаемые платформы

Архитектуры ЦП, поддерживаемые 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 или одну из его производных, включают:

Леново / IBM
Libreboot T400 и X200 (переименованные ThinkPad T400 и X200 соответственно, доступные на сайте Minifree, ранее известном как Gluglug). [14] [15]
Группа компаний «Артек»
Модели ThinCan DBE61, DBE62 и DBE63, а также безвентиляторное серверное/маршрутизирующее оборудование производства PC Engines. [16]
Пуризм
Ноутбуки Librem поставляются с coreboot. [17] [18]
Другие
Некоторые ПК 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 , которая используется на новом оборудовании ПК.

Инициализация DRAM

Наиболее сложным оборудованием, которое инициализирует coreboot, являются контроллеры DRAM и DRAM . В некоторых случаях техническая документация по этому вопросу ограничена NDA или недоступна. Инициализация RAM особенно сложна, поскольку до инициализации RAM ее нельзя использовать. Поэтому для инициализации контроллеров DRAM и DRAM код инициализации может иметь только регистры общего назначения ЦП или Cache-as-RAM в качестве временного хранилища.

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

Взлом ядра на саммите в Денвере в 2008 году.

Существуют также эмуляторы ЦП , которые либо заменяют ЦП , либо подключаются через порт JTAG , например, Sage SmartProbe [32] [33] . Код может быть создан на эмуляторах BIOS или загружен в них, а не прошивать устройство BIOS.

Полезные нагрузки

Полезная нагрузка SeaBIOS, запущенная на Lenovo ThinkPad X60

coreboot может загрузить полезную нагрузку, которая может быть написана с использованием вспомогательной библиотеки libpayload . Существующие полезные нагрузки включают следующее:

Европейская конференция Coreboot

Одной из очных встреч стала Европейская конференция Coreboot, которая была организована в октябре 2017 года и длилась три дня.

История конференции

Варианты

У coreboot есть несколько вариантов исходного кода, каждый из которых имеет несколько отличающиеся цели:

Смотрите также

Ссылки

  1. Мартин Рот (2 сентября 2024 г.). "coreboot 24.08 release" . Получено 3 сентября 2024 г. .
  2. ^ "Релизы". coreboot . nd
  3. ^ "ARM". coreboot. 15 октября 2013 г. Получено 1 февраля 2014 г.
  4. ^ "coreboot's license". github.com . 1991 . Получено 13 октября 2018 .
  5. ^ "[LinuxBIOS] Добро пожаловать в coreboot". 12 января 2008 г.
  6. ^ Антон Борисов (2009). "The Open Source BIOS is Ten. Интервью с разработчиками coreboot". The H . Архивировано из оригинала 16 сентября 2012 года.'
  7. ^ "Google спонсирует проект LinuxBIOS". Архивировано из оригинала 6 февраля 2012 года . Получено 29 сентября 2023 года .{{cite web}}: CS1 maint: бот: исходный статус URL неизвестен ( ссылка )
  8. ^ "CME Group погружается в Coreboot и другие проекты Linux с открытым исходным кодом". Wall Street & Technology . Архивировано из оригинала 12 августа 2010 г. Получено 23 сентября 2015 г.
  9. ^ "Chromebooks". coreboot. 16 января 2014 г. Архивировано из оригинала 8 мая 2016 г. Получено 17 февраля 2014 г.
  10. ^ "GSoC2011(Неделя 1): Анализ загрузочного кода U-boot ARM | блоги разработчиков coreboot". 5 июня 2011 г. Получено 12 апреля 2014 г.
  11. ^ "Coreboot nutzt NSA-Tool zum Reverse Engineering" . Golem.de . Проверено 4 мая 2023 г.
  12. ^ "Технические подробности о выпуске исходного кода coreboot от AMD". AMD . 28 февраля 2011 г. Архивировано из оригинала 25 марта 2014 г. Получено 1 февраля 2016 г.
  13. ^ Гриффит, Брюс (5 ноября 2014 г.). "Библиотеки AMD AGESA только для двоичного кода" . Получено 8 мая 2017 г.
  14. ^ "Minifree". Министерство Свободы - Продукты . Архивировано из оригинала 25 сентября 2015 года . Получено 24 сентября 2015 года .
  15. ^ "The Gluglug". fsf.org . Архивировано из оригинала 23 сентября 2015 . Получено 23 сентября 2015 .
  16. ^ "pcengines/coreboot". GitHub . Получено 16 сентября 2019 .
  17. ^ "Прошивка coreboot на устройствах Purism Librem" . Получено 19 июня 2020 г. .
  18. ^ "Ноутбуки Purism будут использовать прошивку 'Heads' для защиты от руткитов и взлома (обновлено)". 27 февраля 2018 г. Получено 19 июня 2020 г.
  19. ^ "Новая прошивка Dasharo v1.1 для платы MSI Z690 - Phoronix". 22 ноября 2022 г. Получено 27 октября 2023 г.
  20. ^ «Обновление прошивки NovaCustom-Dasharo, октябрь 2023 г. (ADL v1.7.0 и TGL v1.5.0) — NovaCustom» . 19 сентября 2023 г. Проверено 27 октября 2023 г.
  21. ^ "NitroPC Pro сертифицирован Qubes! - Nitrokey". 24 сентября 2023 г. Получено 27 октября 2023 г.
  22. ^ Обзор Starbook mk v - fossbytes
  23. ^ SeaBIOS (ранее известный как LegacyBIOS) — это устаревшая реализация BIOS с открытым исходным кодом.
  24. ^ "coreboot Add-on Layer (ADLO)". Архивировано из оригинала 25 ноября 2010 г.
  25. ^ "SEBOS, Security Enhanced Bootloader for Operating Systems, Phase 2". Архивировано из оригинала 19 июня 2007 г.- добавление служб BIOS ПК в загрузку ядра через BIOS Bochs
  26. ^ «Сравнение UEFI и устаревшего BIOS».провозглашая то же самое преимущество для UEFI
  27. ^ "совершить".добавив эту поддержку
  28. ^ "coreboot v3 early startup code". Архивировано из оригинала 10 июля 2012 г. Получено 17 августа 2008 г.
  29. ^ 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 г.
  30. ^ «Структура использования кэша процессора в качестве оперативной памяти (CAR)» (PDF) .
  31. ^ Гриффит, Брюс (5 ноября 2014 г.). "[coreboot] Библиотеки AMD AGESA только для двоичного кода" . Получено 8 сентября 2019 г.
  32. ^ "Sage Electronic Engineering - отладчик SmartProbe JTAG, Sage EDK, coreboot и Embedded Systems and Software Engineering". www.se-eng.com . Архивировано из оригинала 15 марта 2011 г.{{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  33. ^ «Часто задаваемые вопросы о Sage SmartProbe» . С.Дацковский . Проверено 30 апреля 2021 г.
  34. ^ "Depthcharge: загрузчик ChromeOS". docs.google.com . Получено 26 октября 2015 г. .
  35. ^ "Измените код u-boot, чтобы разрешить сборку полезной нагрузки coreboot. [chromiumos/third_party/u-boot-next : chromeos-v2011.03]". 24 июля 2011 г.
  36. ^ "Политика сокращения двоичных блобов". 1 ноября 2023 г. Архивировано из оригинала 1 ноября 2023 г. Получено 1 ноября 2023 г.
  37. ^ "osboot project". 15 марта 2021 г. Архивировано из оригинала 15 марта 2021 г. Получено 26 мая 2023 г.
  38. ^ "Libreboot – Osboot теперь является частью Libreboot". 19 декабря 2022 г. Архивировано из оригинала 19 декабря 2022 г. Получено 26 мая 2023 г.
  39. ^ "Как установить ChromeOS Flex на Chromebook". Android Police . 17 апреля 2022 г. Получено 30 мая 2023 г.
  40. ^ "GNU Boot Summary". 30 октября 2023 г. Архивировано из оригинала 30 октября 2023 г. Получено 30 октября 2023 г.
  41. ^ "Проект Canoeboot". 16 ноября 2023 г. Архивировано из оригинала 16 ноября 2023 г. Получено 16 ноября 2023 г.
  42. ^ "3mdeb Sp. z oo — Embedded Firmware development consultancy". 29 января 2024 г. Архивировано из оригинала 16 февраля 2024 г. Получено 16 февраля 2024 г.
  43. ^ "Dasharo • GitHub". 22 октября 2023 г. Архивировано из оригинала 16 февраля 2024 г. Получено 16 февраля 2024 г.
  44. ^ "About Dasharo - Dasharo Universe". 9 февраля 2024 г. Архивировано из оригинала 16 февраля 2024 г. Получено 16 февраля 2024 г.
  45. Kepplinger-Novakovic, Martin (28 мая 2024 г.), merge/skulls , получено 29 мая 2024 г.
  46. ^ "About Heads". Heads . Получено 29 мая 2024 .
  47. ^ linuxboot/heads, LinuxBoot, 28 мая 2024 г. , получено 29 мая 2024 г.

Дальнейшее чтение

Внешние ссылки