Termux – мощный эмулятор терминала для Android, который позволяет запускать полноценные Linux‑окружения прямо на смартфоне. При работе с виртуальными машинами (VM) в Termux часто возникают ограничения по ресурсам, что может привести к замедлению работы гостевой ОС. В этой статье мы разберём практические приёмы оптимизации производительности Termux, позволяющие эффективно использовать CPU, память, дисковое и сетевое пространство.
Подготовка окружения
Прежде чем приступить к настройке, убедитесь, что у вас установлен последний пакет termux и обновлены репозитории:
apt update && apt upgrade -y
Установите необходимые инструменты для работы с виртуальными машинами:
apt install proot-distro qemu-system-x86_64 git curl -y
Для более гибкого управления образами рекомендуется использовать proot-distro – он позволяет запускать готовые дистрибутивы без необходимости рутировать устройство.
Оптимизация использования CPU
По умолчанию QEMU использует один поток процессора, что ограничивает производительность гостевой ОС. Чтобы задать количество ядер, используйте параметр -smp:
qemu-system-x86_64 -smp 2 -m 1024 -hda vm_image.img -enable-kvm
Если ваше устройство поддерживает KVM (требуется Android 10+ и ядро с включённым модулем kvm), добавьте флаг -enable-kvm. Это позволяет использовать аппаратную виртуализацию и значительно ускоряет работу VM.
Для контроля нагрузки можно задать ограничение на использование CPU с помощью taskset:
taskset -c 0,1 qemu-system-x86_64 -smp 2 -m 1024 -hda vm_image.img
Это привяжет процесс к первым двум ядрам, оставив остальные свободными для системных задач.
Эффективное управление памятью
Android управляет оперативной памятью динамически, однако можно задать «swap‑файл», чтобы избежать OOM‑событий в гостевой системе. Создайте swap‑файл внутри Termux:
dd if=/dev/zero of=$HOME/swapfile bs=1M count=512
chmod 600 $HOME/swapfile
mkswap $HOME/swapfile
swapon $HOME/swapfile
Не забудьте добавить отключение swap после завершения работы:
swapoff $HOME/swapfile && rm $HOME/swapfile
Для более тонкой настройки используйте параметр vm.swappiness в файле /proc/sys/vm/swappiness. Значение 10 уменьшит агрессивность использования swap:
echo 10 > /proc/sys/vm/swappiness
Оптимизация дисковой подсистемы
Работа с образами VM может быть ограничена скоростью чтения/записи на внутреннюю флеш-память. Рекомендуется разместить образ на внешнем SSD (через USB‑OTG) и смонтировать его в Termux:
mkdir -p /data/data/com.termux/files/home/ssd
termux-setup-storage
mount /dev/block/sda1 /data/data/com.termux/files/home/ssd
При работе с образами, расположенными на быстром NVMe‑накопителе, наблюдается до 30‑40% прирост производительности.
Также включите кэширование записи для QEMU:
qemu-system-x86_64 -drive file=vm_image.img,cache=writeback,if=virtio -m 1024
Тюнинг сетевого стека
Для сетевых задач в VM часто требуется низкая задержка. Используйте виртуальный сетевой адаптер virtio-net и настройте MTU:
qemu-system-x86_64 -netdev user,id=net0 -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:56 -m 1024 -hda vm_image.img
Внутри гостевой ОС задайте увеличенный MTU (например, 1500):
ip link set eth0 mtu 1500
Для ускорения DNS‑резолвинга рекомендуется использовать локальный кэш unbound в Termux:
apt install unbound -y
unbound -d -c /data/data/com.termux/files/usr/etc/unbound/unbound.conf
Настройте в гостевой ОС DNS‑сервер 127.0.0.1.
Автоматизация запуска VM
Создайте скрипт run_vm.sh, который будет подготавливать окружение, включать swap и запускать QEMU с нужными параметрами:
#!/usr/bin/env bash
# Подключаем swap
SWAPFILE="$HOME/swapfile"
if [ ! -f "$SWAPFILE" ]; then
dd if=/dev/zero of=$SWAPFILE bs=1M count=512
chmod 600 $SWAPFILE
mkswap $SWAPFILE
fi
swapon $SWAPFILE
# Запуск VM
qemu-system-x86_64 \
-smp 2 \
-m 2048 \
-enable-kvm \
-drive file=$HOME/vm_image.img,if=virtio,cache=writeback \
-netdev user,id=net0 \
-device virtio-net-pci,netdev=net0 \
-display none \
-daemonize
# Отключаем swap после завершения (опционально)
# swapoff $SWAPFILE && rm $SWAPFILE
Сделайте скрипт исполняемым (chmod +x run_vm.sh) и запускать его одной командой ./run_vm.sh.
Мониторинг и профилирование
Для контроля нагрузки используйте встроенные инструменты Termux:
top– наблюдение за процессами в реальном времени.htop(устанавливается отдельным пакетом) – более удобный UI.vmstat– статистика памяти и swap.iostat(из пакетаsysstat) – мониторинг ввода‑вывода.
Для детального профилирования QEMU можно включить параметр -monitor stdio, который открывает интерактивный монитор, где доступны команды info cpus, info block и др.
Заключение
Оптимизация Termux для работы с виртуальными машинами – это сочетание правильной конфигурации процессора, памяти, диска и сети, а также автоматизации и мониторинга. Следуя приведённым рекомендациям, вы сможете достичь уровня производительности, сравнимого с настольными решениями, даже на мобильных устройствах.
Если вам требуется более глубокая настройка инфраструктуры, миграция рабочих нагрузок в облако или профессиональная поддержка Linux‑окружений на Android, обратитесь к услугам RybinskLab. Мы предоставляем консалтинг, настройку CI/CD, а также обучение по работе с Termux и виртуализацией.