Как превратить старый Android в карманный Linux-сервер или рабочий стол без root-прав
Почти у каждого в ящике стола пылится старый смартфон. Экран целый, батарея еще держит пару часов, процессор внутри на восемь ядер, а выбросить жалко. Обычная судьба такого устройства — лежать годами без дела, пока аккумулятор окончательно не вздуется.
Многие пробовали ставить на Android дистрибутивы Linux через VNC, но обычно этот опыт заканчивался разочарованием: дикие тормоза интерфейса, отсутствие нормального 3D-ускорения и бесконечная возня с правами суперпользователя. Недавно наткнулся на репозиторий linux-android от разработчика mayukh4. Проект решает эту задачу элегантно. С помощью пары скриптов на базе Termux и Termux-X11 телефон превращается в полноценную рабочую станцию с графической оболочкой или в круглосуточный хаб для умного дома. Рут при этом не нужен.
Два сценария в одном репозитории
Автор разделил проект на две независимые ветки использования, которые при желании можно запускать одновременно на одном устройстве.
Первый путь — это полноценный графический рабочий стол. Скрипт разворачивает окружение на выбор (XFCE4, LXQt, MATE или KDE Plasma), пробрасывает звук через PulseAudio и настраивает аппаратное ускорение графики. Внутри сразу доступны браузер Firefox, плеер VLC, Python 3 с менеджером пакетов pip, OpenSSH и даже Wine для запуска x86-программ под Windows через эмуляцию Box64 и Hangover.
Второй путь — сервер домашней автоматизации. Скрипт поднимает легковесный контейнер Ubuntu через proot-distro и компилирует внутри Home Assistant Core. В итоге получается локальный сервер умного дома, который управляет лампами и розетками по Wi-Fi, потребляя считанные ватты от телефонной зарядки.
Как устроен графический стек и 3D-ускорение
Главная беда старых инструкций по запуску Linux на телефонах заключалась в использовании медленных VNC-клиентов. Здесь картинка выводится напрямую через Termux-X11. Это отдельное приложение, которое выступает быстрым X11-дисплеем для окружения Termux.
С графикой автор поступил грамотно. Скрипт автоматически определяет модель видеочипа через системные свойства Android, игнорируя бренд смартфона (ведь в линейках Samsung бывают как Snapdragon, так и Exynos).
Если внутри чип Qualcomm Snapdragon с графикой Adreno, система подтягивает открытый Vulkan-драйвер Turnip в связке с Zink (трансляция OpenGL поверх Vulkan). За счет этого получается околонативная производительность в 3D-приложениях и плавный интерфейс. Если же смартфон работает на процессоре с графикой Mali или PowerVR, окружение переключается на программный рендеринг SwRast. Для Mali автор справедливо рекомендует выбирать легкие оболочки вроде LXQt или XFCE, потому что тяжелый KDE Plasma на программном рендерере будет заметно подтормаживать.
Все параметры графики сохраняются в конфигурационном файле ~/.config/linux-gpu.sh. При желании туда можно залезть руками и подкрутить флаги Mesa, например, принудительно выставить нужную версию OpenGL или включить режим отладки.
Удаленная работа через SSH
Смотреть в пятидюймовый экран смартфона при работе с терминалом или кодом не всегда удобно. Разработчик учел этот момент и включил в базовую поставку сервер OpenSSH.
Поскольку у Termux нет прав root, SSH-сервер слушает нестандартный порт 8022. Подключиться к смартфону с ноутбука или ПК в локальной сети можно одной командой:
ssh u0_a123@192.168.1.42 -p 8022
Имя пользователя Termux обычно имеет вид u0_a123 (его можно узнать командой whoami). Файлы удобно перебрасывать через стандартный scp или любой привычный SFTP-клиент. Достаточно прописать хост в ~/.ssh/config на основном компьютере, настроить вход по ключам, и телефон превращается в бесшумную удаленную песочницу для тестов и сборки кода.
Нюансы с Home Assistant
Превращение смартфона в сервер умного дома выглядит заманчиво, но здесь важно понимать технические ограничения Android, о которых автор честно предупреждает в документации.
Поскольку Home Assistant Core работает внутри proot-контейнера без прав суперпользователя:
- Не работает mDNS и автопоиск устройств в локальной сети. Начиная с Android 10 система блокирует доступ к
/proc/net/dev, поэтому умные розетки и лампочки (например, TP-Link Kasa) придется добавлять вручную по их IP-адресам. - Нет доступа к Bluetooth-стеку телефона.
- Не получится подключить внешний USB-стик с Zigbee или Z-Wave без кастомного ядра и root-доступа.
- Это именно Home Assistant Core, а не полноценная Home Assistant OS. Дополнения из каталога community add-ons, требующие Docker, здесь запустить не выйдет, но встроенные интеграции работают исправно.
Для облачных интеграций вроде Tuya или Smart Life таких ограничений нет, они подключаются через API разработчика и управляются без проблем.
Установка и запуск
Для установки понадобятся сам Termux (брать нужно строго сборку из F-Droid, так как версия в Google Play давно заброшена) и Termux-X11 из репозитория на GitHub.
Перед запуском основного скрипта обязательно нужно обновить пакетную базу и заблокировать переход процессора в спящий режим:
termux-wake-lock
pkg upgrade -y
Команда termux-wake-lock не дает операционной системе убить процесс сборки, когда гаснет экран. После этого можно клонировать и запускать скрипт рабочего стола:
curl -O https://raw.githubusercontent.com/mayukh4/linux-android/main/termux-linux-setup.sh
chmod +x termux-linux-setup.sh
bash termux-linux-setup.sh
В процессе скрипт спросит, какую графическую оболочку поставить и нужен ли слой совместимости Wine. Установка занимает от 10 до 30 минут.
Интересная деталь реализации: в скрипте написана собственная функция safe_install_pkg. Она парсит метаданные пакетов через apt-cache и заранее проверяет блок Conflicts. Если в системе уже есть конфликтующий пакет (к примеру, разные сборки Vulkan-загрузчиков), скрипт аккуратно пропускает проблемный компонент вместо того, чтобы падать с ошибкой.
Стартует рабочий стол командой:
bash ~/start-linux.sh
После этого остается открыть приложение Termux-X11, где появится рабочий стол.
Если же цель — настроить Home Assistant, запускается отдельный скрипт setup-homeassistant.sh. Он создает окружение Ubuntu, ставит зависимости Python и собирает нужные модули. Веб-интерфейс сервера после старта открывается с любого браузера в локальной сети по адресу http://<ip-телефона>:8123.
Кому пригодится проект
Скрипты mayukh4 избавляют от необходимости собирать рабочее окружение по разрозненным инструкциям с форумов. Все частые грабли, включая конфликты зависимостей и выгрузку процессов фоновым менеджером Android, здесь уже обработаны.
Проект отлично подойдет тем, кто хочет:
- поэкспериментировать с Linux и командной строкой без покупки Raspberry Pi или настройки виртуалок;
- получить карманный сервер для фоновых задач на Python и экспериментов;
- запустить недорогой домашний хаб автоматизации на старом железе;
- собрать компактную мобильную рабочую станцию, подключив к смартфону Bluetooth-клавиатуру и мышь.
Если у вас есть ненужный смартфон на 64-битном процессоре с 3-4 ГБ оперативной памяти, этот репозиторий дает ему отличный шанс на вторую жизнь.
