Termux – мощный терминал для Android, который позволяет запускать полноценные Linux‑утилиты. С помощью QEMU можно эмулировать ARM‑архитектуру, создавая полностью изолированные Linux‑окружения, пригодные для разработки, тестирования и обучения. В этой статье мы пройдём от установки до создания нескольких независимых виртуальных машин.
Что нужно подготовить
- Устройство с Android 8.0 и выше (рекомендовано 64‑битное).
- Установленный Termux из Google Play или F-Droid.
- Свободное место на накопителе – минимум 2 ГБ для образов.
- Подключение к сети (для загрузки образов и пакетов).
Установка необходимых пакетов
Запустите Termux и выполните следующие команды:
pkg update && pkg upgrade -y
pkg install qemu-system-x86_64 qemu-utils proot tar wget curl -y
Пакет qemu-system-x86_64 содержит универсальный набор эмуляторов, включая qemu-system-arm, который будет использоваться для ARM‑виртуализации.
Получение готового ARM‑образа
Самый простой способ – скачать готовый образ Debian или Ubuntu для ARM64. Ниже пример загрузки официального образа Ubuntu 20.04:
wget -O ubuntu-arm64.img.xz https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-arm64.img.xz
xz -d ubuntu-arm64.img.xz
Образ будет называться ubuntu-arm64.img и готов к использованию.
Создание виртуального диска для данных
Для сохранения изменений и изоляции данных рекомендуется создать отдельный qcow2‑диск:
qemu-img create -f qcow2 vm-data.qcow2 4G
Размер в 4 ГБ подходит для большинства учебных задач; при необходимости его можно увеличить.
Запуск виртуальной машины
Базовая команда запуска выглядит так:
qemu-system-aarch64 \
-machine virt,accel=auto \
-cpu cortex-a57 \
-m 1024 \
-smp 2 \
-kernel /data/data/com.termux/files/usr/share/qemu/aarch64-linux-gnu/boot/kernel-qemu \
-drive if=none,file=ubuntu-arm64.img,format=raw,id=hd0 \
-drive if=none,file=vm-data.qcow2,format=qcow2,id=hd1 \
-device virtio-blk-device,drive=hd0 \
-device virtio-blk-device,drive=hd1 \
-netdev user,id=net0,hostfwd=tcp::2222-:22 \
-device virtio-net-device,netdev=net0 \
-nographic
Пояснения к ключевым параметрам:
-machine virt,accel=auto– выбирает оптимальный ускоритель (KVM, если поддерживается, иначе TCG).-cpu cortex-a57– совместимая с большинством образов ARM64 процессор.-m 1024– выделяем 1 ГБ ОЗУ (можно увеличить до 2 ГБ при достаточном объёме памяти устройства).-netdev user,...hostfwd=tcp::2222-:22– пробрасывает порт 22 гостевой ОС на порт 2222 хоста, позволяя подключаться по SSH.
После запуска вы увидите консольный вывод гостевой системы. Для входа используйте:
ssh -p 2222 ubuntu@127.0.0.1
Пароль по умолчанию – ubuntu (можно сменить сразу после первого входа).
Создание изолированных окружений с proot
Если вам не нужна полная виртуализация, но требуется отдельный файловый слой, proot позволяет «запустить» дистрибутив в пользовательском пространстве без root‑прав. Пример развертывания Alpine Linux:
# Скачиваем минимальный образ Alpine
wget -O alpine-minirootfs.tar.gz https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/aarch64/alpine-minirootfs-3.18.0-aarch64.tar.gz
# Распаковываем в отдельный каталог
mkdir -p ~/proot-alpine && tar -xzf alpine-minirootfs.tar.gz -C ~/proot-alpine
# Запускаем через proot
proot -S ~/proot-alpine /bin/sh
Каждый такой каталог представляет полностью изолированную файловую систему. Их можно комбинировать с QEMU‑дисками, получая гибридный подход: лёгкие контейнеры внутри полной виртуальной машины.
Управление несколькими окружениями
Для удобства создайте скрипты‑запускатели. Пример для двух виртуальных машин (Debian 11 и Ubuntu 22.04):
#!/data/data/com.termux/files/usr/bin/bash
VM_NAME=$1
case "$VM_NAME" in
debian)
IMG=debian-arm64.img
PORT=2223
;;
ubuntu)
IMG=ubuntu-arm64.img
PORT=2222
;;
*)
echo "Usage: $0 {debian|ubuntu}"
exit 1
;;
esac
qemu-system-aarch64 \
-machine virt,accel=auto \
-cpu cortex-a57 -m 1024 -smp 2 \
-kernel /data/data/com.termux/files/usr/share/qemu/aarch64-linux-gnu/boot/kernel-qemu \
-drive if=none,file=$IMG,format=raw,id=hd0 \
-netdev user,id=net0,hostfwd=tcp::$PORT-:22 \
-device virtio-net-device,netdev=net0 \
-nographic
Скрипт позволяет быстро переключаться между окружениями, каждый из которых имеет собственный SSH‑порт.
Оптимизация производительности
- Аппаратное ускорение. Если ваш процессор поддерживает KVM (обычно ARM‑модели с ядром 5.x+), убедитесь, что Termux имеет разрешения
android.permission.FOREGROUND_SERVICEиandroid.permission.SYSTEM_ALERT_WINDOW. В некоторых прошивках требуется установитьtermux-setup-storageи включитьsuдля доступа к/dev/kvm. - Тонкая настройка памяти. Используйте параметр
-mem-path /dev/shmдля размещения RAM‑буфера в памяти, а не в файле. - Виртуальные сетевые карты. Для лучшей пропускной способности включите
-device virtio-net-pciвместо обычногоvirtio-net-device.
Безопасность и изоляция
Каждая виртуальная машина работает в собственном адресном пространстве, поэтому компрометация одной не затрагивает другие. Тем не менее, рекомендуется:
- Отключать ненужные сетевые порты (уберите
hostfwd, если SSH не нужен). - Регулярно обновлять гостевые дистрибутивы (
apt update && apt upgrade). - Использовать сильные пароли и, при возможности, SSH‑ключи.
Отладка и часто возникающие проблемы
Ошибка «Unable to open /dev/kvm». Это значит, что KVM недоступен. Решения:
# Попробовать запуск без ускорения
qemu-system-aarch64 -machine virt,accel=tcg ...
или установить кастомный ROM, предоставляющий поддержку /dev/kvm.
Скорость ввода/вывода низкая. Убедитесь, что образ использует virtio-blk-device и что файл образа расположен во внутренней памяти, а не на SD‑карте.
Заключение
С помощью QEMU в Termux вы получаете полноценную виртуализацию ARM‑платформ прямо на смартфоне, а proot позволяет быстро создавать лёгкие изолированные Linux‑окружения. Такая гибкость открывает возможности для разработки, обучения и тестирования без необходимости в отдельном компьютере.
Если вам нужен профессиональный аудит вашей инфраструктуры, настройка кастомных образов или поддержка CI/CD на мобильных устройствах, команда RybinskLab готова помочь. Мы предоставляем услуги по:
- Разработке и поддержке мобильных DevOps‑решений.
- Настройке безопасных контейнерных и виртуальных сред в Termux.
- Обучению персонала работе с QEMU, Proot и другими инструментами виртуализации.
Свяжитесь с нами через сайт rybinsk-lab.com и начните трансформировать ваш мобильный рабочий процесс уже сегодня.