1099 lines
83 KiB
Markdown
1099 lines
83 KiB
Markdown
---
|
||
title: Часті питання
|
||
x-toc-enable: true
|
||
...
|
||
|
||
Також відомо як Відповіді на часті питання
|
||
|
||
Важливі питання
|
||
================
|
||
|
||
Який статус свободи програмного забезпечення в Libreboot?
|
||
----------------------------------------------------
|
||
|
||
Стаття була написана для Libreboot, для підтримки протягом часу, яка
|
||
ретельно описує поточний статус Libreboot с точки зору свободи програмного забезпечення,
|
||
пояснюючи будь-які підводні камені, які існують для конкретних платформ апаратного забезпечення.
|
||
|
||
Будь-ласка, прочитайте статтю щодо цього:
|
||
|
||
[Статус свободи програмного та апаратного забезпечення для кожної плати, яка підтримується
|
||
Libreboot](freedom-status.md)
|
||
|
||
Ви також можете знайти цю іншу секцію сторінки поширених запитань корисною:
|
||
[Який рівень свободи програмного забезпечення Libreboot дає
|
||
мені?](#який-рівень-програмної-свободи-дає-мені-libreboot)
|
||
|
||
Як скомпілювати libreboot з джерельного коду
|
||
------------------------------------
|
||
|
||
Зверніться до [інструкцій зі збірки lbmk](docs/build/).
|
||
|
||
Як працює система збірки?
|
||
-------------------------------
|
||
|
||
Зверніться до [посібника з обслуговування lbmk](docs/maintain/).
|
||
|
||
Не використовуйте CH341A!
|
||
------------------
|
||
|
||
Цей програматор SPI пошкодить ваш чіп і материнську плату, до якої він
|
||
підключений.
|
||
|
||
Прочитайте примітки щодо CH341A на [docs/install/spi.md](docs/install/spi.md), щоб
|
||
вивчити більше.
|
||
|
||
Flashrom скаржиться на доступ DEVMEM
|
||
--------------------------------------
|
||
|
||
Якщо запущено `flashrom -p internal` для програмної перепрошивки та
|
||
ви отримуєте помилку, пов'язану з доступом до /dev/mem, вам слід перезавантажити систему з
|
||
параметром ядра `iomem=relaxed` перед виконанням flashrom, або використовуйте ядро,
|
||
для якого не ввімкнено `CONFIG_STRICT_DEVMEM` та `CONFIG_IO_STRICT_DEVMEM`.
|
||
|
||
Приклад виводу flashrom з обома `CONFIG_STRICT_DEVMEM` та `CONFIG_IO_STRICT_DEVMEM` ввімкненими:
|
||
```
|
||
flashrom v0.9.9-r1955 on Linux 4.11.9-1-ARCH (x86_64)
|
||
flashrom is free software, get the source code at https://flashrom.org
|
||
|
||
Calibrating delay loop... OK.
|
||
Error accessing high tables, 0x100000 bytes at 0x000000007fb5d000
|
||
/dev/mem mmap failed: Operation not permitted
|
||
Failed getting access to coreboot high tables.
|
||
Error accessing DMI Table, 0x1000 bytes at 0x000000007fb27000
|
||
/dev/mem mmap failed: Operation not permitted
|
||
```
|
||
|
||
Підсвічування в лівій частині екрана стає темнішим, якщо зменшити яскравість мого ноутбука ThinkPad X200/X200S/X200T, T400, T500, R400, W500, R500 та інших ноутбуків Intel
|
||
---------------------------------------------------------------------------------------------------------------
|
||
|
||
Ми не знаємо, як визначити правильне значення ШІМ для використання в
|
||
coreboot, тому ми просто використовуємо стандартне в coreboot, який має
|
||
цю проблему на деяких CCFL панелях, але не LED панелях.
|
||
|
||
Ви можете вирішити цю проблему у своєму дистрибутиві, дотримуючись приміток на
|
||
[документація: контроль підсвічуванням](../docs/misc/#finetune-backlight-control-on-intel-gpus).
|
||
|
||
Ethernet не працює на моєму X200/T400/X60/T60, коли я його підключаю
|
||
-------------------------------------------------------------------
|
||
|
||
Це спостерігалося в деяких системах, які використовують network-manager. Таке буває
|
||
як в оригінальному BIOS, так і в libreboot. Це примха в
|
||
обладнанні. У системах debian обхідним шляхом є перезапуск сервіса
|
||
мережі, коли ви підключаєте кабель ethernet:
|
||
|
||
sudo service network-manager restart
|
||
|
||
На systemd ви можете спробувати:
|
||
|
||
sudo systemctl restart network-manager
|
||
|
||
(назва служби може відрізнятися для вас, залежно від вашої
|
||
конфігурації)
|
||
|
||
Мій KCMA-D8 або KGPE-D16 не завантажується з встановленим модулем PIKE2008
|
||
-----------------------------------------------------------------------
|
||
|
||
**Материнські плати KGPE-D16, KCMA-D8 та KFSN4-DRE ASUS було видалено 19
|
||
листопада 2022. Ви все ще можете використовувати старіші версії Libreboot, і випуски
|
||
старіших версій.**
|
||
|
||
Завантаження Option ROM з модуля PIKE2008 на ASUS KCMA-D8
|
||
або KGPE-D16 викликає зависання системи під час завантаження. Можна використовувати
|
||
це в корисному навантаженні (якщо ви використовуєте корисне навантаження ядра linux, таке як linuxboot),
|
||
або завантажитись (з SeaGRUB та/або SeaBIOS) зі звичайного SATA, а потім використовувати
|
||
це в Linux. Ядро Linux здатне використовувати PIKE2008
|
||
модуль без завантаження Option ROM.
|
||
|
||
Як зберегти журнали паніки ядра на ноутбуках Thinkpad?
|
||
--------------------------------------------------
|
||
|
||
Найпростіший спосіб зробити це за допомогою netconsole ядра
|
||
і відтворення паніки. Netconsole вимагає двох машин, тієї, що є
|
||
панічною (джерело) і той, яка отримуватиме журнали збоїв (ціль). Джерело
|
||
має бути підключеним кабелем ethernet, а ціль також бути доступною
|
||
під час паніки. Щоб налаштувати цю систему, виконайте
|
||
наступні команди як root на джерелі (`джерело#`) і звичайний користувач
|
||
на цілі (`ціль$`):
|
||
|
||
1. Запустіть сервер слухача на цільовій машині (netcat працює добре):
|
||
|
||
`ціль$ nc -u -l -p 6666`
|
||
|
||
2. Монтуйте configfs (тільки один раз на завантаження, ви можете перевірити, чи він уже змонтований
|
||
з `mount | grep /sys/kernel/config`. Це не поверне результат,
|
||
якщо це не так).
|
||
|
||
`джерело# modprobe configfs`
|
||
|
||
`джерело# mkdir -p /sys/kernel/config`
|
||
|
||
`джерело# mount none -t configfs /sys/kernel/config`
|
||
|
||
3. знайдіть назву інтерфейсу ethernet джерела, вона має мати форму `enp*` або
|
||
`eth*`, дивіться вивід `ip address` або `ifconfig`.
|
||
|
||
`джерело# iface="enp0s29f8u1"` змініть це
|
||
|
||
Заповніть адресу IPv4 цільової машини тут:
|
||
|
||
`джерело# tgtip="192.168.1.2"` змініть це
|
||
|
||
|
||
4. Створіть ціль журналювання netconsole на вихідній машині:
|
||
|
||
`джерело# modprobe netconsole`
|
||
|
||
`джерело# cd /sys/kernel/config/netconsole`
|
||
|
||
`джерело# mkdir target1; cd target1`
|
||
|
||
`джерело# srcip=$(ip -4 addr show dev "$iface" | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')`
|
||
|
||
`джерело# echo "$srcip" > local_ip`
|
||
|
||
`джерело# echo "$tgtip" > remote_ip`
|
||
|
||
`джерело# echo "$iface" > dev_name`
|
||
|
||
`джерело# arping -I "$iface" "$tgtip" -f | grep -o '..:..:..:..:..:..' > remote_mac`
|
||
|
||
`джерело# echo 1 > enabled`
|
||
|
||
5. Змініть рівень журналу консолі на налагодження:
|
||
|
||
`джерело# dmesg -n debug`
|
||
|
||
6. Перевірте, чи працює журнал, наприклад, вставленням або вийманням USB-
|
||
пристроїв на джерелі.
|
||
Має з'явитись кілька рядків в терміналі, у якому ви запустили netcat (nc), на цільовому хості.
|
||
|
||
7. Спробуйте відтворити паніку ядра.
|
||
|
||
Апаратна сумісність
|
||
======================
|
||
|
||
Які системи сумісні з libreboot?
|
||
-----------------------------------------------------------------------------------
|
||
|
||
Будь-яку систему можна легко додати, тому *сумісність* посилається до будь-якої
|
||
інтегрованої до системи побудови `lbmk` плати, яку libreboot використовує.
|
||
|
||
Прочитайте [список сумісного обладнання](docs/hardware/).
|
||
|
||
Пастки свободи з сучасним обладнанням Intel {#intel}
|
||
----------------------------------------------------
|
||
|
||
Coreboot номінально є вільним програмним забезпеченням, але для більшості x86
|
||
цілей, які він підтримує, потрібні двійкові блоби, як на Intel, так і на AMD.
|
||
|
||
### Intel Management Engine (ME) {#intelme}
|
||
|
||
ПРИМІТКА: Інформація нижче трохи застаріла. Зараз Intel ME не
|
||
працює на співпроцесорі ARC, а працює на архітектурі модифікованого процесора Intel 486,
|
||
з прошивкою ME, написаною для x86 на основі операційної системи Minix.
|
||
Однак загальна філософія дизайну та функціонування в основному є тою
|
||
самою.
|
||
|
||
На *більшості* сучасних платформ Intel, які мають Intel ME, зараз можливо відключити
|
||
Intel ME після BringUp. Дивіться:
|
||
|
||
<https://github.com/corna/me_cleaner>\
|
||
|
||
На всіх ноутбуках GM45+ICH9M, які мають Intel ME (крім того, це означає настільні комп'ютери
|
||
X4X+ICH10), прошивка ME не потрібна у завантажувальній флеш-пам'яті. Або використовується
|
||
модифікований дескриптор, який вимикає ME та видаляє регіон для нього
|
||
в завантажувальній флеш-пам'яті, або використовується налаштування без дескрипторів. Проте всі сучасні
|
||
платформи Intel в іншому випадку вимагають наявності образа Intel ME в основній завантажувальній
|
||
флеш-пам'яті.
|
||
|
||
Тепер до основної теми:
|
||
|
||
Представлений в червні 2006 року в сімействі чіпсетів Intel 965 Express контролерів-
|
||
концентраторів (графіки та) пам'яті, або (G)MCH, і сімейство контролерів ICH8 I/O,
|
||
Intel Management Engine (ME) є окремим
|
||
обчислювальним середовищем, фізично розташованим в чіпі (G)MCH. У третьому кварталі 2009 року,
|
||
перше покоління процесорів Intel Core i3/i5/i7 (Nehalem) і п'ята серія
|
||
сімейства чіпсетів концентраторів-контролерів платформи, або PCH, принесли
|
||
більш тісно інтегрований ME (зараз версії 6.0) всередині чіпа PCH,
|
||
який сам по собі замінив ICH. Таким чином, ME ***присутній на всіх настільних,
|
||
мобільних (ноутбуки) та серверних системах з середини 2006 року***.
|
||
|
||
ME складається з ядра процесора ARC (замінено іншими ядрами процесора
|
||
в наступних поколіннях ME), кеша коду та даних, таймера
|
||
і безпечної внутрішньої шини, до якої підключаються додаткові пристрої,
|
||
включаючи механізм криптографії, внутрішні ROM та RAM, контролери
|
||
пам'яті та ***механізм прямого доступу до пам'яті (DMA)*** для доступу до
|
||
пам'яті операційної системи хоста, також щоб зарезервувати регіон
|
||
захищеної зовнішньої пам'яті для доповнення обмеженої внутрішньої оперативної пам'яті ME.
|
||
ME також має ***доступ до мережі*** з власною MAC-адресою через
|
||
контролер Intel Gigabit Ethernet. Його програма завантаження, збережена на внутрішній
|
||
ROM, завантажує "маніфест" прошивки з чіпа флеш-пам'яті SPI ПК.
|
||
Цей маніфест ***підписано надійним криптографічним ключем***,
|
||
який відрізняється між версіями мікропрограми ME. Якщо маніфест
|
||
не підписано певним ключем Intel, завантажувальна ROM не завантажиться і не
|
||
виконається прошивка, і ядро процесора ME буде зупинено.
|
||
|
||
Прошивка ME стиснена та складається з модулів, перелічених в
|
||
маніфесті, разом із безпечними криптографічними хешами їх змісту.
|
||
Одним модулем є ядро операційної системи, яке базується на
|
||
***пропрієтарному ядрі операційної системи реального часу (RTOS)***, під назвою
|
||
"ThreadX". Розробник, Express Logic, продає ліцензії і джерельний
|
||
код для ThreadX. Клієнтам, таким як Intel, заборонено розголошувати
|
||
або виконувати субліцензіювання джерельного кода ThreadX. Іншим модулем є
|
||
Dynamic Application Loader (DAL), який складається з ***віртуальної машини Java***
|
||
та набора передвстановлених класів Java для криптографії, безпечного зберігання і
|
||
так далі. Модуль DAL може завантажувати та виконувати додаткові модулі ME з
|
||
HDD або SSD ПК. Прошивка ME також містить ряд нативних
|
||
модулів додатків у своєму просторі флеш-пам'яті, включаючи Intel
|
||
Active Management Technology (AMT), реалізації Trusted
|
||
Platform Module (TPM), Intel Boot Guard, аудіо та відео DRM
|
||
системи.
|
||
|
||
Програма Active Management Technology (AMT), частина бренда Intel
|
||
"vPro", є веб-сервером і програмним кодом, що дозволяє віддаленим
|
||
користувачам вмикать, вимикать, дивиться інформацію та тощо
|
||
керувати ПК. Це може ***використовуватись дистанційно, навіть коли ПК
|
||
вимкнено*** (через Wake-on-Lan). Трафік зашифровано з використанням бібліотек SSL/TLS,
|
||
але пам'ятайте, що всі основні реалізації SSL/TLS мали дуже
|
||
оприлюднені вразливості. Сама програма AMT має ***[відомі
|
||
вразливості](https://uk.wikipedia.org/wiki/Active_Management_Technology#Проблеми_безпеки)***,
|
||
які використовувалися для розробки руткітів і кейлоггерів, а також таємного
|
||
отримання зашифрованого доступа до функцій керування ПК.
|
||
Пам'ятайте, що ME має повний доступ до оперативної пам'яті ПК. Це означає, що
|
||
зловмисник, який використовує будь-яку з цих вразливостей, може отримати доступ до
|
||
всього на ПК: усі відкриті файли, усі працюючи
|
||
програми, усі натиснуті клавіши, тощо.
|
||
|
||
[Intel Boot Guard](https://mjg59.dreamwidth.org/33981.md) є застосунком ME,
|
||
представленим у другому кварталі 2013 року з мікропрограмою ME, версії 9.0 на четвертому
|
||
поколінні процесорів Intel Core i3/i5/i7 (Haswell). Це дозволяє виробникам комплектного обладнання для ПК
|
||
згенерувати асиметричну криптографічну пару ключів, встановити публічний ключ
|
||
в ЦП і запобігти ЦП від запуску завантажувальної мікропрограми, яка не підписана
|
||
з їх приватним ключем. Це означає, що ***coreboot та libreboot
|
||
неможливо перенести*** на такі ПК, без приватного ключа підпису
|
||
OEM. Зверніть увагу, що системи, зібрані з придбаних окремо материнської плати
|
||
та ЦП залишаються незмінними, оскільки постачальник материнської
|
||
плати (на якій зберігається завантажувальна прошивка) не може вплинути на
|
||
публічний ключ, що зберігається в ЦП.
|
||
|
||
Прошивка ME версій 4.0 та пізніше (Intel серії 4 та пізніші чіпсети)
|
||
включає програму ME для ***аудіо та відео
|
||
[DRM](https://defectivebydesign.org/what_is_drm_digital_restrictions_management)***
|
||
під назвою "Захищений аудіо-відеошлях" (PAVP). ME отримує від операційної системи хоста
|
||
зашифрований медіа-потік і зашифрований ключ,
|
||
розшифровує ключ і надсилає розшифрований ключ до
|
||
GPU, яка потім розшифровує медіа. PAVP також використовується іншим ME
|
||
застосунком, щоб намалювати розкладку PIN-код аутентифікації прямо на екрані.
|
||
У цьому випадку програма PAVP безпосередньо керує графікою, що
|
||
з'являється на екрані ПК, таким чином, що хостова ОС не може виявити. Версія прошивки ME
|
||
7.0 на PCH з процесорами Intel Core i3/i5/i7
|
||
(Sandy Bridge) 2-го покоління замінює PAVP подібним застосунком DRM під назвою
|
||
"Intel Insider". Як і програма AMT, ці програми DRM,
|
||
які самі по собі дефектні за задумом, демонструють всемогутність можливості
|
||
ME: це обладнання та його пропрієтарна мікропрограма можуть отримати доступ і контролювати
|
||
все, що є в оперативній пам'яті і навіть ***все, що
|
||
відображається***.
|
||
|
||
Intel Management Engine із власною мікропрограмою мають завершений
|
||
доступ до і контроль над ПК: він може вмикати або вимикати ПК,
|
||
читати всі відкриті файли, перевіряти всі запущені програми, відстежувати всі натиснуті
|
||
клавіши та рухи миші і навіть записувати або відображати зображення на
|
||
екрані. І він має мережевий інтерфейс, який явно незахищений,
|
||
що може дозволити зловмиснику в мережі ін'єктувати руткіти, які
|
||
повністю компрометують ПК і повідомляють зловмиснику про всю
|
||
активність, яка відбувається на ПК. Це загроза свободі, безпеці та
|
||
приватності, яка не може бути проігнорована.
|
||
|
||
До версії 6.0 (тобто в системах 2008/2009 і раніше),
|
||
ME можна вимкнути, встановивши пару значень у флеш-пам'яті SPI.
|
||
Прошивку ME потім можна повністю видалити з простору флеш-
|
||
пам'яті. Проект libreboot [робить це](docs/install/ich9utils.md) на
|
||
системах Intel серії 4, які він підтримує, наприклад [ThinkPad
|
||
X200](../docs/install/x200_external.uk.md) та [ThinkPad
|
||
T400](../docs/install/t400_external.md). Прошивка ME версії 6.0 та
|
||
пізніше, яка є на всіх системах з процесорами Intel Core i3/i5/i7
|
||
PCH, включає мікропрограму "ME Ignition", яка виконує деяку апаратну
|
||
ініціалізацію та контроль живленням. Якщо завантажувальний ROM ME не знаходить
|
||
в флеш-пам'яті SPI маніфест прошивки ME з дійсним підписом Intel,
|
||
весь ПК буде вимкнено через 30 хвилин.
|
||
|
||
Завдяки перевірці підпису, розробка вільної заміни
|
||
для ME в принципі неможлива. Єдина сутність, здатна замінити
|
||
прошивку ME - Intel. Як зазначалось раніше, мікропрограма ME містить
|
||
пропрієтарний код, ліцензованим третіми сторонами, тому Intel не змогла би
|
||
випустити джерельний код, навіть якщо вони би цього хотіли. І навіть якщо вони розробили би повністю
|
||
нову прошивку ME без стороннього пропрієтарного коду і
|
||
випустили би джерельний код, завантажувальна ROM ME відхиляла би змінену
|
||
прошивку, яка не підписана Intel. Таким чином, прошивка ME є і
|
||
безнадійно пропрієтарною, і "тивоізованою".
|
||
|
||
**Підсумовуючи, Intel Management Engine і його програми є
|
||
лазівкою з повним доступом до та контролем над рештою ПК.
|
||
ME є загрозою свободі, безпеці та конфіденційності, і проект libreboot
|
||
наполегливо рекомендує повністю уникати цього. З останніх версій
|
||
його не можна видалити, це означає уникати всіх останніх поколінь обладнання
|
||
Intel.**
|
||
|
||
У *вищому* параграфі йдеться про використання *повної* прошивки Intel ME,
|
||
що містить мережевий код і в особливості *Active Management
|
||
Technology* (AMT).
|
||
|
||
Вважається, що використання утиліти `me_cleaner` мінімізує будь-який ризик безпеки,
|
||
від використання цих платформ Intel, і coreboot *містить* повністю вільний код для платформ
|
||
sandybridge/ivybridge. З точки зору свободи, вони схожі до libreboot-
|
||
сумісних ThinkPad, і це досить гарні машини.
|
||
|
||
Більше інформації про Management Engine може бути знайдено на різноманітних веб-
|
||
сайтах, включаючи [me.bios.io](http://me.bios.io/Main_Page),
|
||
[unhuffme](http://io.netgarage.org/me/), [coreboot
|
||
wiki](http://www.coreboot.org/Intel_Management_Engine), та
|
||
[Wikipedia](https://uk.wikipedia.org/wiki/Intel_Active_Management_Technology).
|
||
Книга ***[Platform Embedded Security Technology
|
||
Revealed (Розкрито вбудовану технологію безпеки платформи)](https://www.apress.com/9781430265719)*** чудово описує в
|
||
значних подробицях архітектуру апаратного забезпечення ME та прикладні модулі мікропрограми.
|
||
|
||
Якщо ви застрягли на ME (система не libreboot), ви можете знайти це
|
||
цікавим:
|
||
<http://hardenedlinux.org/firmware/2016/11/17/neutralize_ME_firmware_on_sandybridge_and_ivybridge.html>
|
||
|
||
### Firmware Support Package (FSP) {#fsp}
|
||
|
||
У всіх останніх системах Intel, підтримка coreboot обертається навколо
|
||
інтеграції блоба (для кожної системи) під назвою *FSP* (Firmware Support Package, пакет підтримки
|
||
мікропрограми), який обробляє всю ініціалізацію обладнання, включаючи
|
||
пам'ять та ініціалізацію ЦП. Зворотня розробка та заміна цього
|
||
блоба майже неможлива через те, наскільки він складний. Навіть для найбільш
|
||
кваліфікованого розробника, на заміну знадобяться роки. Intel розповсюджує
|
||
цей блоб серед розробників прошивки, без джерела.
|
||
|
||
Оскільки FSP відповідає за ранню ініціалізацію обладнання, це означає,
|
||
що він також підтримує SMM (System Management Mode, режим системного керування). Це особливий
|
||
режим, який працює нижче рівня операційної системи. **Це можливо, що руткіти
|
||
можуть бути реалізовані там, які можуть виконувати ряд
|
||
атак на користувача (список нескінченний). Будь-яка система Intel, яка
|
||
має пропрієтарний блоб FSP взагалі не може бути довіреною.** Фактично, декілька
|
||
руткітів SMM було продемонстровано в природі (використайте пошукову систему,
|
||
щоб знайти їх).
|
||
|
||
### Оновлення мікрокода ЦП {#microcode}
|
||
|
||
Мікрокод налаштовує логічні вентилі у вашому ЦП, щоб реалізувати архітектуру
|
||
набору інструкцій. Ваш ЦП уже містить їх, але він також надає спосіб оновлення
|
||
мікрокоду під час завантаження, виправляючи помилки та значно підвищуючи
|
||
загальну надійність вашої системи.
|
||
|
||
Мікрокод уже обговорювався дуже детально, в [політиці бінарних
|
||
блобів](news/policy.md).
|
||
|
||
У цьому цікавому відео розповідається про те, як група людей
|
||
провела зворотню розробку мікрокода на процесорах AMD:
|
||
|
||
<https://yewtu.be/watch?v=W3FbTMqYi4U>
|
||
|
||
Репозиторій git для цього проекту тут:
|
||
|
||
<https://github.com/RUB-SysSec/Microcode>
|
||
|
||
І відео, і репозиторій дають деяку додаткову інформацію про мікрокод
|
||
ЦП. Те, як це працює на AMD, буде дуже схожим на Intel.
|
||
|
||
### Intel не співпрацює
|
||
|
||
Роками coreboot бореться з Intel. Виявилося, що Intel загалом
|
||
вкрай відмовляється від співпраці. Багато розробників coreboot
|
||
і компаній намагалися залучити Intel до співпраці; а саме,
|
||
випуск джерельного коду для компонентів мікропрограми. Навіть Google, що
|
||
продає мільйони *хромбуків* (з попередньо встановленим coreboot) не змогла їх
|
||
переконати.
|
||
|
||
Навіть коли Intel співпрацює, вони все одно не надають джерельний код.
|
||
Вони можуть надавати обмежену інформацію (таблиці даних) відповідно до суворої
|
||
корпоративної NDA (угоди про нерозголошення), але навіть це не
|
||
гарантується. Навіть ODM та IBV не можуть отримати джерельний код від Intel, в
|
||
більшості випадків (вони просто інтегрують блоки, надані Intel).
|
||
|
||
Новіші графічні чіпсети Intel [вимагають блобів
|
||
прошивки](https://01.org/linuxgraphics/intel-linux-graphics-firmwares?langredirect=1).
|
||
|
||
Проект `libreboot` *надає* деяку підтримку для новіших платформ Intel, але
|
||
вам варто знати про ці проблемні питання, якщо ви вибираєте використовувати ці машини.
|
||
|
||
Підводні камені свободи, які слід враховувати на апаратному забезпеченні AMD {#amd}
|
||
----------------------------------------------------------------------------
|
||
|
||
AMD має більш-менш ту саму проблему, що й Intel, коли справа
|
||
стосується свободи програмного забезпечення.
|
||
|
||
### AMD Platform Security Processor (PSP)
|
||
|
||
По суті, це власна версія [Intel Management
|
||
Engine](#intelme) від AMD. Він має ті самі базові проблеми безпеки та свободи,
|
||
хоча реалізація кардинально відрізняється.
|
||
|
||
Процесор безпеки платформи (Platform Security Processor, PSP) вбудовано в процесори AMD,
|
||
[архітектура](https://en.wikipedia.org/wiki/List_of_AMD_CPU_microarchitectures) яких пізня родини 16h (Puma), Zen 17h або пізніше (а також у
|
||
графічні процесори AMD GCN 5-го покоління (Vega) або пізніше). На процесорах PSP
|
||
контролює запуск основного ядра x86. Прошивка PSP має криптографічний підпис
|
||
надійним ключем, подібно до Intel ME. Якщо вбудована прошивка PSP
|
||
відсутня або ключ підпису AMD відсутній, ядра x86 не
|
||
будуть відпущені з перезавантаження, що призведе до непрацездатності системи.
|
||
|
||
PSP - це ядро ARM із технологією TrustZone, вбудоване в головний
|
||
процесор. Таким чином, він має можливість приховувати власний програмний код,
|
||
скидати оперативну пам'ять і будь-які дані, які він міг взяти та зберегти з
|
||
менш привілейованої системної оперативної пам'яті x86 (ключі шифрування ядра, дані входу,
|
||
історія перегляду, натискання клавіш, хто знає!). Що ще гірше,
|
||
PSP теоретично має доступ до всього простору системної пам'яті (AMD
|
||
або не буде, або не зможе заперечити це, і це, здається, потрібно,
|
||
щоб "функції" DRM могли працювати належним чином), що означає, що він має
|
||
принаймні доступ на основі MMIO до мережевих контролерів та будь-яких інших
|
||
периферійних пристроїв PCI/PCIe, встановлених у системі.
|
||
|
||
Теоретично будь-який зловмисник, який має доступ до ключа підпису AMD міг
|
||
би встановити стійке зловмисне програмне забезпечення, яке не можливо було би викорінити
|
||
без обладнання для зовнішньої прошивки та завідомо справного образу PSP. Крім того,
|
||
у мікропрограмному забезпеченні AMD у минулому було продемонстровано численні вразливості системи безпеки,
|
||
і є всі підстави припускати, що одна або декілька вразливостей нульового дня
|
||
ховаються в мікропрограмному забезпеченні PSP. Враховуючи надзвичайний рівень
|
||
привілеїв (кільце -2 або кільце -3) PSP, зазначені уразливості матимуть
|
||
можливість віддалено відстежувати та контролювати будь-яку машину з підтримкою PSP
|
||
абсолютно поза знаннями користувача.
|
||
|
||
Подібно до Intel Boot Guard (додаток Intel
|
||
Management Engine), PSP від AMD також може діяти як тиран, перевіряючи
|
||
підписи будь-якої завантажувальної мікропрограми, яку ви прошиваєте, унеможливлюючи заміну
|
||
завантажувальної мікропрограми (наприклад, libreboot, coreboot) на деяких платах. Ранні
|
||
неофіційні повідомлення свідчать про те, що аналог AMD boot guard буде використовуватися
|
||
на більшості апаратного забезпечення OEM, відключений лише на так званих процесорах
|
||
"ентузіастів".
|
||
|
||
### Прошивка AMD IMC
|
||
|
||
Прочитайте <https://www.coreboot.org/AMD_IMC>.
|
||
|
||
ПРИМІТКА: Ця секція є застарілою, та потребує очищення.
|
||
|
||
### Прошивка AMD SMU
|
||
|
||
ПРИМІТКА: Ця секція є застарілою, та потребує очищення.
|
||
|
||
Керує деякими функціями керування живленням для пристроїв PCIe (без цього ваш ноутбук
|
||
не працюватиме належним чином) і кількома іншими функціями,
|
||
пов'язаними з керуванням живлення.
|
||
|
||
Мікропрограма підписана, хоча на старішому апаратному забезпеченні AMD це симетричний
|
||
ключ, що означає, що з доступом до ключа (у разі витоку) ви можете підписати
|
||
свою власну модифіковану версію та запустити її. Рудольф Марек (хакер coreboot)
|
||
дізнався, як видобути цей ключ [у цій відео
|
||
демонстрації](https://media.ccc.de/v/31c3_-_6103_-_en_-_saal_2_-_201412272145_-_amd_x86_smu_firmware_analysis_-_rudolf_marek),
|
||
і на основі цієї роботи, Демієн Замміт (інший хакер coreboot)
|
||
[частково замінив її](https://github.com/zamaudio/smutool/) вільною
|
||
прошивкою, але у відповідній системі (ASUS F2A85-M) все ще були присутні
|
||
інші блоби (Відео BIOS та інші).
|
||
|
||
### Прошивка AMD AGESA
|
||
|
||
ПРИМІТКА: Більше має бути написано про це, щоб відобразити сучасну реальність.
|
||
Ситуація з AMD в останні роки змінилась. Інформація на цій сторінці поширених
|
||
запитань застаріла кілька років тому.
|
||
|
||
Це відповідає практично за всю ініціалізацію основного обладнання в
|
||
сучасних системах AMD. У 2011 році AMD почала співпрацювати з проектом coreboot,
|
||
випустивши це як джерельний код під вільною ліцензією. В 2014 році
|
||
вони припинили випускати джерельний код і замість цього почали випускати AGESA у вигляді
|
||
бінарних блобів. Це робить AGESA еквівалентом [Intel FSP](#fsp).
|
||
|
||
### Оновлення мікрокоду ЦП AMD
|
||
|
||
Прочитайте розділ Intel
|
||
практично так само, хоча було виявлено, що з набагато пізнішим апаратним забезпеченням
|
||
AMD можна працювати без оновлень мікрокоду. Невідомо, чи потрібні оновлення на всіх
|
||
платах AMD (залежить від ЦП).
|
||
|
||
Проект libreboot не розцінює оновлення мікрокоду проблемою, і він
|
||
вмикає їх за замовчуванням на всьому апаратному забезпеченні,
|
||
яке підтримується.
|
||
|
||
### AMD не співпрацює
|
||
|
||
Здавалося, що AMD була на правильному шляху в 2011 році, коли вони почала
|
||
співпрацювати та випускати джерельний код для кількох критичних
|
||
компонентів для проекту coreboot. Цьому не було бути. З так званих
|
||
економічних причин вони вирішили, що більше не варто витрачати час на інвестування
|
||
в проект coreboot. На жаль, вони навіть не поділилися джерельним
|
||
кодом бібліотеки AGESA для архітектур сімейства 15h Steamroller/Excavator
|
||
(які, як і попередні fam15h Bulldozer/Piledriver, не
|
||
мають PSP) і випустили його для проекту coreboot лише як двійковий файл.
|
||
|
||
Перехід компанії від такої хорошої до такої поганої лише за 3 роки
|
||
свідчить, що з AMD щось серйозно не так. Подібно Intel, вони
|
||
не заслуговують ваших грошей.
|
||
|
||
Враховуючи поточний стан апаратного забезпечення Intel з Management Engine, ми
|
||
вважаємо, що все продуктивне апаратне забезпечення x86, новіше, ніж ЦП AMD
|
||
Family 15h (на стороні AMD) або будь-яке інше, випущене після 2009 року на стороні Intel
|
||
є дефектним за своєю конструкцією і не може бути безпечно використаним для зберігання, передачі
|
||
або обробки конфіденційних даних. Конфіденційні дані - це будь-які дані, у яких
|
||
порушення може завдати значної економічної шкоди суб'єкту, який створив
|
||
або був відповідальний за збереження цих даних, тому це включатиме банки,
|
||
компанії, що видають кредитні картки, або роздрібних продавців (записи рахунків клієнтів), в
|
||
додаток до "звичайних" інжинірингових фірм та фірм з розробки програмного забезпечення.
|
||
Це також стосується викривачів або будь-кого, кому потрібна справжня конфіденційність та
|
||
безпека.
|
||
|
||
Привіт, у мене <вставте сюди випадкову систему>, чи підтримується вона?
|
||
--------------------------------------------------------------------------------------------------------
|
||
|
||
Якщо вона підтримується coreboot, ви можете додати її негайно.
|
||
Прочитайте [посібник з перенесення](/docs/maintain/porting.html) про перенесення нової плати.
|
||
Якщо ви здатні згенерувати працюючу ROM для своєї системи, будь-ласка,
|
||
прочитайте [керівництво по експлуатації lbmk](docs/maintain/) про додавання її до libreboot.
|
||
|
||
Якщо в coreboot бракує підтримки для вашого апаратного забезпечення, ви мусите додати підтримку для нього.
|
||
Будь-ласка, проконсультуйтесь з проектом coreboot для наставництва.
|
||
|
||
Загальні питання
|
||
=================
|
||
|
||
Як встановити libreboot?
|
||
-------------------------------------------------------
|
||
|
||
Подивіться [посібник з встановлення](docs/install/)
|
||
|
||
Як запрограмувати флеш-чіп SPI?
|
||
---------------------------------------------------------------------------------
|
||
|
||
Зверніться до:\
|
||
[Зовнішній перезапис 25xx NOR flash через протокол SPI](spi.md)
|
||
|
||
Можна використовувати 16-контактний затискач SOIC на 8-контактній мікросхемі SOIC, якщо
|
||
правильно впорядкувати контакти. Як правило, з'єднання більш міцне.
|
||
|
||
Як захистити флеш-чіп від запису?
|
||
----------------------------------------------------------------------------
|
||
|
||
За замовчуванням немає захисту від запису на системі libreboot. Це
|
||
з міркувань зручності використання, оскільки більшість людей не мають легкого доступу до зовнішнього
|
||
програматора для перепрошивання їх мікропрограми, або вони знаходять
|
||
незручним використання зовнішнього програматора.
|
||
|
||
У деяких системах можна захистити мікропрограму від запису, щоб вона
|
||
була доступна лише для читання на рівні ОС (зовнішнє перепрошивання все ще
|
||
можливе за допомогою спеціального обладнання). Наприклад, на сучасних ноутбуках GM45
|
||
(таких як, ThinkPad X200, T400) можна захистити від запису (див.
|
||
[утиліту ICH9 gen](docs/install/ich9utils.md#ich9gen)).
|
||
|
||
Захист від запису можна встановити на всіх системах libreboot, але інструкції
|
||
потрібно написати. Документація знаходиться в основному репозиторії git, тому ви можете
|
||
надсилати виправлення, додаючи ці інструкції.
|
||
|
||
ЗРОБИТИ: Задокументувати захист флеш-пам'яті на основі PRx на платформах Intel і дослідити інші
|
||
методи на системах AMD.
|
||
|
||
Як змінити налаштування BIOS?
|
||
------------------------------------------------------------------------
|
||
|
||
Більшість налаштувань libreboot насправді використовує [корисне навантаження
|
||
GRUB](http://www.coreboot.org/GRUB2). Більше інформації про корисні навантаження
|
||
може бути знайдено на
|
||
[coreboot.org/Payloads](http://www.coreboot.org/Payloads). SeaBIOS також
|
||
доступний. Конфігурацію *CMOS* жорстко закодовано в libreboot.
|
||
|
||
Проект libreboot успадковує модульну концепцію корисного навантаження від coreboot, що
|
||
означає, що програми *налаштування BIOS* не дуже
|
||
практичні. Coreboot (та libreboot) включає утиліту, названу
|
||
*nvramtool*, яка може бути використана для зміни деяких налаштувань. Ви можете знайти
|
||
nvramtool у *coreboot/util/nvramtool/*, в архівах джерельного коду
|
||
libreboot.
|
||
|
||
Параметр *-a* у nvramtool покаже список доступних параметрів, і *-w*
|
||
може бути використано для їх зміни. Зверніться до документації nvramtool на
|
||
coreboot вікі для більшої інформації.
|
||
|
||
На практиці, у більшості випадків, вам не потрібно змінювати жодні з цих
|
||
налаштувань.
|
||
|
||
Налаштування libreboot за замовчуванням блокують таблицю CMOS, щоб забезпечити узгоджену функціональність
|
||
для всіх користувачів. Ви можете використовувати:
|
||
|
||
nvramtool -C вашаROM.rom -w деякеналаштування=деякезначення
|
||
|
||
Щоб отримати повний список доступних опцій, зробіть це:
|
||
|
||
nvramtool -C вашаROM.rom -a
|
||
|
||
Це змінить за замовчуванням всередині образа ROM, і потім ви можете
|
||
перепрошити його.
|
||
|
||
Як заповнити ROM перед перепрошивкою?
|
||
--------------------------------------
|
||
|
||
Бажано просто використовувати більший образ ROM. Цей розділ був написаний здебільшого для
|
||
материнських плат ASUS KCMA-D8 та KGPE-D16, де раніше ми надавали
|
||
тільки образи ROM розміром 2 MБ у libreboot, але тепер ми надаємо образи ROM розміром 16 МБ.
|
||
Інші розміри не надаються, оскільки на практиці хтось, оновлюючи один із
|
||
цих чіпів, використовуватиме лише 16 МБ. Доступні більші розміри, але 16 МБ
|
||
це максимум, який ви можете використати на всіх підтримуваних системах libreboot, які
|
||
використовують флеш-пам'ять SPI.
|
||
|
||
Необхідно для ROM, де образ ROM менший за флеш-чіп
|
||
(наприклад, запис 2 МБ ROM на флеш-чіп 16 МБ).
|
||
|
||
Створіть порожній (00 байти) файл із різницею розміру між
|
||
ROM та флеш-чіпом. Випадок вище, наприклад:
|
||
|
||
truncate -s +14MiB pad.bin
|
||
|
||
Для бездескрипторних x86 образів потрібно додавати *з початку* ROM:
|
||
|
||
cat pad.bin вашrom.rom > вашrom.rom.new
|
||
|
||
Для ARM та x86 з intel flash descriptor, вам потрібно додавати після образу:
|
||
|
||
cat вашrom.rom pad.bin > вашrom.rom.new
|
||
|
||
Прошийте отриманий файл. Зауважте, що cbfstool не зможе працювати
|
||
з образами, доповненими таким чином, тому обов'язково внесіть усі зміни до образу, включаючи
|
||
конфігурацію середовища виконання, перед доповненням.
|
||
|
||
Щоб видалити заповнення, наприклад, після зчитування його з флеш-чіпа,
|
||
просто скористайтеся dd(1), щоб вилучити лише незаповнену частину. Продовжуючи
|
||
наведені вище приклади, щоб видобути ROM без дескрипторів 2 МБ x86 із доповненого
|
||
образа 16 МБ, виконайте наступне:
|
||
|
||
dd if=flashromread.rom of=вашrom.rom ibs=14MiB skip=1
|
||
|
||
Після видалення заповнення cbfstool зможе працювати із образом як зазвичай.
|
||
|
||
Чи потрібно встановлювати завантажувач під час встановлення дистрибутива?
|
||
---------------------------------------------------------------------------------------------------
|
||
|
||
Більшість налаштувань libreboot уже інтегрують завантажувач GRUB як
|
||
*[корисне навантаження](http://www.coreboot.org/Payloads)*. Це означає, що завантажувач GRUB
|
||
фактично *прошивається* як частина завантажувальної прошивки
|
||
(libreboot). Це означає, що вам не потрібно встановлювати завантажувач на
|
||
HDD або SSD під час встановлення нового дистрибутива. Ви зможете нормально завантажитися,
|
||
використовуючи завантажувач (GRUB), який знаходиться у мікросхемі флеш-пам'яті.
|
||
|
||
Це означає, що навіть якщо ви виймете жорсткий диск або твердотільний накопичувач, у вас всеодно
|
||
буде встановлено функціонуючий завантажувач, який можна використовувати для завантаження програми
|
||
встановлення дистрибутива з флеш-пам'яті USB. Див.
|
||
[Як інсталювати Linux у системі libreboot](../docs/linux/grub_boot_installer.md)
|
||
|
||
В даний час також передбачені інші корисні навантаження. Якщо ви використовуєте корисне навантаження SeaBIOS,
|
||
тоді на вашому HDD або SSD використовується звичайний завантажувальний сектор MBR, як і слід було
|
||
очікувати. Отже, наведені вище параграфи стосуються лише корисного навантаження GRUB.
|
||
|
||
Чи потрібно мені перепрошивати, коли я перевстановлю дистрибутив?
|
||
-------------------------------------------------------------------------------------------
|
||
|
||
Більше ні. Останні версії libreboot (з використанням корисного навантаження GRUB)
|
||
автоматично переключатимуться на конфігурацію GRUB на HDD або SSD, якщо
|
||
існує. Ви також можете завантажити іншу конфігурацію GRUB з будь-якого пристрою, який підтримується
|
||
GRUB (наприклад, флеш-накопичувач USB). Для
|
||
більшої інформації див.
|
||
[Змінення конфігурації GRUB в системах libreboot](../docs/linux/grub_cbfs.md)
|
||
|
||
Якщо ви використовуєте корисне навантаження SeaBIOS, це ще простіше. Це працює так, як ви
|
||
очікували. SeaBIOS реалізує звичайний інтерфейс x86 BIOS.
|
||
|
||
Як виглядає флеш-чіп?
|
||
-----------------------------------------------------------------
|
||
|
||
Ви можете знайти фотографії різних видів чипів на наступній сторінці:\
|
||
[Керівництво зовнішньої прошивки 25xx NOR](docs/install/spi.md)
|
||
|
||
Неможливість виконати modprobe thinkpad\_acpi на Haswell
|
||
===============================================
|
||
|
||
Про це повідомив користувач, який використовує Debian 11 з
|
||
ядром `5.19.0-0.deb11.2-amd64`. Модуль `thinkpad_acpi` не завантажувався
|
||
з таким повідомленням:
|
||
|
||
```
|
||
modprobe: ERROR: could not insert 'thinkpad_acpi': "No such device"
|
||
```
|
||
|
||
Інформація про батарею в `/sys` була відсутньою, по цій причині. Користувач повідомив, що
|
||
наступний обхідний шлях був ефективним (в Debian).
|
||
|
||
Додайте цей рядок до `/etc/modprobe.d/thinkpad_acpi.conf`:
|
||
|
||
```
|
||
options thinkpad_acpi force_load=1
|
||
```
|
||
|
||
tlp
|
||
---
|
||
|
||
Ви можете встановити пакет `tlp` та розпочати той сервіс. Наприклад, на
|
||
Debian:
|
||
|
||
```
|
||
apt-get install tlp tlp-rdw
|
||
systemctl enable tlp
|
||
systemctl start tlp
|
||
```
|
||
|
||
Тепер прочитайте документацію:
|
||
|
||
```
|
||
man tlp-stat
|
||
```
|
||
|
||
Від імені root, ви можете зробити:
|
||
|
||
```
|
||
tlp-stat -b
|
||
```
|
||
|
||
Це надасть інформацію про батарею.
|
||
|
||
Яке ще мікропрограмне забезпечення існує за межами libreboot?
|
||
==================================================
|
||
|
||
Ви можете також прочитати інформацію про цих в [політиці мінімізації бінарних блобів
|
||
libreboot](news/policy.md), де вона розповідає в більших подробицях про деяких із
|
||
них.
|
||
|
||
### Зовнішні графічні карти
|
||
|
||
Відео BIOS наявний на більшості графічних карт. Для інтегрованої графіки
|
||
VBIOS (спеціальний вид OptionROM) зазвичай вбудовано
|
||
в основну завантажувальну прошивку. Для зовнішньої графічної карти VBIOS зазвичай
|
||
на самій графічній карті. Він зазвичай пропрієтарний; єдина
|
||
різниця в тому, що SeaBIOS може виконати це (як варіант, ви вбудовуєте це
|
||
в образ ROM coreboot і coreboot виконує його, якщо у вас
|
||
інше корисне навантаження, таке як GRUB).
|
||
|
||
*Проект coreboot* надає вільний код ініціалізації, на багатьох платах, і
|
||
libreboot буде використовувати цей код, коли він наявний, в залежності від конфігурації.
|
||
|
||
В конфігураціях, де SeaBIOS і власна ініціалізація GPU використовуються разом,
|
||
додається спеціальна прокладка VBIOS, яка використовує лінійний кадровий буфер coreboot.
|
||
|
||
### Прошивка EC (вбудований контролер)
|
||
|
||
Це є у більшості (всіх?) ноутбуків. EC (вбудований контролер) - це невеликий,
|
||
окремий процесор, який в основному обробляє вхідні/вихідні дані, характерні
|
||
для ноутбуків. Наприклад:
|
||
|
||
- Коли ви натискаєте перемикач увімкнення/вимкнення радіо, EC увімкне/вимкне
|
||
бездротові пристрої (wifi, bluetooth і так далі) і ввімкне/вимкне
|
||
світлодіод, який вказує, чи це увімкнено, чи ні.
|
||
- Слухає іншу мікросхему, яка виконує вимірювання показників температури, налаштовуючи
|
||
швидкість вентилятора відповідним чином (або вмикає/вимикає вентилятор).
|
||
- Отримує певні введення з клавіатури, напр. збільшення/зменшення яскравості,
|
||
збільшення/зменшення гучності.
|
||
- Визначати, коли кришка закрита або відкрита, і надсилати сигнал, що
|
||
вказує на це.
|
||
- Тощо.
|
||
|
||
EC присутній ледь не на всіх ноутбуках. Інші пристрої використовують, залежно від складності,
|
||
або EC, або варіант із прошивкою в Mask ROM - SuperIO.
|
||
|
||
### Прошивка HDD/SSD
|
||
|
||
Жорсткі диски та твердотільні накопичувачі містять вбудоване програмне забезпечення,
|
||
призначене для обробки внутрішньої роботи пристрою, водночас відкриваючи простий, стандартний інтерфейс (наприклад,
|
||
AHCI/SATA), який програмне забезпечення ОС може використовувати, як правило. Ця прошивка є невидимою
|
||
для користувача накопичувача.
|
||
|
||
Жорсткі диски та твердотільні накопичувачі є досить складними, і сьогодні містять досить складне
|
||
обладнання, яке навіть здатне запускати цілу операційну систему (під цим ми маємо
|
||
на увазі, що сам диск здатний запускати свою власну вбудовану ОС), навіть
|
||
Linux або BusyBox/Linux.
|
||
|
||
SSD та HDD є особливим випадком, оскільки вони є постійними пристроями зберігання,
|
||
а також комп'ютерами.
|
||
|
||
Приклад атаки, яку може здійснити зловмисне програмне забезпечення: заміна ваших ключів SSH,
|
||
що дозволяє невідомому зловмиснику неавторизований віддалений доступ. Або, можливо,
|
||
підміна ваших ключів GPG. Диски SATA також можуть мати DMA (через
|
||
контролер), що означає, що вони можуть читать з системної пам'яті;
|
||
теоретично диск може мати власне приховане сховище, де він міг би читати ваші ключі
|
||
LUKS і зберігати їх у незашифрованому вигляді для майбутнього вилучення
|
||
загрозою.
|
||
|
||
З належним IOMMU та використанням USB замість SATA можна було б пом'якшити
|
||
будь-які проблеми, пов'язані з DMA, які можуть виникнути.
|
||
|
||
Було продемонстровано деякі докази концепцій. Для HDD:
|
||
<https://spritesmods.com/?art=hddhack&page=1> Для SSD:
|
||
<http://www.bunniestudios.com/blog/?p=3554>
|
||
|
||
Про існування життєздатної вільної заміни прошивки наразі невідомо. Для
|
||
SSD проект
|
||
[OpenSSD](https://web.archive.org/web/20220425071606/http://www.openssd-project.org/wiki/The_OpenSSD_Project)
|
||
може бути цікавим.
|
||
|
||
Очевидно, диски SATA самі по собі не мають DMA, але можуть використовувати його
|
||
через контролер. Це
|
||
<http://web.archive.org/web/20170319043915/http://www.lttconn.com/res/lttconn/pdres/201005/20100521170123066.pdf>
|
||
(сторінки 388-414, 420-421, 427, 446-465, 492-522, 631-638) і це
|
||
<http://www.intel.co.uk/content/dam/www/public/us/en/documents/technical-specifications/serial-ata-ahci-spec-rev1_3.pdf>
|
||
(сторінки 59, 67, 94, 99).
|
||
|
||
Наступне засновано на дискусії з Пітером Стьюджем (CareBear\\) в
|
||
каналі IRC coreboot в п'ятницу, 18 вересня 2015 року, під час
|
||
дослідження того, чи може сам диск SATA використовувати DMA. Наступне
|
||
базується на таблицях даних, посилання на які наведено вище:
|
||
|
||
Згідно з цими приведеними документами, тип FIS 39h - це *"DMA Activate FIS
|
||
- Device to Host"*. У ньому згадується *"передача даних від хоста до
|
||
пристрою, і далі сказано: після отримання DMA Activate,
|
||
якщо контролер DMA адаптера хоста було запрограмовано та увімкнено, адаптер
|
||
хоста ініціює передачу Data FIS і передасть
|
||
в цьому FIS дані, які відповідають регіонам пам'яті хоста, вказані
|
||
контекстом контролера DMA."* FIS - це одиниця протоколу (Інформаційна
|
||
структура кадру, Frame Information Structure). Базуючись на цьому, здається, що накопичувач може повідомити
|
||
контролеру хоста, що він хоче, щоб відбувся DMA, але допоки програмне забезпечення хоста
|
||
не налаштувало або не хотітиме в майбутньому налаштувати передачу DMA,
|
||
нічого не відбудеться. **Диск також може відправити DMA Setup**. Якщо DMA
|
||
Setup FIS відправлено першим, з встановленим бітом Auto-Activate, тоді це
|
||
вже налаштовано, і диск може ініціювати DMA. Далі в документі йдеться
|
||
*"Отримавши DMA Setup, одержувач FIS повинен
|
||
перевірити отриманий запит на DMA Setup."* - іншими словами, хост
|
||
повинен перевірити; але, можливо, тут є помилка. Далі в документі
|
||
сказано *"Конкретна реалізація ідентифікатора буфера
|
||
та перевірки буфера/адреси не визначена"* - тому ніхто
|
||
насправді не буде турбуватися. *"отримувач FIS"* - у випадку, який ми
|
||
розглядаємо, це обладнання хост-контроллера в чіпсеті та/або
|
||
драйвер ядра (швидше за все, драйвер ядра). Всі пристрої SATA мають
|
||
мікропрограму, з можливістю оновлення флеш-пам'яті,
|
||
яку зазвичай можна оновити, запустивши програмне забезпечення у вашій ОС; **зловмисне ПЗ, запущене від імені root,
|
||
може оновити цю мікропрограму, або мікропрограма
|
||
вже може бути шкідливою**. Ваш жорсткий диск або SSD є ідеальним місцем для зловмисника,
|
||
щоб встановити зловмисне програмне забезпечення, оскільки це постійний пристрій зберігання даних,
|
||
а також комп'ютер.
|
||
|
||
Виходячи з цього, можна з упевненістю сказати, що використання USB замість SATA є
|
||
доцільним, якщо питання безпеки викликає занепокоєння. USB 2.0 має достатню пропускну здатність
|
||
багатьох жорстких дисків (декілька високоякісних дисків можуть використовувати більшу пропускну здатність, ніж USB 2.0),
|
||
але для SSD це може бути проблематично (якщо ви не використовуєте
|
||
USB 3.0, який ще не можна використовувати в свободі. Подивіться
|
||
|
||
Використання USB також не є абсолютною гарантією безпеки, тому будьте обережні.
|
||
Поверхня для атаки стає набагато меншою, але шкідливий накопичувач все одно може
|
||
спробувати здійснити "фуззингову" атаку (наприклад, надсилання некоректних USB-
|
||
дескрипторів, завдяки чому було зламано DRM тиранію Playstation 3,
|
||
щоб користувачі могли запускати власну операційну систему та запускати
|
||
непідписаний код). (Ви, мабуть, у безпеці, якщо немає недоліку безпеки
|
||
в USB-бібліотеці/драйвері, який використовує ваша ОС. USB зазвичай вважається
|
||
одним із найбезпечніших протоколів, саме тому, що USB-пристрої не мають DMA)
|
||
|
||
Інші посилання:
|
||
|
||
- <https://www.vice.com/en_us/article/ypwkwk/the-nsas-undetectable-hard-drive-hack-was-first-demonstrated-a-year-ago>
|
||
|
||
Рекомендовано використовувати повне шифрування диска на жорстких дисках,
|
||
підключених через USB. У мережі є кілька адаптерів, які дозволяють підключати жорсткі диски
|
||
SATA через USB, і проект Libreboot здатний завантажуватись з них
|
||
звичайним чином. Проконсультуйтесь з документацією для вашої операційної системи Linux/BSD,
|
||
щоб знати те, як встановити їх з *повнодисковим шифруванням*:
|
||
|
||
|
||
Поточна теорія (недоведена) полягає в тому, що це принаймні запобіжить
|
||
зловмисним дискам неправильно маніпулювати даними, які зчитуються з диска
|
||
або записуються на диск, оскільки він не може отримати доступ до вашого ключа LUKS,
|
||
якщо він знаходиться лише в оперативній пам'яті, за умови що жорсткий диск не має DMA (USB-пристрої не
|
||
мають DMA). Найгірше, що він може зробити в цьому випадку, це знищити ваші дані.
|
||
Звичайно, ви повинні переконатися, що ніколи не розміщуєте ключові файли в заголовку LUKS.
|
||
**Сприймайте сказане в цьому абзаці з дрібкою солі. Це все ще обговорюється
|
||
і нічого з цього не доведено.**
|
||
|
||
### NIC (контролер ethernet)
|
||
|
||
Мережеві карти Ethernet зазвичай запускають вбудоване програмне забезпечення, яке відповідає
|
||
за внутрішню ініціалізацію пристрою. Теоретично його можна налаштувати
|
||
на відкидання пакетів або навіть їх модифікацію.
|
||
|
||
З належним IOMMU можна було би пом'якшити проблеми, пов'язані з DMA.
|
||
Також можна використовувати мережевий адаптер USB, який не має DMA.
|
||
|
||
### Мікрокод процесора
|
||
|
||
Мікрокод налаштовує масиви логічних вентилів у мікропроцесорі для реалізації
|
||
архітектури набору інструкцій. Спеціальні *декодери* в мікропроцесорі налаштують
|
||
схему на основі цього мікрокоду.
|
||
|
||
[Політика зменшення блобів libreboot](news/policy.md) докладно описує
|
||
мікрокод.
|
||
|
||
### Звукова карта
|
||
|
||
Звукове обладнання (інтегроване чи дискретне) зазвичай має вбудоване програмне забезпечення
|
||
(DSP) для обробки введення/виведення. Знову ж таки, USB DAC є хорошим
|
||
обхідним шляхом.
|
||
|
||
### Веб-камера
|
||
|
||
Веб-камери мають вбудоване програмне забезпечення, яке обробляє зображення, що вводиться
|
||
в камеру; налаштування фокуса, балансу білого тощо. Можна використовувати апаратне забезпечення
|
||
веб-камери USB, щоб вирішити можливі проблеми DMA; інтегровані веб-камери
|
||
(наприклад, на ноутбуках) не рекомендовані проектом libreboot з
|
||
міркувань безпеки.
|
||
|
||
### Хост-контролер USB
|
||
|
||
Хост-контролери USB потребують мікропрограми. Іноді це потрібно надати
|
||
самому coreboot.
|
||
|
||
### Прошивка WWAN
|
||
|
||
Деякі ноутбуки можуть мати пристрій для зчитування SIM-карт із карткою для роботи з
|
||
WWAN, підключення до мережі 3g/4g (наприклад, GSM). Це та
|
||
сама технологія, яка використовується в мобільних телефонах для віддаленого доступу до мережі (наприклад,
|
||
інтернет).
|
||
|
||
ПРИМІТКА: не плутати з wifi. Wifi - це інша технологія, яка
|
||
абсолютно не пов'язана з нею.
|
||
|
||
Процесор базової смуги всередині мікросхеми WWAN матиме власну вбудовану
|
||
операційну систему, швидше за все, пропрієтарну. Використання цієї технології також
|
||
передбачає ті ж проблеми конфіденційності, що й у випадку з мобільними телефонами (віддалене відстеження
|
||
за допомогою мережі GSM, шляхом тріангуляції сигналу).
|
||
|
||
На деяких ноутбуках ці карти використовують USB (внутрішньо), тому не матимуть DMA,
|
||
але це все одно є великою проблемою свободи та конфіденційності. Якщо у вас є
|
||
внутрішній чіп/карта WWAN, проект libreboot рекомендує вимкнути та
|
||
(в ідеалі, якщо можливо) фізично видалити апаратне забезпечення. Якщо вам абсолютно
|
||
необхідно використовувати цю технологію, зовнішній USB-адаптер набагато
|
||
кращий, оскільки його можна легко вийняти, коли він вам не потрібен, тим самим
|
||
вимикаючи будь-які зовнішні об'єкти від відстеження вашого місцезнаходження.
|
||
|
||
Рекомендується використовувати ethernet або wifi, на відміну від мобільних мереж,
|
||
оскільки вони, як правило, набагато безпечніші.
|
||
|
||
Операційні системи
|
||
=================
|
||
|
||
Чи я можу використовувати Linux?
|
||
--------------------------------------------------
|
||
|
||
Абсолютно! Він добре перевірений в libreboot, та дуже рекомендований. Подивіться
|
||
[встановлення Linux](../docs/linux/grub_boot_installer.md) та
|
||
[запуск Linux](../docs/linux/grub_cbfs.md).
|
||
|
||
Будь-який сучасний дистрибутив має працювати, допоки він використовує KMS (kernel mode
|
||
setting) для графіки.
|
||
|
||
Fedora не завантажується? (також може бути застосовано до Redhat/CentOS)
|
||
-----------------------------------------------------------
|
||
|
||
У Fedora типово grub.cfg намагається завантажити linux в 16-розрядному режимі.
|
||
Вам просто потрібно змінити конфігурацію GRUB Fedora.
|
||
Зверніться до [сторінки Linux](docs/linux/).
|
||
|
||
Чи я можу використовувати BSD?
|
||
----------------------------------
|
||
|
||
Абсолютно! Прошивка libreboot має добру підтримку для FreeBSD, NetBSD та
|
||
OpenBSD. Інші системи не перевірені, але мають працювти нормально.
|
||
|
||
Дивіться:
|
||
[docs/bsd/](docs/bsd/)
|
||
|
||
Чи підтримуються інші операційні системи?
|
||
-------------------------------------------------------------------
|
||
|
||
Невідомо. Можливо, але неможливо сказати без подальшого випробовування.
|
||
|
||
Який рівень програмної свободи дає мені libreboot?
|
||
===================================================
|
||
|
||
Будь-ласка, прочитайте [політику мінімізації бінарних блобів libreboot](news/policy.md).
|
||
|
||
Прошивка libreboot надає ініціалізацію апаратного забезпечення хоста всередині файлів ROM,
|
||
що може бути записано на флеш NOR, але на багатьох системах існує
|
||
набагато більше маленьких комп'ютерів на материнській платі, виконуючих двійкові прошивки.
|
||
Деякі з них неможливо замінити через те, що вони розташовані на Mask ROM.
|
||
Наприклад, більшість ноутбуків мають вбудоване програмне забезпечення EC (вбудований контролер).
|
||
|
||
Крім самого програмного забезпечення (вбудованого в ROM чи ні), більшість апаратного забезпечення
|
||
(від мікросхем до друкованих плат) не випускається за ліцензіями з відкритим джерелом.
|
||
У нас немає жодного пристрою, який можна вважати на "100% вільним",
|
||
і таких абсолютів майже неможливо досягти.
|
||
|
||
Відомі пропрієтарні блоби (неповний список):
|
||
|
||
* Всі пристрої
|
||
* Прошивка жорсткого диска SATA/PATA/оптичного дисковода
|
||
([часто має потужний, заснований на ARM комп'ютер](
|
||
http://spritesmods.com/?art=hddhack&page=1))
|
||
* Флеш-накопичувачі та будь-які периферійні USB-пристрої - вони містять комп'ютер
|
||
із запущеним кодом, щонайменше, для обробки протоколу USB
|
||
* ThinkPad:
|
||
* Прошивка EC (H8S до включаючи Sandy Bridge, пізніше заснований на ARC MEC16xx)
|
||
* Прошивка TrackPoint (8051)
|
||
* Пристрої Penabled містять мікроконтролер µPD78F0514 на підплаті wacom,
|
||
і Atmega (AVR) на світлодіодному індикаторі/платі кнопок
|
||
* BMS акумулятора, bq8030 (CoolRISC C816)
|
||
* Хромбуки C201PA/C100PA:
|
||
* BMS акумулятора, bq30z55
|
||
* Тачпад Elan
|
||
* Прошивка [контролера флеш-пам'яті](https://en.wikipedia.org/wiki/Flash_memory_controller) eMMC
|
||
|
||
Одного дня ми житимемо у світі, де будь-хто зможе виготовити власні чіпи, включаючи
|
||
процесори, а також будь-які інші типи мікросхем. Зусилля зробити домашнє виробництво чіпів реальністю
|
||
зараз знаходяться в зародковому стані, але такі зусилля
|
||
існують, наприклад, робота, виконана Семом Зелофом і проектом Libre Silicon:
|
||
|
||
* <https://www.youtube.com/channel/UC7E8-0Ou69hwScPW1_fQApA>
|
||
* <http://sam.zeloof.xyz/>
|
||
* <https://libresilicon.com/>
|
||
|
||
(Сем буквально робить процесори в своєму гаражі)
|
||
|
||
Де я можу вивчати більше про електроніку
|
||
==========================================
|
||
|
||
* Основи пайки та переробки від PACE
|
||
Обидві серії відео є обов'язковими незалежно від ваших навичок паяння.
|
||
* [Базове паяння](https://yewtu.be/playlist?list=PL926EC0F1F93C1837)
|
||
* [Переробка та ремонт](https://yewtu.be/playlist?list=PL958FF32927823D12)
|
||
Наведені вище серії PACE охоплюють класичні методи, але не стосуються
|
||
*сучасної* електроніки. Для цього дивіться:
|
||
* [Уроки мікропайки iFixit із Джессою
|
||
Джонс](https://yewtu.be/playlist?list=PL4INaL5vWobD_CltiZXr7K46oJ33KvwBt)
|
||
* Також перегляньте посилання на youtube нижче, особливо відео Луї Россмана, щоб дізнатися
|
||
(набагато) більше.
|
||
* [Курс edX з основ електроніки](https://www.edx.org/course/circuits-and-electronics-1-basic-circuit-analysi-2)
|
||
У більшості країн зміст цього курсу розглядається в середній та старшій
|
||
школі. Це також добре послужить, щоб освіжити вашу пам'ять,
|
||
якщо ви з тих пір не користувались цими знаннями.
|
||
* Вступ до імпедансу
|
||
* [Подібності в поведінці хвиль](https://yewtu.be/watch?v=DovunOxlY1k)
|
||
* [Відбиття в лінії передачі](https://yewtu.be/watch?v=y8GMH7vMAsQ)
|
||
* Заглушки:
|
||
* [Стаття на Вікіпедії про заглушки](https://en.wikipedia.org/wiki/Stub_(electronics))
|
||
* [Стаття Polar Instruments про заглушки](http://www.polarinstruments.com/support/si/AP8166.html)
|
||
З зовнішньої прошивкою SPI ми дбаємо лише про заглушки непередбачених друкованих плат
|
||
* [Як точно виміряти крок конектора](https://www.microcontrollertips.com/accurately-measure-headerconnector-pitch/)
|
||
* Інші YouTube-канали з корисним контентом про електроніку
|
||
* [EEVblog](https://yewtu.be/channel/UC2DjFE7Xf11URZqWBigcVOQ)
|
||
(загалом про електроніку, огляди обладнання і так далі, деякі
|
||
відео ремонту)
|
||
* [Луї Россман](https://yewtu.be/channel/UCl2mFZoRqjw_ELax4Yisf6w)
|
||
(пропаганда права на ремонт, багато відео про ремонт macbook)
|
||
* [mikeselectricstuff](https://yewtu.be/channel/UCcs0ZkP_as4PpHDhFcmCHyA)
|
||
* [bigclive](https://yewtu.be/channel/UCtM5z2gkrGRuWd0JQMx76qA)
|
||
* [ElectroBOOM](https://yewtu.be/channel/UCJ0-OtVpF0wOKEqT2Z1HEtA)
|
||
(він підриває речі та показує, як цього не робити)
|
||
* [Jeri Ellsworth](https://yewtu.be/user/jeriellsworth/playlists)
|
||
(має відео, що показує як виготовити *транзистор* самостійно)
|
||
* [Sam Zeloof](https://yewtu.be/channel/UC7E8-0Ou69hwScPW1_fQApA)
|
||
(Сем буквально робить процесори в своєму гаражі, натхненний роботою Джері Еллсуорт
|
||
з транзисторами)
|
||
* [iPad Rehab with Jessa Jones](https://yewtu.be/channel/UCPjp41qeXe1o_lp1US9TpWA)
|
||
(дуже точна пайка. вона займається ремонтом мобільних телефонів і подібного, про що
|
||
також йдеться в серії iFixit про ремонт компонентів)
|
||
* Файли Boardview може бути відкрито в [OpenBoardview](https://github.com/OpenBoardView/OpenBoardView),
|
||
що є вільним програмним забезпеченням під ліцензією MIT.
|
||
|
||
Використання `yt-dlp` (покращеного відгалудження `youtube-dl`) рекомендовано для посилань
|
||
на `youtube.com`. Дивіться: <https://github.com/yt-dlp/yt-dlp>
|
||
|
||
Нарешті найважливіше повідомлення для всіх, хто починає це чудове нове хобі - [Секрет вивчення електроніки](https://yewtu.be/watch?v=xhQ7d3BK3KQ)
|