На Huawei P30 под управлением EMUI нет встроенной поддержки монтирования NFS-шар на уровне ядра, поэтому стандартными средствами «Настроек» подключить сетевую папку невозможно. Производитель не добавил NFS-клиент в системный образ, ограничившись только SMB/CIFS для корпоративных профилей. Чтобы работать с Network File System, придется использовать сторонние приложения или получать root-права для установки нужных модулей ядра.
Ситуация осложняется политикой безопасности Android 9/10 (Pie/Q), на которых работает P30: даже с установленным бинарником mount.nfs система блокирует привилегированные операции без Magisk. Обычный пользователь получит ошибку Permission denied или Operation not permitted при попытке смонтировать шару через терминал. Единственный рабочий путь без рута — файловые менеджеры с встроенными клиентами, реализующими протокол в пользовательском пространстве.
Почему EMUI не видит NFS-шары «из коробки»
Архитектура Android не предполагает наличия VFS-модулей для сетевых файловых систем, отличных от встроенных. В ядре Linux, на котором основан Android, поддержка NFS (v3/v4) есть, но она отключена в конфигурации сборки (CONFIG_NFS_FS=n) для экономии памяти и уменьшения поверхности атаки. Huawei не включает этот флаг даже в инженерных прошивках для P30.
Кроме того, фреймворк Storage Access Framework (SAF) в Android 9+ не предоставляет стандартного API для документов на NFS-серверах. Приложения-клиенты (галерея, видеоплееры, офисные пакеты) не увидят файлы, примонтированные через сторонний демон, если тот не реализует DocumentsProvider. Это значит: даже успешно смонтировав шару через Termux, вы не откроете видео в MX Player или фото в Google Фото напрямую.
⚠️ Внимание: Не пытайтесь установить пакетыnfs-commonилиportmapчерезaptв Termux без root — бинарники не получат праваCAP_SYS_ADMINдля системного вызоваmount(). Это приведет к ошибкеmount: only root can do that.
Способ 1: Файловые менеджеры с встроенным NFS-клиентом (без root)
Самый надежный вариант для обычного пользователя — использовать файловый менеджер, реализующий протокол NFS на Java/Kotlin уровне. Такие приложения обходят ограничения ядра, открывая TCP-соединение к порту 2049 и парся ответы сервера сами. Они предоставляют виртуальную файловую систему, доступную внутри самого приложения и, частично, через SAF для других программ.
Проверенные решения для Huawei P30:
- 🟢 Solid Explorer File Manager — плагин «NFS Client» устанавливается отдельно из того же магазина; поддерживает NFS v3/v4, Kerberos и автоматическое переподключение.
- 🟢 MiXplorer Silver — встроенный модуль NFSv3/v4.1, умеет монтировать шару как «облако» в боковом меню, выдает контент через SAF для сторонних плееров.
- 🟢 Cx File Explorer — бесплатный, раздел «Сеть» → «Новое подключение» → «NFS», простой интерфейс, но без поддержки Kerberos.
- 🟡 X-plore File Manager — старый ветеран, NFS работает, но UI устарел, а SAF-провайдер иногда глючит на EMUI 10/11.
☑️ Чек-лист перед подключением через файловый менеджер
После добавления соединения в менеджере укажите IP-адрес сервера (например, 192.168.1.50), путь к экспорту (/mnt/storage/media) и, при необходимости, логин/пароль для sec=krb5. Нажмите «Подключить» — шара появится в корне хранилища приложения. Для доступа из других программ включите в настройках менеджера «Показывать в системе» (SAF).
Если файловый менеджер не видит файлы на шаре — проверьте права доступа на сервере: пользователь NFS (обычно nobody/nogroup или конкретный uid) должен иметь права чтения на каталоги и файлы. Часто помогает chmod -R 755 на экспортируемую папку.
Способ 2: Termux + Magisk — полноценное монтирование в систему (требует root)
Если нужен системный доступ к NFS (чтобы видеоплееры, бэкапы и синхронизаторы видели файлы как локальные), без root не обойтись. На Huawei P30 разблокировка загрузчика возможна только через официальный код (который Huawei перестал выдавать в 2018 году), поэтому для большинства устройств этот путь закрыт. Если же у вас разблокирован загрузчик и установлен Magisk — действуйте так.
Установите в Termux пакеты:
pkg update && pkg install nfs-utils termux-api
Создайте точку монтирования и смонтируйте шару через su -c:
mkdir -p /data/local/tmp/nfs_mount
su -c "mount -t nfs -o vers=4,soft,timeo=10 192.168.1.50:/mnt/storage/media /data/local/tmp/nfs_mount"
Опция soft критична для мобильных сетей: при потере Wi-Fi клиент не будет вешать процессы в состоянии D (uninterruptible sleep), а вернет ошибку I/O через таймаут. vers=4 заставит использовать NFSv4.1 с пейджингом и делегированием, что быстрее на каналах с задержкой.
⚠️ Внимание: Точка монтирования/data/local/tmp/очищается при перезагрузке. Добавьте скрипт монтирования в/data/adb/service.d/nfs_mount.shс флагомexec, чтобы шара поднималась автоматически после старта системы.
Детали systemd-автомаунта для продвинутых
Вместо crond в Termux можно использовать systemd-юнит (если установлен proot-distro с systemd) или Magisk-модуль «NFS Auto Mount». Создайте файл /data/adb/modules/nfs_automount/service.sh с содержимым: while true; do if ping -c1 -W1 192.168.1.50; then mount -t nfs ...; fi; sleep 30; done. Это даст устойчивый автоподъем при появлении сети.
Способ 3: WebDAV-прокси на сервере — обход ограничений клиента
Если root недоступен, а файловые менеджеры не устраивают (нет SAF-провайдера или нужна интеграция с конкретным приложением), разверните на NFS-сервере легкий WebDAV-шлюз. rclone или nginx с модулем ngx_http_dav_module пробросят NFS-шару в HTTP/WebDAV, который Android поддерживает нативно через «Файлы» (Google Files) или сторонние клиенты вроде WebDAV Navigator.
Пример rclone serve webdav на сервере:
rclone serve webdav --addr :8080 --user user --pass pass /mnt/storage/media
На телефоне добавьте в «Файлах» (Google Files) → «Добавить сетевое расположение» → http://192.168.1.50:8080. Скорость будет чуть ниже нативного NFS из-за накладных расходов HTTP, но совместимость — 100% для любых приложений, умеющих открывать файлы по URI.
WebDAV-прокси решает проблему SAF: файлы становятся доступны в любой программе, поддерживающей Storage Access Framework, без рута и сложных манипуляций.
Сравнение методов подключения NFS на P30
| Метод | Root | SAF (видно в других приложениях) | Скорость | Сложность |
|---|---|---|---|---|
| Файловый менеджер (Solid/MiX) | Нет | Частично (включается в настройках) | Высокая (прямой TCP) | Низкая |
| Termux + Magisk (mount) | Да | Да (через bind-mount в /sdcard) | Максимальная (ядро) | Высокая |
| WebDAV-прокси (rclone/nginx) | Нет | Полная (нативный WebDAV) | Средняя (HTTP overhead) | Средняя |
| SMB/CIFS (альтернатива) | Нет | Да (встроен в EMUI) | Высокая | Низкая |
Типичные ошибки и их устранение
Частая ошибка — «Connection timed out» при верном IP. Проверьте, что сервер слушает не только TCP, но и UDP 2049 (NFSv3 использует оба протокола). В /etc/nfs.conf или системд-юните nfs-server.service убедитесь, что udp=y. На клиенте в файловых менеджерах часто есть переключатель «Use UDP» — включите его для v3.
Проблема «Permission denied» на чтение файлов решается синхронизацией UID/GID. На сервере в /etc/exports добавьте all_squash,anonuid=1000,anongid=1000 (где 1000 — UID пользователя на телефоне, узнать через id в Termux). Либо настройте idmapd.conf для NFSv4 с доменом по умолчанию.
⚠️ Внимание: EMUI агрессивно убивает фоновые процессы. Добавьте файловый менеджер или Termux в «Защищенные приложения» (Настройки → Батарея → Запуск приложений → Управление вручную → Включите автозапуск и фоновую активность), иначе монтирование разорвется через 10 минут после выключения экрана.
Производительность и тонкая настройка
Для максимальной скорости на Wi-Fi 5 (ac) используйте NFSv4.1 с опциями rsize=1048576,wsize=1048576 (1 МБ блоки) и noatime на сервере. На P30 антенна 2x2 MIMO дает до 866 Мбит/с теоретически, реальный поток NFS через файловый менеджер — 40-60 МБ/с. При копировании больших файлов (видео 4K) включайте в менеджере «Копировать в кэш» — это снижает нагрузку на сеть за счет последовательного чтения.
Если сервер на ZFS/btrfs, выключите sync в экспорте (async) — риск потери данных при отключении питания сервера минимален, а прирост IOPS на мелких файлах в 3-5 раз. Для баз данных и виртуальных машин оставляйте sync.
Настройте на сервере экспорт с опцией nfsvers=4.1 и minorversion=1 — это включит pNFS (parallel NFS), если ваш сервер поддерживает несколько сетевых интерфейсов. P30 с Wi-Fi 5 не тянет полную полосу pNFS, но латентность снизится за счет параллельных сессий.
Альтернатива: почему SMB часто удобнее NFS для телефона
В EMUI 10/11 (Android 10/11) SMB-клиент встроен в системный файловый менеджер «Файлы» и работает через SAF. Настройка занимает 30 секунд: «Сетевое хранилище» → «Добавить» → IP/имя → логин/пароль. Поддерживается SMB2/3, шифрование, Kerberos. Для домашнего NAS (Synology, QNAP, TrueNAS) SMB дает ту же скорость, но без боли с UID/GID и фаерволами. NFS нужен только если сервер — Linux без Samba или нужны специфичные фичи (делегирование, pNFS).
Итог: для 95% задач на Huawei P30 достаточно Solid Explorer или MiXplorer с плагином NFS. Root-вариант оправдан только для серверных сценариев (бэкап Titanium Backup, синхронизация Syncthing напрямую на шару). WebDAV-прокси — спасение, когда нужно открыть файлы в приложении без SAF-поддержки.
FAQ: Частые вопросы про NFS на Huawei P30
Можно ли монтировать NFS через «Файлы» Google без сторонних приложений?
Нет, системный файловый менеджер в Android 9/10/11 поддерживает только SMB (CIFS) и WebDAV. NFS-клиент в AOSP отсутствует, Huawei его не добавляла.
Почему видео с NFS-шары лагает в MX Player / VLC?
Плеер не имеет прямого доступа к дескриптору файла, если шара примонтирована через файловый менеджер без SAF. Включите в настройках менеджера «Предоставлять доступ другим приложениям» (SAF) или используйте WebDAV-прокси.
Нужно ли разблокировать загрузчик для Termux+NFS?
Да, для команды mount требуются права CAP_SYS_ADMIN, которые дает только Magisk с root. Официальная разблокировка загрузчика P30 невозможна с 2018 года (Huawei закрыла выдачу кодов).
Как сделать автоподключение NFS при включении Wi-Fi?
В Solid Explorer / MiXplorer есть настройка «Автоподключение при доступной сети». Для Termux+Magisk используйте скрипт в /data/adb/service.d/ с проверкой ping шлюза перед монтированием.
Безопасно ли открывать порт 2049 в интернет?
Категорически нет. NFS не имеет встроенного шифрования (до v4 с Kerberos) и аутентификации по IP. Используйте WireGuard/OpenVPN туннель до домашней сети или WebDAV через HTTPS с авторизацией.