Перейти к содержанию

Coreboot, Libreboot совместимые ThinkPad'ы

Статья устарела!

Эта статья давно не обновлялась и уже успела несколько раз устареть!

Последняя редакция: 22 марта 2023

Что такое Coreboot?

Coreboot - это свободная альтернатива проприетарным BIOS/UEFI прошивкам под лицензией GPLv2.

Сам по себе Coreboot не имеет загрузчика. Он выступает в качестве прослойки для взаимодействия с железом, а поверх него уже работают загрузчики - payload.

Примеры payload'ов для загрузки операционных систем:

Payload Описание Комментарий
SeaBIOS "Классический" BIOS загрузчик, он же Legacy BIOS (используется в Libreboot и Skulls) Поддерживает CBFS и цепочки payload'ов (например, nvramutil - меню настройки CMOS/NVRAM)
TianoCore Открытая реализация UEFI, на некоторых устройствах есть поддержка Secure boot На ThinkPad'ах работает только старая версия TianoCore - CorebootPayloadPkg. Кроме самого TianoCore в образ нельзя ничего "уместить", также нет поддержки CBFS и какого либо меню для настройки CMOS/NVRAM
GRUB2 GRUB2 в качестве загрузчика (используется в проекте Libreboot) Полностью настраивается через grub.cfg, может загружать другие Payload'ы через CBFS и цепочки payload'ов, а также запрашивать пароль от зашифрованных LUKS носителей
Linux Linux ядро в качестве загрузчика (используется в проекте Heads) Ядро хранится в самом BIOS чипе, если позволяет место то можно уместить целый дистрибутив на BIOS чип. При каждой новой версии ядра нужно шить образ заново

Coreboot используется в Chromebook'ах (там используется u-boot payload), в QEMU виртуалках (вместе с SeaBIOS либо Tianocore, в зависимости от того что вы выберите) и портирован на многие ThinkPad'ы до поколения Haswell. Из более менее современных материнских плат, на данный момент был портирован на MSI PRO Z690-A от проекта Dasharo, который работает на Intel 11го поколения.

Что такое Libreboot?

Libreboot - это дистрибутив Coreboot, цель которого предоставить свободную (на сколько это возможно) прошивку для загрузки систем, альтернативную приприетарным.

В качестве загрузчика используется GRUB2 и/или SeaBIOS и меню для настройки оборудования. Сопровождающим проекта является Ли Роу (Leah Rowe)

ThinkPad X230 с Coreboot дистрибутивом Osboot (ныне Libreboot). В качестве загрузчика используется GRUB2)

ThinkPad X230 с Coreboot дистрибутивом Osboot (ныне Libreboot). В качестве загрузчика используется GRUB2

Раньше проект Libreboot предоставлял только полностью свободные прошивки без каких-либо блобов. Однако 16 ноября 2022, в результате слияния проекта os-boot (тоже от Ли Роу), проект сменил политику поставки проприетарных компонентов (далее: blob'ов) в прошивку.

Слияние проектов позволило существенно расширить количество поддерживаемых устройств - теперь ThinkPad'ы 30 и 40 серий получили официальную поддержку Libreboot!

Вот некоторые выноски из политики блобов (примерный перевод):

  • Если blob'а можно избежать, его следует избегать. Например, инициализация VGA или ОЗУ, даже если опенсорсный аналог хуже работает.
  • Если в ноутбуке есть дискретная графика (например, Nvidia) и для её работы нужен blob, то он будет добавлен в прошивку.
  • Если для процессора есть обновление микрокода, то он будет добавлен в прошивку, так как это исправляет ошибки безопасности в процессоре.

Другие Coreboot дистрибутивы

Таблица существующих Coreboot дистрибутивов (помимо упомянутого Libreboot):

Название Загрузчик (payload) Ссылка Комментарий
Skulls SeaBIOS GitHub Предоставляют собранные Coreboot образы (только сам BIOS регион). Поддерживаются: X230, X230t, T430, T530 и T440p.
Heads На основе Linux GitHub Добольно интересный проект, предоставляющий верифицированную загрузку используя USB ключи (TOTP или HOTP) и TPM. В основном поддерживается только X230 и документация по нему расписана лучше всего, но также упоминаются X220, T420, T430.
MrChromebox TianoCore (UEFI) Сайт Coreboot прошивка для Chromebook и Chromebox устройств, позволяющая загружать Windows и Linux системы привычным UEFI. Из ThinkPad'ов поддерживаются только, соответственно, некоторые Chromebook'и (например ThinkPad 131e)
Dasharo Неизвестно, возможно UEFI Документация Информации по ним мало, но прославились тем, что портировали Coreboot на MSI PRO Z690-A. ThinkPad'ы не поддерживаются, они занимаются более современным железом.

Coreboot также используется: в Chromebook и Chromebox; ноутбуках System76 и Librem от Purism. Coreboot также планируется порт на ноутбуки от Framework и уже есть первый коммит.

Поддерживаемые ThinkPad'ы

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

От сообщества

ThinkPad'ы с модификациями от сообщества:

Устройство Поддержка Libreboot Полностью свободный Возможна внутренняя прошивка Комментарий
X210 (NB51) Нет Нет Да, разблокирован изначально Это материнская плата от энтузиастов для X200 с процессором Intel 8го поколения
X230 (FullHD мод) Да Нет (IntelME) Да, S3 уязвимость (1vyrain) Версия X230 с модом на FullHD дисплеи (напр. nitrocaster или e-gain). В списке поддерживаемых устройств Libreboot имеет кодовое название "x230edp"

60 серия

ThinkPad'ы 60 серии (поколения Merom, Yonah - Core Duo):

Не путать с моделями по типу ThinkPad T460. Речь идёт от моделях 2006 года выпуска.

Устройство Поддержка Libreboot Полностью свободный Возможна внутренняя прошивка Комментарий
X60 Да Да Да, bucts метод
X60t (Tablet) Да Да Да, bucts метод
X60s Да Да Да, bucts метод
T60 Да Да Да, bucts метод Только если у вас версия T60 без ATI графики
T60 (ATI) Нет Нет (VGA) Да, bucts метод Нужно добавить поддержку VGA BIOS в прошивку

00 серия

ThinkPad'ы 00 серии (поколение Penryn - Core 2 Duo):

Устройство Поддержка Libreboot Полностью свободный Возможна внутренняя прошивка Комментарий
X200 Да Да Нет
X200s Да Да Нет
X200t (Tablet) Да Да Нет
T400 Да Да Нет
T400s Да Да Нет
R400 Да Да Нет
T500 Да Да Нет
W500 Да Да Нет
R500 Да Да Нет

01 и 10 серии

ThinkPad'ы 01 и 10 серии (1-е поколение Core - Nehalem):

Устройство Поддержка Libreboot Полностью свободный Возможна внутренняя прошивка Комментарий
X201 Нет, из-за проблем с совместимостью Неизвестно Нет Упоминается в исходниках Coreboot. Libreboot больше не поддерживается из-за проблем с кулером после нейтрализации IntelME
X301 Да (?) Неизвестно Нет Упоминается в поддерживаемых устройствах Libreboot, но документации по нему нет
T410 Нет Нет (IntelME) Нет Упоминается в исходниках Coreboot

20 серия

ThinkPad'ы 20 серии (2-е поколение Core - Sandy Bridge):

Устройство Поддержка Libreboot Полностью свободный Возможна внутренняя прошивка Комментарий
X220 Да Нет (IntelME) Нет
X220t (Tablet) Да Нет (IntelME) Нет
T420 Да Нет (IntelME) Нет
T420s Да Нет (IntelME) Нет
T520 Нет Нет (IntelME) Нет Упоминается в исходниках Coreboot
L520 Нет Нет (IntelME) Нет Упоминается в исходниках Coreboot

30 серия

ThinkPad'ы 30 серии (3-е поколение Core - Ivy Bridge):

Устройство Поддержка Libreboot Полностью свободный Возможна внутренняя прошивка Комментарий
X230 Да Нет (IntelME) Да, S3 уязвимость (1vyrain) Последняя уязвимая версия BIOS 2.60
X230t (Tablet) Да Нет (IntelME) Да, S3 уязвимость (1vyrain) Последняя уязвимая версия BIOS 2.58
S230u Нет Нет (IntelME) Нет Упоминается в исходниках Coreboot
T430 Да Нет (IntelME) Да, S3 уязвимость (1vyrain) Последняя уязвимая версия BIOS 2.64
T430s Нет Нет (IntelME) Да, S3 уязвимость (1vyrain) Последняя уязвимая версия BIOS 2.59. Упоминается в исходниках Coreboot
T530 Да Нет (IntelME) Да, S3 уязвимость (1vyrain) Последняя уязвимая версия BIOS 2.60. Упоминается в исходниках Coreboot
W530 Да Нет (IntelME) Да, S3 уязвимость (1vyrain) Последняя уязвимая версия BIOS 2.58. Общие Coreboot исходники с T530
X1 Carbon (G1) Нет Нет (IntelME) Нет Упоминается в исходниках Coreboot

40 серия

ThinkPad'ы 40 серии (4-е поколение Core - Haswell):

Устройство Поддержка Libreboot Полностью свободный Возможна внутренняя прошивка Комментарий
T440p Да Нет (IntelME) Нет
W541 (W540) Нет Нет (IntelME) Нет

Поддержка Libreboot означает что эти модели поддерживаются сопровождающим проекта. Если поддержки Libreboot нет, вы всё ещё можете собрать свой образ из репозитория Coreboot.

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

Советую всегда делать прошивку внешним программатором, сделав перед этим бэкап BIOS чипа. Так вы сможете вернуть свою машину в рабочее состояние при неудачной прошивке.

При внутренней прошивке есть серьезный шанс привести BIOS в нерабочее состояние: собрать неправильно образ или допустить ошибку при вводе команды. Имея бэкап, вы всегда сможете восстановить образ к первоначальному состоянию при помощи внешнего программатора.

Если устройство полностью свободное, то его можно собирать без IntelME и микрокода. В такие устройства можно прошить Libreboot образ без модификаций.

Если устройство НЕ полностью свободное, то вам нужно будет сначала снять дамп вашего BIOS чипа программатором (включая IFD, IME, BIOS и GBE регионы) ,"вытащить" оттуда нужные blob'ы и пропатчить готовый Libreboot образ, либо собрать самому образ Coreboot из исходников, со ссылкой на blob'ы в makefile.

Чаще всего несвободными компонентами считаются Intel Management Engine (Intel ME) и VGA BIOS для дискретных видеокарт AMD и Nvidia.

Вроде бы можно вытащить нужные blob'ы из .exe и .iso-образов для обновления BIOS с сайта Lenovo. Я не пробовал этот метод, но многие говорили что способ рабочий.

Поддерживаемые Chromebook'и

Это таблица ThinkPad Chromebook устройств с поддержкой Coreboot образа от MrChromebox. Подробная информация есть в таблице Coreboot дистрибутивов.

Неизвестно также являются ли прошивки полностью свободными на этих устройствах, но скорее всего нет - мешает Intel ME. Также многие устройства не упоминаются в Coreboot репозитории, возможно для этих устройств есть отдельный репозиторий, а в апстрим поддержку не завезли.

Устройство Кодовое название Возможна внутренняя прошивка Комментарий
X131e STOUT Неизвестно Упоминается в списке поддерживаемых устройств Coreboot (есть в апстриме)
11e GLIMMER Неизвестно
11e ULTIMA Неизвестно
13 SENTRY Неизвестно
11e PYRO Неизвестно
C13 MORPHIUS Неизвестно

Известные проблемы

Таблица известных проблем при использовании Coreboot:

Проблема Устройства Статус Комментарий
Не работают многие USB 3.0 корпуса для жестких дисков X230 Подтверждено У самого была такая проблема, это касается портов на самой материнской плате и на докстанциях. Если подключать диск через USB 3.0 ExpressCard модуль, то диск работает нормально.
Не работает GRUB2 payload с ATI графикой T60 ATI Нужно тестировать Когда у меня был T60 с ATI графикой, у меня не получилось запустить загрузчик GRUB2 - был просто черный экран, но работал SeaBIOS. Ли Роу потом посоветовала использовать GRUB2 в текстовом режиме, но к тому времени ноутбук был уже продан.
На ThinkPad'ах не работает актуальная версия Tianocore (UEFI) Все модели Подтверждено На данный момент, невозможно использовать актуальную версию Tianocore с ThinkPad'ами. Единственная рабочая версия Tianocore это CorebootPayloadPkg, который является срезом кода 2018 года и с тех пор не обновляется. Secure Boot тоже не работает.

Полный список багов в Сoreboot можно посмотреть на ticket.coreboot.org

Стоит отметить что баги бывают специфичными для Coreboot дистрибутивов. Например, раньше в Libreboot был баг с S3 сном на Haswell ThinkPad'ах (T440p, W541), но это оказалось не проблемой со стороны Coreboot, и в релизе Libreboot 20230319 это исправили.

К сожалению, T440p и W541 (W540) являются самыми современными ThinkPad'ами (не Chromebook'ами) с поддерживающие Coreboot на данный момент. Другие 40ые модели и более новые не поддерживаются из-за Intel Boot Guard, который мешает работе Coreboot (но почему-то не мешает модификации заводских проприетарных прошивок через me_cleaner и UEFI Patcher).

Стоит упомянуть, что Ли Роу не советует использовать программатор CH341A для прошивки чипов из-за бага с 3.3 вольтовой линией, которая выдает 5 вольт. Таким образом можно сжечь BIOS чип. Лучше прошивать чип при помощи RaspberryPi.

Сам я использую CH341A с Алика. На моём программаторе этот баг отсутствовал, но неисправные версии до сих пор встречаются.

Имхо, если у вас уже есть RaspberryPi, то просто докупите прищепку и прочее что нужно для прошивки. Если у вас нет RaspberryPi но есть любой компьютер работающий с GNU/Linux, то экономнее взять CH341A, при условии, что вы сможете проверить самостоятельно наличие этого бага при помощи вольтметра и исправить пайкой (либо выкинуть).

А нужно ли оно вообще?

Зависит от того с какой целью вы хотите себе прошить Coreboot:

  • Если ваша цель собрать полностью свободный ноутбук, установить ath9k WiFi карту без микрокода и использовать Trisquel, PureOS или Qubes OS, то прошивка на Coreboot того стоит.

  • Установка Coreboot поможет вам справиться с whitelist'ами на WiFi и WWAN карты, если на вашу модель нет пропатченого заводского BIOS, как например на ThinkPad T60.

  • Также это даёт вам возможность поддерживать BIOS прошивку в актуальном состоянии со всеми патчами безопасности. Да, SeaBIOS до сих пор патчат каждый выпуск и исправляют баги.

  • Если вы стали владельцем Chromebook или Chromebox и вы хотите заместо ChromeOS использовать Windows или Linux, то Coreboot образы от MrChromebox вам в этом помогут.

Если вы хотите избавиться только от ограничений на WiFi карты, WWAN модемы и дисплеи (50-ые серии), то лучше воспользоваться патчами для ThinkPad прошивок от сообщества.

В Coreboot прошивках всё ещё могут быть специфичные баги, в то время как с заводскими прошивками баги встречаются очень редко.

Немного изображений

ThinkPad X230 с Coreboot дистрибутивом Skulls, но с кастомным изображением при загрузке. В качестве загрузчика используется SeaBIOS (Legacy BIOS)

ThinkPad X230 с Coreboot дистрибутивом Skulls, но с кастомным изображением при загрузке.

В качестве загрузчика используется SeaBIOS. Образ Skulls прошивался внутренней прошивкой при помощи 1vyrain. Для изменения изображения нужно пересобирать образ самостоятельно при помощи Docker образа от проекта Skulls.

ATI версия ThinkPad T60, на котором заработал Coreboot с SeaBIOS. GRUB2 не запустился на нём, но говорят что это возможно. О том как собрать образ для T60 с ATI я уже делал гайд

ATI версия ThinkPad T60, на котором заработал Coreboot с SeaBIOS)

GRUB2 на T60 не запустился на нём, но говорят что это возможно. О том как собрать образ для T60 с ATI я уже делал гайд.