User Tools

Site Tools


ru:docs:guide-user:additional-software:imagebuilder

Image Builder

Это предварительно скомпилированная среда, используемая для создания пользовательских образов прошивок без необходимости компиляции ядра и пакетов.

Преимущества использования:

  • Возможность загрузки модулей расширения ядра из репозитория LEDE и OpenWrt
  • Встраивание пакетов непосредственно в файловую систему SquashFS для экономии места во флэш-памяти устроиства
  • Пользовательская конфигурация, добавление и удаление пакетов и файлов конфигурации непосредственно в файловой системе SquashFS
  • Быстрая сборка по сравнению с методом компиляции Buildroot

Подготовка

Image Builder работает только в 64-битном Linux. Тем не менее вы можете использовать 64-битный Linux развернутый на виртуальной машине которая установлена на 32-битной операционной системе.

Требуемые пакеты в наиболее распространенных дистрибутивах:

Debian/Ubuntu

apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache 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:

OpenWrt RC1 18.06.0
https://downloads.lede-project.org/releases/18.06.0-rc1/targets/ar71xx/generic/
На странице вы найдете архив openwrt-imagebuilder-18.06.0-rc1-ar71xx-generic.Linux-x86_64.tar.xz

LEDE 17.01.4
https://downloads.lede-project.org/releases/17.01.4/targets/ar71xx/generic/
На странице вы найдете архив lede-imagebuilder-17.01.4-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 создается после каждой сборки методом Buildroot, потому что он необходим для создания финального образа прошивки. Если при компиляции включена опция “Build the LEDE Image Builder”, то Image Builder будет сохранен в той же папке, где будет ваша прошивка.


Настройка репозиториев пакетов

Image Builder, который вы загружаете со страниц LEDE или OpenWrt, уже настроен для загрузки любых пакетов из официальных репозиториев. Источники пакетов настраиваются в файле 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 - каталог с пользовательскими файлами для добавления

Пример использования:

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 позволяет добавлять пользовательские файлы в прошивку. Это удобно, если в прошивке необходимо преднастроить конфигурацию сети, и т.п.

Порядок действий:

  1. Создайте папку files/ в коревом каталоге
  2. Добавьте конфигурационные файлы
  3. Выполните 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

Удаление файлов из образа

Это не стандартная функция 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))
ru/docs/guide-user/additional-software/imagebuilder.txt · Last modified: 2018/07/05 05:44 by alexandrlastfm