OSBoy notes.

Записки обо всём...

OpenWRT Image Builder (Image Generator)

Если нас чем-то не устраивают доступные готовые образы прошивки OpenWRT, то можно собрать свою прошивку, которая будет удовлетворять нашим потребностям. Например, после установки релиза Chaos Calmer на TP-Link TL-MR3020, на нём тупо не хватает места даже для установки минимума пакетов, необходимых для подключения флешки и переноса корня на неё (extroot)... Такой вот замкнутый круг. Поэтому тут напрашивается: собрать минимальную прошивку (без web-интерфейса и т.п.), на ней настроить extroot, а уж потом, на внешний накопитель устанавливать всё остальное...
Собственную сборку можно получить двумя способами: собрать из исходников, либо использовать Image Builder (так же называемый Image Generator) - прекомпилированную среду для сборки пользовательских образов OpenWRT без необходимости компиляции. Последний вариант и будет рассмотрен в этой статье.
Image Generator позволяет:

  • Встраивать необходимые пакеты непосредственно в прошивку (в SquashFS) для экономии места во флэш-памяти устройства.
  • Встраивать в прошивку пользовательские конфигурационные файлы.
  • Собрать собственную прошивку всего за несколько минут.

Рассматриваемый Image Generator для прошивки Chaos Calmer не будет работать на 32-битных платформах, таких как i686. Для него требуется 64-битная linux-система, например amd64, даже если она работает на виртуальной машине, запущенной в 32-битной Windows.
В данном случае я использую Debian, запущенный в Virtualbox.

Получение Image Builder
Качаем архив с Image Generator из репозитория OpenWRT и распаковываем в нужную директорию:cd ~
mkdir openwrt && cd openwrt
wget https://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/OpenWrt-ImageBuilder-15.05-ar71xx-generic.Linux-x86_64.tar.bz2
tar -xvjf OpenWrt-ImageBuilder-15.05-ar71xx-generic.Linux-x86_64.tar.bz2
cd OpenWrt-ImageBuilder-15.05-ar71xx-generic.Linux-x86_64

Настройка репозиториев пакетов
Image Builder должен быть настроен для загрузки отсутствующих пакетов из официальных или пользовательских репозиториев. В противном случае сборка образа может закончиться с ошибкой из-за отсутствия нужных пакетов. Источники загрузки пакетов настраиваются в файле repositories.conf в корневом каталоге Image Builder. Источники указаны в родном формате конфигурации opkg.
Для использования всех официальных репозиториев для платформы ar71xx - repositories.conf должен выглядеть так: ## Place your custom repositories here, they must match the architecture and version.
# src/gz chaos_calmer http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages
# src custom file:///usr/src/openwrt/bin/ar71xx/packages
src/gz chaos_calmer_base http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/base
src/gz chaos_calmer_luci http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/luci
src/gz chaos_calmer_management http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/management
src/gz chaos_calmer_packages http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/packages
src/gz chaos_calmer_routing http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/routing
src/gz chaos_calmer_telephony http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/packages/telephony
## This is the local package repository, do not remove!
src imagebuilder file:packages

Использование
Команда make image создаст минимальный образ прошивки, с минимумом необходимых для работы пакетов. Настроить собираемый образ можно с помощью трёх переменных, передаваемых в качестве аргументов:

  • PROFILE - определяет целевой профиль для сборки
  • PACKAGES - список пакетов, добавляемых к образу
  • FILES - директория с пользовательскими файлами для добавления

Зависимости для "make":sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc

Выбор профиля
Синтаксис:make image PROFILE=NAMEOFPROFILEгде NAMEOFPROFILE - название целевого профиля для нашего устройства. Посмотреть список предустановленных профилей можно командой:make infoТак, например, для TP-Link TL-MR3020 профиль называется TLMR3020.

Добавление пакетов
Переменная PACKAGES определяет список пакетов, включаемых (и/или исключаемых) в образ прошивки:$ make image PROFILE=XXX PACKAGES="pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6"В этом примере будут добавлены в прошивку пакеты pkg1, pkg2, pkg3, и исключены - pkg4, pkg5, pkg6.

Добавление пользовательских файлов
Переменная FILES позволяет добавлять пользовательские файлы в прошивку. Это удобно, если мы, например, захотим преднастроить в прошивке конфигурацию сети, и т.п.
Синтаксис:$ make image PROFILE=XXX PACKAGES="XXX" FILES=files/

В следующем примере мы:

  1. Создаём директорию для пользовательских файлов
  2. С помощью SCP копируем с роутера (192.168.1.1) конфигурационные файлы, сохраняя структуру поддиректорий
  3. Собираем образ прошивки для TP-Link TL-MR3020 без веб-интерфейса и поддержки ppp, подготовленный к подключению внешнего USB-накопителя, и добавляем в него наши настройки для сети и фаервола:

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=TLMR3020 PACKAGES="kmod-usb-storage kmod-fs-ext4 e2fsprogs block-mount -luci -ppp -ppp-mod-pppoe" FILES=files/

Сгенерированные образы помещаются в директорию bin/.

Очистка
Для удаления временных файлов сборки и сгенерированных образов служит команда:make clean

Готовый образ, как обычно, копируем на роутер в /tmp и прошиваем с помощью mtd.
Сразу после перезагрузки можем убедиться, что добавленные пакеты действительно присутствуют в прошивке:opkg list-installedПри этом на флэш-памяти еще осталось достаточно много места:df -h
Filesystem Size Used Available Use% Mounted on
rootfs 512.0K 212.0K 300.0K 41% /
/dev/root 2.3M 2.3M 0 100% /rom
tmpfs 14.0M 64.0K 14.0M 0% /tmp
tmpfs 14.0M 32.0K 14.0M 0% /tmp/root
tmpfs 512.0K 0 512.0K 0% /dev
/dev/mtdblock3 512.0K 212.0K 300.0K 41% /overlay
overlayfs:/overlay 512.0K 212.0K 300.0K 41% /

Полезные ссылки:

OpenWrt Wiki - Image Generator (Image Builder)

Теги : openwrt, imagebuilder, image builder, image generator

Комментариев: 0

Добавить комментарий

Отменить