Запуск QEMU на Android чаще всего заканчивается одной из трёх ситуаций: виртуальная машина стартует, но работает невыносимо медленно, команда qemu-system-x86_64 выдаёт ошибку об отсутствии KVM, либо гостевая система загружается в чёрный экран без графики. Все три проблемы решаемы, но требуют понимания того, как именно эмулятор работает в среде Android без root-доступа.
QEMU — это свободный эмулятор и виртуализатор, который позволяет запускать операционные системы для одной архитектуры процессора на устройстве с другой архитектурой. На смартфоне это означает возможность загрузить Linux-дистрибутив или даже старую версию Windows прямо на Android. В этой статье разберём установку через Termux, настройку виртуальной машины, способы ускорения и типичные ошибки.
Что нужно знать перед установкой QEMU на Android
Главное ограничение — архитектура. Почти все современные смартфоны работают на процессорах ARM, а большинство десктопных ОС собраны под x86. QEMU умеет транслировать инструкции одной архитектуры в другую (режим TCG), но это даёт серьёзное падение производительности: гостевая система может работать в десятки раз медленнее, чем на ПК.
Второй момент — аппаратная виртуализация. На десктопах QEMU ускоряется через KVM, но на Android ядро обычно не предоставляет пользовательским приложениям доступ к /dev/kvm без root-прав. Поэтому на нерутированном устройстве рассчитывать стоит только на программную эмуляцию.
⚠️ Внимание: запуск тяжёлых гостевых систем (Windows 10/11) на смартфоне через TCG практически бесполезен из-за скорости. Реалистичный сценарий — лёгкие Linux-дистрибутивы или старые ОС вроде Windows XP.
Установка QEMU через Termux
Самый доступный способ — установить QEMU внутри терминальной среды Termux. Это приложение предоставляет полноценный Linux-окружение на Android без необходимости перепрошивки устройства. Скачивать Termux лучше из F-Droid или с официальной страницы проекта на GitHub: версия в Google Play давно не обновлялась и может содержать устаревшие пакеты.
После установки откройте Termux и обновите пакеты, затем поставьте QEMU:
pkg update && pkg upgrade
pkg install qemu-system-x86_64-headless
Для эмуляции ARM-систем (если хотите запустить, например, образ для Raspberry Pi) вместо этого установите пакет qemu-system-aarch64. Имена пакетов в репозитории Termux могут меняться, поэтому при ошибке «package not found» проверьте актуальный список командой pkg search qemu.
- 📦 Установите Termux из F-Droid или GitHub, а не из Google Play
- 🔄 Выполните
pkg update && pkg upgradeперед установкой - 💾 Убедитесь, что на устройстве свободно несколько гигабайт под диски ВМ
- 🔋 Подключите зарядку — эмуляция активно расходует батарею
Создание и запуск виртуальной машины
Первый шаг — создать виртуальный диск. Для этого используется утилита qemu-img, которая входит в состав пакета:
qemu-img create -f qcow2 disk.qcow2 8G
Формат qcow2 удобен тем, что файл растёт по мере заполнения, а не занимает сразу весь объём. Далее скачайте ISO-образ нужной системы (например, лёгкий дистрибутив вроде Alpine Linux или Debian netinst) и запустите установку:
qemu-system-x86_64 -m 1024 -cdrom system.iso -hda disk.qcow2 -vnc :1
Здесь -m 1024 выделяет гигабайт оперативной памяти, а -vnc :1 выводит графику через VNC-сервер вместо несуществующего на Android дисплея. Чтобы увидеть экран гостевой системы, установите любой VNC-клиент (например, AVNC или bVNC) и подключитесь к адресу localhost:5901.
☑️ Первый запуск ВМ в Termux
⚠️ Внимание: не выделяйте виртуальной машине больше половины оперативной памяти смартфона. Android агрессивно завершает фоновые процессы при нехватке RAM, и Termux может быть убит системой прямо во время установки гостевой ОС.
Настройка графики, сети и звука
Вывод через VNC — не единственный вариант. Если гостевая система работает в текстовом режиме, можно вообще обойтись без графики, перенаправив консоль в терминал параметром -nographic. Это заметно снижает нагрузку и упрощает работу с серверными дистрибутивами Linux.
Сеть по умолчанию работает в режиме user-mode networking: гостевая система получает доступ в интернет через NAT, но недоступна снаружи. Чтобы пробросить порт (например, SSH), добавьте параметр вида -netdev user,id=n1,hostfwd=tcp::2222-:22 и подключайтесь к localhost:2222.
Почему нет звука в гостевой системе
Аудио в QEMU на Android — самая проблемная часть. В Termux нет прямого доступа к аудиоподсистеме в привычном виде, и многие аудиобэкенды QEMU недоступны. Для большинства сценариев звук проще отключить параметром -audiodev none или вовсе не настраивать — на скорость работы это не влияет.
Как ускорить QEMU на смартфоне
Если у вас есть root-доступ и ядро устройства собрано с поддержкой KVM, можно попробовать включить аппаратное ускорение флагом -enable-kvm. Но учтите: ускорение работает только когда архитектура гостевой системы совпадает с архитектурой хоста, то есть для ARM-смартфона — только при запуске ARM-образов. Эмуляцию x86 KVM не ускорит в принципе.
Без root остаются программные методы оптимизации. Вот что реально влияет на скорость:
- ⚡ Выбирайте лёгкие ОС: Alpine, Slitaz, Damn Small Linux вместо тяжёлых дистрибутивов
- 🧵 Добавьте
-smp 2или-smp 4для многопоточной эмуляции (число потоков не должно превышать число ядер) - 🖥️ Работайте в текстовом режиме через
-nographicвместо графического вывода - 💿 Используйте формат диска qcow2 и достаточный объём RAM для гостя
Сравнение способов запуска QEMU на Android
Помимо Termux существуют и другие подходы. Их отличия сведены в таблицу:
| Способ | Root нужен | Интерфейс | Сложность |
|---|---|---|---|
| Termux + QEMU | Нет | Командная строка + VNC | Средняя |
| Termux + QEMU + KVM | Да | Командная строка | Высокая |
| Приложения-обёртки (на базе QEMU) | Нет | Графический интерфейс | Низкая |
| Linux-чрут/проот + QEMU | Часто да | Зависит от настройки | Высокая |
Termux — самый гибкий и прозрачный вариант: вы контролируете все параметры запуска и получаете актуальные версии QEMU. Графические обёртки проще для новичка, но ограничивают настройку и нередко содержат устаревшие сборки эмулятора.
Типичные ошибки и их решение
Ошибка Could not access KVM kernel module означает, что вы передали -enable-kvm на устройстве без доступа к /dev/kvm. Решение простое: уберите этот флаг и смиритесь с программной эмуляцией, либо разбирайтесь с root и ядром устройства.
Если VNC-клиент показывает чёрный экран, проверьте, что гостевая система вообще выводит графику: некоторые минимальные образы по умолчанию работают только с последовательной консолью. Попробуйте -nographic — если в терминале появился текст загрузки, система жива, просто без графического вывода.
Медленная работа без явных ошибок — это, как правило, не баг, а ожидаемое поведение TCG. Эмуляция x86 на ARM-процессоре — самый медленный сценарий QEMU, и никакие настройки не сделают его сравнимым по скорости с нативным запуском. Если скорость критична, ищите ARM-сборки нужной ОС.
Часто задаваемые вопросы
Можно ли запустить Windows на Android через QEMU?
Технически да, но из-за программной эмуляции x86 на ARM-процессоре современные версии Windows будут работать крайне медленно. Старые системы вроде Windows XP загружаются заметно быстрее, однако для практических задач всё равно малопригодны.
Нужен ли root для QEMU на Android?
Нет, базовая установка через Termux работает без root. Root требуется только для доступа к аппаратной виртуализации KVM, и даже тогда ускорение возможно лишь при совпадении архитектур хоста и гостевой системы.
Почему Termux закрывается во время работы виртуальной машины?
Наиболее вероятная причина — система Android завершает фоновый процесс из-за нехватки памяти или оптимизации батареи. Отключите оптимизацию для Termux в настройках и уменьшите объём RAM, выделяемый виртуальной машине.
Как передать файлы между Android и гостевой ОС?
Удобнее всего поднять в гостевой системе SSH-сервер и передавать файлы через проброшенный порт, либо использовать общий сетевой ресурс. Прямой доступ QEMU к хранилищу Android из Termux ограничен системными разрешениями.
Чем QEMU отличается от Limbo и подобных приложений?
Приложения вроде Limbo являются графическими обёртками над тем же QEMU. Они проще в освоении, но дают меньше контроля над параметрами и часто содержат устаревшие версии эмулятора.