--- 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 Змініть ім'я та адресу електронної пошти на будь-яку, що забажаєте, коли робите це. Ви також можете захотіти прослідувати більшій кількості етапів тут: Python ====== Python2 не використовується lbmk або будь-чим, що завантажується в якості модулів. Ви маєте переконатись, що команда `python` виконує python 3 на вашій системі. Make ======== libreboot Make включає файл, який названо `Makefile`. Ви досі можете використовувати систему побудови `lbmk` безпосередньо, або ви можете використовувати Make. `Makefile` просто виконує команди `lbmk`. Однак, використання `lbmk` безпосередньо запропонує вам набагато більше гнучкості; наприклад, Makefile наразі не може побудувати один образ ROM (він лише будує всі з них, для всіх плат). Ви мусите переконатись, що всі залежності побудови встановлено. Якщо ви використовуєте Ubuntu або подібний дистрибутив (Debian, Arch і тому подібні), можете виконати це: 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 Побудова без використання Make ============================ `Makefile` включено лише для *сумісності*, щоб якщо хтось інстиктивно пише `make`, то було отримано результат. Фактична розробка/тестування завжди виконується безпосередньо за допомогою `lbmk`, і це також стосується збирання з джерельного коду. Ось кілька інструкцій, щоб почати: Спочатку встановіть залежності побудови --------------------------------- libreboot включає сценарій, який автоматично встановлює apt-get залежності в Ubuntu 20.04: sudo ./build dependencies ubuntu2004 Окремі сценарії також існують: sudo ./build dependencies debian sudo ./build dependencies arch sudo ./build dependencies void Технічно, будь-який дистрибутив 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, просто зробіть наведене вище. В іншому випадку, будь ласка, продовжіть читати! Друге, завантажити всі програмні компоненти, які вимагаються -------------------------------------------------------- Якщо ви не виконали просто `./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/