title: Статус свободи програмного та апаратного забезпечення для кожної плати, яка підтримується Libreboot x-toc-enable: true ...
Коротка версія історії: всі плати, які наразі підтримуються Libreboot можна ініціалізувати в coreboot з вільним, поважаючим свободу або з відкритим джерелом кодом, який користувач може вивчати глибинно та адаптувати для своїх потреб, але існують деякі застереження та підводні камні, які користувач повинен знати, для деяких машин.
Як багато користувачів може знати, coreboot (який Libreboot використовує для апаратної ініціалізації) номінально Вільне від слова Воля, вільне або з відкритим джерелом програмне забезпечення; хоча, coreboot намагається надати вільний код для ініціалізації кожної машини. Розробники coreboot працюють дуже потужно для зворотньої розробки якомога більшої кількості можливого функціоналу, для надання джерельного кода під вільною ліцензією. Цих людей варто відзначити, оскільки Libreboot не міг би існувати без таких зусиль з їх боку.
На деяких платах, які coreboot підтримує, деякі двійкові блоби вимагаються. Це може бути для речей подібних ініціалізації кадрового буфера відео, налаштування контролерів пам'яті і так далі. Двійковий блоб це, в цьому контексті, будь-яке програмне забезпечення, яке тільки іде в формі виконуваного двійкового коду з джерельним кодом недоступним. Це робить складнішим (але не неможливим) вивчення того, як програми працюють, і ці блоби часто ідуть з обмеженням або на їх використання та/або розповсюдження.
Мета цього документа - чітко описати наявність (або відсутність) двійкових блобів на кожній даній апаратній платформі або, у межах кожної платформи, на певних варіантах материнської плати. На веб-сайті Libreboot подібна інформація була відсутня або викладена погано, тому було вирішено написати офіційну документацію. Причиною такої відсутності було те, що Libreboot раніше давав підтримку лише для тих плат, які не потребують двійкових блобів у головній флеш-схемі для завантажувального мікропрограмного забезпечення, тому така документація не була потрібна.
Більш прагматична політика була опублікована протягом листопада 2022 року, з поглядом на допомогу настільки багатьом людям, наскільки можливо, у встановленні coreboot, навіть на менш-ніж-ідеальному апаратному забезпеченні (продовжуючи також підтримувати більше дружнє до свободи апаратне забезпечення). Libreboot досі має суворі стандарти про те, які точно блоби дозволені, які ви можете прочитати в наступному документі, так:
Політика зменшення бінарних блобів
В цій статті ви вивчите всі шляхи (на практиці), якими Libreboot реалізовує цю політику зменшення блобів, особливо в тому рядку в ній, який каже, цитата, "якщо блоб можна уникнути, його необхідно уникнути".
Практичною метою проекта Libreboot є підтримка якомога більшої кількості апаратного забезпечення підтримки coreboot, повністю протестованого з попередньо зібраними образами ROM та легкими інструкціями прошивки, направленими на нетехнічних користувачів, щоб привнести якомога більше користувачів в спільноту coreboot. З більшою кількістю користувачів, набагато більше людей відкриються coreboot і це неминуче призведе до більшої кількості людей, які розробляють coreboot, що є критичним проектом руху за вільне програмне забезпечення. З більшою кількістю розробників, більше користувачів матимуть змогу досягти рівень свободи або суверенітету в їх обчисленнях та, тому, цикл має продовжитись.
Ця мета існує, тому що ідеологічною метою Libreboot є поширення свободи програмного забезпечення будь-якими необхідними засобами, настільки багатьом людям, наскільки можливо. Універсальний доступ до джерельного кода, здатність вивчати та змінювати код або перерозповсюджувати його, та виконувати його нескінченно з будь-якою метою надзвичайно важлива. Таким свободам варто бути за замовчуванням для всього програмного забезпечення. Це робить coreboot надзвичайно корисним, навіть у випадках, де двійковий блоб є необхідним для певної функціональності. Свободі варто бути за замовчуванням для всього програмного забезпечення, і це є метою Libreboot допомогти продемонструвати це реальністю.
Політика проекта Libreboot, в межах цієї мети, надання такої підтримки апаратного забезпечення з якомога меншою можливою кількостю двійкових блобів, в ідеалі відсутньою, як у випадку з багатьма конфігураціями, які підтримує Libreboot. Libreboot спробує підтримувати будь-яку дану одиницю апаратного забезпечення, навіть у випадках, де повна свобода програмного забезпечення не є можливою; наприклад, якщо coreboot вимагає блоб для raminit на даній платі, блоб було би надано Libreboot.
Ви можете прочитати політику зменшення/мінімалізації блобів Libreboot в більших подробицях. Будь ласка, прочитайте документ, названий: Політика зменшення бінарних блобів.
Хоча не суворо необхідно для не-розробників, Ви можете знайти корисним набуття розуміння на високому рівні того, як працює coreboot, для набуття деякого контексту про деякі із тем, які обговорено в цій статті. Дивіться:
https://doc.coreboot.org/getting_started/architecture.html
Всі плати, які наразі підтримуються Libreboot можуть мати 100% вільну ініціалізацію зі сторони coreboot. В цьому контексті, це має на увазі будь-яку ініціалізацію, яка виконується головним процесором, для підняття машини для виконання кода.
Завантажувальна прошивка не є єдиним програмним забезпеченням, присутнім в будь-якій машині, та існують деякі контексти, які потрібно зрозуміти, щоб побачити більшу картину.
Причина, чому ця різниця має значення (посилаючись конкретно на сторону ініціалізації coreboot), стане зрозуміліше, в наступних секціях:
Універсальний захист зроблено в Libreboot, дозволяючи (читайте: вимагаючи, згідно з політикою проекту) включення оновлень мікрокоду ЦП, якщо доступно. Ви можете прочитати більше про це і причини чому, прочитавши наступну статтю:
Оновлення мікрокоду ЦП є нормальним
Libreboot підтримує декілька материнських плат, які використовують платформи Intel. Серед них існує суттєво два класи машин (для цілей цієї статті):
Що означає дескриптор? Гаразд, традиційно, основна флеш інтегральна мікросхема (яка містить завантажувальну прошивку, зазвичай на яку посилаються як на BIOS) на машинах Intel, містила тільки виконуваний код x86, який відповідає за ініціалізацію всього апаратного забезпечення, такого як ЦП, контролер пам'яті та периферія. Це те, що ми будемо називати бездескрипторне налаштування; в таких конфігураціях, прошивка Intel ME є відсутньою за замовчуванням.
В дескрипторному налаштуванні, флеш поділений на регіони, такі як:
me_cleaner
) переналаштовує її таким
чином, що його вимкнено в процесі ініціалізації машини.По суті, ви можете думати про такі "регіони" за аналогією до розділів на жорсткому диску. Що важливо так це те, що інтегральна мікросхема флеш-пам'яті розділена на такі регіони, де кожний регіон призначено для конкретної мети.
На деяких новіших дескрипторних платформах Intel, існує більше регіонів, ніж ці. В деяких випадках, вбудований контролер (EC) може також бути в своєму власному регіоні на завантажувальній флеш-пам'яті; щонайменш, наразі, це не є актуальним ні на якому апаратному забезпеченні, яке підтримує Libreboot (натомість, це зберігається на окремій інтегральній мікросхемі).
Вміст регіонів дескриптора та GbE описано в даташітах Intel, але ті даташіти часто містять зарезервовані секції, де частини залишені незадокументованими. Зусилля зворотної розробки протягом років задокументували деякі з цих прогалин.
ME містить багато модулів в собі, і один з цих модулів це код BringUp. Цей код BringUp є власною прошивкою ініціалізації ME, подібною coreboot. Згідно з тією самою аналогією, інші модулі Intel ME (такі як: ядро ME) є подібними (концептуально) до корисного навантаження coreboot.
Так, налаштування нейтралізованого ME є, на сопроцесорі intel ME, аналогічним до виконання coreboot без корисного навантаження. В цьому стані, ME ініціалізує себе готовим до виконання коду, але потім насправді не виконує код. Він таким чином не шкідливий, обидва з точки зору безпеки- та точки зору свободи. Іншими словами, ME є вимкненим.
Libreboot не розповсюджує прошивку Intel ME жодним чином, ні в сховищі
Git, ні в випусках. Де необхідно, Libreboot надає
сценарії, які автоматично отримують та встановлюють її, в нейтралізованому стані, за
допомогою виконання програми me_cleaner
, про яку ви можете почитати тут:
https://github.com/corna/me_cleaner/wiki/How-does-it-work%3F
Це повністю автоматизовано. Якщо ви будуєте образи ROM з lbmk.git
,
автоматизованої системи побудови libreboot, прошивка ME буде завантажена,
нейтралізована за допомогою me_cleaner
та вставлена в фінальний образ ROM автоматично.
Випущені образи ROM, надані попередньо зібраними, упускають прошивку Intel ME. На платформах, які вимагають її, ті самі сценарії, які вставляють її в процесі побудови, можуть також виконувати після-побудову, перевставляючи Intel ME в завантажувальну ROM. Це в зв'язку з проблемними питаннями ліцензіювання, оточуючими розповсюдження образів Intel ME.
Система побудови Libreboot отримує її напряму від продавця для даної машини або набору машин (в якості приклада, Lenovo надає образи для декількох машин ThinkPad). Це гарантує, що кожен користувач отримує точно таку саму конфігурацію (іншою альтернативою є витаскування прошивки Intel ME з оригінального образа продавця, в регіоні ME інтегральної схеми флеш-пам'яті).
Ви можете дізнатись про це більше на наступній сторінці: docs/install/ivy_has_common.md
Прошивка ME є обов'язковою на майже всіх платформах Intel, або машина вимкнеться після 30 хвилин. В нейтралізованому налаштуванні, код BringUp Intel ME вимкне той час скидання в 30 хвилин, дозволяючи вам використовувати ваш комп'ютер нормально, навіть незважаючи на те, що ME не виконує нічого після цього.
Зважайте на це: якщо ME тільки робить свій власний BringUp, але потім не виконує нічого, чи це дійсно щось більше ніж незначний відтік часу життя вашої батареї? В нейтралізованому стані, Intel ME є лише неактивним комп'ютером на вашій материнській платі, таким, що нічого не робить, який вам не потрібен і який ви ніколи не будете використовувати. Таким чином, його можна розцінювати нешкідливим з обох перспективи свободи програмного забезпечення та перспективи безпеки, і це є поглядом, який взято проектом Libreboot.
Якщо триматись цих припущень, і ви погодились зі статтею Libreboot про мікрокод, на яку наведено посилання зверху, і зважаєте факт, що (щонайменш, станом на зараз) Libreboot є здатним на повністю вільну ініціалізацію в межах coreboot, тоді ми можемо не без причини бути впевненими, що Libreboot надає гарний рівень свободи програмного забезпечення. Так, незважаючи на те, як дехто може інакше почувати, якщо вони не мають такої перспективи.
Тобто, хоча код BringUp, який залишається для Intel ME є пропрієтарним, та не може бути модифікованим, в зв'язку з перевіркою криптографічного підпису апаратним забезпечення, це є програмним забезпеченням для пристрою, який ви ніколи не захочете насправді використовувати в реальному світі, тобто якщо він не робить нічого в нейтралізованому стані, тоді його може бути проігноровано на практиці. Це залежить від вашої точки зору, і деякі люди можуть займати більш догматичний підхід, ніж цей. Проект Libreboot зважає нейтралізовані налаштування ME прийнятними, обидва з перспективи безпеки та перспективи свободи програмного забезпечення.
Libreboot надає шлях повністю видалити прошивку ME, зберігаючи повне використання машини, на платформах GM45 з південним мостом ICH9M. Це ноутбуки: ThinkPad X200/T400/T500/W500 і так далі з того покоління. Дивіться: docs/install/ich9utils.md
На новіших платформах використовується me_cleaner
. Ви можете прочитати про це тут:
https://github.com/corna/me_cleaner/wiki/How-does-it-work%3F
Нативна ініціалізація відео підтримується та увімкнена, для всіх платформ Intel, які підтримуються, що мають її. Джерельний код надано coreboot, під вільною ліцензією.
На деяких машинах, подвійна графіка є можливою. Наприклад, конкретні материнські плати ThinkPad T440p ідуть з обома графічними картками Intel та Nvidia, де ви можете або використовувати обидві, або тільки Intel; для використання графічної картки Nvidia, двійковий блоб вимагається, який Libreboot не надає (і не захоче надавати), натомість вибираючи увімкнення тільки графічної карти Intel (де вільний код ініціалізації є доступним в coreboot). В більшості материнських плат T440p, тільки графічна картка Intel є фізично присутньою.
На деяких материнських платах ThinkPad T400, W500 та T500, графічні карти ATI та Intel є присутніми, і ви можете використовувати або одну, або обидві. Ще раз, Libreboot тільки підтримує графічну картку Intel, де coreboot має вільний код ініціалізації.
Це є прикладом нюансованого характеру в політиці Libreboot. Libreboot міг би надавати подібні блоби, з судженням, що необхідно використовувати ці додаткові процесори. Однак, на практиці, ці машини є повністю придатними для використання лише з графікою Intel, для якої джерельний код є доступним.
За замовчуванням Libreboot є завжди свобода, коли можливо на практиці. Користувачі, які бажають мати використання додаткових графічних процесорів, на такому апаратному забезпеченні, мають взяти до уваги наступний параграф у політиці Libreboot:
"Принципам зверху варто бути застосованими до конфігурацій за замовчування. Однак, libreboot є налаштовуваним, дозволяючи користувачу робити все, що заманеться." - налаштовуваний, напевно! Дивіться: docs/maintain/
Libreboot має повністю вільну ініціалізацію, доступну для всіх контролерів пам'яті Intel на платформах, які підтримуються. Це включає Haswell (ThinkPad T440p та W541), станом на Libreboot 20230319 та пізніші.
В більшості без блобів, за вийнятком вимоги на материнських платах daisy
та peach
включати блоби завантажувача BL1. Це:
Libreboot наразі не розміщує ці блоби взагалі, і це вважається помилкою; це задокументовано на сторінці сумісності апаратного забезпечення. Їх можна додати вручну користувачем, але документації для цього наразі бракує на веб-сайті Libreboot.
Ця стаття ретельно пояснила, в деталізованому огляді, точний характер того, які бінарні блоби розміщуються в Libreboot. Знову, повністю вільна ініціалізація з coreboot є доступною на всіх наразі підтримуваних платах.
З coreboot є критичним аспектом цього, але повні межі Libreboot це основна завантажувальна інтегральна схема, яка (в деяких випадках) містить програмне забезпечення не з coreboot.
Ось список, для кожної плати, цих блобів:
Нейтралізований ME потрібен на цих цілях:
dell9020mt_nri_12mb
, dell9020sff_nri_12mb
, e5420_6mb
, e5520_6mb
, e5530_12mb
, e6220_10mb
, e6230_12mb
, e6320_10mb
, e6330_12mb
, e6420_10mb
, e6430_12mb
, e6520_10mb
, e6530_12mb
, hp2170p_16mb
, hp2560p_8mb
, hp2570p_16mb
, hp8200sff_4mb
, hp8200sff_8mb
, hp820g2_12mb
, hp8300cmt_16mb
, hp8300usdt_16mb
, hp8460pintel_8mb
, hp8470pintel_16mb
, hp8560w_8mb
, hp9470m_16mb
, t1650_12mb
, t420_8mb
, t420s_8mb
, t430_12mb
, t440plibremrc_12mb
, t520_8mb
, t530_12mb
, w530_12mb
, w541_12mb
, x220_8mb
, x230_12mb
, x230_16mb
, x230t_12mb
, x230t_16mb
Як заявлено, Libreboot надає це в стані, де ME більше не є
загрозою для безпеки. Він ініціалізує себе, але потім нічого не робить, тому його
вимкнено. Це зроблено використовуючи me_cleaner
. Дивіться:
https://github.com/corna/me_cleaner/wiki/How-does-it-work%3F
This applies to the following targets: hp2170p_16mb
, hp2560p_8mb
,
hp2570p_16mb
, hp8470pintel_16mb
, hp9470m_16mb
.
EC firmware
is inserted into main boot flash, rather than being on a separate
IC. This is better because libre replacements would be more easy to install in
the future, and reverse engineering is made much easier by it. Libreboot's
build system handles such firmware with scripts, automatically downloading
it during the build process. Libreboot 20230423 onwards does scrub EC firmware
and provide functionality in a special script, to insert them with cbfstool
at the correct offset as defined by coreboot config for each board.
This is a tiny firmware required for fan control, on Dell Precision T1650.
Оновлення мікрокоду для ЦП надано на всіх платформах x86, за замовчуванням. Не вимагається технічно, але надзвичайно рекомендовано. Виконайте для видалення:
cbfstool filename.rom remove -n cpu_microcode_blob.bin
Видалення оновлень мікрокоду вплине на стабільність системи негативно, впроваджуючи нестандартну поламану поведінку і його результатом може бути неможливість машини правильно завантажуватись. В інших випадках, видалення його може поламати такі функції, як S3 suspend/resume.
Блоби мікрокоду ЦП включено за замовчуванням, на всіх платах x86. В той час як не потрібні в більшості випадків, їх використання надзвичайно рекомендовано. Дивіться для причин чому: news/policy.uk.md#більш-детальна-інформація-про-мікрокод
Intel Flash Descriptor надано в якості блобів на деяких платах, але це не є блобами програмного забезпечення. Це конфігурації, які надано в двійковому форматі, повністю придатному для читання вільним програмним забезпеченням. Наприклад:
ich9gen
створює флеш-дескриптори ICH9M з нуля.ifdtool
має обширні функції для маніпуляції Intel
flash descriptor.bincfg
створює будь-який вид бінарних з файлу .spec
,
який може описувати будь-який бінарний формат в форматі, який можна прочитати людині. Вона містить
декілька Intel flash descriptor для декількох платформ, але Libreboot не використовує
їх.Конфігурація Intel GbE NVM (конфігураційні дані, закодовані двійково, для гігабітної мережевої картки):
ich9gen
також створює образи GbE NVM, конкретно
для мережевих карток Intel, які використані в Thinkpad GM45.nvmutil
може маніпулювати образами GbE NVMBL1 завантажувач потрібен на: daisy_snow
, daisy_spring
та peach_pit
.
З вищезазначеного, ви можете бачити, що Libreboot в дійсності надає політику зменшення бінарних блобів, з наголошенням на зменшенні, що є найбільш критичним.
Libreboot міг би додати багато блобів для різних платформ, для увімкнення різноманітних додаткових функцій, які натомість він уникати додавати, в точності тому, що метою проекта Libreboot є поширення вільного програмного забезпечення та мінімізація сили, яку розробники пропрієтарного програмного забезпечення мають над користувачами.
Я сподіваюсь, що ця стаття надала їжу для роздумів.
Жодна з машин, які наразі підтримуються Libreboot не має вільного апаратного забезпечення, в тому сенсі, що інтегральні схеми не ідуть з публічно доступними файлами verilog та подібним. Ви не змогли би виготовити власну заміну цих машин.
Деякі схеми та файли бордв'ю описують друковані плати окремих машин, які доступні онлайн, через різноманітні канали. Ви маєте знайти їх власноруч; одного дня, рух Право на ремонт, сподіваюся, принесе універсальний доступ до таких документів спільноті.
В цій статті описано код, який міститься в основній завантажувальній флеш-пам'яті, але будь-який комп'ютер, який ви придбаєте, матиме тони мікропрограм в інших частинах системи. Деякі відомості доступні на сторінці частих запитань Libreboot. Дивіться:
З них найбільш критичним є прошивка жорстких дисків/твердотілих накопичувачів та прошивка EC. Проблема описана в цих двох посиланнях застосовується до багатьох різних комп'ютерів, включаючи Libreboot, та практично кожний інший комп'ютер в світі.