OpenWrt Buildroot – Использование

→ вернуться обратно к Получить прошивку или читать →OpenWrt Buildroot – Описание
  1. Установите OpenWrt Buildroot с необходимыми параметрами на вашу ОС.
1. Делайте все под обычным пользователем (не под суперпользователем, non-root)
2. Выполняйте все команды в каталоге <buildroot dir>, например ~/openwrt/trunk/
  1. Скачайте исходные коды OpenWrt, либо, если они уже скачаны, обновите исходные коды OpenWrt.
  2. Обновите и установите пакеты из репозитория.
  3. Настройте параметры сборки.
  4. Запустите сборку. Будет произведена автоматическая компиляция набора инструментов (toolchain), кросс-компиляция исходных кодов и пакетов, и в конце будет сгенерирован образ готовый к прошивке.
  5. Приступите к установке OpenWrt

Скачайте исходные коды: Свежая версия (trunk)

git clone https://github.com/openwrt/openwrt.git

(Последний) релиз Chaos Calmer 15.05.1

git clone https://github.com/openwrt/openwrt.git -b v15.05.1

Последняя версия в ветке Chaos Calmer

git clone https://github.com/openwrt/openwrt.git -b chaos_calmer

Обновите исходные коды :

git pull
  • Исходные коды OpenWrt часто изменяются. Рекомендуется использовать исходные коды последней редакции.

Обновите репозиторий:

./scripts/feeds update -a

“Установите” загруженные пакеты (не обязательно, но требуется, если вы хотите , к примеру, собрать прошивку с LuCI).
Эта процедура создаст символьные ссылки на подкаталоги пакетов в основном “дереве” исходных текстов.

Для установки индивидуальных пакетов:

./scripts/feeds install <PACKAGENAME>

Чтобы собрать всё дерево пакетов:

./scripts/feeds install -a

ПРЕДУПРЕЖДЕНИЕ Это может занять много времени и не требуется, если вы не планируете развертывание репозитория пакетов для своей сборки.

Типичные действия по сборке:

  1. выполняем make menuconfig, настраиваем платформу (Target System, Subtarget, Target Profile) и сохраняем конфигурацию в файл .config;
  2. выполняем make defconfig (применяем стандартные параметры для профиля);
  3. выполняем make menuconfig, модифицируем набор пакетов и сохраняем конфигурацию (в файл .config);
  4. выполняем scripts/diffconfig.sh >mydiffconfig (сохраняем свои изменения конфигурации в файл mydiffconfig на будущее);
  5. выполняем make либо make V=w либо make V=s.

Запустите OpenWrt Buildroot's ncurses - текстовый интерфейс настройки:

make menuconfig
Как и в конфигурации ядра Linux, почти каждая опция имеет 3 значения: y / m / n ,которые представлены следующим образом:
* (нажав `y`) Этот пакет будет включен в образ прошивки
* (нажав `m`) Этот пакет будет скомпилирован (и может быть установлен с помощью opkg после прошивки OpenWrt), но не будет включен в образ прошивки
* (нажав `n`) Этот пакет не будет скомпилирован

Когда вы сохраняете конфигурацию создается файл ~/openwrt/trunk/.config содержащий параметры сборки.

Разработчики предлагают такой файл для OpenWrt 'Backfire' 10.03.1-RC5,
например для ar71xx.
  • Это меню позволяет выбрать платформу, версию набора инструментов (toolchain), которую вы хотите использовать для сборки и пакеты, которые вы хотите включить в образ прошивки.
  • Запустите этот конфигурационный интерфейс после обновления исходных кодов и репозитория для того, чтобы последние пакеты были включены в вашу конфигурацию.

выберите вашу платформу перед использованием defconfig

make defconfig

будет произведено основное конфигурирование системы сборки, включая проверку зависимостей и условий для окружения сборки и т.п.

будет проводится проверка для зависимостей. Установите отсутствующие компоненты и запустите снова.

Menuconfig имеет ТПИ, который предназначен для выбора платформы, пакетов для компиляции, пакетов для включения в файл прошивки, некоторые параметры ядра и т.д.

make menuconfig

В результате автоматически обновятся зависимости в существующей конфигурации и вы сможете приступить к сборке образа.

С самого начала было намерение разработать 'menuconfig', чтобы создать простую, но мощную среду для конфигурирования индивидуальных образов OpenWrt. Menuconfig более или менее понятен, поэтому даже самые специфические задачи конфигурирования могут быть решены с его помощью. В зависимости от конкретной платформы, необходимых пакетов и модулей ядра стандартный процесс конфигурирования будет включать в себя изменение следующих пунктов:

  1. Платформа системы
  2. Выбор пакетов
  3. Настройки системы сборки
  4. Модули ядра

Платформа выбирается из обширного списка поддерживаемых платформ с многочисленными профилями - начиная от конкретных устройств и заканчивая общими профилями, все зависит от имеющегося устройства. Выбор пакетов имеет несколько вариантов: либо выбрать все пакеты ('selecting all package'), которые могут быть просто не практичны в конкретной ситуации, либо будет достаточно использовать стандартный набор пакетов, либо сделать индивидуальную подборку. Здесь необходимо отметить, что некоторые комбинации пакетов могут нарушить процесс сборки, так что возможно понадобится поэкспериментировать, прежде чем ожидаемый результат будет достигнут. В дополнение к этому, сами разработчики OpenWrt поддерживают лишь небольшой набор пакетов - который включает в себя все стандартные пакеты - но скрипт репозитория позволяет очень просто обработать локальный поддерживаемый набор пакетов и интегрировать их в процессе сборке.

Существуют 3 значения:

  • < > исходный код не будет обрабатываться
  • <M> исходный код пакета будет кросс-скомпилирован в бинарный файл и opkg пакет будет собран и помещен в /buildsystem/bla/bla/bla, но ImageGenerator не включит его в образ прошивки!
  • <*> пакет будет включен в прошивку (в SqashFS раздел)

Последний шаг перед началом компиляции образа(ов) - выход из 'menuconfig' - здесь можно сохранить определенную конфигурацию или загрузить уже существующую и предварительно настроенную.

Выйти из ТПИ и выбрать save - сохранить ваши настройки.

Настройка ядра

Обычно это не требуется, но вы можете это сделать:

make kernel_menuconfig

Обратите внимание, что make kernel_menuconfig изменяет конфигурационные шаблоны ядра дерева сборки и очистка build_dir не вернет их. Изменения могут быть просмотрены с помощью команды svn diff target/linux/ и отменены командой svn revert -R target/linux/.

Смотрите: настройка параметров ядра

Зеркала источников

'Настройки системы сборки' включают в себя несколько эффективных опций для изменения расположения пакетов, которые позволяют легко управлять локальным набором пакетов:

  1. Локальное зеркало для источника пакетов
  2. Каталог загрузки

В первом случае можно просто ввести полный URL-адрес на WEB или FTP-сервер, на котором размещается источник пакетов. Каталог загрузки - такой же путь, только к локальному каталогу системы сборки (или сети). Если у вас есть WEB/FTP-сервер c архивами, система сборки OpenWrt проверит их перед тем как скачать с адресов, указанных в Make-файлах. Также и локальный каталог загрузки, размещенный в системе сборки будет проверен.

Опция 'модули ядра' нужна если требуются специфические (не стандартные) драйвера и т.д. – это, как правило, могут быть такие вещи, как модули для USB или драйвера конкретного сетевого интерфейса и т.д.

Во многих случаях, может потребоваться иметь предварительно настроенный образ. Если так, то поместите свои файлы в:

<buildroot dir>/files/

Например, предположим что вы хотите собрать образ с предварительно настроенным /etc/config/firewall, тогда поместите ваш измененный конфигурационный файл firewall сюда:

<buildroot dir>/files/etc/config/

Теперь все готово для сборки образа(ов), которая осуществляется с помощью одной команды:

make

или (то же самое)

make world

Эта простая команда вызовет последовательность событий. Как уже говорилось, произойдет:

  1. компиляция набора инструментов (toolchain)
  2. потом кросс-компиляция исходных кодов с этим инструментарием
  3. создание opkg-пакетов
  4. создание образа прошивки, готового к прошивке.

Команда make world сама выполняет следующую последовательность команд:
make target/compile
make package/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

Отладка

Параметр V=xx указывает уровень выдачи сообщений в процессе сборки.

Значением V можно указать:

  • 1 или w - выводить путь к каталогу при входе в него и после выхода из него;
  • 99 или s - выводить полную информацию о сборке, обычные сообщения жёлтым, ошибки красным, отладочные чёрным.

Примеры:

make V=w

Трассировка каталогов (путей).

make V=s
make V=99

Трассировка с полной информацией о сборке.

make V=sw

Тоже полная трассировка. (Если указать два значения, работает более полный вывод.)

Сборка на многоядерном процессоре

Процесс сборки можно ускорить запустив несколько параллельных задания с использованием параметра -j:

make -j 3
  • Используйте стандартную формулу <количество процессоров + 1>
  • Если это приводит к случайным ошибкам сборки запустите компиляцию еще раз, но без параметра -j

Фоновая сборка

Если вы собираетесь использовать вашу систему во время процесса сборки, вы можете выполнять сборку используя только простой ввода/вывода и мощности процессора, например так (двухъядерный процессор):

ionice -c 3 nice -n 20 make -j 2

Сборка одиночных пакетов

При разработке или создании пакетов для OpenWrt удобно иметь возможность сборки только нужного пакета (пример с пакетом cups):

make package/cups/compile V=99

Обнаружение ошибок сборки

Если по какой-то причине сборка не удается, то самый простой способ определить ошибки это:

make V=99 2>&1 | tee build.log | grep -i error

Команда сохраняет полную подробную копию вывода сборки (с stdout переданный в stderr) в /openwrt/trunk/build.log и показывает на экране только ошибки.

Другой пример:

ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 | tee build.log | egrep -i '(warn|error)'

еще один:

somthing something screen

Команда сохраняет полную подробную копию вывода сборки (с stdout переданный в stderr) в build.log и показывает только предупреждения и ошибки в процессе сборки используя только фоновые ресурсы двухъядерного процессора.

Включение звуковых уведомлений

В зависимости от вашего процессора этот процесс займет некоторое время или дольше. Если вы хотите включить звуковые уведомления можете использовать echo -e '\a':

make V=99 ; echo -e '\a'

После успешной сборки созданный образ(ы) можно найти в созданном каталоге <buildroot dir>/bin. Скомпилированные файлы дополнительно классифицированы по платформе, так что, например, прошивка собранная для устройтв ar71xx будет находиться в каталоге <buildroot dir>/bin/ar71xx.

Например, если ваш <buildroot dir> это /openwrt/trunk, файлы находятся в /openwrt/trunk/bin/ar71xx.

Время от времени вам может понадобиться очистить среду сборки. Следующие параметры make подходят для этой цели:

make clean

удаляет содержимое каталогов bin и build_dir.

make dirclean

удаляет содержимое каталогов /bin и /build_dir, а также дополнительно /staging_dir и /toolchain (инструментарий кросс-компиляции). 'Dirclean' - основная команда для полной очистки.

make distclean

удаляет все что вы собрали или настроили, а также удаляет все загруженное из репозитория и исходные коды пакетов.

ВНИМАНИЕ : Кроме всего прочего будет стерта ваша конфигурация сборки (.config), ваш набор инструментов (toolchain) и все прочие исходные коды. Используйте с осторожностью!

Есть множество других функций в системе сборки OpenWrt, но выше рассмотрены некоторые из основных.

В начале получите больше информации о проблеме используя параметр make - “make V=99”.

  • Missing source code file, due to download problems.

Сначала проверьте, если URL-путь в make-файле содержит обратный слэш, то поэкспериментируйте с его удаленем (помогло несколько раз). В противном случае попробуйте загрузить исходный код вручную и поместить его в каталог “dl”

  • Compilation errors.
  • Не забудьте установить все необходимые пакеты для сборки:

http://wiki.openwrt.org/doc/howto/buildroot.exigence#examples.of.package.installations

  • В процессе компиляции возможно будет не доставать какого-то пакета. Ищите в выводе (make V=s) строку типа:
bash: неизвестная команда hg #например

Решение (ubuntu 12.04LTS): Вводим в теминале команду hg (например). Вывод терминала:

 Программа 'hg' на данный момент не установлена.  Вы можете установить её, выполнив:
sudo apt-get install mercurial 

Выполняем что просят: sudo apt-get install mercurial

Запускаем сборку (make) снова.

  • Проблема со сборкой cmus:
 checking for header <sys/soundcard.h>... no configure failed 

http://patchwork.openwrt.org/patch/2713/

Решение (ubuntu 12.04LTS):

#от root
cd /usr/include
ln -s linux/soundcard.h #возможно это лишнее
mkdir sys
cd sys
ln -s ../linux/soundcard.h

Попробуйте обновить основной исходный код и все репозитории (Внимание! Может привести к другим проблемам). Поищите похожие ошибки в (TRAC), используйте фильтры, чтобы найти их. В противном случае сообщите об этой проблеме там, указав пакет, выходные данные (процессор, образ и т.п.) и код ревизии (main & package). Компиляция с make -j ... иногда дает случайные ошибки. Попробуйте компиляцию без -j прежде чем сообщать об ошибке.

  • Bad environment variables.
    • GREP_OPTIONS не должен иметь --initial-tab или другие параметры, влияющие на его вывод
    • SED не должен быть установлен. Если это так, запустите `unset SED` перед компиляцией. (Смотрите Ticket 10612.)
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2021/10/15 09:06
  • by bobafetthotmail