Эмулятор Android и виртуальный бокс не могут работать одновременно

104

Когда у меня запущен Virtualbox, я не могу запустить образ эмулятора Android (и наоборот). Сообщение об ошибке в диспетчере AVD:

ioctl(KVM_CREATE_VM) failed: Device or resource busy
ko:failed to initialize KVM

Как я могу заставить работать оба одновременно?

Это 64-разрядная версия Ubuntu, все задействованное программное обеспечение последней выпущенной версии.

Bananeweizen
источник

Ответы:

40

Удаление модулей ядра kvm (с помощью sudo rmmod kvm_intel kvm) позволяет одновременно запускать Virtualbox и эмулятор Android, но производительность эмулятора Android в такой настройке крайне низка. Если возможно, лучше выключить эмулятор Virtualbox и выгрузить его драйвер (vboxdrv), запустив sudo /etc/init.d/vboxdrv stop. Google предлагает это «решение» на своей странице эмулятора Android в разделе о Linux.

Traber
источник
9
Моему бэкэнду требовалось, чтобы приложение запускало данные на VirtualBox (Vagrant), так что это не лучший вариант: P
Ричард де Вит,
4
Это решение # @%! Связано с тем, что мне нужно запускать оба одновременно ... моя служба HTTPD находится в Virtual Box, а мое приложение - в Android ... / я вздыхаю. Думаю, пора снова запустить Dev Server.
E Net Arch
1
Другой вариант - использовать Docker вместо VirtualBox в сочетании с эмулятором Android.
Мэтт Велк,
1
Или запустите Vagrant с KVM.
Майкл Хэмптон
Спасибо @MichaelHampton. Я установил vagrant-libvert, и все заработало !
jchook
30

У меня такой же конфликт VirtualBox. Решил, используя ABI, отличный от "x86" (armeabi-v7a в моем случае)

Станислав Макаренко
источник
Гораздо элегантнее, чем отключение существующей виртуальной машины. Спасибо.
MonoThreaded
2
Прискорбно это слышать.
MatBee
Предположительно, таким образом эмулятор будет работать медленно, но это вариант.
ToolmakerSteve
В моем случае мне также нужна виртуальная машина VirtualBox для запуска (для RDP), так что это был действительно хороший совет.
Csaba Toth
2
@rudolfbyker, в ответе говорится, что эмуляторы, которые работают с CPU / ABI x86 / x86_64, намного быстрее, но используют ту же KVM (виртуальную машину на основе ядра), что и VitualBox. Создание эмулятора с другим процессором, например arm64, не будет конфликтовать с VirtualBox, но эмулятор работает намного медленнее.
jayeffkay
16

Я остановил виртуальные машины, которые у меня были с VirtualBox. Это заставило ошибку исчезнуть.

Оле Танге
источник
У меня это сработало в Fedora 20. С большими дисплеями, большим объемом оперативной памяти и рабочими пространствами Gnome 3 легко забыть, что вы запускаете другую машину где-то в фоновом режиме. killall virtualboxдолжен это сделать.
Рэй Фосс
Работает, но не лучшее решение. Вы можете получить их обоих (см. Ответ Станислава)
MonoThreaded
У меня была эта проблема с Ubuntu 16 при использовании драйверов докер-машины и виртуального ящика. остановка vms docker-machine stop machine-nameрешила проблему, как предлагается в этом ответе
Бенджамин Слабберт
Оказывается, просто отключение VirtualBox GUI и виртуальные машины не помогут. В моем случае у меня все еще работало несколько процессов виртуального бокса: VBoxSVC, VBoxNetDHCP, VBoxXPCCOMIPCD. Убийство их в top / htop решило проблему.
Бабкен Варданян
Возник вопрос: «Как заставить работать обе программы одновременно?».
Stephen M - забастовка -
5

У меня была такая же проблема на Ubuntu 13.10. Попробуйте удалить модули ядра kvm и kvm_intel.

Сделать это:

  1. Остановите все эмуляторы.
  2. Выполните команду: 'sudo rmmod kvm_intel kvm'

Без этих модулей ядра Virtualbox и эмуляторы Android могут работать одновременно.

Кстати, не знаю почему загружаются модули.

Александр Жуков
источник
16
Небольшое предупреждение: хотя это действительно работает, удаление модулей ядра KVM приведет к существенному снижению производительности с образом Intel Android, так как вы потеряете поддержку аппаратного ускорения ЦП без модулей ядра.
JustJohn
1
@Tajchert: для возврата: 'sudo modprobe kvm_intel kvm'
Splitlocked
Эмуляторы x86 ... отказались работать без модулей KVM. Ба.
Martlark
нужны оба драйвера
user1121055
5

Наконец-то есть исправление.

Для macOS выполните следующие действия :

  1. В Android Studio перейдите в Инструменты -> Android -> Диспетчер SDK.

  2. Убедитесь, что у вас установлена ​​последняя версия Intel Emulator Accelerator HAXM (v6.1.1) Панель настроек в Android Studio.

  3. Перейдите в extrasкаталог расположения Android SDK, отображаемый в настройках. В MacOS вы можете сделать это:

    open ~/Library/Android/sdk/extras

  4. Установите упаковку HAXM, открыв IntelHAXM_6.1.1.dmg, затем открыв IntelHAXM_6.1.1.mpkg в смонтированной папке и следуя инструкциям установщика.

Для Windows выполните следующие действия :

  1. В Android Studio перейдите в Инструменты -> Android -> Диспетчер SDK.

  2. Убедитесь, что у вас установлена ​​последняя версия Intel Emulator Accelerator HAXM (v6.1.1) Панель настроек в Android Studio.

  3. Перейдите в extrasкаталог расположения Android SDK, отображаемый в настройках. Что-то вроде:

    C:\Users\<username>\AppData\Local\Android\sdk\extras

  4. В этом каталоге есть какой-то файл вроде intelhaxm-android.exe. Запустить его.

пахарь
источник
2
Есть ли исправление для Ubuntu 16.04.3?
sanders
HAXM не поддерживает вложенные виртуальные машины!
Jorgesys
А как насчет KVM? Как я могу сделать то же самое?
Вадим Котов
Это не о вложенных виртуальных машинах. Проблема в этом разделе касается параллельных виртуальных машин. И совершенно бессмысленно, что это не должно работать,
Лотар
А для линукса решения нет. Опять неудача с использованием Linux. Это означает, что теперь мне нужно выбрать Windows в качестве сервера сборки.
Lothar
4

Вы также можете изменить настройку CPT / ABI с x86 на arm в настройках эмулятора.

0x8BADF00D
источник
2
Но тогда эмулятор будет чертовски медленным ... но, по крайней мере, вы можете запускать оба одновременно;)
biophonc
4

Я, наконец, устарел, используя Genymotion вместо стандартного эмулятора Android. Помимо отсутствия этого конфликта, он в несколько раз быстрее обычного эмулятора.

Bananeweizen
источник
это бесплатное программное обеспечение?
вишну вишванатх
@vishnu viswanath Только для некоммерческих целей. Подробнее читайте здесь genymotion.com/legal/terms-and-conditions ниже «Лицензия предоставлена: с ограничениями». В нем говорится: эта лицензия предоставляется только конечному пользователю и исключительно в связи с личным использованием, конечный пользователь - это физическое лицо, а не профессионал, который загружает приложение для личных и частных нужд, за исключением коммерческой и профессиональной среды.
mykolaj
1
Вероятно, это исчезло, потому что genymotion не использовала KVM. Ни стабильного (потому что в какой-то момент они начнут его использовать) , ни производительного решения.
Hi-Angel
Спасибо, что прокомментировали этот вариант. Я бы установил Genymotion для личного использования в Ubuntu 18.04, и теперь я могу использовать свои машины VirtualBox одновременно :)
Фер Б.
3

Другое решение - использовать vagrant с поддержкой libvirt с помощью плагина vagrant-libvirt .

DHH
источник
2

Хотя это тоже обходной путь, но определенно лучше, чем отключение KVM, как все предлагают.

Вместо этого просто запустите гостевой виртуальный бокс в KVM. Например ( kvmвот только скрипт, выполняющий a qemu-system-x86_64 -enable-kvm) :

kvm Win7.vdi -boot c -m 2G -vga qxl
Привет, ангел
источник
Это решило проблему для меня, однако я не могу понять, как подключить свой виртуальный образ к Интернету, и по какой-то причине перепутано отображение клавиш ...
MikeSchem
@MikeSchem: да, к сожалению, настройка сети в KVM / QEMU - большое дело. Когда я писал ответ, у меня нет времени запускать сеть, потому что после некоторых манипуляций гость Windows начал падать с BSOD при запуске в KVM, все еще работая в VB.
Hi-Angel
1

В некоторых случаях нам необходимо поддерживать работоспособность виртуальных машин, поэтому пусть все виртуальные машины продолжают работать, переключитесь на физическое мобильное устройство для тестирования вашего приложения вместо эмулятора.

вы можете использовать expo, если вы работаете с реактивным или настоящим устройством Android / iOS.

Эшвин Дж. Чхетри
источник
0

Это может быть не по теме из-за того, что OP запросил VirtualBox + KVM в одно и то же время, но, тем не менее, это может быть обходной путь: я искал способ запустить Windows 7 и AVD на Ubuntu 18.10 x64. Отключить KVM нельзя, потому что производительность AVD для меня критична. Я установил Windows 7 через Virtual Machine Manager (пакет virt-manager), и теперь как AVD, так и Windows 7 имеют аппаратное ускорение.

вокасл
источник
0

Вот как решили эту проблему, используя vagrant и два плагина libvirt и mutate:

  1. Откройте терминал и установите переменные среды:

     export VAGRANT_DEFAULT_PROVIDER=libvirt
     export VAGRANT_HOME=/home/directoryToStoreVagrant/
     VBoxManage list vms
    
  2. Теперь скопируйте код, полученный из последней команды, например "c1530713-aec2-4415-a6b5-b057928c7e5f", и используйте в следующем:

    vagrant package --base c1530713-aec2-4415-a6b5-b057928c7e5f --output window7.box

     vagrant init window7
     vagrant up window7 --provider=libvirt 
     vagrant box list
    
  3. Вам необходимо установить некоторые бродячие плагины, такие как libvirt и mutate . Mutate преобразует .box в виртуальную машину libvirt:

    vagrant plugin установить vagrant-libvirt vagrant plugin install vagrant-mutate

  4. Преобразование vagrant box в libvirt:

    vagrant mutate window7_.box libvirt

  5. Теперь вы можете инициализировать бродячую виртуальную машину. Если ошибка не исчезнет, ​​перейдите к редактированию файла Vagrant. Как и я, я раскомментирую строку, начинающуюся с config.vm.network, а затем запускаю команду ниже:

    vagrant up --provider=libvirt

Вот как мне удалось полностью избавиться от этой ошибки

Мухаммад Тайяб
источник