English | русский | Türkçe | українська
Эта страница документирует, как на практике реализуется политика уменьшения двоичных файлов Libreboot, принятая в ноябре 2022 года, особенно та её часть, где говорится: «если может быть использовано свободное ПО — оно должно быть использовано».
Libreboot использует coreboot для инициализации оборудования. Хотя coreboot номинально является свободным или открытым ПО, на некоторых (но не всех) платформах он требует определённые вендорные файлы для таких вещей, как инициализация памяти (raminit). Все платы, которые в настоящее время поддерживаются Libreboot, могут быть инициализированы полностью с использованием свободного, libre или открытого кода самого coreboot, поскольку Libreboot на данный момент фокусируется только на таких материнских платах. Цель проекта — со временем поддерживать все платы из coreboot.
В ноябре 2022 года была принята более прагматичная политика уменьшения двоичных файлов с целью поддержки большего количества оборудования (из coreboot) в составе Libreboot, чтобы предоставить намного большему числу людей coreboot, который, независимо от статуса свободы, всё равно предоставляет больше свободы, чем полностью проприетарное стартовое ПО, используемое большинством людей. Современная политика Libreboot поэтому прагматична и способствует продвижению свободы программного обеспечения.
Прежняя политика Libreboot заключалась в полном запрете двоичных файлов. Это вредило движению за свободное ПО, так как уменьшало количество людей, которые могли бы реально использовать coreboot. Libreboot создавался для того, чтобы сделать coreboot максимально простым в использовании для обычных, не технически подкованных пользователей. Этот вред был исправлен в ноябре 2022 года.
Для понимания отдельных тем прочитайте:
https://doc.coreboot.org/getting_started/architecture.html
Причина важности этого различия (именно в части инициализации coreboot) станет понятна в следующих разделах.
В Libreboot сделано универсальное исключение: допускается (а согласно политике — требуется) включение обновлений микрокода CPU, если они доступны. Подробнее — в статье:
Обновления микрокода допустимы
Начиная с релиза Libreboot 20230423, предоставляются отдельные ROM-файлы — с микрокодом и без.
Libreboot поддерживает несколько материнских плат на базе Intel. Их можно разделить на две категории:
Descriptor — это область во флеш-памяти (BIOS), которая указывает, какие регионы есть в прошивке. В дескрипторной конфигурации флеш разбита на регионы:
Флеш можно сравнить с жёстким диском с разделами — каждый регион для своей задачи.
Некоторые части, например ME или GbE, описаны Intel, но часть информации скрыта. Сообщество занимается реверсом этих областей.
Libreboot не распространяет прошивку Intel ME. Если она требуется — предоставляются скрипты для её загрузки и нейтрализации с помощью me_cleaner.
Подробнее:
https://github.com/corna/me_cleaner/wiki/How-does-it-work%3F
Остаётся только модуль ME BringUp (BUP) — аналог coreboot для ME, но ME остаётся неактивным.
Таким образом, нейтрализованный ME безопасен и не нарушает свободу.
Собранные ROM-файлы Libreboot не содержат ME. Сборочная система загружает и обрабатывает ME при сборке из исходников. Подробнее: docs/install/ivy_has_common.html
На большинстве платформ без ME машина выключается через 30 минут, либо не запускается вообще.
На платформах GM45 с ICH9M (ThinkPad X200/T400 и т. д.) Libreboot позволяет полностью удалить ME и сохранить работоспособность. На новых платформах используется me_cleaner.
Поддерживается нативная инициализация видео от coreboot (свободный код).
На некоторых ноутбуках с неподдерживаемой графикой нужно использовать VGA Option ROM от производителя. Экспериментальная поддержка есть для Nvidia на Dell E6400 (не в стабильных релизах).
Также возможна работа с двумя GPU (Intel + Nvidia) — можно вставить ROM второй карты вручную.
Для дискретных GPU (десктопы) SeaBIOS может запускать ROM с карты напрямую.
Libreboot по умолчанию использует только свободные компоненты. Но допускает конфигурацию пользователем.
“Принципы выше должны применяться к конфигурациям по умолчанию. Однако, Libreboot должен быть настраиваемым, позволяя пользователю делать всё, что он захочет.”
Подробнее: docs/maintain/
Libreboot поддерживает полностью свободную инициализацию памяти на Intel вплоть до Haswell (например, T440p и W541). На Broadwell используется MRC от Intel, на Skylake и новее — FSP-M.
Почти всё ПО — свободное, кроме BL1 на платах daisy и peach:
Эти платы временно удалены из Libreboot, но будут возвращены позже. Платы nyan-* полностью свободны.
Полный список ниже показывает, какие вендорные файлы используются для каких плат.
Требуется на следующих платах:
dell9020mt_nri_12mb, e6220_10mb, hp2570p_16mb, t420_8mb, x230_16mb, t480_vfsp_16mb и другие (см. оригинальный список).
Подробнее:
https://github.com/corna/me_cleaner/wiki/How-does-it-work%3F
deguard отключает Intel Boot Guard на некоторых платформах.
Для плат: hp2170p, hp2560p, hp2570p, hp8470pintel, hp9470m.
Хранится в основной флешке, загружается скриптами во время сборки. С Libreboot 20230423 и позже — удаляется и вставляется отдельно.
Используется для romstage и инициализации RAM:
t480_vfsp_16mb, dell3050micro_vfsp_16mb и др.
Маленькая прошивка для управления вентилятором.
Обновления микрокода включаются по умолчанию.
Для удаления:
cbfstool filename.rom remove -n cpu_microcode_blob.bin
Для плат ASUS KFSN4-DRE, KCMA-D8 и KGPE-D16 используйте:
cbfstool filename.rom remove -n microcode_amd.bin cbfstool filename.rom remove -n microcode_amd_fam15h.bin Начиная с Libreboot 20230423 предоставляются ROM-файлы без микрокода отдельно, наряду с теми, где он включён.
Удаление микрокода может снизить стабильность системы, вызвать ошибки и нарушить работу таких функций, как S3 (suspend/resume). Поэтому его не рекомендуется удалять, если только вы точно не знаете, что делаете.
Микрокод включён по умолчанию на всех x86-платах. Несмотря на то, что он не обязателен, он крайне желателен. Причины описаны тут:
Подробнее о микрокоде и политике Libreboot
IFD предоставляется в виде бинарных файлов на некоторых платах, но это не программное обеспечение — это просто конфигурация в бинарной форме, читаемая свободным ПО:
Libreboot не использует bincfg.
Конфигурационные данные сетевой карты. Могут быть отредактированы с помощью nvmutil.
Нужен на следующих платах:
Эти платы временно удалены из Libreboot, пока не будет реализована автоматическая вставка BL1. Однако они работают с форком U-Boot от Alper в Libreboot.
Как видно из вышеизложенного, Libreboot действительно реализует политику уменьшения двоичных файлов, делая упор именно на уменьшение, а не полное устранение.
Можно с уверенностью сказать, что Libreboot предоставляет приемлемый уровень свободы ПО на всех поддерживаемых платах.
Проект мог бы добавить больше проприетарных файлов, чтобы включить дополнительные функции, но осознанно избегает этого. Потому что цель Libreboot — продвигать свободное ПО и снижать зависимость от проприетарного ПО.
Надеюсь, эта статья дала пищу для размышлений.
Ни одна из поддерживаемых Libreboot машин не является «свободной» с точки зрения аппаратного обеспечения — схемы и HDL (например, Verilog) для используемых микросхем недоступны.
Схемы и boardview-файлы иногда можно найти в интернете, но они не публикуются официально. Движение за право на ремонт (Right to Repair) может со временем изменить это.
В этой статье речь шла о коде в основной загрузочной флешке, но любой компьютер также содержит множество другой прошивки. Подробнее:
Из них наиболее важны:
Проблемы, описанные по этим ссылкам, касаются практически всех компьютеров — включая и поддерживаемые Libreboot.
Markdown: https://libreboot.org/freedom-status.ru.md
Эта страница была создана Libreboot Static Site Generator.