Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
ru:docs:guide-user:additional-software:imagebuilder [2018/03/20 09:05] alexandrlastfmru:docs:guide-user:additional-software:imagebuilder [2021/10/15 08:27] – ↷ Links adapted because of a move operation bobafetthotmail
Line 1: Line 1:
-====== Image Generator (Image Builder====== +====== Сборка образов с помощью Image Builder ====== 
-Это предварительно скомпилированная среда, используемая для создания пользовательских прошивок без необходимости компиляции ядра и пакетов.\\+Это предварительно скомпилированная среда, используемая для создания пользовательских образов прошивок без необходимости компиляции ядра и пакетов. 
 Преимущества использования: Преимущества использования:
-  * Использование модулей расширения ядра из репозитория LEDE и OpenWrt+  * Возможность загрузки модулей расширения ядра из репозитория LEDE и OpenWrt
   * Встраивание пакетов непосредственно в файловую систему SquashFS для экономии места во флэш-памяти устроиства   * Встраивание пакетов непосредственно в файловую систему SquashFS для экономии места во флэш-памяти устроиства
   * Пользовательская конфигурация, добавление и удаление пакетов и файлов конфигурации непосредственно в файловой системе SquashFS   * Пользовательская конфигурация, добавление и удаление пакетов и файлов конфигурации непосредственно в файловой системе SquashFS
-  * Быстрая сборка по сравнению с методом компиляции Buildroot +  * Быстрая сборка по сравнению с методом компиляции [[docs:guide-developer:toolchain:beginners-build-guide|Buildroot]]
  
 ===== Подготовка ===== ===== Подготовка =====
-:!: Image Builder работает только в 64-битном Linux. Тем не менее вы можете использовать 64-битный Linux на виртуальной машине установленой на 32-битном Windows.\\ +<WRAP center round important 80%>Image Builder работает только в 64-битном Linux. Тем не менее вы можете использовать 64-битный Linux развернутый на виртуальной машине которая установлена на 32-битной операционной системе. Так же можно использовать "Подсистему Windows для Linux" в Windows 10 (сборка 19041 или выше).</WRAP> 
-:!: Image Builder требуются те же пакеты, что нужны для сборки системы по методу Buildroot[[docs:guide-developer:build-system:install-buildsystem|Build system – Installation]].\\+<WRAP> 
 Требуемые пакеты в наиболее распространенных дистрибутивах: Требуемые пакеты в наиболее распространенных дистрибутивах:
-<WRAP>Debian/Ubuntu<code>apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc wget unzip python</code></WRAP> 
  
-<WRAP>CentOS/RHEL<code>yum install subversion git gawk gettext ncurses-devel zlib-devel openssl-devel libxslt wget +//Debian/Ubuntu//<code>sudo apt-get update 
-yum group install "Development Tools"</code></WRAP>+sudo apt-get install build-essential libncurses5-dev libncursesw5-dev zlib1g-dev gawk git gettext libssl-dev xsltproc wget unzip python</code> 
 + 
 +//CentOS/RHEL//<code>yum install subversion git gawk gettext ncurses-devel zlib-devel openssl-devel libxslt wget 
 +yum group install "Development Tools"</code> 
 + 
 +//Fedora 27+//<code>dnf install @c-development @development-tools @development-libs zlib-static which</code> 
  
 ===== Загрузка Image Builder ===== ===== Загрузка Image Builder =====
-Загрузите архив, содержащий Image Builder, который находится на той же странице, где и прошивка для вашего устройства. В виде примера показана страница, на которой находится прошивка для устройства с архитектурой ar71xx/generic\\  +Загрузите и распакуйте архив, содержащий Image Builder, который находится на той же странице, где и прошивка для вашего устройства.\\ 
-LEDE  17.01.4\\ +В виде примера приведена страница, для устройства с архитектурой ar71xx/generic
-https://downloads.lede-project.org/releases/17.01.4/targets/ar71xx/generic\\ + 
-На странице вы найдете архив lede-imagebuilder-17.01.4-ar71xx-generic.Linux-x86_64.tar.xz+<code>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</code> 
 + 
 +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\\ OpenWrt Chaos Calmer 15.05.1\\
-http://archive.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic +[[http://archive.openwrt.org/chaos_calmer/15.05.1/ar71xx/generic/]]\\ 
-На странице вы найдете архив OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2\\ +На странице вы найдете архив 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 будет сохранен в той же папке, где будет ваша прошивка ( source/bin/targets/xxx )+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 Generator, который вы загружаете со страниц LEDE или OpenWrt, уже настроен для загрузки любых пакетов из официальных репозиториев. Источники пакетов настраиваются в файле repositories.conf в корневом каталоге. Источники указаны в исходном конфигурационном формате opkg . Это могут быть либо официальные репозитории пакетов, либо созданные пользователем репозитории.+Image Builder, который вы загружаете уже настроен для загрузки любых пакетов из официальных репозиториев. Источники пакетов настраиваются в файле ''repositories.conf'' в корневом каталоге. Источники указаны в исходном конфигурационном формате opkg . Это могут быть либо официальные репозитории пакетов, либо созданные пользователем репозитории.
  
-Пример содержимого ''repositories.conf'' из **lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz** :+Пример содержимого ''repositories.conf'' из openwrt-imagebuilder-18.06.0-rc1-ar71xx-generic.Linux-x86_64.tar.xz:
  
 <code>## Place your custom repositories here, they must match the architecture and version. <code>## Place your custom repositories here, they must match the architecture and version.
-# src/gz reboot http://downloads.lede-project.org/snapshots +# src/gz %n http://downloads.openwrt.org/releases/18.06.0-rc1 
-# src custom file:///usr/src/lede/bin/ramips/packages+# src custom file:///usr/src/openwrt/bin/ar71xx/packages
  
 ## Remote package repositories ## Remote package repositories
-src/gz reboot_core http://downloads.lede-project.org/snapshots/targets/ramips/mt7620/packages +src/gz openwrt_core http://downloads.openwrt.org/releases/18.06.0-rc1/targets/ar71xx/generic/packages 
-src/gz reboot_base http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/base +src/gz openwrt_base http://downloads.openwrt.org/releases/18.06.0-rc1/packages/mips_24kc/base 
-src/gz reboot_telephony http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/telephony +src/gz openwrt_luci http://downloads.openwrt.org/releases/18.06.0-rc1/packages/mips_24kc/luci 
-src/gz reboot_packages http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/packages +src/gz openwrt_packages http://downloads.openwrt.org/releases/18.06.0-rc1/packages/mips_24kc/packages 
-src/gz reboot_routing http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/routing +src/gz openwrt_routing http://downloads.openwrt.org/releases/18.06.0-rc1/packages/mips_24kc/routing 
-src/gz reboot_luci http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/luci+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! ## This is the local package repository, do not remove!
Line 54: Line 68:
 </code> </code>
  
-В файле ''repositories.conf'' который вы компилируете из источника, не хватает ссылок "Remote package repositories".+Если вы хотите добавить пользовательский локальный репозиторий, скопируйте: <code>src custom file:///usr/src/lede/bin/ramips/packages</code> Если у вас есть пользовательские репозитории в Интернете, скопируйте и измените: <code>src/gz reboot http://downloads.lede-project.org/snapshots</code>
  
-Если вы хотите добавить пользовательский локальный репозиторий, скопируйте <code>src custom file:///usr/src/lede/bin/ramips/packages</code> и измените его, чтобы указать на локальную папку, в которой есть ваши пакеты и списки пакетов.\\ 
-Если у вас есть пользовательские репозитории в Интернете, скопируйте и измените <code>src/gz reboot http://downloads.lede-project.org/snapshots</code>. 
  
 +===== Использование =====
 +Распакуйте архив с Image Builder и перейдите в его директорию.
  
-===== Usage ===== +**make image** команда создаст образ для устройства по умолчанию со стандартными (необходимымипакетамиВ большинстве случаев созданный образ не подойдет для вашего устроиства!
-**make image** command will create a default image for a default device with default (essentialpackages. In most cases it's not what you wanted.+
  
-To change this not-so-useful default behavior you can use three variables passed as arguments:+Чтобы настроить создаваемый образ, воспользуйтесь переменными по вашему усмотрению, передаваемых в качестве аргументов:
  
-  * //''PROFILE''//specifies the target image to build +  * //''PROFILE''//определяет целевой профиль для сборки 
-  * //''PACKAGES''//a list of packages to embed into the image +  * //''PACKAGES''//список пакетов, добавляемых (исключаемых) в образ 
-  * //''FILES''//directory with custom files to include+  * //''FILES''//каталог с пользовательскими файлами для добавления 
 +  * //''BIN_DIR''// - Пользовательская директория для создаваемого образа 
 +  * //''EXTRA_IMAGE_NAME''// - Пользовательское имя для создаваемого образа 
 +  * //''DISABLED_SERVICES''// - Какие службы в /etc/init.d/ будут отключены по умолчанию
  
-Example syntax+Пример использования
-<code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6" FILES=files/</code>+<code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/</code>
  
-See the sections below for a more in-depth explanation. After the make command is finished, the generated images are stored in the bin///device-architecture// directory, just like if you were compiling them.+Готовые образы сохраняются в каталоге ''bin/architecture...''
  
-here the output of **make help**:\\+**make help** команда осуществляет вывод справки:\\
   Available Commands:   Available Commands:
         help:   This help text         help:   This help text
Line 92: Line 108:
         make image EXTRA_IMAGE_NAME="<string>" # Add this to the output image filename (sanitized)         make image EXTRA_IMAGE_NAME="<string>" # Add this to the output image filename (sanitized)
  
-The built image will be found under the subdirectory ''./bin/targets/<target>/generic'' . 
-==== PROFILE Variable ===== 
-Syntax:<code>$ make image PROFILE=NAME_OF_PROFILE</code> 
  
-=== Pre-defined Profiles === +==== Выбор профиля ===== 
-Run ''make info'' to obtain a list of defined profiles+Переменная ''PROFILE'' определяет целевой профиль для создаваемого образаПустая переменная ''PROFILE'' использует профиль по умолчанию ''DEFAULT''
-Example output from ''make info'' is listed below.+ 
 +**make info** команда отобразит список целевых профилей.\\ 
 +Пример вывода команды ''make info'' для архитектуры ar71xx приведен ниже:
  
-== ar71xx-generic Profiles == 
 <code> <code>
 Available Profiles: Available Profiles:
Line 125: Line 139:
 </code> </code>
  
-After you find the appropriate profile pass it to the ''make image'' command:+После того как вы найдете соответствующий профиль, перейдите к команде ''make image''
  
-For example, if we wanted to generate a default image for for Asus RT-N14u (from above).+Пример использования: для TLMR3020 (архитектура Atheros ar71xx).
  
-<code> +<code>make image PROFILE=TLMR3020</code> 
-make image PROFILE=rt-n14u +Это создаст образ прошивки для устроиства TLMR3020 с минимумом необходимых для работы пакетов, поскольку переменная PACKAGES не была определена.
-</code>+
  
-==== PACKAGES Variable ==== 
-The ''PACKAGES'' variable allows to include and/or exclude packages in the firmware image. By default (empty PACKAGES variable) the Image Generator will create a minimal image with device-specific kernel and drivers, uci, ssh, switch, firewall, ppp and ipv6 support. 
  
-Syntax:<code>$ make image PACKAGES="pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6"</code> +==== Добавление/удаление пакетов из образа ==== 
-The example above will include pkg1pkg2pkg3and exclude pkg4pkg5pkg6note the "-" before each excluded package.+Переменная ''PACKAGES'' определяет список пакетоввключаемых и/или исключаемых из образа прошивки. Пустая переменная PACKAGES создает минимальный образ с ядром и драйверами для устройствucisshswitchfirewallppp и ipv6.
  
-You don't need to list all dependencies of the packages you need in this listthe Image Generator uses ''opkg'' to resolve automatically the package dependencies and install other required packages.+Пример использования:<code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4"</code> 
 +В этом примере в образ будут добавлены пакеты pkg1pkg2, и исключены - pkg3, pkg4.
  
-**Tip:** The list of currently installed packages on your device can be obtained with the command below: +Вам не нужно перечислять все зависимости устанавливаемых пакетов, необходимые пакеты добавятся в образ атоматический.
-<code>echo $(opkg list_installed | awk '{ print $1 }')</code>+
  
-==== FILES Variable ==== +Пример использования: Необходимо удалить пакеты отвечающие за поддержку IPv6: 
-The ''FILES'' variable allows custom configuration files to be included in images built with Image Generator. This is especially useful if you need to change the network configuration from default before flashing, or if you are preparing an image for mass-flashing many devices.+<code>make image PROFILE=XXX PACKAGES="-ip6tables -kmod-ip6tables -kmod-nf-conntrack6 -kmod-nf-ipt6 -odhcp6c -odhcpd -kmod-ipv6"</code>
  
-Syntax: 
-<code>$ make image FILES=files/</code> 
  
-**Note:** The ''files/'' folder must be in the same folder where you issue the make command.+==== Добавление файлов в образ ==== 
 +Переменная ''FILES'' позволяет добавлять пользовательские файлы в прошивку. Это удобно, если в прошивке необходимо преднастроить конфигурацию сети, и т.п.
  
 +Порядок действий:
 +  - Создайте папку files/ в корневом каталоге
 +  - Добавьте свои файлы
 +  - Сделайте файлы исполняемыми ''chmod -R 777 files''
 +  - Выполните ''make image'' с выбранными переменными
  
-==== Examples ==== +== Примерное содержание папки files/ == 
-The following example shows:+<code>etc/config/dhcp 
 +etc/banner 
 +lib/wifi/mac80211.sh</code>
  
-  -Creating the directory for the configuration files +Пример использования: 
-  -Using ''scp'' to transfer ''uci'' configuration files from a WL500GP router to the ''files/etc/config'' directory +<code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/</code>
-  -Generating an image for WL500GP with custom packages and ''uci'' configuration files+
  
-<code>mkdir -p files/etc/config 
-scp root@192.168.1.1:/etc/config/network files/etc/config/ 
-scp root@192.168.1.1:/etc/config/wireless files/etc/config/ 
-scp root@192.168.1.1:/etc/config/firewall files/etc/config/ 
-make image PROFILE=wl500gp PACKAGES="nano openvpn -ppp -ppp-mod-pppoe" FILES=files/ 
-</code> 
  
-===== Cleanup ===== +==== Очистка ==== 
-To clean up temporary build files and generated imagesuse the **make clean** command.+Для удаления всех временных файлов сборки и сгенерированных образов воспользуйтесь командой: 
 +<code>make clean</code> 
 + 
 + 
 +==== Возможные проблемы ==== 
 +  - При запуске команды make использование root не требуется. 
 +  - Проверьте вывод журнала на наличие проблем с пакетами (конфликтынеправильные имена). 
 +  - Убедитесь, что у вас есть поддерживаемая ОС, необходимые компоненты, файловая система и имя пути. 
 +  - При выходе новой версии подождите несколько дней, исходные пакеты могут находиться в несогласованном состоянии. 
 + 
 +Вот как выглядит пример несогласованного состояния зависимостей для пакета libubus20191227:  
 +<code> 
 +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 
 +</code>
  
-===== Remove useless files from firmware ===== 
-<WRAP center round important 60%> 
-This is not a standard feature of the Image Builder.  
  
-Note that it requires patching of the ''Makefile'' +==== Удаление файлов из образа ==== 
-</WRAP>+<WRAP center round important 80%> 
 +Это не стандартная функция Image Builder. Обратите внимание, что этот метод требует редактирования файла Makefile</WRAP>
  
-1. Create file 'files_remove' with full filenames:+1. Создайте файл 'files_remove' в корневом каталоге и внесите в него список файлов с соблюдением путей как в исходной прошивке:
 <code> <code>
 /lib/modules/3.10.49/ts_bm.ko /lib/modules/3.10.49/ts_bm.ko
Line 185: Line 215:
 </code> </code>
  
-2. Patch Makefile+2. Отредактируйте файл Makefile находящийся в корневом каталоге:
 <code bash> <code bash>
  ifneq ($(USER_FILES),)  ifneq ($(USER_FILES),)
Line 204: Line 234:
 </code> </code>
  
-3. Rebuild firmware +3. Пересоберите образ с добавлением переменной ''FILES_REMOVE="files_remove"'' 
-<code> +<code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES_REMOVE="files_remove"</code>
-make image +
-    PROFILE=tlwr841 \ +
-    PACKAGES="igmpproxy ip iptraf kmod-ipt-nathelper-extra openvpn-polarssl tcpdump-mini -firewall -ip6tables -kmod-ip6tables -kmod-ipv6 -odhcp6c -ppp -ppp-mod-pppoe+
-    FILES_REMOVE="files_remove" +
-</code>+
  
  
-===== Building the Image Generator with all packages inside ===== +==== Добавление пользовательских профилей ==== 
-It is possible to build the Image Generator and integrate in it all packages so it will be able to generate images without downloading packages:+Image Builder привязан к именам профилей. Если вы добавите новый профиль, не добавив соответствующий макрос в файл Makefile, при использовании настраиваемого профиля файл прошивки не будет создан.\\ 
 +:!Обязательно удалите каталог /tmp, чтобы получить правильный выбор пакетов из нового профиля. 
  
-In the graphical configuration, select "**Build the LEDE Image Builder**" to build the image builder, then  select **Global Build Settings** -> **Select all packages by default**, save and exit. +Для примера расположение профилей архитектуры ar71xx находится в директории target /linux/ar71xx/generic/profiles/
-Then build the image, including ''IGNORE_ERRORS=1'' as there might be unmaintained packages that fail to compile.+
  
-Enabling ''IGNORE_ERRORS=1'' should only be done **once the kernel and required packages are known to compile successfully.**+Примечательно, что все, что нужно сделать для добавления нового профиля, - это добавить новый файл в каталог профилей . Хотя это, возможно, имело место в предыдущих выпусках, на 17.01, но похоже, также требуется ручное редактирование файла .targetinfo.
  
-<code>make IGNORE_ERRORS=1 +Вот как выглядит файл профиля profiles/100-Broadcom-b43.mk:  
-</code>+
  
-**Note:** Don't call ''make defconfig'' or leave an old ''.config'' file in the path as ''Select all packages by default'' will only set the package selection to ''[m]'' for packages that are not already configured otherwise!(''make defconfig'' will set most packages to ''[n]'', i.e. //do not build//.) 
- 
- 
-===== Adding/Modifying Profiles ===== 
-The image generation is tied to the profile names. If you add a new profile without also adding an appropriate macro to the image-generation Makefile, no suitable firmware file will get generated when using the custom profile.  
-:!: Make sure to remove the /tmp directory to get modified package selection from profiles to work.  
- 
-The location of the profiles for the pre-compiled package for //brcm47xx-for-Linux-i686// was //target/linux/brcm47xx/profiles/// 
- 
-Remarkably, all that needs to be done to add a new profile, is to add a new file to the //profiles// directory. //While this may have been the case in earlier releases, for 17.01, it appears that manual editing of ''.targetinfo'' is also required.// 
- 
-Here is what the //profiles/100-Broadcom-b43.mk// profile file looks like:   
- 
-<WRAP> 
 <code> <code>
 define Profile/Broadcom-b43 define Profile/Broadcom-b43
Line 249: Line 259:
 $(eval $(call Profile,Broadcom-b43)) $(eval $(call Profile,Broadcom-b43))
 </code> </code>
-</WRAP> 
  • Last modified: 2022/11/05 16:30
  • by alexandrlastfm