Емулятор Android та virtualbox не можуть працювати одночасно


104

Щоразу, коли у мене працює Virtualbox, я не можу запустити зображення емулятора Android (і навпаки). Повідомлення про помилку в диспетчері AVD є

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

Як я можу змусити обох бігати одночасно?

Це 64-бітний Ubuntu, все включене програмне забезпечення має останню випущену версію.

Відповіді:


40

Видалення модулів ядра kvm (за допомогою 'sudo rmmod kvm_intel kvm') дозволяє одночасно запускати Virtualbox та емулятор Android, але продуктивність Android-емулятора в таких налаштуваннях надзвичайно погана. Якщо можливо, краще вимкнути емулятор Virtualbox та розвантажити його драйвер (vboxdrv), запустивши "sudo /etc/init.d/vboxdrv stop". Google пропонує це «рішення» на своїй сторінці Android Emulator у розділі про Linux.


9
Мій бекенд вимагав, щоб у додатку працювали дані на VirtualBox (Vagrant), тому це не чудовий варіант: P
Річард де Віт

4
Це рішення # @%! Пояснюється тим, що мені потрібно запустити обидва одночасно .. моя служба HTTPD знаходиться у віртуальній скриньці, а моя програма в Android .. / зітхає. Здогадайтесь, саме час знову запустити сервер Dev.
E Net Arch

1
Іншим варіантом може бути використання Docker замість VirtualBox спільно з емулятором Android.
Метт Уелк

1
Або запустити Vagrant з KVM.
Майкл Хемптон

Дякую @MichaelHampton Я встановив vagrant-libvert і він працював!
jchook

30

У мене той самий конфлікт VirtualBox. Вирішили це за допомогою ABI, відмінного від "x86" (Armeabi-v7a в моєму випадку)


Набагато елегантніше, ніж заторгати існуючий VM вниз. Дякую.
MonoThreaded

2
Сумно почути це.
MatBee

Імовірно, емулятор буде працювати повільно таким чином, але це варіант.
ToolmakerSteve

У моєму випадку мені також потрібна VM VirtualBox для запуску (для RDP), тому це була дійсно гарна порада.
Csaba Toth

2
@rudolfbyker, що відповідь говорить, що емулятори, які працюють із процесором / 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 не допоможе. У моєму випадку у мене було ще кілька процесів віртуальних скриньок: VBoxSVC, VBoxNetDHCP, VBoxXPCCOMIPCD. Вбивство вгорі / htop вирішило проблему.
Бабкен Варданян

Питання було "Як я можу змусити обох бігати одночасно?".
Стівен М -на страйк-

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 перейдіть до Інструменти -> 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 перейдіть до Інструменти -> 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?
Сандер

HAXM не підтримує вкладені віртуальні машини!
Хорхесіс

Що з КВМ? Як я можу зробити те саме?
Вадим Котов

Йдеться не про вкладені віртуальні машини. Проблема в цій темі полягає у поруч із віртуальними машинами. І зовсім не має сенсу, що це не повинно працювати,
Лотар

І для Linux немає рішення. Невдача знову для використання Linux. Це означає, що мені зараз потрібно вибрати Windows як мій сервер побудови.
Лотар

4

Ви також можете змінити налаштування CPT / ABI з x86 на налаштування емулятора.


2
Але тоді емулятор буде повільним, як пекло ... але принаймні ви можете запустити і те й інше;)
biophonc

4

Нарешті я усунув цю проблему застарілою, використовуючи Genymotion замість стандартного емулятора Android. Крім того, що у вас немає цього конфлікту, він у кілька разів швидший, ніж звичайний емулятор.


це безкоштовне програмне забезпечення?
vishnu viswanath

@vishnu viswanath Тільки для випадків використання в некомерційних цілях. Детальніше читайте тут genymotion.com/legal/terms-and-conditions нижче "Ліцензія надана: Обмежена". Що говорить: Ця ліцензія надається лише кінцевому користувачеві та виключно у зв’язку з особистим використанням, кінцевий користувач - це фізична особа, а не професіонал, який завантажує програму для особистих та приватних потреб, виключаючи комерційне та професійне середовище.
Миколай

1
Це, ймовірно, зникло, оскільки генімоція не використовувала КВМ. Ні стабільним (бо в якийсь момент вони почнуть його використовувати) , ні ефективним рішенням.
Привіт-Ангел

Дякуємо, що прокоментували цю опцію. Я б встановив Genymotion для особистого використання в Ubuntu 18.04, і тепер я можу одночасно використовувати свої машини VirtualBox :)
Fer B.

3

Іншим рішенням є використання бродячого з підтримкою libvirt за допомогою плагіна vagrant-libvirt .


2

Хоча це теж вирішення, але, безумовно, краще, ніж відключення KVM, як усі пропонують.

Просто замість цього запустіть гість virtualbox у 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.
Привіт-Ангел


1

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

ви можете використовувати expo, якщо ви працюєте з натисною реакцією або вашим реальним пристроєм для android / ios.


0

Це може бути поза темою, через те, що ОП запитував 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", і використовуйте наступне:

    пакет для бродяг - base c1530713-aec2-4415-a6b5-b057928c7e5f - вихідне вікно7.box

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

    vagrant плагін встановити vagrant-libvirt vagrant плагін встановити vagrant-mutate

  4. Перетворення бродячого поля в лібвірт:

    vagrant mutate window7_.box libvirt

  5. Тепер ви можете ініціалізувати бродячий VM. Якщо будь-яка помилка зберігається, перейдіть до редагування вашого файлу Vagrant Як і для мене, я коментую, що рядок починається з config.vm.network, а потім виконую команду нижче:

    vagrant up --provider=libvirt

Ось як я зміг повністю позбутися цієї помилки

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.