We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Виртуализация ARM‑платформ в Termux с помощью QEMU и создание изолированных Linux‑окружений

Подробное руководство по установке и настройке QEMU в Termux для виртуализации ARM‑систем, запуску разных дистрибутивов Linux и организации безопасных изолированных окружений.

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 и начните трансформировать ваш мобильный рабочий процесс уже сегодня.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект