# Coreboot, Libreboot совместимые ThinkPad'ы ## Что такое Coreboot? [**Coreboot**](https://www.coreboot.org/) - это свободная альтернатива проприетарным BIOS/UEFI прошивкам под лицензией GPLv2. **Это не загрузчик сам по себе**, это скорее прослойка для взаимодействия с железом, поверх которого используют загрузчики (payload). Примеры payload'ов для загрузки операционных систем: - SeaBIOS (Классический BIOS); - Tianocore (UEFI); - GRUB2; - u-boot (используется в Chromebook'ах); - Linux ядро в самом ROM чипе; - И многие другие. Coreboot используется в Chromebook'ах, в QEMU виртуалках (вместе с SeaBIOS либо Tianocore, в зависимости от того что вы выберите) и портирован на многие ThinkPad'ы до поколения Haswell. Из более менее современных материнских плат, на данный момент был портирован на [MSI PRO Z690-A](https://docs.dasharo.com/variants/msi_z690/overview/) от проекта Dasharo, который работает на Intel 11го поколения. ## Что такое Libreboot? [Libreboot](https://libreboot.org/) - это *дистрибутив* Coreboot, цель которого предоставить свободную (на сколько это возможно) прошивку для загрузки систем, альтернативную приприетарным. В качестве загрузчика используется GRUB2 и/или SeaBIOS и меню для настройки оборудования. Сопровождающим проекта является Ли Роу ([Leah Rowe](https://libreboot.org/contrib.html#leah-rowe)) >Раньше проект Libreboot предоставлял только полностью свободные прошивки без каких-либо блобов. Но 16го ноября 2022, в результате слияния проекта os-boot (тоже от Ли Роу), проект [сменил политику поставки проприетарных компонентов (далее: blob'ов)](https://libreboot.org/news/policy.html) в прошивку. > > Вот некоторые выноски оттуда: > - Если blob'а можно избежать, его следует избегать. Например, инициализация VGA или ОЗУ, даже если опенсорсный аналог хуже работает. > - Если в ноутбуке есть дискретная графика (например, Nvidia) и для её работы нужен blob, то он будет добавлен в прошивку. > - Если для процессора есть обновление микрокода, то он будет добавлен в прошивку, так как это исправляет ошибки безопасности в процессоре. ## Другие Coreboot дистрибутивы Таблица существующих Coreboot дистрибутивов (помимо упомянутого Libreboot): | Название | Загрузчик (payload) | Ссылка | Комментарий | | ----------- | ------------------------- | -------- | --------------------------------------------------------------- | | Skulls | SeaBIOS | [GitHub](https://github.com/merge/skulls) | Предоставляют собранные Coreboot образы (только сам BIOS регион). Поддерживаются: X230, X230t, T430, T530 и T440p. | | | Heads | Свой на основе Linux (?) | [GitHub](https://github.com/osresearch/heads) | Добольно интересный проект, предоставляющий верифицированную загрузку используя USB ключи (TOTP или HOTP) и TPM. В основном поддерживается только X230 и документация по нему расписана лучше всего, но также упоминаются X220, T420, T430. | MrChromebox | Tianocore (UEFI) | [Сайт](https://mrchromebox.tech) | Coreboot прошивка для Chromebook и Chromebox устройств, позволяющая загружать Windows и Linux системы привычным UEFI. Из ThinkPad'ов поддерживаются только, соответственно, некоторые Chromebook'и (например ThinkPad 131e) | | Dasharo | Неизвестно, возможно UEFI | [Документация](https://docs.dasharo.com) | Информации по ним мало, но прославились тем, что портировали Coreboot на [MSI PRO Z690-A](https://docs.dasharo.com/variants/msi_z690/overview/). ThinkPad'ы не поддерживаются, они занимаются более современным железом. Coreboot также используется: в Chromebook и Chromebox; ноутбуках System76 и Librem от Purism. Coreboot также планируется порт на ноутбуки от Framework и уже есть [первый коммит](https://review.coreboot.org/c/coreboot/+/62569). ## Поддерживаемые ThinkPad'ы Это таблица ThinkPad'ов, для которых можно собрать Coreboot образы: | Устройство | Поддержка Libreboot | Полностью свободный | Возможна внутренняя прошивка | Комментарий | | ------------- | ------------------- | ------------------- | ---------------------------- | ------------------------------------------------------------------------------- | | X210 (NB51) | Нет | Нет | Да, разблокирован изначально | Это материнская плата от энтузиастов для X200 с процессором Intel 8го поколения | | X60 | Да | Да | Да, bucts метод | | X60t (Tablet) | Да | Да | Да, bucts метод | | X60s | Да | Да | Да, bucts метод | T60 | Да | Да | Да, bucts метод | Только если у вас версия T60 _без_ ATI графики | | T60 (ATI) | Нет | Нет (VGA) | Да, bucts метод | Нужно добавить поддержку VGA BIOS в прошивку | ======== | ======== | ======== | ======== | ======== | X200 | Да | Да | Нет | | X200s | Да | Да | Нет | | X200t (Tablet)| Да | Да | Нет | | T400 | Да | Да | Нет | | T400s | Да | Да | Нет | | R400 | Да | Да | Нет | | T500 | Да | Да | Нет | | W500 | Да | Да | Нет | | R500 | Да | Да | Нет | | ======== | ======== | ======== | ======== | ======== | X201 | Нет | Неизвестно | Нет | Упоминается в исходниках Coreboot | X301 | Да (?) | Неизвестно | Нет | Упоминается в поддерживаемых устройствах Libreboot, но документации по нему нет | ======== | ======== | ======== | ======== | ======== | T410 | Нет | Нет (IntelME) | Нет | Упоминается в исходниках Coreboot | ======== | ======== | ======== | ======== | ======== | X220 | Да | Нет (IntelME) | Нет | | X220t (Tablet)| Да | Нет (IntelME) | Нет | | T420 | Да | Нет (IntelME) | Нет | | T420s | Да | Нет (IntelME) | Нет | | T520 | Нет | Нет (IntelME) | Нет | Упоминается в исходниках Coreboot | L520 | Нет | Нет (IntelME) | Нет | Упоминается в исходниках Coreboot | ======== | ======== | ======== | ======== | ======== | X131e (STOUT) | Нет | Нет (IntelME) | Неизвестно, Chromebook | Поддерживается MrChromebox. Упоминается в исходниках Coreboot | X230 | Да | Нет (IntelME) | Да, S3 уязвимость (1vyrain) | Последняя уязвимая версия BIOS 2.60 | X230edp | Да | Нет (IntelME) | Да, S3 уязвимость (1vyrain) | Версия X230 с модом на FullHD дисплеи (напр. nitrocaster или e-gain) | 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 | ======== | ======== | ======== | ======== | ======== | T440p | Да | Нет (IntelME) | Нет | | W541 (W540) | Нет | Нет (IntelME) | Нет | | ======== | ======== | ======== | ======== | ======== | 11e (GLIMMER) | Нет | Нет (IntelME) | Неизвестно, Chromebook | Поддерживается MrChromebox. Нет в исходниках Coreboot (Сторонний репозиторий?) | 11e (ULTIMA) | Нет | Нет (IntelME) | Неизвестно, Chromebook | Поддерживается MrChromebox. Нет в исходниках Coreboot (Сторонний репозиторий?) | 13 (SENTRY) | Нет | Нет (IntelME) | Неизвестно, Chromebook | Поддерживается MrChromebox. Нет в исходниках Coreboot (Сторонний репозиторий?) | 11e (PYRO) | Нет | Нет (IntelME) | Неизвестно, Chromebook | Поддерживается MrChromebox. Нет в исходниках Coreboot (Сторонний репозиторий?) | C13 (MORPHIUS)| Нет | Нет (IntelME) | Неизвестно, Chromebook | Поддерживается MrChromebox. Нет в исходниках Coreboot (Сторонний репозиторий?) Поддержка Libreboot означает что эти модели поддерживаются сопровождающим проекта. Если поддержки Libreboot нет, вы всё ещё можете собрать свой образ из репозитория Coreboot. Внутренняя прошивка означает то что вы можете прошить образ на целевой машине, используя при этом проприетарную прошивку, обычно это происходит за счёт нахождения уязвимостей. В противном случае придется использовать программатор. > Советую всегда использовать прошивку программатором, перед этим сделав бэкап BIOS чипа. Так вы сможете вернуть свою машину в рабочее состояние при неудачной прошивке. > При внутренней прошивке возможность вернуться на заводской образ отсутствует! Если устройство полностью свободное, то его можно собирать без IntelME и микрокода. В такие устройства можно прошить Libreboot образ без модификаций. Если устройство *не* полностью свободное, то вам нужно будет сначала снять дамп вашего BIOS чипа программатором (включая IFD, IME, BIOS и GBE регионы) ,"вытащить" оттуда нужные blob'ы и пропатчить готовый Libreboot образ, либо собрать самому образ Coreboot из исходников, со ссылкой на blob'ы в makefile. > Вроде бы можно вытащить нужные blob'ы из .exe и .iso-образов для обновления BIOS с сайта Lenovo. Я не пробовал этот метод, но многие говорили что способ рабочий. ## Известные проблемы Таблица известных проблем при использовании Coreboot: | Проблема | Устройства | Статус | Комментарий | | ------------------------------------------------------ | -------------------------- | --------------- | ---------------------------- | | Проблемы с выходом из сна (S3) на Haswell | 40ые серии (T440p, W541) | [Подтверждено](https://libreboot.org/news/libreboot20221214.html#s3-suspendresume-on-haswell-t440pw541) | "Полностью сломан" (с) Ли Роу.
[Судя по тикету из Coreboot](https://ticket.coreboot.org/issues/432), проблема появляется при сборке образа скриптами Libreboot. Сам не проверял. | | Не работают многие USB 3.0 корпуса для жестких дисков | X230 | [Подтверждено](https://ticket.coreboot.org/issues/175) | У самого была такая проблема, это касается портов на самой материнской плате и на докстанциях. Если подключать диск через USB 3.0 ExpressCard модуль, то диск работает нормально. | | Не работает GRUB2 payload с ATI графикой | T60 ATI | Нужно тестировать | Когда у меня был T60 с ATI графикой, у меня не получилось запустить загрузчик GRUB2 - был просто черный экран, но работал SeaBIOS. Ли Роу потом посоветовала использовать GRUB2 в текстовом режиме, но к тому времени ноутбук был уже продан. | На ThinkPad'ах не работает актуальная версия Tianocore (UEFI) | Все модели | [Подтверждено](https://www.reddit.com/r/coreboot/comments/rilew7/tianocore_upstream_vs_uefipayload_vs/) | На данный момент, невозможно использовать актуальную версию Tianocore с ThinkPad'ами. Единственная рабочая версия Tianocore это CorebootPayloadPkg, который является **срезом кода 2018 года и с тех пор не обновляется.** Secure Boot тоже не работает. К сожалению, T440p и W541 (W540) являются самыми современными ThinkPad'ами (не Chromebook'ами) с поддерживающие Coreboot на данный момент. Другие 40ые модели и более новые не поддерживаются из-за [Intel Boot Guard](https://github.com/corna/me_cleaner/wiki/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, то прошивка на Libreboot того стоит. Установка Coreboot поможет вам справиться с whitelist'ами на WiFi и WWAN карты, если на вашу модель нет пропатченного заводского BIOS, как например на ThinkPad T60. Также это даёт вам возможность поддерживать BIOS прошивку в актуальном состоянии со всеми патчами безопасности. Если вы стали владельцем Chromebook или Chromebox и вы хотите за место ChromeOS использовать Windows или Linux, то Coreboot образы от MrChromebox ваш выбор. Безопасникам возможно очень понравится Coreboot дистрибутив Heads - ради него стоит покупать X230 с TPM модулем. > *Имхо*, ставить Coreboot лично на свой ThinkPad я не вижу смысла, так как я уже его прошивал на X230 и из более менее рабочих payload'ов там SeaBIOS и GRUB2. > > SeaBIOS - это обычный Legacy BIOS, поддержку которого чуть не выпилили в Fedora, хотя на этот payload каждый выпуск прилетают какие-то патчи. Не такое уж и легаси, с одной стороны. > > GRUB2 в качестве загрузчика очень интересен из-за гибкого конфигурационного файла. Им даже можно расшифровывать LUKS диски и загружать оттуда Linux ядро. > > У меня был тогда Libreboot с GRUB2 на X230 (тогда ещё os-boot) и он не смог мне запустить Linux Mint с зашифрованного носителя (застрял на логотипе Mint), а Arch Linux он загрузить смог, но с пинка - пришлось вручную через терминал GRUB расшифровывать диск и указывать где находится ядро. Автоматическую расшифровку мне Libreboot не предложил. > > Современные версии Tianocore всё равно не поддерживаются, а в форке отсутствует поддержка Secure boot - главной фичи UEFI в принципе. Сам форк не обновлялся с 2018го года, в то время как, к примеру, ThinkPad T440p получил последнее обновление безопасности относительно недавно - в середине 2021 года. > >Из загрузчиков с поддержкой верификации есть если только Heads, но поддерживаемые модели можно по пальцам пересчитать. > > Ставить спорно работающий опенсорсный аналог ради опенсорса? Я к такому не готов. > > GRUB2 в качестве загрузчика это интересная вещь, но у меня нет времени заниматься его настройкой и конфигурацией, в том числе и сборкой Coreboot образов каждый раз. Если вы готовы тратить на это время, то пожалуйста. > > Проект всё равно считаю интересным, хотелось бы его видеть на более современных потребительских ноутбуках и материнских платах. Прошивки с открытым исходным кодом это здорово!