Show pagesourceOld revisionsBacklinksBack to top × Table of Contents Сборка образов с помощью Image Builder Подготовка Загрузка Image Builder Настройка репозиториев пакетов Использование Выбор профиля Добавление/удаление пакетов из образа Добавление файлов в образ Очистка Возможные проблемы Удаление файлов из образа Добавление пользовательских профилей Сборка образов с помощью Image Builder Это предварительно скомпилированная среда, используемая для создания пользовательских образов прошивок без необходимости компиляции ядра и пакетов. Преимущества использования: Возможность загрузки модулей расширения ядра из репозитория LEDE и OpenWrt Встраивание пакетов непосредственно в файловую систему SquashFS для экономии места во флэш-памяти устроиства Пользовательская конфигурация, добавление и удаление пакетов и файлов конфигурации непосредственно в файловой системе SquashFS Быстрая сборка по сравнению с методом компиляции Buildroot Подготовка Image Builder работает только в 64-битном Linux. Тем не менее вы можете использовать 64-битный Linux развернутый на виртуальной машине которая установлена на 32-битной операционной системе. Так же можно использовать “Подсистему Windows для Linux” в Windows 10 (сборка 19041 или выше). Требуемые пакеты в наиболее распространенных дистрибутивах: Debian/Ubuntu sudo apt-get update sudo apt-get install build-essential libncurses5-dev libncursesw5-dev zlib1g-dev gawk git gettext libssl-dev xsltproc wget unzip python CentOS/RHEL yum install subversion git gawk gettext ncurses-devel zlib-devel openssl-devel libxslt wget yum group install "Development Tools" Fedora 27+ dnf install @c-development @development-tools @development-libs zlib-static which Загрузка Image Builder Загрузите и распакуйте архив, содержащий Image Builder, который находится на той же странице, где и прошивка для вашего устройства. В виде примера приведена страница, для устройства с архитектурой ar71xx/generic: wget https://downloads.openwrt.org/releases/18.06.8/targets/ar71xx/generic/openwrt-imagebuilder-18.06.8-ar71xx-generic.Linux-x86_64.tar.xz tar -xf openwrt-imagebuilder-18.06.8-ar71xx-generic.Linux-x86_64.tar.xz OpenWrt 18.06.8 https://downloads.openwrt.org/releases/18.06.8/targets/ar71xx/generic/ На странице вы найдете архив openwrt-imagebuilder-18.06.8-ar71xx-generic.Linux-x86_64.tar.xz LEDE 17.01.7 https://downloads.openwrt.org/releases/17.01.7/targets/ar71xx/generic/ На странице вы найдете архив lede-imagebuilder-17.01.7-ar71xx-generic.Linux-x86_64.tar.xz OpenWrt Chaos Calmer 15.05.1 http://archive.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/ На странице вы найдете архив OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2 OpenWrt Attitude Adjustment 12.09 http://archive.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/ На странице вы найдете архив OpenWrt-ImageBuilder-ar71xx_generic-for-linux-i486.tar.bz2 Настройка репозиториев пакетов Image Builder, который вы загружаете уже настроен для загрузки любых пакетов из официальных репозиториев. Источники пакетов настраиваются в файле repositories.conf в корневом каталоге. Источники указаны в исходном конфигурационном формате opkg . Это могут быть либо официальные репозитории пакетов, либо созданные пользователем репозитории. Пример содержимого repositories.conf из openwrt-imagebuilder-18.06.0-rc1-ar71xx-generic.Linux-x86_64.tar.xz: ## Place your custom repositories here, they must match the architecture and version. # src/gz %n http://downloads.openwrt.org/releases/18.06.0-rc1 # src custom file:///usr/src/openwrt/bin/ar71xx/packages ## Remote package repositories src/gz openwrt_core http://downloads.openwrt.org/releases/18.06.0-rc1/targets/ar71xx/generic/packages src/gz openwrt_base http://downloads.openwrt.org/releases/18.06.0-rc1/packages/mips_24kc/base src/gz openwrt_luci http://downloads.openwrt.org/releases/18.06.0-rc1/packages/mips_24kc/luci src/gz openwrt_packages http://downloads.openwrt.org/releases/18.06.0-rc1/packages/mips_24kc/packages src/gz openwrt_routing http://downloads.openwrt.org/releases/18.06.0-rc1/packages/mips_24kc/routing src/gz openwrt_telephony http://downloads.openwrt.org/releases/18.06.0-rc1/packages/mips_24kc/telephony ## This is the local package repository, do not remove! src imagebuilder file:packages Если вы хотите добавить пользовательский локальный репозиторий, скопируйте: src custom file:///usr/src/lede/bin/ramips/packages Если у вас есть пользовательские репозитории в Интернете, скопируйте и измените: src/gz reboot http://downloads.lede-project.org/snapshots Использование Распакуйте архив с Image Builder и перейдите в его директорию. make image команда создаст образ для устройства по умолчанию со стандартными (необходимыми) пакетами. В большинстве случаев созданный образ не подойдет для вашего устроиства! Чтобы настроить создаваемый образ, воспользуйтесь переменными по вашему усмотрению, передаваемых в качестве аргументов: PROFILE - определяет целевой профиль для сборки PACKAGES - список пакетов, добавляемых (исключаемых) в образ FILES - каталог с пользовательскими файлами для добавления BIN_DIR - Пользовательская директория для создаваемого образа EXTRA_IMAGE_NAME - Пользовательское имя для создаваемого образа DISABLED_SERVICES - Какие службы в /etc/init.d/ будут отключены по умолчанию Пример использования: make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/ Готовые образы сохраняются в каталоге bin/architecture... make help команда осуществляет вывод справки: Available Commands: help: This help text info: Show a list of available target profiles clean: Remove images and temporary build files image: Build an image (see below for more information). Building images: By default 'make image' will create an image with the default target profile and package set. You can use the following parameters to change that: make image PROFILE="<profilename>" # override the default target profile make image PACKAGES="<pkg1> [<pkg2> [<pkg3> ...]]" # include extra packages make image FILES="<path>" # include extra files from <path> make image BIN_DIR="<path>" # alternative output directory for the images make image EXTRA_IMAGE_NAME="<string>" # Add this to the output image filename (sanitized) Выбор профиля Переменная PROFILE определяет целевой профиль для создаваемого образа. Пустая переменная PROFILE использует профиль по умолчанию DEFAULT. make info команда отобразит список целевых профилей. Пример вывода команды make info для архитектуры ar71xx приведен ниже: Available Profiles: Default: Default Profile Packages: kmod-usb-core kmod-usb2 kmod-usb-ohci kmod-usb-ledtrig-usbport ai-br100: Aigale Ai-BR100 Packages: kmod-usb2 kmod-usb-ohci rp-n53: Asus RP-N53 Packages: rt-n14u: Asus RT-N14u Packages: whr-1166d: Buffalo WHR-1166D Packages: whr-300hp2: Buffalo WHR-300HP2 Packages: -and many many more- После того как вы найдете соответствующий профиль, перейдите к команде make image Пример использования: для TLMR3020 (архитектура Atheros ar71xx). make image PROFILE=TLMR3020 Это создаст образ прошивки для устроиства TLMR3020 с минимумом необходимых для работы пакетов, поскольку переменная PACKAGES не была определена. Добавление/удаление пакетов из образа Переменная PACKAGES определяет список пакетов, включаемых и/или исключаемых из образа прошивки. Пустая переменная PACKAGES создает минимальный образ с ядром и драйверами для устройств, uci, ssh, switch, firewall, ppp и ipv6. Пример использования: make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" В этом примере в образ будут добавлены пакеты pkg1, pkg2, и исключены - pkg3, pkg4. Вам не нужно перечислять все зависимости устанавливаемых пакетов, необходимые пакеты добавятся в образ атоматический. Пример использования: Необходимо удалить пакеты отвечающие за поддержку IPv6: make image PROFILE=XXX PACKAGES="-ip6tables -kmod-ip6tables -kmod-nf-conntrack6 -kmod-nf-ipt6 -odhcp6c -odhcpd -kmod-ipv6" Добавление файлов в образ Переменная FILES позволяет добавлять пользовательские файлы в прошивку. Это удобно, если в прошивке необходимо преднастроить конфигурацию сети, и т.п. Порядок действий: Создайте папку files/ в корневом каталоге Добавьте свои файлы Сделайте файлы исполняемыми chmod -R 777 files Выполните make image с выбранными переменными Примерное содержание папки files/ etc/config/dhcp etc/banner lib/wifi/mac80211.sh Пример использования: make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/ Очистка Для удаления всех временных файлов сборки и сгенерированных образов воспользуйтесь командой: make clean Возможные проблемы При запуске команды make использование root не требуется. Проверьте вывод журнала на наличие проблем с пакетами (конфликты, неправильные имена). Убедитесь, что у вас есть поддерживаемая ОС, необходимые компоненты, файловая система и имя пути. При выходе новой версии подождите несколько дней, исходные пакеты могут находиться в несогласованном состоянии. Вот как выглядит пример несогласованного состояния зависимостей для пакета libubus20191227: Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for luci: * libubus20191227 * opkg_install_cmd: Cannot install package luci. Makefile:154: recipe for target 'package_install' failed make[2]: *** [package_install] Error 255 Makefile:112: recipe for target '_call_image' failed make[1]: *** [_call_image] Error 2 Makefile:207: recipe for target 'image' failed make: *** [image] Error 2 При работе под Windows 10 WSL в новых версиях OpenWRT 21.02 появилась проблема с путями которые содержат пробелы. Решение: sudo vi /etc/wsl.conf [interop] appendWindowsPath = false (для сохранения и выхода нажмите клавишу ESC введите :wq и нажмите ENTER) exit Перезагрузите свой компьютер и проверьте результат следующей командой: echo $PATH Удаление файлов из образа Это не стандартная функция Image Builder. Обратите внимание, что этот метод требует редактирования файла Makefile 1. Создайте файл 'files_remove' в корневом каталоге и внесите в него список файлов с соблюдением путей как в исходной прошивке: /lib/modules/3.10.49/ts_bm.ko /lib/modules/3.10.49/nf_nat_ftp.ko /lib/modules/3.10.49/nf_nat_irc.ko /lib/modules/3.10.49/nf_nat_tftp.ko 2. Отредактируйте файл Makefile находящийся в корневом каталоге: ifneq ($(USER_FILES),) $(MAKE) copy_files endif + +ifneq ($(FILES_REMOVE),) + @echo + @echo Remove useless files + + while read filename; do \ + rm -rfv "$(TARGET_DIR)$$filename"; \ + done < $(FILES_REMOVE); +endif + $(MAKE) package_postinst $(MAKE) build_image 3. Пересоберите образ с добавлением переменной FILES_REMOVE=“files_remove” make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES_REMOVE="files_remove" Добавление пользовательских профилей Image Builder привязан к именам профилей. Если вы добавите новый профиль, не добавив соответствующий макрос в файл Makefile, при использовании настраиваемого профиля файл прошивки не будет создан. Обязательно удалите каталог /tmp, чтобы получить правильный выбор пакетов из нового профиля. Для примера расположение профилей архитектуры ar71xx находится в директории target /linux/ar71xx/generic/profiles/ Примечательно, что все, что нужно сделать для добавления нового профиля, - это добавить новый файл в каталог профилей . Хотя это, возможно, имело место в предыдущих выпусках, на 17.01, но похоже, также требуется ручное редактирование файла .targetinfo. Вот как выглядит файл профиля profiles/100-Broadcom-b43.mk: define Profile/Broadcom-b43 NAME:=Broadcom BCM43xx WiFi (default) PACKAGES:=kmod-b43 kmod-b43legacy endef define Profile/Broadcom-b43/Description Package set compatible with hardware using Broadcom BCM43xx cards endef $(eval $(call Profile,Broadcom-b43)) 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.OKMore information about cookies Last modified: 2022/11/05 12:30by alexandrlastfm