Опубликован релиз проекта CoreBoot 4.12, в рамках которого разрабатывается свободная альтернатива проприетарным прошивкам и BIOS. В создании новой версии приняло участие 190 разработчиков, которые подготовили 2692 изменений.
Основные новшества:
- Добавлена поддержка 49 материнских плат, большая часть которых используется на устройствах с Chrome OS. Удалена поддержка 51 материнской платы. Удаление в основном касается прекращения поддержки устаревших плат и проведения работы по устранению дубликатов похожих вариантов плат. Многие платы, которые раньше были представлены как отдельные модели, объединены в наборы (variant), в которых один модуль охватывает сразу всё семейство устройств. С учётом чистки дубликатов, несмотря на то, что формально число удалённых плат превышает число добавленных, перечень поддерживаемого оборудования увеличился. В новом выпуске также внесено большое количество изменений, связанных с улучшением поддержки устройств, которые поставляются с OEM-прошивками, в том числе на основе Coreboot.
- Продолжена чистка кодовой базы. Объёмные примечания о лицензиях в заголовках файлов заменены на краткие идентификаторы SPDX. Имена всех авторов, принимавших участие в разработке, собраны в файле AUTHORS. Проведена ревизия заголовочных файлов для минимизации кода, охватываемого при сборке каждой сборочной единицы.
- Драйвер для flash-накопителей SMMSTORE признан готовым для широкого применения. Драйвер использует режим SMM (system management mode) для записи, чтения и очистки областей на flash-памяти, и может применяться в ОС или компонентах прошивки для организации постоянного хранения настроек, без необходимости реализации специфичного для каждой платформы драйвера.
- Расширены средства unit-тестирования, которые интегрированы с новой системой сборки и переведены на использование фреймворка Cmocka. В дереве исходных текстов для unit-тестов создан отдельный каталог tests/.
- К компонентам, использование которых теперь обязательно для систем x86, отнесены RELOCATABLE_RAMSTAGE, POSTCAR_STAGE и C_ENVIRONMENT_BOOTBLOCK. RELOCATABLE_RAMSTAGE позволяет во время выполнения переместить ramstage в другую область памяти, не пересекающуюся с памятью ОС или payload-обработчиков (перемещение необходимо так как ramstage кэшируется в CBMEM для более быстрой загрузки при выходе из ждущего режима). POSTCAR_STAGE применяется для перехода от CAR (Cache-As-Ram) к запуску кода из DRAM. C_ENVIRONMENT_BOOTBLOCK позволяет использовать bootblock, собранный при помощи обычного GCC, а не специализированного компилятора romcc.
- Из основной кодовой базы исключён код для поддержки платформ AMDFAM10, VIA VX900 и FSP1.0 (BROADWELL_DE, FSP_BAYTRAIL, RANGELEY), которые не соответствуют новым требованиям. Например, в FSP1.0 невозможно реализовать стадию POSTCAR.