Запуск Ubuntu с графическим интерфейсом в Termux упирается в три компонента: сам контейнер Ubuntu через proot-distro, VNC-сервер внутри контейнера и VNC-клиент на Android, который отображает рабочий стол. Если хотя бы одно звено настроено неверно, вместо рабочего стола пользователь видит чёрный экран или ошибку подключения к порту 5901.
В этой статье разберём полную цепочку установки: от подготовки Termux до запуска окружения рабочего стола XFCE. Инструкция не требует root-прав — proot создаёт изолированное окружение без взлома системы, поэтому способ подходит для большинства устройств на Android.
Что потребуется перед установкой
Перед началом убедитесь, что устройство соответствует минимальным условиям. Termux должен быть установлен из F-Droid или с GitHub-репозитория проекта — версия из Google Play давно не обновляется и содержит устаревшие пакеты, из-за которых установка Ubuntu может завершиться ошибкой репозиториев.
- 📱 Смартфон или планшет на Android 7.0 и новее
- 💾 Не менее 3–4 ГБ свободного места во внутренней памяти
- 🌐 Стабильное интернет-соединение для загрузки образа Ubuntu
- 🖥️ VNC-клиент, например AVNC или bVNC
- ⚡ Желательно 4 ГБ оперативной памяти и больше для комфортной работы GUI
⚠️ Внимание: не устанавливайте Termux из Google Play — эта сборка заброшена, и команда pkg install в ней будет возвращать ошибки из-за неработающих репозиториев. Используйте актуальную версию с F-Droid.
Установка Ubuntu в Termux через proot-distro
Сначала обновите пакеты Termux и установите proot-distro — утилиту, которая автоматически скачивает и разворачивает корневую файловую систему Ubuntu. Откройте Termux и выполните команды по очереди:
pkg update && pkg upgrade -y
pkg install proot-distro -y
proot-distro install ubuntu
Загрузка образа занимает некоторое время в зависимости от скорости сети. После завершения войдите в контейнер командой proot-distro login ubuntu. Приглашение командной строки сменится на root@localhost — это признак того, что вы внутри Ubuntu, а не в окружении Termux.
Установка рабочего стола XFCE и VNC-сервера
Внутри контейнера Ubuntu обновите списки пакетов и поставьте окружение рабочего стола вместе с VNC-сервером. Наиболее лёгкий вариант для мобильного железа — XFCE4 в связке с tigervnc:
apt update && apt upgrade -y
apt install xfce4 xfce4-goodies tigervnc-standalone-server dbus-x11 -y
Установка займёт заметное время и потребует подтверждений — отвечайте Y на запросы пакетного менеджера. Если в процессе появится диалог настройки клавиатуры или локали, можно оставить значения по умолчанию.
☑️ Проверка перед первым запуском GUI
Настройка и запуск VNC-сервера
Первый запуск VNC-сервера потребует задать пароль — именно его вы потом введёте в клиенте на Android. Выполните внутри контейнера:
vncserver :1 -geometry 1280x720 -depth 24
Параметр :1 означает номер дисплея — ему соответствует порт 5901. Разрешение и глубину цвета можно изменить под свой экран, но слишком высокое разрешение замедлит отрисовку на слабом устройстве.
Чтобы при запуске загружался именно XFCE, а не пустой серый экран, отредактируйте файл ~/.vnc/xstartup. Его содержимое должно запускать сессию XFCE:
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
После правки сделайте файл исполняемым командой chmod +x ~/.vnc/xstartup и перезапустите сервер: сначала vncserver -kill :1, затем снова команду запуска.
⚠️ Внимание: серый экран с курсором-крестиком вместо рабочего стола почти всегда означает, что файлxstartupне запускаетstartxfce4или не имеет права на исполнение. Проверьте его содержимое и права до поиска других причин.
Подключение через VNC-клиент на Android
Откройте установленный VNC-клиент и создайте новое подключение. В поле адреса укажите localhost:5901 или 127.0.0.1:5901, в поле пароля — тот, что задавали при первом запуске vncserver. Имя пользователя обычно не требуется.
После подключения вы увидите рабочий стол XFCE. Управление происходит касаниями: одно касание — клик, долгое удержание обычно эмулирует правую кнопку мыши. Для ввода текста вызовите экранную клавиатуру из интерфейса VNC-клиента.
Почему лучше AVNC, а не старый VNC Viewer
AVNC — открытый клиент с поддержкой современных протоколов, плавным масштабированием жестами и корректной работой с буфером обмена между Android и Ubuntu. Устаревшие клиенты могут не согласовать тип шифрования с tigervnc и обрывать подключение на этапе рукопожатия.
Сравнение способов вывода графики
VNC — не единственный вариант отображения GUI из Termux. Ниже сравнение основных подходов, чтобы вы могли выбрать подходящий под свои задачи.
| Способ | Сложность настройки | Плавность работы | Особенности |
|---|---|---|---|
| VNC (tigervnc) | Низкая | Средняя | Универсально, работает везде |
| Termux:X11 | Средняя | Высокая | Нативный X-сервер, требует отдельного APK |
| XSDL | Низкая | Низкая | Просто, но заметны задержки |
| Xrdp | Высокая | Средняя | Подключение по RDP-протоколу |
Termux:X11 даёт наиболее отзывчивый интерфейс, поскольку рисует кадры напрямую, без промежуточного сетевого протокола, однако требует установки отдельного приложения и пакета termux-x11-nightly. Для первого знакомства проще начать с VNC, а потом при желании перейти на X11.
Типичные ошибки и их решение
Если VNC-клиент сообщает об отказе в подключении, сначала проверьте, запущен ли сервер: команда vncserver -list внутри контейнера покажет активные сессии. Отсутствие вывода означает, что сервер не стартовал — запустите его заново.
- 🔌 Connection refused — сервер не запущен или контейнер закрыт; войдите в Ubuntu и выполните
vncserver :1 - 🖥️ Серый экран — неверный
xstartupили нет прав на исполнение файла - 🔑 Ошибка аутентификации — сбросьте пароль командой
vncpasswd - 🐢 Сильные тормоза — снизьте разрешение в параметре
-geometryи глубину цвета - 📦 Ошибки apt — проверьте интернет и выполните
apt updateповторно
Отдельная ситуация — Termux «забывает» сессию VNC после сворачивания приложения. Android агрессивно выгружает фоновые процессы, поэтому перед запуском сервера полезно выполнить в Termux команду termux-wake-lock и отключить оптимизацию батареи для приложения в настройках системы.
⚠️ Внимание: не запускайте второй VNC-сервер на том же дисплее:1, не остановив прежний — это приводит к конфликту блокировочных файлов в/tmp. Сначала выполнитеvncserver -kill :1.
Ограничения и реалистичные ожидания
Ubuntu в proot работает без эмуляции архитектуры, поэтому скорость выполнения программ близка к нативной. Однако графическая подсистема ограничена: аппаратное ускорение видео и 3D в стандартной конфигурации недоступно, поэтому игры и тяжёлые графические приложения будут работать медленно или не запустятся вовсе.
Зато для браузера, редактора кода, офисных программ, терминала и лёгких утилит такой связки достаточно. Звук по умолчанию также не выводится — для него потребуется отдельная настройка через PulseAudio, что выходит за рамки базовой установки.
Часто задаваемые вопросы
Нужен ли root для запуска Ubuntu с GUI в Termux?
Нет. Proot создаёт изолированное окружение без прав суперпользователя, а VNC работает внутри обычной пользовательской сессии. Root не требуется ни на одном этапе.
Сколько места занимает Ubuntu с XFCE?
Базовый образ Ubuntu занимает порядка гигабайта, а с установленным окружением XFCE и сопутствующими пакетами суммарный объём вырастает до нескольких гигабайт. Точная цифра зависит от набора установленных программ.
Можно ли установить вместо XFCE другое окружение?
Да. Через apt доступны LXQt, MATE и другие окружения — достаточно установить соответствующий пакет и заменить команду запуска в файле xstartup. Для слабых устройств предпочтительны самые лёгкие варианты.
Почему VNC-клиент показывает чёрный экран после подключения?
Возможная причина — сессия XFCE завершилась с ошибкой или не стартовала. Проверьте лог сессии в файле ~/.vnc/*.log внутри контейнера: в нём обычно видно, какой компонент не запустился.
Будет ли работать интернет внутри Ubuntu?
Да, контейнер использует сетевое подключение Android автоматически. Если apt или браузер не видят сеть, проверьте содержимое файла /etc/resolv.conf внутри контейнера — иногда требуется указать DNS-сервер вручную.