add docs/build/index.uk.md
parent
894831b662
commit
6d54151401
|
@ -0,0 +1,301 @@
|
||||||
|
---
|
||||||
|
title: Побудова з джерельного коду
|
||||||
|
x-toc-enable: true
|
||||||
|
...
|
||||||
|
|
||||||
|
Система побудови libreboot, називається `lbmk`, скорочення від `Libreboot Make`, і цей
|
||||||
|
документ описує те, як використовувати її. З цим керівництвом ви можете узнати те, як побудувати
|
||||||
|
libreboot з доступного джерельного коду.
|
||||||
|
Ця версія, якщо розміщена наживо на libreboot.org, передбачає, що ви використовуєте
|
||||||
|
сховище git `lbmk`, яке
|
||||||
|
ви можете завантажити, використовуючи інструкції на [сторінці огляду коду](../../git.uk.md).
|
||||||
|
|
||||||
|
Якщо ви використовуєте архів випуску libreboot, будь ласка, зверніться до
|
||||||
|
документації, включеної до *того* випуску. Випуски libreboot розраховані тільки,
|
||||||
|
як *знімки*, не для розробки. Для належної розробки ви маєте завжди
|
||||||
|
працювати безпосередньо в сховищі git libreboot.
|
||||||
|
|
||||||
|
Наступний документ описує те, як працює `lbmk`, і як ви можете робити зміни
|
||||||
|
до нього: [керівництво обслуговування libreboot](../maintain/)
|
||||||
|
|
||||||
|
Git
|
||||||
|
===
|
||||||
|
|
||||||
|
Система побудови Libreboot використовує Git, обширно. Ви маєте виконати кроки
|
||||||
|
знизу, *навіть, якщо ви використовуєте архів випуску*.
|
||||||
|
|
||||||
|
Перед тим, як вам використовувати систему побудови, будь ласка, знайте: система побудови, сама по собі,
|
||||||
|
використовує Git обширно, коли завантажує програмне забезпечення, таке як coreboot, та проводить застосування виправлень.
|
||||||
|
|
||||||
|
Ви маєте переконатись в тому, щоб ініціалізувати ваш Git належним чином, перед тим, як почати, або інакше
|
||||||
|
система побудови не буде працювати належно. Зробіть це:
|
||||||
|
|
||||||
|
git config --global user.name "John Doe"
|
||||||
|
git config --global user.email johndoe@example.com
|
||||||
|
|
||||||
|
Змініть ім'я та адресу електронної пошти на будь-яку, що забажаєте, коли робите це.
|
||||||
|
|
||||||
|
Ви також можете захотіти прослідувати більшій кількості етапів тут:
|
||||||
|
<https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup>
|
||||||
|
|
||||||
|
Python
|
||||||
|
======
|
||||||
|
|
||||||
|
Python2 не використовується lbmk або будь-чим, що завантажується в якості модулів. Ви
|
||||||
|
маєте переконатись, що команда `python` виконує python 3 на вашій системі.
|
||||||
|
|
||||||
|
GNU Make
|
||||||
|
========
|
||||||
|
|
||||||
|
libreboot Make включає файл, який названо `Makefile`. Ви досі можете
|
||||||
|
використовувати систему побудови `lbmk` безпосередньо, або ви можете використовувати GNU Make. `Makefile`
|
||||||
|
просто виконує команди `lbmk`. Однак, використання `lbmk` безпосередньо запропонує вам
|
||||||
|
набагато більше гнучкості; наприклад, Makefile наразі не може побудувати один
|
||||||
|
образ ROM (він лише будує всі з них, для всіх плат).
|
||||||
|
|
||||||
|
Ви мусите переконатись, що всі залежності побудови встановлено. Якщо ви використовуєте
|
||||||
|
Ubuntu або подібний дистрибутив (Debian, Trisquel і тому подібні), можете виконати це:
|
||||||
|
|
||||||
|
sudo make install-dependencies-ubuntu
|
||||||
|
|
||||||
|
Існує конкретно для Debian:
|
||||||
|
|
||||||
|
sudo make install-dependencies-debian
|
||||||
|
|
||||||
|
Інша існує для Arch:
|
||||||
|
|
||||||
|
sudo make install-dependencies-arch
|
||||||
|
|
||||||
|
Тепер, просто побудуйте образи coreboot подібним чином:
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
Ця єдина команда побудує образи ROM для *кожної* плати, інтегрованої до
|
||||||
|
libreboot. Якщо ви тільки хочете побудувати обмежену вибірку, можете використовувати `lbmk` безпосередньо:
|
||||||
|
|
||||||
|
./build boot roms x200_8mb
|
||||||
|
|
||||||
|
Ви можете вказати більше одного аргумента:
|
||||||
|
|
||||||
|
./build boot roms x200_8mb x60
|
||||||
|
|
||||||
|
Образи ROM з'явяться під щойно створеною директорією `bin/` в системі побудови.
|
||||||
|
|
||||||
|
Для інших команд просто прочитайте `Makefile` в своєму улюбленому текстовому редакторі.
|
||||||
|
`Makefile` є простим, тому що він виконує виключно команди `lbmk`, таким чином дуже
|
||||||
|
просто знати те, які команди є в доступності, просто читаючи його.
|
||||||
|
|
||||||
|
Стандартна команда `clean` доступна (чистить всі модулі, окрім `crossgcc`):
|
||||||
|
|
||||||
|
make clean
|
||||||
|
|
||||||
|
Щоб почистити ваші побудови `crossgcc`:
|
||||||
|
|
||||||
|
make crossgcc-clean
|
||||||
|
|
||||||
|
Для побудови архівів випуску:
|
||||||
|
|
||||||
|
make release
|
||||||
|
|
||||||
|
Побудова без використання GNU Make
|
||||||
|
============================
|
||||||
|
|
||||||
|
`Makefile` включено лише для *сумісності*, щоб якщо хтось
|
||||||
|
інстиктивно пише `make`, то було отримано результат.
|
||||||
|
|
||||||
|
Фактична розробка/тестування завжди виконується безпосередньо за допомогою `lbmk`, і це також
|
||||||
|
стосується збирання з джерельного коду. Ось кілька інструкцій, щоб
|
||||||
|
почати:
|
||||||
|
|
||||||
|
Спочатку встановіть залежності побудови
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
libreboot включає сценарій, який автоматично встановлює apt-get залежності
|
||||||
|
в Ubuntu 20.04. Він працює добре в інших дистрибутивах apt-get (таких як Trisquel та
|
||||||
|
Debian):
|
||||||
|
|
||||||
|
sudo ./build dependencies ubuntu2004
|
||||||
|
|
||||||
|
Окремі сценарії також існують:
|
||||||
|
|
||||||
|
sudo ./build dependencies debian
|
||||||
|
|
||||||
|
sudo ./build dependencies arch
|
||||||
|
|
||||||
|
sudo ./build dependencies void
|
||||||
|
|
||||||
|
Технічно, будь-який дистрибутив GNU+Linux може бути використано для побудови libreboot.
|
||||||
|
Однак, вам потрібно буде написано свій власний сценарій для встановлення залежностей
|
||||||
|
побудови.
|
||||||
|
|
||||||
|
libreboot Make (lbmk) автоматично виконує всі необхідні команди; наприклад,
|
||||||
|
`./build payload grub` автоматично виконає `./build module grub`,
|
||||||
|
якщо затребувані утиліти для GRUB не збудовано, для виготовлення корисних навантажень.
|
||||||
|
|
||||||
|
В якості результату, ви тепер можете (після встановлення правильних залежностей побудови) виконати
|
||||||
|
лише одну команду, з свіжого Git clone, для побудови образів ROM:
|
||||||
|
|
||||||
|
./build boot roms
|
||||||
|
|
||||||
|
або навіть побудувати конкретні образи ROM, такі як:
|
||||||
|
|
||||||
|
./build boot roms x60
|
||||||
|
|
||||||
|
Якщо ви бажаєте побудувати корисні навантаження, можете зробити це. Наприклад:
|
||||||
|
|
||||||
|
./build payload grub
|
||||||
|
|
||||||
|
./build payload seabios
|
||||||
|
|
||||||
|
./build payload u-boot qemu_x86_12mb
|
||||||
|
|
||||||
|
Попередні кроки буде виконано автоматично. Однак, ви можете *досі* виконати
|
||||||
|
окремі частини системи побудови власноруч, якщо виберете. Це може бути
|
||||||
|
вигідно, коли ви робите зміни, та бажаєте протестувати конкретну частину
|
||||||
|
lbmk.
|
||||||
|
|
||||||
|
Отже, якщо ви лише хочете побудувати образи ROM, просто зробіть наведене вище. В іншому випадку,
|
||||||
|
будь ласка, продовжіть читати!
|
||||||
|
|
||||||
|
Опціонально: видобути двійкові блоби
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
Деякі плати, включаючи всі плати sandy/ivybridge, вимагають невільні блоби, які не можуть бути включеними до libreboot.
|
||||||
|
Для плат, які вимагають ці блоби, libreboot спробує завантажити блоби власноруч.
|
||||||
|
Якщо ваша плата не має джерел блоба в наявності, тоді ви мусите видобути їх з резервної копії вашого rom постачальника.
|
||||||
|
Ви маєте вказати libreboot резервну копію rom та сказати системі побудові те, для якої плати ви хочете видобути блоби
|
||||||
|
Наприклад, щоб видобути блоби для t440p, ви маєте виконати:
|
||||||
|
|
||||||
|
./blobutil extract t440p_12mb /path/to/12mb_backup.rom
|
||||||
|
|
||||||
|
Ви потім можете побудувати rom для цієї плати нормально:
|
||||||
|
|
||||||
|
./build boot roms t440p_12mb
|
||||||
|
|
||||||
|
|
||||||
|
Друге, завантажити всі програмні компоненти, які вимагаються
|
||||||
|
--------------------------------------------------------
|
||||||
|
|
||||||
|
Якщо ви не виконали просто `./build boot roms` (з або без надлишкових
|
||||||
|
аргументів), ви все одно можете виконати залишок процесу побудови власноруч. Читайте
|
||||||
|
далі! Ви можете прочитати про всі доступні сценарії в `lbmk`, читаючи
|
||||||
|
[керівництво обслуговування libreboot](../maintain/); lbmk розроблено бути модулярним,
|
||||||
|
що означає те, що кожен сценарій *може* бути використано самостійно (якщо це не є правдою, для
|
||||||
|
будь-якого сценарія, це є помилкою, яка має бути виправлена).
|
||||||
|
|
||||||
|
Це настільки просто, як це:
|
||||||
|
|
||||||
|
./download all
|
||||||
|
|
||||||
|
Вищезазначена команда завантажує всі модулі, які означено в системі побудови libreboot.
|
||||||
|
Однак, ви можете завантажити модулі індивідуально.
|
||||||
|
|
||||||
|
Ця команда показує вам список доступних модулів:
|
||||||
|
|
||||||
|
./download list
|
||||||
|
|
||||||
|
Приклад завантаження індивідуального модуля:
|
||||||
|
|
||||||
|
./download coreboot
|
||||||
|
|
||||||
|
./download seabios
|
||||||
|
|
||||||
|
./download grub
|
||||||
|
|
||||||
|
./download flashrom
|
||||||
|
|
||||||
|
./download u-boot
|
||||||
|
|
||||||
|
Третє, побудова кожного з модулів:
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
Побудова модуля означає, що він має вже бути завантаженим.
|
||||||
|
В цей момент, система побудови не виконує автоматично кроки передумови,
|
||||||
|
такі як цей, тому ви мусите перевірити це власноруч.
|
||||||
|
|
||||||
|
Знову, дуже просто:
|
||||||
|
|
||||||
|
./build module all
|
||||||
|
|
||||||
|
Це будує кожен модуль, означений в системі побудови libreboot, але ви можете
|
||||||
|
будувати модулі індивідуально.
|
||||||
|
|
||||||
|
Наступна команда перелічує доступні модулі:
|
||||||
|
|
||||||
|
./build module list
|
||||||
|
|
||||||
|
Приклад побудови конкретних модулів:
|
||||||
|
|
||||||
|
./build module grub
|
||||||
|
|
||||||
|
./build module seabios
|
||||||
|
|
||||||
|
./build module flashrom
|
||||||
|
|
||||||
|
Команди доступні для *очищення* модуля, які, по суті, виконують make-clean.
|
||||||
|
Ви можете перелічити ці команди:
|
||||||
|
|
||||||
|
./build clean list
|
||||||
|
|
||||||
|
Видаліть всі модулі таким чином:
|
||||||
|
|
||||||
|
./build clean all
|
||||||
|
|
||||||
|
Приклад видалення конкретних модулів:
|
||||||
|
|
||||||
|
./build clean grub
|
||||||
|
|
||||||
|
./build clean cbutils
|
||||||
|
|
||||||
|
Четверте, побудуйте всі корисні навантаження:
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
Дуже просто:
|
||||||
|
|
||||||
|
./build payload all
|
||||||
|
|
||||||
|
Ви можете перелічити доступні корисні навантаження таким чином:
|
||||||
|
|
||||||
|
./build payload list
|
||||||
|
|
||||||
|
Приклад побудови конкретних корисних навантажень:
|
||||||
|
|
||||||
|
./build payload grub
|
||||||
|
|
||||||
|
./build payload seabios
|
||||||
|
|
||||||
|
Кожна плата має свою власну конфігурацію побудови U-Boot в `lbmk` під
|
||||||
|
`resources/u-boot`. Для побудови корисних навантажень U-Boot, вам потрібно вказати
|
||||||
|
цільову плату і мабуть крос-компілятор для її архітектури ЦП. Вони
|
||||||
|
керуються автоматично під час побудови образів ROM, але для прикладу:
|
||||||
|
|
||||||
|
./build payload u-boot qemu_x86_12mb # на хостах x86
|
||||||
|
|
||||||
|
CROSS_COMPILE=aarch64-linux-gnu- ./build payload u-boot gru_kevin
|
||||||
|
|
||||||
|
CROSS_COMPILE=arm-linux-gnueabi- ./build payload u-boot veyron_speedy
|
||||||
|
|
||||||
|
Команда build-payload є попередньою умовою для побудови образів ROM.
|
||||||
|
|
||||||
|
П'яте, побудуйте ROM!
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Виконайте цю команду:
|
||||||
|
|
||||||
|
./build boot roms
|
||||||
|
|
||||||
|
Кожна плата має свою власну конфігурацію в `lbmk` під `resources/coreboot/`,
|
||||||
|
яка вказує, які корисні навантаження підтримуються.
|
||||||
|
|
||||||
|
За замовчуванням, всі образи ROM будуються, для всіх плат. Якщо ви бажаєте побудувати лише
|
||||||
|
конкретну плату, ви можете вказати назву плати, засновану на імені директорії
|
||||||
|
для неї під `resources/coreboot/`. Наприклад:
|
||||||
|
|
||||||
|
./build boot roms x60
|
||||||
|
|
||||||
|
Імена плат, як вище, такі самі, як імена директорій для кожної плати,
|
||||||
|
під `resources/coreboot/` в системі побудови.
|
||||||
|
|
||||||
|
Ось так!
|
||||||
|
|
||||||
|
Якщо все пройшло добре, образи ROM мають бути доступними вам під bin/
|
Loading…
Reference in New Issue