Установка WayDroid
Какую проблему будем решать?
В какой-то момент мне понадобилось заиметь Android-хост в своей инфраструктуре. Да не простой, а с GooglePlay и, по возможности, не заставляющий ЦПУ биться в конвульсиях при запуске первого инстанса.
Основная загвоздка тут в том, что решение должно так или иначе вписываться в мои реалии - наличие хоста Proxmox и нескольких (десятков) ВМ. Вариант с LXC я отмел сразу, т.к. мне нужен был ванильный Android, а не его сборка. К тому же, я бы не хотел на одной ноде держать и LXC, и ВМ.
И я нашел решение этой проблемы - WayDroid.
Как мы ее будем решать?
В первую очередь, определимся с вводными. Я буду:
- Создавать ВМ на Ubuntu Server 24.04 (это важно, т.к. на момент написания статьи это самый стабильный дистрибутивы под такие цели);
- Устанавливать и настраивать систему как в GUI, так и в CLI (я почему отдельно что и где нужно сделать).
Процесс установки
Создание ВМ
В PVE:
- Загружаем и импортируем образ Ubuntu Server 22.04 в PVE (прямая ссылка на ISO-образ Ubuntu)
- Создаем ВМ с произвольным названием указываем наш ISO как загрузочный (установочный) образ
- Перед ее запуском, сверяемся с параметрами:
- Ресурсы (рекомендовано под 1 ВМ, можно и больше):
- ЦПУ, ядер: 4 (важно: тип ЦПУ - "host")
- ОЗУ, ГБ: 4
- СХД, ГБ: 75 (в моем случае, SSD)
- Machine: q35
- Display: SPICE
- Ресурсы (рекомендовано под 1 ВМ, можно и больше):
- (ВАЖНО!) Устанавливаем сетевой адаптер - для установки нам понадобится интернет
Получается примерно так:
Дальше, устанавливаем ОС. Из важных моментов:
- Ubuntu наверняка вам предложит обновить установочный скрипт на более новую версию. В моменте, лучше согласиться с обновлением. Если вы не согласились - ничего страшного, на работу системы это не влияет;
- На моменте разметки, выделите LVM больше места (чтобы убрать свободное место, в установщике оно помечено как "free space");
- Мы установили Display типа SPICE (qxl). Это сыграет в плане производительности. Но с нюансом...
Важно понимать, что привычная Console в ВЕБ (сверху справа) через него не откроется - в моем случае, PVE 9 версии по этой кнопке начинает скачивать обрывки сертификата (и это не зависит от браузера). Не пугайтесь, установку вы можете продолжить из одноименной вкладки слева:
В крайнем случае, вы можете временно изменить значение параметра на default.
TIP: Переходите к следующему после того, как вы установите систему
Установка WayDroid
Установка GUI
Важно понимать, что WayDroid работает исключительно в GUI. При том, только на Wayland.
Поэтому первым шагом его необходимо установить. Делается это 3 командами:
# Опционально: установка времени (в примере - Москва)
timedatectl set-timezone Europe/Moscow
# Синхронизация с репозиториями
apt update
# Установка последних обновлений пакетов на ОС (может занять какое-то время)
apt upgrade -y
# Установка доп. ПО - оно будет полезно дальше
apt install -y curl wget nano
# Установка GUI на Wayland (может занять какое-то большое кол-во времени)
apt install -y ubuntu-desktop-minimal
После установки, нам нужно сделать еще 1 вещь: заставить ОС грузиться не в терминальную, а в графическую оболочку. Делается это двумя командами, включая перезагрузку.
sudo systemctl set-default graphical.target
reboot
Ждем, пока ВМ перезагрузится. Затем - первый вход.
Важно!
- Входим от обычного пользователя (не root);
- При входе, после выбора пользователя, нажимаем на "шестеренку" (⚙️) и выбираем Ubuntu (без каких-либо приписок).
После первого входа в ОС, в терминале проверяем, что мы используем верный GUI-менеджер:
echo $XDG_SESSION_TYPE
# Ожидаем вывод:
# wayland
Если вывод совпадает (wayland) - переходим к дальнейшей установке. В противном случае - гуглим.
Установка эмулятора WayDroid
Здесь все просто. Все делается в 3 команды:
sudo apt install -y curl
curl https://repo.waydro.id | sudo bash
sudo apt install -y waydroid
После этого, у вас должна появиться команда "waydroid" в CLI.
Запуск первого приложения
Скачивание образов
Скачиваем образы Android:
# Без сервисов GooglePlay
sudo waydroid init
# С сервисами GooglePlay (не самый стабильный, но возможный вариант)
sudo waydroid init -s GAPPS
В случае, если вы получаете таймаут:
Вы можете попробовать временно отключить IPv6. Часто, это решает проблему:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
После чего повторите команды выше.
Запуск приложения
Если здесь будут использованы команды из CLI - они выполняются в GUI-сессии, а не через SSH!
Теперь,



