Здравствуйте! Хочу поделиться решением одной проблемы. Как запустить эмулятор на amd-шном процессоре на Windows 10, используя WHPX.

Предыстория


Я собрал года 4 назад домашний комп, который подходил всем моим запросам. На процессоре решил сэкономить — взял amd. К компу вопросов нет.



Потом занялся разработкой под Android и тут меня ждал сюрприз! Эмулятор запускался только на процессоре intel. Его можно было запустить без аппаратной виртуализации конечно, используя вот этот совет www.youtube.com/watch?v=QTbjdBPKnnw&t=127s, но кто пользовался знает, что эмулятор может запускаться очень долго. У меня с 12ГБ доходило до 10 мин. Это может конечно из-за встроенной видеокарты.

Основное рабочее место у меня было в офисе, поэтому особо переживал и тестировал дома на реальных устройствах. Но пару месяцев назад стал нужен именно эмулятор. Первой мыслью было конечно купить intel-овский процессор. Но нужно было покупать ещё материнскую плату и видеокарту. Скорее всего я бы так и поступил, если бы не наткнулся на обновлённые требования к системе. В требованиях написано, что эмулятор всё таки можно запустить на Windows 10 (с обновлениями после апреля 2018) с помощью технологии WHPX.

Теперь основная часть истории, как это сделать. Всё оказалось не так тривиально. Заранее прошу прощения за упущения, потому что не могу назвать себя знатоком ни в “железе”, ни в Windows.

Инструкция


После всех обновлений эмулятор естественно не запустился. AndroidStudio пыталась запустить эмулятор с помощью HAXM и выбрасывала ошибку “Emulator: emulator: ERROR: x86 emulation currently requires hardware acceleration!”.

Далее приведу инструкцию с ссылками упустив кучу подробностей и моих “танцев с бубном”.

Скачиваем утилиты и проверяем поддерживает ли процессор hyper-v.

Должен поддерживать для работы с аппаратной виртуализацией.

2. Обновляем Windows 10 до версии 1803 (апрель 2018):



3. Удаляем HAXM:



4. Включаем в bios режим виртуализации. Он там может называеться IOMMU, а не VT.



5. Качаем обновления для bios с официального сайта. Для моего asus, например, они были здесь.

6. Обновляем bios по инструкции типа этой.

Версия Bios должна стать что-то около 3001:



7. Заходим на сайт microsoft и изучаем инструкцию для включения компонента.

8. Нужно проверить требования Hyper-V. Для этого в командной строке набираем systeminfo. Проверяем, чтобы отображались эти значения:



У меня же вместо это было сообщение:



На официальном сайте написано, что пока не будет стоять Yes-Yes-Yes-Yes система WHPX не будет работать. У меня же эмулятор запускается, при включенной низкоуровневой оболочке.

9. Далее в руководстве предлагается включить компонент hyper-v (он по умолчанию отключен):



В русском переводе наименования несколько отличаются:



Кстати, после отключения компонента “Платформа низкоуровневой оболочки Windows”, “Требования hyper-v” становятся Yes-Yes-Yes-Yes. Не понял этот момент. Если кто разбирается, напишите в комментариях.

10. Определяем, нужно ли нам всё это? Или легче было купить intel)

После этих настроек всё должно заработать:



Хочу отметить, используя технологию WHPX и процессор amd, запуск эмулятора занимает примерно столько же времени, сколько на процессоре intel. Учитывая, что остальное «железо» сравнимо по своим параметрам.

Комментарии (14)


  1. petrovichtim
    12.11.2018 16:45
    +1

    Спасибо за статью, узнать бы теперь как под линуксом всё это заставить работать?


    1. AEP
      12.11.2018 19:27

      Идем на www.android-x86.org и качаем iso-образ. Потом создаем виртуальную машину с помощью KVM. Даем виртуальной машине виртуальный IDE-диск. Устанавливаем на него Android. Готово.

      Вот то же самое, но в виде команд для тех, кто не использует libvirt:

      mkdir android
      cd android
      dd if=/dev/null of=hda.dsk bs=1G seek=4
      qemu-system-x86_64 -m 2048 -enable-kvm -smp 4 -hda hda.dsk -cdrom /tmp/android-x86_64-8.1-rc2.iso -vga std


      При желании, можно выставить правильное разрешение экрана и добавить интеграцию указателя мыши (полезно при наличии сенсорного экрана). Для этого запускаем терминал, делаем там su, а затем:

      mkdir -p /data/system/devices/idc
      echo 'touch.deviceType = touchScreen' > \
      /data/system/devices/idc/Vendor_0627_Product_0001.idc
      chown -R system:system /data/system/devices
      mkdir /mnt/sda1
      mount /dev/block/sda1 /mnt/sda1
      sed -i '/SRC/s/$/ video=1920x1080/' /mnt/sda1/grub/menu.lst
      umount /mnt/sda1
      reboot


      После этого KVM можно запускать так:

      qemu-system-x86_64 -show-cursor -m 2048 -enable-kvm -smp 4 -hda hda.dsk -display sdl -vga std -device qemu-xhci -device usb-tablet


      Или, если QEMU собран с поддержкой virglrenderer (т.е. не в Ubuntu), можно еще включить аппаратно ускоренный OpenGL:

      qemu-system-x86_64 -show-cursor -m 2048 -enable-kvm -smp 4 -hda hda.dsk -display sdl,gl=on -vga virtio -device qemu-xhci -device usb-tablet


    1. HSerg
      13.11.2018 00:31

      В android-sdk всё необходимое уже есть.


  1. OneeL
    12.11.2018 16:50

    С какой-то версии в эмуляторе появились snapshots developer.android.com/studio/run/emulator#snapshots. С ними можно дополнительно ускорить запуск эмулятора, правда одновременно с этим замедляется его остановка (создается тот самый snapshot).

    Интересно, насколько это ускорило бы запуск, без использования описанного в статье подхода.


  1. saag
    12.11.2018 16:54
    +1

    Genymotion?


    1. Solexid
      12.11.2018 21:21

      NOX В этом плане гораздо лучше. Чего стоит прозрачная работа с adb без необходимости перезапуска сервера в tcp режиме. Хотя возможно в генимоушен это починили — но у меня он всегда работал неадекватно.


  1. Solexid
    12.11.2018 23:04

    >Может называться IOMMU
    У амд то что вы ищете называется SVM и оно у вас уже включено.


    1. FlamyXD
      13.11.2018 12:49

      Не обязательно, на моем AMD Ryzen 2600 + MSI B450M Gaming Plus виртуализация по умолчанию отключена.
      Я думаю это связано с тем, что некая софтина Ryzen Master не запускается при включенной SVM.


  1. lexxcorp
    13.11.2018 00:23

    Вот блин, пользовался эмулятором с амд процессором и даже не думал что может быстрее работать на интеле


  1. lexxcorp
    13.11.2018 00:25

    Вот блин, пользовался эмулятором с амд процессором, и даже не думал что на интеле будет быстрее работать.


  1. HSerg
    13.11.2018 00:29

    Лучше раскрыть аббревиатуру WHPX, а то Hyper-V только в середине статьи упоминается. И написать нулевым пунктом про необходимость Windows 10 Pro (для HAXM же хватает Windows 10 Home).


  1. darksshvein
    13.11.2018 11:38

    а не проще ли было линукс использовать, вместо того чтобы с шиндошс пердолиться?