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)
Раньше проект 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 прошивках всё ещё могут быть специфичные баги, в то время как с заводскими прошивками баги встречаются очень редко.
Немного изображений¶
В качестве загрузчика используется SeaBIOS. Образ Skulls прошивался внутренней прошивкой при помощи 1vyrain. Для изменения изображения нужно пересобирать образ самостоятельно при помощи Docker образа от проекта Skulls.
GRUB2 на T60 не запустился на нём, но говорят что это возможно. О том как собрать образ для T60 с ATI я уже делал гайд.