| 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 12:14] – alexandrlastfm | ru:docs:guide-user:additional-software:imagebuilder [2021/10/15 08:27] – ↷ Links adapted because of a move operation bobafetthotmail |
|---|
| ====== 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-битной операционной системе.\\ | <WRAP center round important 80%>Image Builder работает только в 64-битном Linux. Тем не менее вы можете использовать 64-битный Linux развернутый на виртуальной машине которая установлена на 32-битной операционной системе. Так же можно использовать "Подсистему Windows для Linux" в Windows 10 (сборка 19041 или выше).</WRAP> |
| <WRAP>Требуемые пакеты в наиболее распространенных дистрибутивах: | <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 | Требуемые пакеты в наиболее распространенных дистрибутивах: |
| yum group install "Development Tools"</code></WRAP> | |
| | //Debian/Ubuntu//<code>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</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, который находится на той же странице, где и прошивка для вашего устройства.\\ | Загрузите и распакуйте архив, содержащий Image Builder, который находится на той же странице, где и прошивка для вашего устройства.\\ |
| В виде примера приведена страница, для устройства с архитектурой ar71xx/generic: | В виде примера приведена страница, для устройства с архитектурой ar71xx/generic: |
| |
| LEDE 17.01.4\\ | <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 |
| https://downloads.lede-project.org/releases/17.01.4/targets/ar71xx/generic/\\ | tar -xf openwrt-imagebuilder-18.06.8-ar71xx-generic.Linux-x86_64.tar.xz</code> |
| На странице вы найдете архив lede-imagebuilder-17.01.4-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\\ | 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\\ | OpenWrt Attitude Adjustment 12.09\\ |
| http://archive.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/\\ | [[http://archive.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/]]\\ |
| На странице вы найдете архив OpenWrt-ImageBuilder-ar71xx_generic-for-linux-i486.tar.bz2 | На странице вы найдете архив OpenWrt-ImageBuilder-ar71xx_generic-for-linux-i486.tar.bz2 |
| |
| Кроме того, Image Builder создается после каждой сборки методом Buildroot, потому что он необходим для создания файла прошивки. Если при компиляции включена опция “Build the LEDE Image Builder”, то Image Builder будет сохранен в той же папке, где будет ваша прошивка ( source/bin/targets/xxx ) | |
| |
| ---- | |
| |
| ===== Настройка репозиториев пакетов ===== | ===== Настройка репозиториев пакетов ===== |
| Image Builder, который вы загружаете со страниц 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! |
| src imagebuilder file:packages | src imagebuilder file:packages |
| </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 и перейдите в его директорию. | Распакуйте архив с Image Builder и перейдите в его директорию. |
| |
| **make image** команда создаст образ для устройства по умолчанию со стандартными (необходимыми) пакетами. В большинстве случаев для вашего устроиства он не подойдет. | **make image** команда создаст образ для устройства по умолчанию со стандартными (необходимыми) пакетами. В большинстве случаев созданный образ не подойдет для вашего устроиства! |
| |
| Чтобы настроить создаваемый образ, воспользуйтесь тремя переменными, передаваемых в качестве аргументов: | Чтобы настроить создаваемый образ, воспользуйтесь переменными по вашему усмотрению, передаваемых в качестве аргументов: |
| |
| * //''PROFILE''// - определяет целевой профиль для сборки | * //''PROFILE''// - определяет целевой профиль для сборки |
| * //''PACKAGES''// - список пакетов, добавляемых (исключаемых) в образ | * //''PACKAGES''// - список пакетов, добавляемых (исключаемых) в образ |
| * //''FILES''// - каталог с пользовательскими файлами для добавления | * //''FILES''// - каталог с пользовательскими файлами для добавления |
| | * //''BIN_DIR''// - Пользовательская директория для создаваемого образа |
| | * //''EXTRA_IMAGE_NAME''// - Пользовательское имя для создаваемого образа |
| | * //''DISABLED_SERVICES''// - Какие службы в /etc/init.d/ будут отключены по умолчанию |
| |
| Пример использования: | Пример использования: |
| <code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/</code> | <code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/</code> |
| |
| Готовые образы сохраняются в каталоге bin/architecture... | Готовые образы сохраняются в каталоге ''bin/architecture...'' |
| |
| **make help** команда осуществляет вывод справки:\\ | **make help** команда осуществляет вывод справки:\\ |
| 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) |
| |
| ---- | |
| |
| ==== Выбор профиля ===== | ==== Выбор профиля ===== |
| Переменная ''PROFILE'' определяет целевой профиль для создаваемого образа. По умолчанию пустая переменная ''PROFILE'' использует профиль ''DEFAULT''. | Переменная ''PROFILE'' определяет целевой профиль для создаваемого образа. Пустая переменная ''PROFILE'' использует профиль по умолчанию ''DEFAULT''. |
| |
| Выполните ''make info'' чтобы получить список целевых профилей.\\ | **make info** команда отобразит список целевых профилей.\\ |
| Пример вывода команды ''make info'' приведен ниже: | Пример вывода команды ''make info'' для архитектуры ar71xx приведен ниже: |
| |
| == ar71xx-generic Profiles == | |
| <code> | <code> |
| Available Profiles: | Available Profiles: |
| Это создаст образ прошивки для устроиства TLMR3020 с минимумом необходимых для работы пакетов, поскольку переменная PACKAGES не была определена. | Это создаст образ прошивки для устроиства TLMR3020 с минимумом необходимых для работы пакетов, поскольку переменная PACKAGES не была определена. |
| |
| ---- | |
| |
| ==== Добавление/удаление пакетов в образ ==== | ==== Добавление/удаление пакетов из образа ==== |
| Переменная ''PACKAGES'' определяет список пакетов, включаемых и/или исключаемых в образ прошивки. По умолчанию пустая переменная PACKAGES создает минимальный образ с ядром и драйверами устройств, uci, ssh, switch, firewall, ppp и ipv6. | Переменная ''PACKAGES'' определяет список пакетов, включаемых и/или исключаемых из образа прошивки. Пустая переменная PACKAGES создает минимальный образ с ядром и драйверами для устройств, uci, ssh, switch, firewall, ppp и ipv6. |
| |
| Пример использования:<code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4"</code> | Пример использования:<code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4"</code> |
| В этом примере в образ будут добавлены пакеты pkg1, pkg2, и исключены - pkg3, pkg4. | В этом примере в образ будут добавлены пакеты pkg1, pkg2, и исключены - pkg3, pkg4. |
| |
| Вам не нужно перечислять все зависимости пакетов, необходимые пакеты добавляются в образ атоматический. | Вам не нужно перечислять все зависимости устанавливаемых пакетов, необходимые пакеты добавятся в образ атоматический. |
| |
| **Совет:** Чтобы уменьшить размер образа можно удалить пакеты отвечающие за поддержку IPv6: | Пример использования: Необходимо удалить пакеты отвечающие за поддержку IPv6: |
| <code>make image PROFILE=XXX PACKAGES="-ip6tables -kmod-ip6tables -kmod-nf-conntrack6 -kmod-nf-ipt6 -odhcp6c -odhcpd -kmod-ipv6"</code> | <code>make image PROFILE=XXX PACKAGES="-ip6tables -kmod-ip6tables -kmod-nf-conntrack6 -kmod-nf-ipt6 -odhcp6c -odhcpd -kmod-ipv6"</code> |
| |
| ---- | |
| |
| ==== Добавление файлов в образ ==== | ==== Добавление файлов в образ ==== |
| |
| Порядок действий: | Порядок действий: |
| -Создайте папку files/ в коревом каталоге | - Создайте папку files/ в корневом каталоге |
| -Добавьте конфигурационные файлы | - Добавьте свои файлы |
| -Выполните make image с выбранными переменными | - Сделайте файлы исполняемыми ''chmod -R 777 files'' |
| | - Выполните ''make image'' с выбранными переменными |
| |
| == Примерное содержание папки files/ == | == Примерное содержание папки files/ == |
| <code>files/etc/config/dhcp | <code>etc/config/dhcp |
| files/etc/banner | etc/banner |
| files/lib/wifi/mac80211.sh</code> | lib/wifi/mac80211.sh</code> |
| |
| Пример использования: | Пример использования: |
| <code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/</code> | <code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/</code> |
| |
| ---- | |
| |
| ===== Очистка ===== | ==== Очистка ==== |
| Для удаления всех временных файлов сборки и сгенерированных образов воспользуйтесь командой: | Для удаления всех временных файлов сборки и сгенерированных образов воспользуйтесь командой: |
| <code>make clean</code> | <code>make clean</code> |
| |
| ---- | |
| |
| ===== Удаление файлов из образа ===== | ==== Возможные проблемы ==== |
| <WRAP center round important 60%> | - При запуске команды make использование root не требуется. |
| Это не стандартная функция Image Builder. | - Проверьте вывод журнала на наличие проблем с пакетами (конфликты, неправильные имена). |
| | - Убедитесь, что у вас есть поддерживаемая ОС, необходимые компоненты, файловая система и имя пути. |
| | - При выходе новой версии подождите несколько дней, исходные пакеты могут находиться в несогласованном состоянии. |
| |
| Обратите внимание, что этот метод требует редактирования файла ''Makefile'' | Вот как выглядит пример несогласованного состояния зависимостей для пакета libubus20191227: |
| </WRAP> | <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> |
| | |
| | |
| | ==== Удаление файлов из образа ==== |
| | <WRAP center round important 80%> |
| | Это не стандартная функция Image Builder. Обратите внимание, что этот метод требует редактирования файла Makefile</WRAP> |
| |
| 1. Создайте файл 'files_remove' в корневом каталоге и внесите в него список файлов с соблюдением путей как в исходной прошивке: | 1. Создайте файл 'files_remove' в корневом каталоге и внесите в него список файлов с соблюдением путей как в исходной прошивке: |
| </code> | </code> |
| |
| 3. Пересоберите образ с добавлением переменной FILES_REMOVE = "files_remove" | 3. Пересоберите образ с добавлением переменной ''FILES_REMOVE="files_remove"'' |
| <code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES_REMOVE = "files_remove"</code> | <code>make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES_REMOVE="files_remove"</code> |
| |
| ---- | |
| |
| ===== Добавление пользовательских профилей ===== | ==== Добавление пользовательских профилей ==== |
| Image Builder привязан к именам профилей. Если вы добавите новый профиль, не добавив соответствующий макрос в файл Makefile, при использовании настраиваемого профиля файл прошивки не будет создан. | Image Builder привязан к именам профилей. Если вы добавите новый профиль, не добавив соответствующий макрос в файл Makefile, при использовании настраиваемого профиля файл прошивки не будет создан.\\ |
| :!: Обязательно удалите каталог /tmp, чтобы получить правильный выбор пакетов из нового профиля. | :!: Обязательно удалите каталог /tmp, чтобы получить правильный выбор пакетов из нового профиля. |
| |
| Для примера расположение профилей архитектуры ar71xx находится в директории target /linux/ar71xx/generic/profiles/// | Для примера расположение профилей архитектуры ar71xx находится в директории target /linux/ar71xx/generic/profiles/ |
| |
| Примечательно, что все, что нужно сделать для добавления нового профиля, - это добавить новый файл в каталог профилей . Хотя это, возможно, имело место в предыдущих выпусках, на 17.01, но похоже, также требуется ручное редактирование файла .targetinfo.// | Примечательно, что все, что нужно сделать для добавления нового профиля, - это добавить новый файл в каталог профилей . Хотя это, возможно, имело место в предыдущих выпусках, на 17.01, но похоже, также требуется ручное редактирование файла .targetinfo. |
| |
| Вот как выглядит файл профиля profiles/100-Broadcom-b43.mk: | Вот как выглядит файл профиля profiles/100-Broadcom-b43.mk: |
| |
| <WRAP> | |
| <code> | <code> |
| define Profile/Broadcom-b43 | define Profile/Broadcom-b43 |
| $(eval $(call Profile,Broadcom-b43)) | $(eval $(call Profile,Broadcom-b43)) |
| </code> | </code> |
| </WRAP> | |
| |
| ---- | |
| |
| ===== 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: | |
| |
| 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. | |
| 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.** | |
| |
| <code>make IGNORE_ERRORS=1 | |
| </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//.) | |