Гид по технологиям

Как установить дополнительное ПО на домашный роутер (DD-WRT)

9 min read Сетевое Обновлено 14 Dec 2025
Установка Opkg на DD-WRT (руководство)
Установка Opkg на DD-WRT (руководство)

Установка дополнительного ПО на роутер DD-WRT: подключение USB, JFFS и Opkg

Быстрые ссылки

  • Испытания и ограничения
  • Что такое Opkg
  • Требования и подготовка
  • Пошаговая установка
  • Настройка автозапуска
  • Тесты, проверка и отладка
  • Безопасность и локализация
  • Справочные материалы и контрольный список

Испытания и ограничения

Я приобрёл Buffalo WZR-HP-AG300H с переименованной версией DD-WRT и обнаружил: официальные инструкции Optware/Ipkg не всегда совместимы с Atheros (ar71xx). Эти различия потребовали ручного извлечения библиотек и настройки путей выполнения. Цель этого руководства — дать воспроизводимый, пошаговый процесс, минимизирующий риск и облегчающий установку Opkg поверх существующей прошивки.

Важно: некоторые модели и сборки DD-WRT отличаются по объёму JFFS и доступным опциям. Всегда делайте резервную копию конфигурации и имейте план восстановления, прежде чем выполнять изменения.

Important: если у вас нет минимум ~4 МБ доступного постформатного пространства JFFS, описанные ниже преимущества ограничены. С 2 МБ можно провести базовую установку, но придётся каждый раз явно указывать конфиг Opkg — неудобно.

Что такое Opkg

Opkg — это лёгкий менеджер пакетов (форк ipkg), используемый в проектах вроде OpenWrt для загрузки и установки пакетов из репозиториев. Он автоматически пытается разрешить зависимости между пакетами и упрощает установку демонов и утилит на встроенные устройства.

Коротко: Opkg — это пакетный менеджер уровня ipkg/apt, адаптированный для встроенных Linux‑сред.

Пример пакетов, которые можно поставить: Transmission (BitTorrent), ssmtp (отправка почты), knockd (port knocking). Opkg упрощает управление зависимостями по сравнению с ручной установкой.

Требования и подготовка

Перед началом подтвердите следующее:

  1. Маршрутизатор на базе Atheros (ar71xx) с установленной DD-WRT подходящей ревизии. Я тестировал на Buffalo WZR-HP-AG300H (программная версия 17135 Pro). Другие модели на ar71xx, скорее всего, совместимы, но поведение может отличаться.
  2. Включён SSH‑доступ к роутеру; клиент WinSCP или аналог для копирования файлов. Если вы не включили SSH, сделайте это в WebGUI (Administration -> Services / Management — в зависимости от сборки).
  3. Умение подключаться к роутеру по терминалу (SSH). Инструкции есть на DD-WRT wiki.
  4. Доступное пространство JFFS и по крайней мере 4 МБ постформатного свободного места. Без этого вы не получите полноценного результата.

Примечание: при минимуме 2 МБ можно обойтись, но придётся каждый раз указывать опции Opkg вручную.

Краткий план действий

  1. Включить JFFS и SSH, подключиться к роутеру.
  2. Загрузить пакет opkg для архитектуры ar71xx и установить его через ipkg.
  3. Извлечь необходимые динамические библиотеки из корневого rootfs OpenWrt и скопировать в /jffs/usr/lib.
  4. Настроить LD_LIBRARY_PATH, скопировать /etc в JFFS и сделать bind‑mount, чтобы /etc стал читаемозаписываемым.
  5. Перенаправить /opt на JFFS и изменить opkg.conf, чтобы пакеты устанавливались в /opt.
  6. Создать и зарегистрировать скрипт автозапуска, монтирующий /etc и /opt при загрузке.
  7. Проверить работу opkg и установить пакеты вроде net-tools-netstat.

Пошаговая установка

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

Внимание: команды изменяют системные файлы. Работайте аккуратно.

Подготовка рабочего каталога

Откройте SSH‑сессию и создайте временный каталог:

mkdir -p /tmp/1
cd /tmp/1

Установка Opkg через Ipkg

Сначала загрузите пакет Opkg для ar71xx из ветки снимков OpenWrt и установите его ipkg:

wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/opkg_618-2_ar71xx.ipk
ipkg install opkg_618-2_ar71xx.ipk

Note: версия пакета (618-2) могла измениться; проверьте актуальную версию в репозитории OpenWrt для вашей архитектуры.

Если у вас другая архитектура — загрузите пакет opkg соответствующей архитектуры.

Получение динамических библиотек (lib)

Opkg из OpenWrt ожидает наличие определённых общих библиотек. Их можно извлечь из rootfs OpenWrt:

wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-rootfs.tar.gz
tar xvzf openwrt-ar71xx-generic-rootfs.tar.gz
cp -Pp /tmp/1/lib/* /jffs/usr/lib/

Примечание: вывод tar может указывать на опущенные подкаталоги — это нормально; нам нужны только файлы lib.

Настройка LD_LIBRARY_PATH

Чтобы система использовала эти библиотеки в первую очередь, временно установите переменную окружения:

export LD_LIBRARY_PATH=/jffs/usr/lib:$LD_LIBRARY_PATH

Эта команда действует только в текущей сессии; позже мы добавим её в скрипт автозапуска.

Сделать /etc доступным для записи

Чтобы пакеты могли сохранять конфигурации в /etc, переместим /etc в JFFS и сделаем bind‑mount.

mkdir -p /jffs/geek/etc
cp -a /etc/* /jffs/geek/etc/
mount -o bind /jffs/geek/etc/ /etc/

Пояснение: bind‑mount перенаправляет обращения к /etc в версию на JFFS, которая является записываемой.

Перенаправить /opt на JFFS

Opkg по умолчанию ожидает корень файловой системы доступным для записи. Мы зададим /opt как каталог установки пакетов и переместим его на JFFS:

mkdir -p /jffs/opt
mount -o bind /jffs/opt/ /opt/

Для продвинутых пользователей: можно указать в opkg.conf путь к дисковому разделу (USB HDD) вместо JFFS, чтобы сохранить место в JFFS.

Изменение конфигурации opkg

Переместите конфиг opkg в /etc (теперь это JFFS) и отредактируйте пути:

mv /jffs/etc/opkg.conf /etc/
vi /etc/opkg.conf

Содержимое opkg.conf должно содержать корректный источник и указание каталога установки. Пример обновлённой строки конфигурации (в одну строку):

src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay

Измените dest root / на dest root /opt или укажите опции так, чтобы пакеты попадали в /opt. Один из возможных вариантов (см. ниже в шаблоне конфигурации).

Примечание: если вы укажете lists_dir на JFFS, списки пакетов останутся после перезагрузки, но вы пожертвуете ~1.5 МБ в JFFS — учтите компромисс.

Проверка работы Opkg

Обновите списки пакетов и посмотрите доступное:

opkg update
opkg list

Если команды прошли без ошибок, Opkg функционирует.

Установка тестового пакета (netstat)

Проверим установку утилиты netstat (иногда отсутствует в DD-WRT):

opkg update
opkg list | grep netstat
opkg install net-tools-netstat
netstat -an

После установки netstat должен работать.

Скрипт автозапуска (geek-init.sh)

Чтобы все бинды и настройки применялись при каждой загрузке, добавьте и зарегистрируйте инициализационный скрипт. Ниже — пример простого geek-init.sh. Отредактируйте пути и команды под вашу конфигурацию.

#!/bin/sh
# geek-init.sh — инициализация JFFS, библиотек и путей для Opkg
# Создано для запуска на старте системы

# Подождать пока система смонтирует базовые fs
sleep 2

# Подключаем /jffs/usr/lib в LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/jffs/usr/lib:$LD_LIBRARY_PATH

# Bind /etc к /jffs/geek/etc если ещё не смонтировано
if [ -d /jffs/geek/etc ] && [ ! -L /etc ]; then
  mountpoint -q /etc || mount -o bind /jffs/geek/etc/ /etc/
fi

# Bind /opt к /jffs/opt
if [ -d /jffs/opt ] && [ ! -L /opt ]; then
  mountpoint -q /opt || mount -o bind /jffs/opt/ /opt/
fi

# Убедимся, что opkg использует правильный config
if [ -f /etc/opkg.conf ]; then
  echo "opkg config OK"
fi

exit 0

Установите права и подключите в WebGUI (Administration -> Commands) командой:

chmod +x /jffs/geek/etc/geek-init.sh
# В WebGUI -> Administration -> Commands вставьте:
/jffs/geek/etc/geek-init.sh web-gui
# Нажмите Save Startup

Примечание: путь к скрипту и способ регистрации могут отличаться в зависимости от вашей сборки DD-WRT.

Отладка и типичные ошибки

Ниже — частые проблемы и способы их решения.

  • Ошибка “opkg: not found” после установки: проверьте LD_LIBRARY_PATH и наличие бинарника /opt/bin/opkg. Переместите пути, перезапустите сессию.
  • Ошибки о недостающих символах при запуске opkg: значит, не все необходимые библиотеки скопированы. Проверьте содержимое /jffs/usr/lib и сравните с rootfs из OpenWrt.
  • “Not enough space” при установке: проверьте свободное место в /jffs и /opt. Возможно, стоит перенести списки пакетов в RAM (если есть место) или подключить внешний диск.
  • При перезагрузке бинды не сохраняются: убедитесь, что скрипт стартапа зарегистрирован в WebGUI и запускается. Логи можно смотреть в /var/log/messages (если доступны) или подключиться по UART/SSH сразу после загрузки.

Расширенная диагностика

  1. Проверить наличие библиотек:
ls -l /jffs/usr/lib | grep lib
ldd /opt/bin/opkg
  1. Проверить точки монтирования:
mount | grep jffs
mount | grep bind
  1. Логи ошибок opkg:
opkg update 2>&1 | tee /tmp/opkg-update.log
cat /tmp/opkg-update.log

Безопасность и лучшие практики

  • Всегда обновляйте только из проверенных репозиториев. Для ar71xx используйте официальные snapshot‑репозитории OpenWrt или проверенные зеркала.
  • Отключите удалённый доступ по Telnet; используйте SSH с ключами. В WebGUI отключите remote administration.
  • Ограничьте сетевой доступ к сервисам, которые вы установите (например, BitTorrent или веб-интерфейсы). Закрывайте ненужные порты в firewall DD-WRT.
  • Резервные копии: сохраните конфигурацию DD-WRT (Administration -> Backup) и сделайте копию /jffs перед глобальными изменениями.
  • Привилегии: не запускайте дополнительные демоны с правами root, если это можно избежать; используйте возможности sandboxing/изоляции там, где возможно.

Privacy note: если вы на роутере устанавливаете почтовые агенты или серверы, помните, что конфигурации и логи могут содержать персональные данные. Храните их защищёнными и регулярно очищайте/архивируйте.

Альтернативные подходы

  1. Установка Ipkg в firmware: прошивка кастомной сборки с ipkg/opkg (более рискованно, требует перезаписи flash).
  2. Использование USB HDD для /opt: экономит JFFS и повышает выгодность установки больших пакетов. Потребует монтирования ext2/3/4 и корректных fstab/инициализаций.
  3. Использование chroot контейнера или скриптов для сборки приложений локально на ПК и копирования бинарников в /opt (сложно из‑за зависимостей).

Когда этот метод не подходит:

  • Если у вас меньше 2 МБ свободного места JFFS.
  • Если ваша сборка DD-WRT не поддерживает bind‑mount или имеет ограниченный набор утилит.

Чек‑лист перед началом

  • Выполнен backup конфигурации DD-WRT
  • Включён SSH и протестировано подключение
  • Включён JFFS и проверено свободное место (>4 МБ рекомендуемо)
  • Подключён USB‑накопитель (если планируется использовать HDD)
  • Подготовлен доступ к репозиторию OpenWrt (ссылка на ar71xx)

Ролевые чек‑листы

Администратор/установщик:

  • Проверить совместимость архитектуры
  • Подготовить пакеты opkg и rootfs
  • Настроить автозагрузку и логи

Домашний пользователь:

  • Сделать резервную копию настроек роутера
  • Убедиться, что JFFS имеет место
  • Установить минимальные пакеты (netstat, htop, busybox варианты)

Разработчик сервиса на роутере:

  • Тестировать зависимости в chroot или на подобной архитектуре
  • Минимизировать footprint пакета
  • Логгировать ошибки установки

Критерии приёмки

Чтобы считать установку успешной, проверьте:

  1. opkg update проходит без ошибок.
  2. opkg list возвращает список пакетов.
  3. Установленный тестовый пакет (например, net-tools-netstat) запускается.
  4. После перезагрузки bind‑mount и LD_LIBRARY_PATH восстанавливаются автоматически через geek-init.sh.

Тесты и приёмочные сценарии

  • Тест 1: После установки opkg выполнить opkg update; ожидание — завершение без ошибок.
  • Тест 2: Установить net-tools-netstat; ожидание — успешная установка и работа команды netstat.
  • Тест 3: Ребут роутера; ожидание — opkg продолжает работать и ранее установленные пакеты доступны.

Шаблоны конфигурации и примеры

Пример минимального /etc/opkg.conf (адаптируйте URL и пути под вашу арх-туру):

src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages
dest root /opt
dest ram /tmp
lists_dir /tmp/opkg-lists
option overlay_root /overlay

Пример записи в WebGUI Administration -> Commands для автозапуска:

/jffs/geek/etc/geek-init.sh web-gui

Ментальные модели и эвристики

  • Treat JFFS как ограниченный ресурс: экономьте место, переносите большие пакеты на внешний диск.
  • Если пакет требует запись в /etc — обеспечьте bind‑mount /etc на JFFS.
  • Используйте opkg для управления зависимостями; если пакет отсутствует, ищите пакет с похожим именем в repo.

Совместимость и миграция

  • Архитектура должна совпадать: ar71xx пакеты не будут работать на mipsel или other CPU.
  • Если вы переходите на другую сборку DD-WRT, проверяйте наличие необходимых утилит (mount, tar, wget).
  • При миграции на OpenWrt/LEDE — многие шаги опускаются, так как Opkg встроен.

Сценарии отказа и восстановление

  1. Если роутер не загружается: используйте TFTP/Recovery режим производителя для восстановления заводской прошивки.
  2. Если opkg ломает систему: войдите в режим single‑user через SSH (если доступно) и отмонтируйте /jffs или восстановите /etc из бэкапа.

Фактбокс

  • Минимальный рекомендуемый размер JFFS для полноценной работы: ~4 МБ
  • Минимальный возможный размер для упрощённой установки: ~2 МБ
  • Опция lists_dir на JFFS экономит перезагрузки, но занимает ~1.5 МБ JFFS

Краткое резюме

Opkg даёт гибкость установки пакетов на роутер с DD-WRT без полной перепрошивки. Ключевые шаги: установка пакета opkg через ipkg, копирование библиотек из rootfs OpenWrt, перенаправление /etc и /opt на JFFS и автоматизация через startup‑скрипт. Следуйте чек‑листу, делайте бэкапы и применяйте базовые рекомендации по безопасности.

Summary:

  • Проверьте совместимость и свободное пространство JFFS
  • Установите opkg и необходимые библиотеки
  • Перенаправьте /etc и /opt на JFFS
  • Настройте автозапуск и протестируйте установку пакетов

Если вам нужна помощь с конкретной моделью роутера, выводом команды dmesg или логами opkg, приложите их — и я помогу проанализировать проблему.

“Если такая машина — виртуально невозможна, значит она конечная невероятность…”

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как подписаться на канал YouTube
Руководства

Как подписаться на канал YouTube

DNS‑сервер не отвечает в Windows 7 — как исправить
Windows

DNS‑сервер не отвечает в Windows 7 — как исправить

Как смотреть американское ТВ через VPN
Интернет

Как смотреть американское ТВ через VPN

Как переключить аудио на YouTube
Руководство

Как переключить аудио на YouTube

Форматирование в Google Sheets — TO_ функции
Google Sheets

Форматирование в Google Sheets — TO_ функции

Исправление ошибки Outlook 0x80190194
Tech Support

Исправление ошибки Outlook 0x80190194