Как установить Bliss OS (Android 13) в QEMU/KVM и настроить adb
Bliss OS в QEMU/KVM — полный гайд от ISO до рабочего adb
Проверено на хосте с libvirt-мостом virbr0, QEMU 7.2.18, KVM. Цель — поднять x86_64
Android-окружение (Bliss OS, Android 13) для тестирования приложений через SAF/DocumentsProvider,
устанавливаемых через adb install.
0. Итоговые грабли (коротко, для себя)
- Диск ставить БЕЗ
if=virtio(обычный IDE). Инсталлятор Bliss/Android-x86 рассчитан на/dev/sda-именование приgrub-install; сif=virtio(/dev/vda) установка "успешно" завершается, но GRUB на диске не грузится — SeaBIOS вечно висит наBooting from Hard Disk.... - Партиционировать как dos (MBR), не gpt (GPT+BIOS без bios_grub-раздела тоже не взлетит с этим установщиком).
- Один primary-раздел на весь диск, флаг bootable — обязательно.
- При загрузке уже установленной системы выбирать в GRUB-меню пункт без аппаратного ускорения графики (обычно что-то вроде "Debug mode" / без "(auto)"-акселерации) — стандартная загрузка с acceleration виснет на чёрном экране из-за проблем видеодрайвера ядра с виртуальной видеокартой в QEMU (qxl/virtio-gpu). Без акселерации грузится медленно, но стабильно.
- ADB поднимается без реального USB и без "ADB over network" в настройках: через Termux внутри гостя,
adb tcpip 5555, выполненный локально — переключает системныйadbdв TCP-режим, после чего с хоста обычныйadb connectподключается.:5555
1. Скачать ISO
Bliss OS x86_64, Android 13, официальная сборка с GApps:
☯
Terminal:
⌕
≡
✕
mkdir -p /var/lib/libvirt/images cd /var/lib/libvirt/images wget -O bliss-x86_64.iso \ "https://sourceforge.net/projects/blissos-x86/files/Official/BlissOS16/Gapps/Generic/Bliss-v16.9.7-x86_64-OFFICIAL-gapps-20241011.iso/download"
(Актуальную версию/ссылку можно свериться на https://sourceforge.net/projects/blissos-x86/files/ —
берётся Official/BlissOSxx/Gapps/Generic/*.iso.)
2. Создать диск
☯
Terminal:
⌕
≡
✕
sudo qemu-img create -f qcow2 /var/lib/libvirt/images/blissos.qcow2 24G
24G с запасом хватает под систему + gapps + тестовые приложения.
3. Запуск для установки (загрузка с ISO)
Диск без if=virtio (по умолчанию IDE), машина pc (legacy BIOS, не q35),
видео std (не qxl — с ним ядро Android виснет на чёрном экране), поинтер virtio-tablet
(не usb-tablet — тому нужен -usb/USB-контроллер, которого тут нет):
☯
Terminal:
⌕
≡
✕
sudo qemu-system-x86_64 \
-enable-kvm -m 4096 -smp 2 \
-machine pc -cpu host \
-drive file=/var/lib/libvirt/images/blissos.qcow2,format=qcow2 \
-cdrom /var/lib/libvirt/images/bliss-x86_64.iso \
-boot order=d \
-netdev bridge,br=virbr0,id=net0 \
-device virtio-net-pci,netdev=net0,mac=52:54:00:aa:00:03 \
-vga std -device virtio-tablet \
-spice port=5935,disable-ticketing=on \
-device intel-hda -device hda-duplex \
-monitor stdioПодключиться графикой: remote-viewer spice:// (или любой spice-клиент).
4. Установка — пошагово, все развилки
В загрузочном меню ISO выбрать Installation - Install Android-x86 to harddisk.
- Choose Partition → диск пустой → перейти к созданию раздела (
Create/Modify partitions→ cfdisk). - cfdisk спросит тип таблицы разделов: dos (не gpt/sgi/sun — dos это MBR, нужен для legacy BIOS-загрузки, которую тут использует GRUB-скрипт установщика).
- Создать раздел: New → Primary → размер — весь диск (Enter на дефолтном максимуме).
- Выделить созданный раздел → Bootable (проставить флаг active/bootable — без него BIOS может не счесть диск загрузочным).
- Write → подтвердить
yes→ Quit из cfdisk. - Установщик спросит формат раздела → ext4 → Yes.
- Install boot loader GRUB2 → Yes.
- Начнётся "Copying files..." — прогресс копирования системы (ядро, ramdisk, system-образ, gapps). Дождаться полного завершения, не прерывать и не ребутить раньше времени — если прогресс завершается подозрительно быстро (пара секунд вместо минуты+), это тревожный признак, что копирование не сработало (см. п.0 про сам факт установки).
- Do you want to install/make system directory read-write? → Yes (пригодится для adb/root).
- Installation complete → экран с пунктами Run BlissOS / Reboot. -
Run BlissOSтут же запускает установленную систему в обход GRUB/ребута — полезно для быстрой проверки, что install не битый (но эта загрузка тоже идёт с аппаратным ускорением и точно так же виснет на чёрном экране — это ожидаемо, не признак поломки, см. п.6).
5. Обычный запуск (после установки)
Убрать -cdrom и -boot order=d → order=c:
☯
Terminal:
⌕
≡
✕
sudo qemu-system-x86_64 \
-enable-kvm -m 4096 -smp 2 \
-machine pc -cpu host \
-drive file=/var/lib/libvirt/images/blissos.qcow2,format=qcow2 \
-boot order=c \
-netdev bridge,br=virbr0,id=net0 \
-device virtio-net-pci,netdev=net0,mac=52:54:00:aa:00:03 \
-vga std -device virtio-tablet \
-spice port=5935,disable-ticketing=on \
-device intel-hda -device hda-duplex \
-monitor stdio6. GRUB-меню — какой пункт выбирать
Появится меню GRUB со списком вариантов загрузки. **Обычный/дефолтный пункт (с аппаратным
ускорением графики) виснет на чёрном экране** ("Booting from Hard Disk" / пустой экран,
хотя info status в мониторе QEMU покажет running — гость реально работает, просто не рисует).
Выбрать пункт без аппаратного ускорения (в меню обычно явно помечен, что-то вроде
"Debug mode" / без "(auto)"). Грузится заметно медленнее (софтверный рендеринг вместо GPU),
но стабильно доходит до рабочего стола Android.
Диагностика в процессе (если понадобится ещё раз):
- Монитор QEMU (тот же терминал,
-monitor stdio):info status—runningзначит гипервизор жив, гость выполняется, а не завис на уровне QEMU/KVM. top -p $(pgrep -f blissos.qcow2 | head -1)на хосте — CPU-нагрузка процесса qemu.- Полностью безграфичный дебаг (если снова возникнет чёрный экран без понятной причины):
-display none -serial mon:stdioвместо spice — покажет текстовый вывод BIOS/GRUB прямо в терминале.
7. Первый вход в Android UI
Стандартная Android-навигация (мышь работает как палец — клик = тап, virtio-tablet даёт
абсолютные координаты):
- Домашний экран → кнопка/жест (свайп вверх) открывает App Drawer со всеми приложениями.
- Тап по иконке — запуск.
8. Настройка adb (без физического USB, без "ADB over network")
- Settings → About tablet/device → тапнуть Build number 7 раз подряд → включатся Developer options.
- Settings → System → Developer options → включить USB debugging.
- Поставить/открыть Termux внутри гостя (терминал с пакетным менеджером
pkg). - В Termux: ``
pkg update pkg install android-tools adb tcpip 5555`Это выполняется локально на устройстве — Termux-адб цепляется к системномуadbd` через локальный сокет (не через настоящий USB) и переключает его в TCP-режим на порту 5555. - Узнать IP гостя: Settings → About → Status (или на хосте
ip neigh/arp -n | grep 52:54:00:aa:00:03, если сеть черезvirbr0с DHCP). - С хоста: ``
bash adb connect``:5555 adb devices # должен появиться :5555 device
9. Установка и запуск тестируемого приложения
☯
Terminal:
⌕
≡
✕
cd /home/ramanzes/myapp/APPS/android2/cifs-documents-provider ./gradlew :app:assembleDebug adb -s:5555 install -r app/build/outputs/apk/debug/app-debug.apk adb -s :5555 shell monkey -p com.wa2c.android.cifsdocumentsprovider \ -c android.intent.category.LAUNCHER 1
-
Создано 25.10.2026 10:49:00
-
Roman Sakhno

Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.