OpenWrt: удаление ненужных пакетов и очистка памяти роутера

Команда df -h на роутере с OpenWrt показывает, что раздел /overlay занят почти полностью, а при попытке установить новый пакет opkg выдаёт ошибку нехватки места — типичная ситуация для устройств с 8–16 МБ flash-памяти. Причина чаще всего в накопившихся пакетах: когда-то установленные утилиты, зависимости, оставшиеся после удаления основных программ, и компоненты, которые не используются в вашей конфигурации.

Удаление ненужных пакетов в OpenWrt — рутинная, но требующая внимательности операция. Ошибочное удаление системного компонента может привести к потере сети, веб-интерфейса или вообще к неработоспособности прошивки. В этой статье разберём, как безопасно проанализировать установленное ПО, удалить лишнее через терминал и LuCI, а также что делать, если место не освобождается.

Почему на роутере заканчивается память

Flash-память бюджетных роутеров ограничена: у многих моделей всего 8 или 16 МБ, из которых значительная часть занята самой прошивкой. Свободное пространство в разделе /overlay расходуется на каждый установленный пакет, его зависимости и конфигурационные файлы. Даже несколько «тяжёлых» утилит вроде openvpn-openssl или samba способны занять заметную долю доступного объёма.

Вторая причина — осиротевшие зависимости. Когда пакет удаляется командой opkg remove без дополнительных ключей, библиотеки, которые он подтянул при установке, остаются в системе. За месяцы экспериментов с настройкой таких «хвостов» накапливается немало.

Третий фактор — пакеты, встроенные в образ прошивки. Они занимают место в read-only разделе /rom, и обычное удаление их не освобождает физическую память, а лишь создаёт метку удаления в overlay. Это важный нюанс, к которому вернёмся ниже.

Диагностика: смотрим, что установлено и сколько занято

Прежде чем что-то удалять, необходимо получить картину текущего состояния. Подключитесь к роутеру по SSH и выполните базовые команды диагностики.

df -h

opkg list-installed

Первая команда покажет заполненность разделов, вторая — полный список установленных пакетов. Список бывает длинным, поэтому удобно сохранить его в файл или отфильтровать:

opkg list-installed | grep -i vpn

opkg list-installed | wc -l

Чтобы понять, какие пакеты вы ставили сами (а не те, что встроены в прошивку), сравните список с базовым набором вашего образа. Проще всего ориентироваться по принципу: всё, что вы устанавливали вручную через opkg install или LuCI — ваши кандидаты на ревизию.

Удаление пакетов через opkg в терминале

Основной инструмент — пакетный менеджер opkg. Базовый синтаксис удаления прост:

opkg remove имя_пакета

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

opkg remove --autoremove имя_пакета

Чтобы удалить ещё и конфигурационные файлы пакета, добавьте флаг удаления конфигов — в opkg для этого используется отдельный механизм: сначала удаление, затем проверка оставшихся файлов в /etc/config/ и их ручная чистка при необходимости.

  • 🗑️ opkg remove пакет — базовое удаление без затрагивания зависимостей;
  • 🧹 opkg remove --autoremove пакет — удаление вместе с ненужными зависимостями;
  • 🔍 opkg whatdepends пакет — проверка, какие пакеты зависят от удаляемого;
  • 📦 opkg files пакет — список файлов, принадлежащих пакету, для контроля остатков.
⚠️ Внимание: не удаляйте пакеты, в назначении которых не уверены. Компоненты вроде base-files, busybox, netifd, dnsmasq, dropbear, uhttpd и ядерные модули kmod-* критичны для работы системы. Их удаление может оборвать SSH-сессию и оставить роутер без сети и доступа к управлению.

Удаление через веб-интерфейс LuCI

Если терминал вам не близок, та же задача решается через графический интерфейс. Откройте в браузере панель управления роутером и перейдите в раздел Система → Программное обеспечение (в английской локали — System → Software).

Вкладка «Установленные» показывает список пакетов с кнопкой «Удалить» напротив каждого. Интерфейс также позволяет отфильтровать пакеты по имени, что удобно при поиске конкретного компонента. Учтите: LuCI не всегда предлагает автоматическое удаление осиротевших зависимостей, поэтому для глубокой чистки терминал предпочтительнее.

📊 Как вы чаще управляете пакетами в OpenWrt?
Только через SSH и opkg
Только через LuCI
Комбинирую оба способа
Ещё не пробовал(а) OpenWrt

Какие пакеты обычно можно удалить без риска

Конкретный список зависит от вашей конфигурации, но есть типовые категории кандидатов на удаление. Ориентируйтесь на то, чем реально пользуетесь, а не на чужие списки из интернета.

  • 🌐 Неиспользуемые VPN-клиенты и серверы — если настроили WireGuard, старый openvpn со всеми библиотеками можно убрать;
  • 📡 Пакеты для IPv6-туннелей или протоколов, которых нет у вашего провайдера;
  • 🖨️ Серверы печати и файловые серверы (samba, vsftpd), если роутер не раздаёт файлы;
  • 🎛️ Альтернативные темы LuCI и дополнительные веб-модули, которыми вы не пользуетесь;
  • 📊 Утилиты мониторинга и статистики, установленные «на попробовать» и забытые.

Перед удалением каждого пакета проверьте обратные зависимости командой opkg whatdepends. Если от пакета зависит что-то нужное — удалять его не стоит.

☑️ Безопасная чистка пакетов OpenWrt

Выполнено: 0 / 6

Почему после удаления место не освобождается

Это самый частый вопрос при чистке OpenWrt, и ответ кроется в устройстве файловой системы. Прошивка состоит из двух слоёв: SquashFS (только чтение, смонтирован как /rom) и overlay (записываемый раздел). Пакеты, встроенные в образ прошивки, физически находятся в SquashFS.

Когда вы удаляете такой пакет, система не стирает его из read-only раздела — она лишь создаёт в overlay специальный маркер (whiteout), скрывающий файл. Удаление встроенных в прошивку пакетов не освобождает flash-память, а иногда даже немного её расходует. Реальный выигрыш в месте даёт только удаление пакетов, которые были установлены поверх базового образа.

Если нужно избавиться именно от встроенных компонентов, единственный корректный путь — собрать собственный образ прошивки без них или воспользоваться сервисом сборки образов, если он доступен для вашей модели. Детали зависят от конкретного устройства, поэтому сверяйтесь с документацией OpenWrt для вашей модели роутера.

СитуацияЧто происходит с памятьюРешение
Удаление пакета, установленного вамиМесто в overlay освобождаетсяopkg remove --autoremove
Удаление пакета из базового образаМесто не освобождается, создаётся маркерСборка кастомного образа
Остались зависимости после удаленияМесто занято осиротевшими библиотекамиУдаление с ключом --autoremove
Раздел overlay заполнен полностьюНевозможно ставить пакеты и сохранять настройкиЧистка, failsafe-режим или сброс к заводским
⚠️ Внимание: если overlay заполнен на 100%, роутер может перестать сохранять настройки, а некоторые сервисы — работать некорректно. Не доводите систему до этого состояния: оставляйте запас свободного места, особенно на устройствах с 8 МБ flash.

Что делать, если удалили лишнее

Если после удаления пакета пропала сеть, веб-интерфейс или роутер перестал нормально загружаться — не паникуйте. В OpenWrt предусмотрен failsafe-режим: при загрузке система стартует с минимальным набором из read-only раздела, игнорируя изменения в overlay. Способ входа в failsafe зависит от модели устройства (обычно это нажатие кнопки в определённый момент загрузки), поэтому точную процедуру уточните в документации к вашему роутеру.

Из failsafe-режима доступны два пути: либо точечно исправить проблему (переустановить удалённый пакет), либо полностью сбросить overlay командой firstboot с последующей перезагрузкой — это вернёт прошивку к состоянию «из коробки», стерев все настройки и установленные пакеты.

Как вернуть удалённый пакет

Подключитесь к роутеру по SSH (при необходимости — через failsafe-режим), выполните opkg update для обновления списков репозитория, затем opkg install имя_пакета. Если репозиторий недоступен из-за проблем с сетью, пакет можно скачать вручную с зеркала OpenWrt для вашей архитектуры и установить локально: opkg install /tmp/файл.ipk

Крайняя мера — перепрошивка устройства. Она гарантированно вернёт работоспособность, но потребует полной перенастройки. Именно поэтому резервная копия конфигурации перед чисткой — не формальность, а реальная страховка.

Профилактика: как не захламлять прошивку

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

В-третьих, при экспериментах записывайте, что ставите: тогда откат будет осознанным, а не поиском «что я сломал месяц назад». И наконец, после каждого обновления списка репозиториев (opkg update) помните, что скачанные индексы хранятся в /tmp и очищаются при перезагрузке — это нормально и не влияет на занятое место постоянно.

Частые вопросы

Можно ли удалить пакеты, встроенные в заводской образ OpenWrt?

Технически opkg позволит их «удалить», но физически место не освободится — файлы останутся в read-only разделе, а в overlay появится лишь маркер скрытия. Чтобы реально убрать встроенные компоненты, нужно собрать собственный образ прошивки без них.

Как узнать, какие пакеты я установил сам, а какие были в прошивке?

Точного встроенного маркера нет, но можно сравнить вывод opkg list-installed со списком пакетов базового образа для вашей модели. Практический ориентир — вспомнить, что вы ставили вручную через opkg install или LuCI.

Безопасно ли удалять пакеты kmod-* (модули ядра)?

Только если вы точно знаете, что соответствующее оборудование или функция не используются. Например, модуль неиспользуемого USB-контроллера удалить можно, а модуль сетевого чипа — нельзя. При сомнениях оставьте пакет на месте.

Почему opkg remove зависает или выдаёт ошибки?

Возможные причины: переполненный overlay, повреждённые списки пакетов или обрыв связи с репозиторием. Проверьте df -h, выполните opkg update и повторите попытку. Если overlay забит полностью, сначала освободите место вручную, удалив ненужные файлы из /overlay или временные данные.

Удалятся ли настройки пакета при его удалении?

Конфигурационные файлы в /etc/config/ при обычном удалении, как правило, сохраняются — это сделано намеренно, чтобы при переустановке настройки не потерялись. Если пакет больше не нужен совсем, удалите его конфиг вручную.