Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

История [ править ]

Проект coreboot начался зимой 1999 года в Лаборатории передовых вычислений в Лос-Аламосской национальной лаборатории (LANL) [5] с целью создания BIOS, который бы быстро запускался и разумно обрабатывал ошибки. [6] Он находится под лицензией GNU General Public License (GPL). Основными участниками являются LANL , SiS , AMD , Coresystems и Linux Networx, Inc, а также поставщики материнских плат MSI , Gigabyte и Tyan., которые предлагают базовую загрузку вместе со своим стандартным BIOS или предоставляют спецификации аппаратных интерфейсов для некоторых из своих материнских плат. Google частично спонсирует проект coreboot. [7] CME Group , группа фьючерсных бирж , начала поддерживать проект coreboot в 2009 году. [8]

coreboot принимается семь лет подряд (2007–2014) для Google Summer of Code . [9] [10] За исключением первых трех моделей, все Chromebook используют coreboot. [11] [12] Код из Das U-Boot был ассимилирован, чтобы обеспечить поддержку процессоров на основе набора инструкций ARM . [13]

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

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

Архитектуры ЦП, поддерживаемые загрузкой ядра , включают 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, поддержка загрузки ядра была расширена на многие процессоры и наборы микросхем AMD. Список процессоров включает семейства 0Fh и 10h ( ядро K8 ), а недавно и семейство 14h ( ядро Bobcat , Fusion APU ). Поддержка coreboot также распространяется на наборы микросхем AMD: RS690 , RS7xx , SB600 и SB8xx.

Общая инкапсулированная программная архитектура AMD ( AGESA ) - « протокол начальной загрузки , с помощью которого инициализируются системные устройства на материнских платах AMD64» - была открыта в начале 2011 года с целью обеспечения необходимой функциональности для инициализации системы базовой загрузки на оборудовании AMD64. [15] Однако такие выпуски так и не стали основой для будущих разработок AMD и впоследствии были остановлены. [16]

Устройства, которые могут быть предварительно загружены с помощью coreboot или одной из его производных, включают некоторые Chromebook на базе x86 , [17] [18] Libreboot X200 и T400 (переименованные ThinkPad X200 и T400, соответственно, доступные от Minifree, ранее известные как Gluglug), [ 19] [20] OLPC XO от One Laptop Per Child инициативы ThinCan моделей DBE61, DBE62 и DBE63 и безвентиляторный сервер / маршрутизатор аппаратного производства PC Engines . [21] Все ноутбуки Librem поставляются с загрузкой ядра . [22] [23]

На некоторых компьютерах System76 используется прошивка TianoCore с основной загрузкой, включая прошивку встроенного контроллера с открытым исходным кодом .

Дизайн [ править ]

coreboot обычно загружает ядро Linux , но он может загружать любой другой автономный исполняемый файл ELF , например iPXE , gPXE или Etherboot, который может загружать ядро ​​Linux по сети , или SeaBIOS [24], который может загружать ядро ​​Linux, Microsoft Windows 2000 и позже, а также BSD (ранее поддержка Windows 2000 / XP и OpenBSD обеспечивалась ADLO [25] [26] ). coreboot также может загружать ядро ​​с любого поддерживаемого устройства, такого как Myrinet, Quadrics или межсоединения кластера SCI . Также возможна загрузка других ядер напрямую, например Plan 9.ядро. Вместо того, чтобы загружать ядро ​​напрямую, coreboot может передать управление выделенному загрузчику, например, версии GNU GRUB 2 с поддержкой coreboot .

coreboot написан в основном на C с небольшим количеством ассемблерного кода . Выбор C в качестве основного языка программирования позволяет упростить аудит кода по сравнению с BIOS современного ПК, который обычно был написан на ассемблере [27], что приводит к повышению безопасности. Существует поддержка сборки и времени выполнения для записи частей coreboot в Ada [28], чтобы еще больше поднять планку безопасности, но в настоящее время она используется только спорадически. Исходный код выпущен под лицензией GNU GPL версии 2 .

coreboot выполняет минимальный объем инициализации оборудования, а затем передает управление операционной системе . В результате код загрузки ядра не запускается после того, как операционная система берет на себя управление. Особенностью coreboot является то, что версия x86 работает в 32-битном режиме после выполнения только десяти инструкций [29] (почти все другие BIOS для x86 работают исключительно в 16-битном режиме). Это похоже на современную прошивку UEFI , которая используется на более новом оборудовании ПК.

Сама по себе coreboot не предоставляет услуги вызова BIOS . Полезная нагрузка SeaBIOS может использоваться для обеспечения вызовов BIOS и, таким образом, позволяет загрузке ядра загружать операционные системы, которым требуются эти службы, такие как Windows 2000 / XP / Vista / 7 и BSD. Однако большинство современных операционных систем обращаются к оборудованию другим способом и используют вызовы BIOS только во время ранней инициализации и в качестве резервного механизма.

этапы загрузки ядра [ править ]

  1. Этап загрузочного блока: подготовьтесь к получению доступа к флэш-памяти и найдите этап ПЗУ для использования
  2. Стадия ПЗУ: память и ранняя инициализация чипсета (немного похоже на PEI в UEFI)
  3. Этап RAM: корневой комплекс или инициализация хост-моста PCI, перечисление устройств PCI и назначение ресурсов, создание таблицы ACPI, обработчик SMM (немного похоже на этап DXE в UEFI)
  4. Полезная нагрузка.

Инициализация DRAM [ править ]

Самое сложное оборудование, которое инициализирует coreboot, - это контроллеры DRAM и DRAM . В некоторых случаях техническая документация по этому вопросу NDA ограничено или отсутствует. Инициализация ОЗУ особенно сложна, потому что до инициализации ОЗУ ее нельзя использовать. Следовательно, для инициализации контроллеров DRAM и DRAM код инициализации может иметь только регистры общего назначения ЦП или кэш-память в качестве временного хранилища.

romcc , компилятор C, который использует регистры вместо ОЗУ, упрощает задачу. Используя romcc, относительно легко сделать доступ SMBus к SPD ROM модулей DRAM DIMM , что позволяет использовать RAM.

В более новых процессорах x86 кэш процессора может использоваться в качестве ОЗУ до инициализации DRAM. Кэш процессора также должен быть инициализирован в режиме Cache-as-RAM [30] [31] , но для этого требуется меньше инструкций, чем для инициализации DRAM. Кроме того, инициализация режима Cache-as-RAM специфична для архитектур ЦП, поэтому более универсальна, чем инициализация DRAM, которая специфична для каждого набора микросхем и материнской платы.

Для большинства современных платформ x86 для установки DRAM используются только двоичные компоненты с закрытым исходным кодом, предоставляемые поставщиком. Для систем Intel требуется FSP-M [32], в то время как AMD в настоящее время не поддерживает. Двоичный AGESA в настоящее время используется для проприетарного микропрограммного обеспечения UEFI в системах AMD, и ожидается, что эта модель будет перенесена в любую будущую поддержку базовой загрузки, связанную с AMD. [33]

Разработка и отладка coreboot [ править ]

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

Поскольку coreboot должен инициализировать «голое» оборудование, его необходимо перенести на все поддерживаемые чипсеты и материнские платы . Перед инициализацией ОЗУ coreboot инициализирует последовательный порт (адресация только кеша и регистров), поэтому он может отправлять отладочный текст на подключенный терминал . Он также может отправлять байтовые коды на порт 0x80, которые отображаются на двухзначном шестнадцатеричном дисплее подключенной POST-карты .

Еще одним вспомогательным средством для переноса был коммерческий продукт «RD1 BIOS Savior» с сайта www.ioss.com.tw (не путать с межведомственным персоналом службы поддержки OPSEC США на сайте www.iad.gov/ioss/), который представлял собой комбинацию двух загрузочных модулей памяти. устройства, которые подключаются к разъему загрузочной памяти и имеют ручной переключатель для выбора между двумя устройствами. Компьютер может загружаться с одного устройства, а затем можно переключить переключатель, чтобы компьютер мог перепрограммировать или «прошить» второе устройство. Более дорогая альтернатива - внешний программатор EEPROM / NOR flash .

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

Полезные нагрузки [ править ]

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

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

  • SeaBIOS , крошечная реализация x86 BIOS, написанная в основном на 16-битном C с использованием компилятора GNU C.
  • TianoCore , бесплатная реализация UEFI с открытым исходным кодом [35]
  • OpenBIOS , бесплатная реализация Open Firmware с открытым исходным кодом.
  • GNU GRUB , загрузчик
  • FILO, загрузчик в стиле GRUB с поддержкой загрузки с USB.
  • Etherboot , он может загружать операционную систему по сети
  • gPXE / iPXE , преемник Etherboot, работает под управлением SeaBIOS или TianoCore
  • Depthcharge используется Google для Chrome OS [36]
  • Ответвление Das U-Boot использовалось Google для Chromium OS в прошлом [37]

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

Одна физическая встреча - это European Coreboot Conference, которая была организована в октябре 2017 года и длилась 3 дня.

История конференции [ править ]

Варианты [ править ]

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

  • librecore - вариант с большим упором на свободу , компьютеры без набора инструкций x86 и фреймворки для разработки прошивок.
  • Libreboot - вариант, в котором основное внимание уделяется удалению всех двоичных двоичных объектов.

Libreboot был создан как дистрибутив coreboot без проприетарных двоичных двоичных объектов . [38] [39] Libreboot не является прямой вилкой из Coreboot; вместо этого, это параллельная работа, которая тесно сотрудничает с последней загрузкой ядра и время от времени переоснащается в качестве вышестоящего поставщика, с исправлениями, объединенными в восходящем направлении, когда это возможно. Помимо удаления проприетарного программного обеспечения, libreboot также пытается упростить использование coreboot, автоматизируя процессы сборки и установки. [40]

Проект Libreboot сделал возможными необходимые модификации для полностью бесплатных вариантов некоторых ноутбуков ThinkPad , MacBook и ARM Chromebook . [41] [42]

См. Также [ править ]

  • LinuxBoot
  • ЛОБОС
  • Оборудование с открытым исходным кодом
  • Быстрая загрузка
  • Кластер Беовульф

Ссылки [ править ]

  1. ^ «Релизы» . coreboot . nd
  2. ^ "РУКА" . coreboot. 15 октября 2013 . Проверено 1 февраля 2014 года .
  3. ^ "лицензия coreboot" . github.com . 1991 . Проверено 13 октября 2018 года .
  4. ^ "[LinuxBIOS] Добро пожаловать в coreboot" . 12 января 2008 г.
  5. ^ coreboot FAQ: Кто работает над coreboot?
  6. ^ Антон Борисов: BIOS с открытым исходным кодом - десять. Интервью с разработчиками coreboot. Архивировано 16 сентября 2012 года на Wayback Machine . H , 2009.
  7. ^ Google спонсирует проект LinuxBIOS
  8. ^ «CME Group погружается в Coreboot и другие проекты Linux с открытым исходным кодом» . Уолл-стрит и технологии . Архивировано из оригинального 12 августа 2010 года . Проверено 23 сентября 2015 года .
  9. ^ "GSoC" . coreboot.org . Проверено 1 февраля 2014 года .
  10. ^ «Предыдущие проекты GSoC» . coreboot.org . Проверено 1 февраля 2014 года .
  11. ^ Larabel, Майкл (22 апреля 2012). «Многие приоритетные проекты ФСПО все еще не реализуются» . Фороникс . Проверено 29 декабря 2014 . Недавний успех Coreboot заключается в том, что Google предоставляет поддержку Sandy / Ivy Bridge для Coreboot. Google планирует начать поставки новых «Chromebook» от Intel, которые будут использовать Coreboot. Google любит Coreboot за более быстрое время запуска, а также другие преимущества.
  12. ^ «Chromebook» . coreboot. 16 января 2014. Архивировано из оригинала 8 мая 2016 года . Проверено 17 февраля 2014 года .
  13. ^ «GSoC2011 (Неделя 1): Анализ загрузочного кода U-boot ARM | блоги разработчиков coreboot» . Проверено 12 апреля 2014 года .
  14. ^ «Проект Coreboot использует программное обеспечение NSA для помощи в обратном проектировании прошивки» .
  15. ^ "Технические подробности о выпуске исходного кода AMD coreboot" . AMD . 28 февраля 2011 года Архивировано из оригинала 25 марта 2014 года . Проверено 1 февраля +2016 .
  16. Рианна Гриффит, Брюс (5 ноября 2014 г.). «Библиотеки AMD AGESA, предназначенные только для двоичных файлов» . Дата обращения 8 мая 2017 .
  17. ^ «Поддерживаемые материнские платы - coreboot» . www.coreboot.org . Проверено 3 апреля 2017 года .
  18. ^ «Многие приоритетные проекты ФСПО все еще не продвигаются» . Фороникс. 22 апреля 2012 . Проверено 22 сентября 2015 года .
  19. ^ "Minifree" . Проверено 24 сентября 2015 года .
  20. ^ "The Gluglug" . fsf.org . Архивировано из оригинального 23 сентября 2015 года . Проверено 23 сентября 2015 года .
  21. ^ "pcengines / coreboot" . Проверено 16 сентября 2019 .
  22. ^ "Прошивка coreboot на устройствах Purism Librem" . Проверено 19 июня 2020 .
  23. ^ «Ноутбуки Purism для использования прошивки« Heads »для защиты от руткитов и взлома (обновлено)» . Проверено 19 июня 2020 .
  24. ^ SeaBIOS (ранее известный как LegacyBIOS) - это устаревшая реализация BIOS с открытым исходным кодом.
  25. ^ coreboot Add-on Layer (ADLO) Архивировано 25 ноября 2010 г. на Wayback Machine
  26. ^ SEBOS, Security Enhanced Bootloader для операционных систем, Фаза 2 архивации 19 июня 2007 в Wayback Machine , добавивPC BIOS Services в Coreboot через Bochs BIOS (Link отметил, что умерший 18 июля 2008 г. Престол)
  27. ^ Сравнение UEFI и устаревшего BIOS , демонстрирующее то же преимущество для UEFI
  28. ^ совершить добавление этой поддержки
  29. ^ "Код раннего запуска coreboot v3" . Архивировано из оригинального 10 июля 2012 года . Проверено 17 августа 2008 года .
  30. ^ Инхай Лу; Ли-Та Ло; Грегори Р. Уотсон; Рональд Г. Миннич (15 января 2009 г.). «АВТОМОБИЛЬ: использование кэша в качестве ОЗУ в Linux BIOS» (PDF) . qmqm.pl. Архивировано 3 марта 2016 года из оригинального (PDF) . Проверено 25 февраля 2014 года .
  31. ^ Платформа для использования кэша процессора в качестве ОЗУ (CAR)
  32. ^ «Миссия Coreboot - это про открытый исходный код или умиротворение поставщиков оборудования?» . Форумы Фороникс . Проверено 8 сентября 2019 .
  33. Рианна Гриффит, Брюс (5 ноября 2014 г.). «[coreboot] Библиотеки AMD AGESA, предназначенные только для двоичных файлов» . Проверено 8 сентября 2019 .
  34. Sage Engineering, архивная копия от 15 марта 2011 года в Wayback Machine.
  35. ^ "Google толкает" проект PIANO "Into Coreboot - Phoronix" . phoronix.com . Проверено 23 сентября 2015 года .
  36. ^ «Глубина: загрузчик ChromeOS» . docs.google.com . Проверено 26 октября 2015 года .
  37. ^ "Измените код u-boot, чтобы разрешить сборку полезной нагрузки coreboot. [Chromiumos / third_party / u-boot-next: chromeos-v2011.03]" . 24 июля 2011 г.
  38. ^ "Libreboot" . Фонд свободного программного обеспечения . Проверено 31 июля 2014 года .
  39. ^ "Libreboot" . libreboot.org . Проверено 31 июля 2014 года .
  40. ^ «О проекте libreboot» . libreboot.org . Проверено 25 апреля 2015 года .
  41. Гей, Джошуа (9 октября 2012 г.). «Уважает вашу сертификацию оборудования Freedom» . Фонд свободного программного обеспечения . Проверено 25 февраля 2015 года .
  42. ^ "Список совместимости оборудования" . libreboot.org . Проверено 25 февраля 2015 года .

Дальнейшее чтение [ править ]

  • Открытые BIOS для Linux , Питер Сибах
  • LinuxBIOS готов стать мейнстримом , Брюс Байфилд
  • Первая материнская плата для настольных ПК, поддерживаемая LinuxBIOS: GIGABYTE M57SLI-S4 , Брэндон Ховард
  • Видеозапись выступления Рона Минниха по LinuxBIOS с выставки FOSDEM 2007
  • Coreboot Your Service , Linux Journal , октябрь 2009 г.
  • https://media.ccc.de/search?q=Peter+Stuge

Внешние ссылки [ править ]

  • Официальный веб-сайт