Podroid запускает Linux-контейнеры на Android без root

Podroid запускает полноценный Podman на Android-телефоне без root — через QEMU и Alpine Linux. Работает на любом ARM64-устройстве, 686 звёзд на GitHub.

Обложка: Podroid запускает Linux-контейнеры на Android без root

Android умеет запускать Linux-терминал с виртуализацией — но только на Pixel и части устройств с Exynos. Для остальных телефонов альтернатив не было. Podroid решает эту проблему: приложение запускает полноценный контейнерный рантайм Podman на любом ARM64-устройстве с Android 8.0+, без root и без Termux.

Проект набрал 686 звёзд на GitHub и попал на главную Hacker News.

Ключевые выводы
  • Podroid запускает Linux-контейнеры на Android без root — через QEMU TCG и Alpine Linux VM
  • Встроенный Podman: docker-совместимый рантайм с персистентным хранилищем
  • Работает на любом ARM64-устройстве с Android 8.0+ — не требует Pixel или KVM
  • Порт-форвардинг, SSH, пресеты для Pi-hole, Nginx, Gitea, Grafana
  • Open source под GPL v2, один APK без внешних зависимостей

Зачем это нужно

Встроенный Linux-терминал Android (из Developer Settings) использует аппаратную виртуализацию KVM — и поэтому работает только на Pixel. Формально его поддерживают и некоторые устройства с Exynos, но Samsung часто блокирует функцию через Knox. На Snapdragon-чипах (а это большинство Android-телефонов) терминал недоступен из-за отсутствия поддержки non-protected VM.

Podroid обходит это ограничение за счёт программной эмуляции через QEMU TCG. Это медленнее, чем KVM, но работает везде. Для задач вроде запуска скриптов, Pi-hole, лёгкого веб-сервера или SSH-туннеля производительности достаточно.

Как это работает

Podroid поднимает лёгкую виртуальную машину Alpine Linux через QEMU TCG (без аппаратной виртуализации KVM). Внутри VM работает Podman — docker-совместимый контейнерный рантайм с rootless-архитектурой по умолчанию.

			Android App
├── Foreground Service          ← держит VM живой
├── PodroidQemu engine
│   ├── libqemu-system-aarch64  ← QEMU (TCG, без KVM)
│   ├── podroid-bridge          ← PTY ↔ serial.sock relay
│   └── QMP socket              ← порт-форвардинг + управление VM
└── Alpine Linux VM
    ├── initramfs (read-only база)
    ├── ext4 disk (персистентный overlay)
    ├── Dropbear SSH (порт 22)
    └── Podman + crun + netavark + slirp4netns
		

При загрузке QEMU монтирует Linux-ядро и initramfs. Двухфазный init поднимает персистентный ext4-диск как overlayfs — всё, что вы установите или скачаете, сохраняется между перезапусками.

Что внутри

Контейнерный рантайм. Podman с crun, netavark и slirp4netns. Rootless по умолчанию — без демона с root-привилегиями. Контейнеры запускаются одной командой:

			podman run --rm -it alpine sh
podman run -d -p 8080:80 nginx
		

Терминал. Полная VT100/xterm-эмуляция на базе Termux. Настоящий PTY с поддержкой job control, сигналов и escape-последовательностей. 114 цветовых тем (Dracula, Nord, Solarized, Tokyo Night, Catppuccin, Gruvbox), 13 шрифтов (JetBrains Mono, Fira Code, Cascadia Code), поддержка мыши для TUI-приложений — btop, htop, mc, vim.

Сеть. Интернет из коробки через QEMU SLIRP. Порт-форвардинг с горячим добавлением через QMP — можно пробросить порты VM на Android-устройство прямо во время работы. Готовые пресеты для Pi-hole, Nginx, Gitea и Grafana. Встроенный SSH на порту 9922.

Хранилище. Размер диска на выбор: 2, 4, 8, 16, 32 или 64 ГБ. Папка Downloads с Android монтируется в VM через virtio-9p.

Требования и установка

  • ARM64-устройство (большинство телефонов с 2018 года)
  • Android 8.0+ (API 26)
  • ~150 МБ для приложения + выбранный размер диска VM

Установка — один APK из GitHub Releases. Никаких внешних зависимостей, Termux не нужен. Открыть приложение → нажать Start VM → подождать ~20 секунд → Open Terminal.

Часто задаваемые вопросы
1
Что такое Podroid?

Podroid — open-source Android-приложение, которое запускает Linux-контейнеры через Podman внутри лёгкой Alpine Linux VM. Работает без root, без Termux и без аппаратной виртуализации — использует QEMU TCG.

2
Чем Podroid отличается от встроенного Linux-терминала Android?

Встроенный терминал использует KVM и работает только на Pixel (на Samsung Exynos часто заблокирован Knox). Podroid использует программную эмуляцию QEMU TCG и работает на любом ARM64-устройстве с Android 8.0+.

3
Можно ли запускать Docker-образы?

Podroid использует Podman, который совместим с Docker-образами (OCI-стандарт). Команда podman run работает аналогично docker run.

4
Данные сохраняются после перезагрузки?

Да. Podroid использует персистентный ext4-диск с overlayfs — установленные пакеты, конфигурации и контейнерные образы сохраняются между перезапусками.

Podroid — не замена полноценному серверу, но для локальной разработки, self-hosted сервисов и экспериментов на ходу — рабочий вариант. Исходный код — на GitHub под лицензией GPL v2.