| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
| ru:docs:guide-user:additional-software:imagebuilder [2018/03/21 06:46] – 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 |
| * Быстрая сборка по сравнению с методом компиляции [[docs:guide-developer:quickstart-build-images|Buildroot]] | * Быстрая сборка по сравнению с методом компиляции [[docs:guide-developer:toolchain:beginners-build-guide|Buildroot]] |
| |
| ===== Подготовка ===== | ===== Подготовка ===== |
| <WRAP center round important 80%>Image Builder работает только в 64-битном Linux. Тем не менее вы можете использовать 64-битный Linux развернутый на виртуальной машине которая установлена на 32-битной операционной системе.</WRAP> | <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 создается после каждой сборки методом [[docs:guide-developer:quickstart-build-images|Buildroot]], потому что он необходим для создания финального образа прошивки. Если при компиляции включена опция “Build the LEDE Image Builder”, то Image Builder будет сохранен в той же папке, где будет ваша прошивка. | |
| |
| ---- | |
| |
| ===== Настройка репозиториев пакетов ===== | ===== Настройка репозиториев пакетов ===== |
| 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! |
| Если вы хотите добавить пользовательский локальный репозиторий, скопируйте: <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'' для архитектуры ar71xx приведен ниже: | Пример вывода команды ''make info'' для архитектуры ar71xx приведен ниже: |
| |
| Это создаст образ прошивки для устроиства 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> |
| <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>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> |
| |
| ---- | |
| | ==== Возможные проблемы ==== |
| | - При запуске команды 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> |
| |
| ==== Удаление файлов из образа ==== | ==== Удаление файлов из образа ==== |
| <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> |
| |
| ---- | |
| |
| ==== Добавление пользовательских профилей ==== | ==== Добавление пользовательских профилей ==== |
| Для примера расположение профилей архитектуры 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> | |