Systemless Hosts в Magisk: полное руководство по настройке

Ошибка записи в файл hosts на рутированном Android — типичная ситуация: редактор выдаёт «Read-only file system», а реклама в приложениях продолжает показываться, несмотря на установленный блокировщик. Причина почти всегда одна — системный раздел монтируется в режиме «только чтение», и прямое редактирование /system/etc/hosts либо невозможно, либо ломается после первого же OTA-обновления.

Именно для этого в Magisk существует модуль Systemless Hosts. Он позволяет изменять файл hosts без внесения правок в системный раздел — модификация хранится отдельно и подключается поверх системы при загрузке. В этой статье разберём, как работает механизм, где лежит изменённый файл, как включить модуль и какие типичные проблемы возникают у пользователей.

Что такое Systemless Hosts и зачем он нужен

Файл hosts в Android выполняет ту же роль, что и в любой другой операционной системе: он сопоставляет доменные имена с IP-адресами до обращения к DNS-серверу. Если прописать домен рекламной сети с адресом 127.0.0.1, запрос уйдёт в никуда, и реклама не загрузится. Именно на этом принципе работают популярные блокировщики вроде AdAway.

Проблема в том, что стандартный hosts лежит внутри системного раздела. Прямая правка требует перемонтирования раздела в режим записи, а после обновления прошивки все изменения стираются. Кроме того, модификация системного раздела может нарушать проверки целостности, которые выполняют банковские приложения и сервисы вроде SafetyNet / Play Integrity.

Systemless Hosts решает обе задачи разом:

  • 🔧 Изменённый hosts хранится в разделе данных, а не в системном разделе.
  • 🛡️ Системный раздел остаётся нетронутым — проверки целостности не ломаются.
  • 🔄 Обновления OTA не затирают ваши правки.
  • 📦 Блокировщики рекламы получают рабочий файл без ручного перемонтирования.

Как работает механизм под капотом

Magisk использует механизм bind mount — «привязку» одного файла поверх другого на уровне виртуальной файловой системы. При загрузке устройства Magisk подключает изменённый hosts поверх оригинального /system/etc/hosts. Для всех приложений файл выглядит как обычный системный, но физически читается из другого места.

Реальный файл с вашими правками располагается по пути /data/adb/modules/hosts/system/etc/hosts. Это стандартная структура модулей Magisk: всё, что лежит внутри каталога system модуля, при загрузке «накладывается» на соответствующие пути системного раздела.

Поскольку запись идёт в раздел /data, файл переживает перезагрузки и обновления прошивки. Удаляется он только при сбросе устройства до заводских настроек или при ручном удалении модуля.

Как включить Systemless Hosts в Magisk

Модуль встроен в Magisk и не требует скачивания из репозитория. Включение занимает меньше минуты, но требует перезагрузки — без неё bind mount не активируется.

Порядок действий:

  • 📱 Откройте приложение Magisk и перейдите на вкладку «Модули».
  • ➕ Найдите в списке пункт Systemless Hosts — на актуальных версиях Magisk он доступен через кнопку добавления или уже присутствует в списке модулей.
  • ✅ Активируйте модуль переключателем.
  • 🔁 Перезагрузите устройство.

☑️ Проверка после включения Systemless Hosts

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

После перезагрузки откройте ваш блокировщик рекламы (например, AdAway) и запустите обновление базы хостов. Если модуль активен, приложение запишет правила без ошибок доступа. В настройках AdAway при этом должен быть выбран режим работы через root, а не через локальный VPN.

📊 Для чего вы используете Systemless Hosts?
Блокировка рекламы через AdAway
Свои правила hosts вручную
Перенаправление доменов для разработки
Пока только изучаю возможность

Ручное редактирование файла hosts

Иногда нужно добавить собственные записи — например, перенаправить тестовый домен на локальный сервер при разработке. Для этого отредактируйте файл модуля напрямую, а не системный hosts.

Открыть файл можно любым root-проводником или через терминал. Путь к редактируемому файлу:

/data/adb/modules/hosts/system/etc/hosts

Формат записей стандартный: сначала IP-адрес, затем через пробел домен. Пример блокировки домена:

127.0.0.1 ads.example.com
⚠️ Внимание: редактируйте именно файл внутри /data/adb/modules/hosts/, а не /system/etc/hosts. Прямая правка системного файла сводит на нет весь смысл systemless-подхода и может не сохраниться из-за режима «только чтение».

После сохранения правки обычно подхватываются сразу, но при кэшировании DNS помогает перезагрузка или очистка кэша конкретного приложения. Если изменения не видны, проверьте, не перезаписал ли файл ваш блокировщик рекламы при очередном обновлении базы — AdAway при синхронизации формирует hosts заново, и ручные строки могут пропасть. В таком случае добавляйте свои правила через встроенные списки «свои хосты» в самом приложении.

Типичные проблемы и их решения

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

Симптом Вероятная причина Что проверить
AdAway пишет «not enough space» или ошибку записи Модуль не включён или не применён Активен ли Systemless Hosts, была ли перезагрузка
Реклама не блокируется Приложение использует частный DNS Отключить «Частный DNS» (Private DNS) в настройках сети
Модуля нет в списке Старая или нестандартная сборка Magisk Обновить Magisk до актуальной версии
Hosts сбрасывается AdAway перезаписывает файл при обновлении Использовать пользовательские списки внутри AdAway
Не открываются нужные сайты Домен попал в блок-лист по ошибке Добавить домен в белый список блокировщика

Отдельного внимания заслуживает функция Частный DNS (Private DNS over TLS) в Android. Когда она включена, система может резолвить домены в обход локального hosts, и блокировка перестаёт работать. Проверьте настройку Настройки → Сеть и интернет → Частный DNS — для корректной работы hosts её обычно переводят в режим «Выключено». Точный путь может отличаться в зависимости от оболочки производителя.

⚠️ Внимание: некоторые приложения (браузеры со встроенным DNS-over-HTTPS, например) могут игнорировать системный hosts независимо от настроек. Если блокировка не срабатывает только в одном приложении, проверьте его собственные настройки DNS.
Почему банковские приложения всё равно жалуются на root

Systemless Hosts сам по себе не скрывает root — он лишь не трогает системный раздел. Обнаружение Magisk происходит по другим признакам: наличие бинарника su, свойства системы, список установленных пакетов. Для сокрытия используются отдельные механизмы (DenyList, Zygisk и сторонние решения), и их эффективность зависит от конкретного приложения и версии Magisk.

Совместимость с OTA-обновлениями и Play Integrity

Главное преимущество systemless-подхода — живучесть при обновлениях. Поскольку системный раздел не модифицируется, инкрементальные OTA-обновления прошивки проходят без конфликтов, а ваш hosts остаётся на месте в разделе данных. Это ключевое отличие от классической правки /system напрямую, после которой обновление либо не устанавливается, либо затирает все изменения.

Что касается проверок целостности: сам по себе модуль hosts не модифицирует систему, поэтому не должен влиять на проверки напрямую. Однако наличие root-доступа как такового приложения могут определять независимо от него. Не стоит рассчитывать, что Systemless Hosts «спрячет» рут — это инструмент для удобного редактирования hosts, а не для маскировки.

Как отключить или удалить модуль

Если модуль больше не нужен, достаточно выключить его переключателем на вкладке «Модули» в Magisk и перезагрузиться. Bind mount перестанет применяться, и система вернётся к оригинальному hosts из системного раздела.

Полное удаление выполняется там же — кнопкой удаления модуля с последующей перезагрузкой. Файл из /data/adb/modules/hosts/ при этом стирается вместе со всеми вашими правками, поэтому при необходимости сохраните его копию заранее.

⚠️ Внимание: если устройство ушло в bootloop после экспериментов с модулями, не спешите сбрасывать прошивку. Magisk поддерживает безопасный режим отключения модулей — например, через подключение по ADB с удалением проблемного модуля из /data/adb/modules/. Порядок действий зависит от вашей версии Magisk, сверяйтесь с официальной документацией.

Часто задаваемые вопросы

Нужно ли скачивать Systemless Hosts отдельно?

Нет. Модуль встроен в Magisk и активируется на вкладке «Модули». Отдельная установка из сторонних источников не требуется.

Где находится изменённый файл hosts?

По пути /data/adb/modules/hosts/system/etc/hosts. Системный файл /system/etc/hosts при этом остаётся нетронутым.

Почему реклама не блокируется, хотя модуль включён?

Частые причины: не была выполнена перезагрузка после включения, включён «Частный DNS» в настройках сети, либо приложение использует собственный DNS-over-HTTPS. Проверьте эти пункты по очереди.

Сотрутся ли мои записи после обновления прошивки?

Нет. Файл хранится в разделе данных, поэтому OTA-обновления его не затрагивают. Удаление происходит только при сбросе до заводских настроек или ручном удалении модуля.

Помогает ли Systemless Hosts скрыть root от банковских приложений?

Нет, это не его задача. Модуль лишь подменяет hosts без правки системного раздела. Для сокрытия root используются DenyList, Zygisk и другие инструменты, эффективность которых зависит от конкретного приложения.