OpenWrt Buildroot – Використання Old OpenWrt Wiki
User Tools
Site Tools













Table of Contents
OpenWrt Buildroot – Використання
Завантаження вихідних кодів
Скачайте вихідні коди: Свіжа версія (trunk)
(Останній) реліз Chaos Calmer 15.05.1
Остання версія у гілці Chaos Calmer
Оновлення вихідних кодів
Оновіть вихідні коди:
Оновлення репозиторію
"Встановіть" завантажені пакети (не обов'язково, але потрібно, якщо ви хочете, наприклад, зібрати прошивку з LuCI). Ця процедура створить символьні посилання підкаталоги пакетів в основному "дереві" вихідних текстів.
Для встановлення індивідуальних пакетів:
Щоб зібрати все дерево пакетів:ПОПЕРЕДЖЕННЯ Це може зайняти багато часу і не потрібно, якщо ви не плануєте розгортання репозиторію пакетів для своєї збірки.
Послідовність дій
Типові дії зі збирання:
Налаштування параметрів збирання
Запустіть OpenWrt Buildroot's ncurses - текстовий інтерфейс налаштування:
Як і в конфігурації ядра Linux, майже кожна опція має 3 значення:y /m /n, які представлені таким чином: * (натиснувши ` y`) Цей пакет буде включений в образ прошивки * (натиснувши `m`) Цей пакет буде скомпільований (і може бути встановлений за допомогою opkg після прошивки OpenWrt), алене буде включений в образ прошивки * (натиснувши `n`) Цей пакет не буде скомпілюваний
Коли ви зберігаєте конфігурацію створюється файл
/openwrt/trunk/.config містить параметри збирання.
Розробникипропонують такий файл для OpenWrt 'Backfire' 10.03.1-RC5, наприклад для ar71xx.
Виберіть вашу платформу перед використанням defconfig буде зроблено основне конфігурування системи складання, включаючи перевірку залежностей та умов для оточення складання тощо.
буде проводитись перевірка для залежностей. Встановіть відсутні компоненти та запустіть знову.
Загальне налаштування
Menuconfig має ТПІ, який призначений для вибору платформи, пакетів для компіляції, пакетів для включення файлу прошивки, деякі параметри ядра і т.д.
В результаті автоматично оновляться залежності в існуючій конфігурації і ви зможете розпочати складання образу.
З самого початку був намір розробити 'menuconfig', щоб створити просте, але потужне середовище для конфігурування індивідуальних образів OpenWrt. Menuconfig більш менш зрозумілий, тому навіть найспецифічніші завдання конфігурування можуть бути вирішені за його допомогою. Залежно від конкретної платформи, необхідних пакетів і модулів ядра стандартний процес конфігурування буде включати зміну наступних пунктів:
Платформа вибирається з великого списку підтримуваних платформ з численними профілями - починаючи від конкретних пристроїв і закінчуючи спільними профілями, залежить від наявного пристрою. Вибір пакетів має кілька варіантів: або вибрати всі пакети ('selecting all package'), які можуть бути просто не практичні в конкретній ситуації, або буде достатньо використовувати стандартний набір пакетів або зробити індивідуальну добірку. Тут необхідно зазначити, що деякі комбінації пакетів можуть порушити процес складання, так що можливо знадобиться поекспериментувати, перш ніж очікуваний результат буде досягнуто. УДодатково до цього, самі розробники OpenWrt підтримують лише невеликий набір пакетів - який включає всі стандартні пакети - але скрипт репозиторію дозволяє дуже просто обробити локальний підтримуваний набір пакетів і інтегрувати їх в процесі складання.
Існують 3 значення:
Останній крок перед початком компіляції образу(ів) - вихід із 'menuconfig' - тут можна зберегти певну конфігурацію або завантажити вже існуючу та попередньо налаштовану.
Вийти з ТПІ та вибрати save – зберегти ваші налаштування.
Налаштування ядра
Зазвичай це не потрібно, але ви можете це зробити:
Дзеркала джерел
'Налаштування системи збирання' включають декілька ефективних опцій для зміни розташування пакетів, які дозволяють легко керувати локальним набором пакетів:
Опція 'модулі ядра' потрібна, якщо потрібні специфічні (не стандартні) драйвера і т.д. – це зазвичай можуть бути такі речі, як модулі для USB або драйвера конкретного мережного інтерфейсу і т.д.
Файли користувача
У багатьох випадках, може знадобитися мати попередньо налаштований образ. Якщо так, то помістіть свої файли в:
Наприклад, припустимо, що ви хочете зібрати образ із попередньо налаштованим /etc/config/firewall , тоді помістіть ваш змінений конфігураційний файл firewall сюди:
Складання образу
Тепер все готове для складання образу(ів), що здійснюється за допомогою однієї команди:
або (те саме)
Ця проста команда викликає послідовність подій. Як уже говорилося, станеться:
Послідовність роботи make
Команда make world сама виконує таку послідовність команд: make target/compile makepackage/cleanup make package/compile make package/install make package/preconfig make target/install make package/index
Ви можете виконати кожну окремо. Наприклад, якщо процес компіляції якогось пакета перервався з помилкою, після усунення помилки можна продовжити складання (без видалення вже зробленого): make package/compile make package/install make package/preconfig make target/install make package/index
Параметри Make
Параметр V=xx вказує рівень видачі повідомлень у процесі збирання.
Значенням V можна зазначити:
Приклади: Трасування каталогів (шляхів).
Трасування з повною інформацією про складання.
Теж повне трасування. (Якщо вказати два значення, працює більш повний висновок.)
Складання на багатоядерному процесорі
Процес складання можна прискорити запустивши кілька паралельних завдань з використанням параметра -j:
Фонове складання
Якщо ви збираєтеся використовувати вашу систему під час процесу складання, ви можете виконувати складання використовуючи тільки простий введення/виведення та потужності процесора, наприклад так (двоядерний процесор):
Складання одиночних пакетів
При розробці або створенні пакетів для OpenWrt зручно мати можливість збирання тільки потрібного пакета (приклад з пакетом cups):
Виявлення помилок збирання
Якщо з якоїсь причини складання не вдається, то найпростіший спосіб визначити помилки:
Команда зберігає повну докладну копію виведення збірки (з stdout переданий у stderr) в /openwrt/trunk/build.log та показує на екрані лише помилки.
Команда зберігає повну докладну копію виведення збірки (з stdout переданий у stderr) у build.log і показує лише попередження та помилки упроцесі складання використовуючи лише фонові ресурси двоядерного процесора.
Увімкнення звукових повідомлень
Залежно від вашого процесора, цей процес займе деякий час або довше. Якщо ви хочете увімкнути звукові повідомлення, можете використовувати echo -e '\a ':
Розміщення образів
Після успішного складання створений образ(и) можна знайти у створеному каталозі /bin. Скомпільовані файли додатково класифіковані по платформі, так що, наприклад, прошивка зібрана для пристроїв ar71xx буде знаходитися в каталозі /bin/ar71xx .
Наприклад, якщо це /openwrt/trunk, файли знаходяться в /openwrt/trunk/bin/ar71xx.
Іноді вам може знадобитися очистити середовище збирання. Наступні параметри make підходять для цієї мети:
видаляє вміст каталогів bin та build_dir .
видаляє вміст каталогів /bin та /build_dir , а також додатково /staging_dir та /toolchain (інструментарій крос-компіляції). 'Dirclean' – основна команда для повного очищення.
видаляє все, що ви зібрали або налаштували, а також видаляє все завантажене з репозиторію та вихідні коди пакетів.
УВАГА : Крім іншого будестерта ваша конфігурація збірки (.config), ваш набір інструментів (toolchain) та інші вихідні коди. Використовуйте з обережністю!
Є безліч інших функцій у системі складання OpenWrt, але вище розглянуті деякі з основних.
Усунення несправностей
На початку отримайте більше інформації про проблему, використовуючи параметр make - "make V=99".
Рішення (ubuntu 12.04LTS): Вводимо в теміналі команду hg (наприклад). Висновок терміналу: Виконуємо що просять: sudo apt-get install mercurial
Запускаємо збирання (make) знову.
Рішення (ubuntu 12.04LTS):
Спробуйте оновити основний вихідний код та всі репозиторії (Увага! Може призвести до інших проблем). Пошукайте схожі помилки в (TRAC), використовуйте фільтри, щоб знайти їх. В іншому випадку повідомте про цю проблему там, вказавши пакет, вихідні дані (процесор, образ тощо) та код ревізії (main & pack; package). Компіляція з make-j … іноді дає випадкові помилки. Спробуйте компіляцію без -j, перш ніж повідомляти про помилку.