Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Сборка минимальной или оптимизированной версии прошивки OpenWRT

Оригинал: How to build OpenWrt minimal image, or a custom firmware
Автор: Arnab Satapathi
Дата публикации: 29 марта 2017 г.
Перевод: А.Панин
Дата перевода: 4 апреля 2017 г.

Проект OpenWRT не нуждается в особом представлении, но ввиду того, что его кодовая база расширяется день ото дня, имеет смысл рассмотреть методику сборки минималистичной версии прошивки, которая подойдет для установки на маршрутизаторы с 4 МБ флэш-памяти, причем у вас останется достаточно места для установки дополнительных пакетов в будущем.

  • Одним из решений является создание корневой файловой системы на подключенном к маршрутизатору USB-накопителе, но это не всегда возможно, ведь вам может понадобиться использовать USB-порт для какой-либо другой цели, например, для подключения внешнего Wi-Fi адаптера. Хотя вы и можете использовать USB-хаб, он значительно снизит надежность всей системы.
  • Теперь следует упомянуть о другой проблеме, заключающейся в том, что в OpenWRT Chaos Calmer версии 15.05, 15.05.1 или более новой версии вы просто не сможете разместить корневую файловую систему маршрутизатора с 4 МБ флеш-памяти и USB-портом на USB-накопителе. Это объясняется тем, что объема флеш-памяти не хватит для сохранения всех пакетов с необходимыми для использования внешней корневой файловой системы программными компонентами, во всяком случае я столкнулся с такой ситуацией.

Что же, начнем рассмотрение процесса сборки прошивки.

1. Загрузка окружения для сборки прошивки OpenWRT image builder

В первую очередь вам придется определиться с платформой вашего маршрутизатора, то есть, узнать архитектуру используемого в нем центрального процессора: MIPS, ARM, x86 и так далее.

Я использую маршрутизатор TP-Link MR3220 с SoC AR9331, из чего следует, что требуется собрать прошивку для 32-битного центрального процессора архитектуры MIPS с порядком байтов big endian. В OpenWRT данная платформа носит имя ar71xx.

Таким образом, мне придется загрузить окружение для сборки прошивки OpenWRT Chaos Calmer 15.05.1 для платформы ar71xx, причем модель маршрутизатора входит в категорию generic.

Вы можете загрузить окружения для сборки прошивок для других различных платформ по ссылке: https://downloads.openwrt.org/chaos_calmer/15.05.1/.

2. Использование окружения для сборки прошивки

Для корректного использования окружения для сборки прошивки вам понадобится работоспособная 64-битная Linux-система, которую вы наверняка уже используете, а также базовые навыки работы с инструментами с интерфейсом командной строки.

Извлеките содержимое загруженного архива в любое место, например, в вашу домашнюю директорию:

tar -xf OpenWrt-ImageBuilder-15.05.1-ar71xx-generic.Linux-x86_64.tar.bz2 -C ~/

Вы можете изменить название созданной в результате распаковки архива директории для того, чтобы избавиться от ее необоснованно длинного имени.

Теперь нужно установить некоторые программные компоненты, которые необходимы для компиляции и связывания компонентов прошивки, такие, как GNU Make.

В Debian, Ubuntu и любом другом основанном на Debian дистрибутиве вам придется просто установить пакет программного обеспечения build-essential, который связан зависимостями со всеми остальными необходимыми пакетами.

sudo apt-get install build-essential

Теперь нужно перейти в директорию с извлеченным из архива окружением сборки прошивки OpenWRT image builder:

cd ~/OpenWrt-ImageBuilder

Перед непосредственной сборкой прошивки необходимо убедиться в том, что окружение корректно функционирует:

make help

В случае корректной работы вы должны увидеть несколько строк текста с информацией об использовании окружения.

3. Выбор добавляемых в прошивку и удаляемых из прошивки пакетов

Этот этап является особенно важным, ведь вам придется определиться с тем, какие пакеты следует добавить в прошивку или удалить из нее, не оказывая негативного влияния на стабильность.

Обычно я удаляю LuCI и связанные пакеты для максимального уменьшения размера прошивки OpenWRT, то есть, для освобождения нескольких сотен КБ пространства на флеш-накопителе маршрутизатора. Ниже приведен список пакетов, которые я обычно удаляю:

Вы можете без каких-либо последствий удалить все пакеты, связанные с IPv6, вместо пакетов, связанных с LuCI, если желаете освободить пространство на флеш-накопителе маршрутизатора.

Я также добавляю в прошивку несколько дополнительных пакетов для использования внешней корневой файловой системы сразу же после прошивки без необходимости установки каких-либо дополнительных пакетов. А это список добавляемых мною в прошивку пакетов:

kmod-fs-ext4 kmod-usb-storage kmod-scsi-core block-mount kmod-lib-crc32c kmod-crypto-crc32c

Примечание: два дополнительных пакета, а именно, kmod-lib-crc32c и kmod-crypto-crc32c необходимы для использования файловой системы ext4.

4. Сборка прошивки OpenWRT

Пришло время для сборки минимальной прошивки OpenWRT, но для начала следует выполнить команду make info для получения списка доступных профилей сборки и выбора подходящего вам профиля.

Переменная окружения PACKAGES используется для добавления и удаления пакетов на финальном этапе сборки, причем для отметки удаляемых пакетов перед их именами должен размещаться символ минус (-).

Ниже приведена полная команда для сборки прошивки; не забудьте адаптировать ее к вашей конфигурации и модели маршрутизатора.

Эта команда является слишком длинной, поэтому лучше скопировать ее куда-либо для последующего анализа. Ниже приведена та же команда, разделенная на части:

После окончания процесса сборки вы сможете найти все собранные прошивки OpenWRT для выбранной платформы в поддиректории bin сборочного окружения, причем в моем случае прошивки были размещены в директории ~/OpenWrt-ImageBuilder/bin/ar71xx/.

5. Перед прошивкой маршрутизатора

Перед прошивкой маршрутизатора следует проверить размер созданного файла прошивки, ведь в случае использования маршрутизатора с 4 МБ флеш-памяти размер файла прошивки с маркировкой squashfs factory не должен превышать 3.8 МБ или 3932160 байт; проверьте это дважды перед тем, как приступить к прошивке маршрутизатора:

du -b openwrt-15.05.1-ar71xx-generic-tl-mr3220-v2-squashfs-factory.bin

Теперь вы можете осуществить прошивку маршрутизатора так, как вам будет удобно: с помощью веб-интерфейса, с помощью команды sysupgrade или любым другим способом.

В результате после входа в систему маршрутизатора по протоколу SSH вы должны обнаружить несколько килобайт свободного пространства.

Также не стоит пренебрегать использованием источника бесперебойного питания на этапе прошивки маршрутизатора, если вы, также, как и я, испытываете проблемы с электроснабжением, ведь в случае отключения электроснабжения в процессе прошивки маршрутизатор наверняка потеряет работоспособность.

Таким образом вы можете собрать собственную версию прошивки OpenWRT; надеюсь, что данная статья была понятна всем читателям. Не забывайте делиться ссылками на статью, если вы считаете полезной изложенную в ней информацию.