Автор (ы) оригинала | Рональд Г. Миннич, Эрик Бидерман, Ли-Та (Олли) Ло, Стефан Рейнауэр и сообщество coreboot |
---|---|
изначальный выпуск | 1999 |
Стабильный выпуск | 4.13 / 20 ноября 2020 [1] |
Репозиторий | |
Написано в | В основном C и около 1% в сборке . Необязательно Ада |
Платформа | IA-32 , x86-64 , ARMv7 , [2] ARMv8, MIPS , RISC-V , POWER8 |
Тип | Прошивка |
Лицензия | GPLv2 [3] |
Интернет сайт | www |
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 только во время ранней инициализации и в качестве резервного механизма.
этапы загрузки ядра [ править ]
- Этап загрузочного блока: подготовьтесь к получению доступа к флэш-памяти и найдите этап ПЗУ для использования
- Стадия ПЗУ: память и ранняя инициализация чипсета (немного похоже на PEI в UEFI)
- Этап RAM: корневой комплекс или инициализация хост-моста PCI, перечисление устройств PCI и назначение ресурсов, создание таблицы ACPI, обработчик SMM (немного похоже на этап DXE в UEFI)
- Полезная нагрузка.
Инициализация 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 должен инициализировать «голое» оборудование, его необходимо перенести на все поддерживаемые чипсеты и материнские платы . Перед инициализацией ОЗУ coreboot инициализирует последовательный порт (адресация только кеша и регистров), поэтому он может отправлять отладочный текст на подключенный терминал . Он также может отправлять байтовые коды на порт 0x80, которые отображаются на двухзначном шестнадцатеричном дисплее подключенной POST-карты .
Еще одним вспомогательным средством для переноса был коммерческий продукт «RD1 BIOS Savior» с сайта www.ioss.com.tw (не путать с межведомственным персоналом службы поддержки OPSEC США на сайте www.iad.gov/ioss/), который представлял собой комбинацию двух загрузочных модулей памяти. устройства, которые подключаются к разъему загрузочной памяти и имеют ручной переключатель для выбора между двумя устройствами. Компьютер может загружаться с одного устройства, а затем можно переключить переключатель, чтобы компьютер мог перепрограммировать или «прошить» второе устройство. Более дорогая альтернатива - внешний программатор EEPROM / NOR flash .
Существуют также эмуляторы ЦП, которые либо заменяют ЦП, либо подключаются через порт JTAG , например Sage SmartProbe [34] . Код может быть построен на эмуляторах BIOS или загружен в них, вместо того, чтобы перепрограммировать устройство BIOS.
Полезные нагрузки [ править ]
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 дня.
История конференции [ править ]
Событие и год | Дата | Принимающий город | Место проведения | Ресурсы | Темы |
---|---|---|---|---|---|
ECC2017 | 26.10. - 29,10 | Бохум , Германия | RUB Конференц-центр | https://ecc2017.coreboot.org/ |
Варианты [ править ]
coreboot имеет несколько вариантов исходного кода, каждый из которых имеет несколько разные цели:
- librecore - вариант с большим упором на свободу , компьютеры без набора инструкций x86 и фреймворки для разработки прошивок.
- Libreboot - вариант, в котором основное внимание уделяется удалению всех двоичных двоичных объектов.
Libreboot был создан как дистрибутив coreboot без проприетарных двоичных двоичных объектов . [38] [39] Libreboot не является прямой вилкой из Coreboot; вместо этого, это параллельная работа, которая тесно сотрудничает с последней загрузкой ядра и время от времени переоснащается в качестве вышестоящего поставщика, с исправлениями, объединенными в восходящем направлении, когда это возможно. Помимо удаления проприетарного программного обеспечения, libreboot также пытается упростить использование coreboot, автоматизируя процессы сборки и установки. [40]
Проект Libreboot сделал возможными необходимые модификации для полностью бесплатных вариантов некоторых ноутбуков ThinkPad , MacBook и ARM Chromebook . [41] [42]
См. Также [ править ]
- LinuxBoot
- ЛОБОС
- Оборудование с открытым исходным кодом
- Быстрая загрузка
- Кластер Беовульф
Ссылки [ править ]
- ^ «Релизы» . coreboot . nd
- ^ "РУКА" . coreboot. 15 октября 2013 . Проверено 1 февраля 2014 года .
- ^ "лицензия coreboot" . github.com . 1991 . Проверено 13 октября 2018 года .
- ^ "[LinuxBIOS] Добро пожаловать в coreboot" . 12 января 2008 г.
- ^ coreboot FAQ: Кто работает над coreboot?
- ^ Антон Борисов: BIOS с открытым исходным кодом - десять. Интервью с разработчиками coreboot. Архивировано 16 сентября 2012 года на Wayback Machine . H , 2009.
- ^ Google спонсирует проект LinuxBIOS
- ^ «CME Group погружается в Coreboot и другие проекты Linux с открытым исходным кодом» . Уолл-стрит и технологии . Архивировано из оригинального 12 августа 2010 года . Проверено 23 сентября 2015 года .
- ^ "GSoC" . coreboot.org . Проверено 1 февраля 2014 года .
- ^ «Предыдущие проекты GSoC» . coreboot.org . Проверено 1 февраля 2014 года .
- ^ Larabel, Майкл (22 апреля 2012). «Многие приоритетные проекты ФСПО все еще не реализуются» . Фороникс . Проверено 29 декабря 2014 .
Недавний успех Coreboot заключается в том, что Google предоставляет поддержку Sandy / Ivy Bridge для Coreboot.
Google планирует начать поставки новых «Chromebook» от Intel, которые будут использовать Coreboot.
Google любит Coreboot за более быстрое время запуска, а также другие преимущества.
- ^ «Chromebook» . coreboot. 16 января 2014. Архивировано из оригинала 8 мая 2016 года . Проверено 17 февраля 2014 года .
- ^ «GSoC2011 (Неделя 1): Анализ загрузочного кода U-boot ARM | блоги разработчиков coreboot» . Проверено 12 апреля 2014 года .
- ^ «Проект Coreboot использует программное обеспечение NSA для помощи в обратном проектировании прошивки» .
- ^ "Технические подробности о выпуске исходного кода AMD coreboot" . AMD . 28 февраля 2011 года Архивировано из оригинала 25 марта 2014 года . Проверено 1 февраля +2016 .
- Рианна Гриффит, Брюс (5 ноября 2014 г.). «Библиотеки AMD AGESA, предназначенные только для двоичных файлов» . Дата обращения 8 мая 2017 .
- ^ «Поддерживаемые материнские платы - coreboot» . www.coreboot.org . Проверено 3 апреля 2017 года .
- ^ «Многие приоритетные проекты ФСПО все еще не продвигаются» . Фороникс. 22 апреля 2012 . Проверено 22 сентября 2015 года .
- ^ "Minifree" . Проверено 24 сентября 2015 года .
- ^ "The Gluglug" . fsf.org . Архивировано из оригинального 23 сентября 2015 года . Проверено 23 сентября 2015 года .
- ^ "pcengines / coreboot" . Проверено 16 сентября 2019 .
- ^ "Прошивка coreboot на устройствах Purism Librem" . Проверено 19 июня 2020 .
- ^ «Ноутбуки Purism для использования прошивки« Heads »для защиты от руткитов и взлома (обновлено)» . Проверено 19 июня 2020 .
- ^ SeaBIOS (ранее известный как LegacyBIOS) - это устаревшая реализация BIOS с открытым исходным кодом.
- ^ coreboot Add-on Layer (ADLO) Архивировано 25 ноября 2010 г. на Wayback Machine
- ^ SEBOS, Security Enhanced Bootloader для операционных систем, Фаза 2 архивации 19 июня 2007 в Wayback Machine , добавивPC BIOS Services в Coreboot через Bochs BIOS (Link отметил, что умерший 18 июля 2008 г. Престол)
- ^ Сравнение UEFI и устаревшего BIOS , демонстрирующее то же преимущество для UEFI
- ^ совершить добавление этой поддержки
- ^ "Код раннего запуска coreboot v3" . Архивировано из оригинального 10 июля 2012 года . Проверено 17 августа 2008 года .
- ^ Инхай Лу; Ли-Та Ло; Грегори Р. Уотсон; Рональд Г. Миннич (15 января 2009 г.). «АВТОМОБИЛЬ: использование кэша в качестве ОЗУ в Linux BIOS» (PDF) . qmqm.pl. Архивировано 3 марта 2016 года из оригинального (PDF) . Проверено 25 февраля 2014 года .
- ^ Платформа для использования кэша процессора в качестве ОЗУ (CAR)
- ^ «Миссия Coreboot - это про открытый исходный код или умиротворение поставщиков оборудования?» . Форумы Фороникс . Проверено 8 сентября 2019 .
- Рианна Гриффит, Брюс (5 ноября 2014 г.). «[coreboot] Библиотеки AMD AGESA, предназначенные только для двоичных файлов» . Проверено 8 сентября 2019 .
- ↑ Sage Engineering, архивная копия от 15 марта 2011 года в Wayback Machine.
- ^ "Google толкает" проект PIANO "Into Coreboot - Phoronix" . phoronix.com . Проверено 23 сентября 2015 года .
- ^ «Глубина: загрузчик ChromeOS» . docs.google.com . Проверено 26 октября 2015 года .
- ^ "Измените код u-boot, чтобы разрешить сборку полезной нагрузки coreboot. [Chromiumos / third_party / u-boot-next: chromeos-v2011.03]" . 24 июля 2011 г.
- ^ "Libreboot" . Фонд свободного программного обеспечения . Проверено 31 июля 2014 года .
- ^ "Libreboot" . libreboot.org . Проверено 31 июля 2014 года .
- ^ «О проекте libreboot» . libreboot.org . Проверено 25 апреля 2015 года .
- ↑ Гей, Джошуа (9 октября 2012 г.). «Уважает вашу сертификацию оборудования Freedom» . Фонд свободного программного обеспечения . Проверено 25 февраля 2015 года .
- ^ "Список совместимости оборудования" . 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
Внешние ссылки [ править ]
- Официальный веб-сайт