|
@@ -0,0 +1,301 @@
|
|
|
+---
|
|
|
+title: Побудова з джерельного коду
|
|
|
+x-toc-enable: true
|
|
|
+...
|
|
|
+
|
|
|
+Система побудови libreboot, називається `lbmk`, скорочення від `Libreboot Make`, і цей
|
|
|
+документ описує те, як використовувати її. З цим керівництвом ви можете узнати те, як побудувати
|
|
|
+libreboot з доступного джерельного коду.
|
|
|
+Ця версія, якщо розміщена наживо на libreboot.org, передбачає, що ви використовуєте
|
|
|
+сховище git `lbmk`, яке
|
|
|
+ви можете завантажити, використовуючи інструкції на [сторінці огляду коду page](../../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/
|