L'emulatore Android e la virtualbox non possono essere eseguiti contemporaneamente


104

Ogni volta che ho Virtualbox in esecuzione, non posso avviare un'immagine di emulatore Android (e viceversa). Il messaggio di errore nel gestore AVD è

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

Come posso far funzionare entrambi allo stesso tempo?

Questo è un Ubuntu a 64 bit, tutto il software coinvolto è dell'ultima versione rilasciata.

Risposte:


40

La rimozione dei moduli del kernel kvm (utilizzando 'sudo rmmod kvm_intel kvm') rende possibile eseguire contemporaneamente Virtualbox e l'emulatore Android, ma le prestazioni dell'emulatore Android in tale configurazione sono estremamente pessime. Se possibile è meglio chiudere l'emulatore Virtualbox e scaricare il suo driver (vboxdrv) eseguendo 'sudo /etc/init.d/vboxdrv stop'. Google suggerisce questa "soluzione" sulla sua pagina Emulatore Android nella sezione su Linux.


9
Il mio backend richiedeva che l'app avesse dati in esecuzione su VirtualBox (Vagrant), quindi non è un'ottima opzione: P
Richard de Wit

4
Questa soluzione # @%! È dovuta al fatto che devo eseguirli entrambi contemporaneamente .. il mio servizio HTTPD è in Virtual Box, mentre la mia App è in Android .. / mi sospira. Immagino, è ora di accendere di nuovo il server di sviluppo.
E Net Arch

1
Un'altra opzione potrebbe essere quella di utilizzare Docker invece di VirtualBox in combinazione con l'emulatore Android.
Matt Welke

1
Oppure esegui Vagrant con KVM.
Michael Hampton

Grazie @MichaelHampton. Ho installato vagrant-libvert e ha funzionato!
jchook

30

Ho lo stesso conflitto di VirtualBox. Risolto usando ABI diverso da "x86" (armeabi-v7a nel mio caso)


Molto più elegante dello shtting della VM esistente. Grazie.
MonoThreaded

2
Triste di sentire questo.
MatBee

Presumibilmente l'emulatore verrà eseguito lentamente in questo modo, ma è un'opzione.
ToolmakerSteve

Nel mio caso ho anche bisogno della VM VirtualBox per funzionare (per RDP), quindi questo è stato davvero un buon consiglio.
Csaba Toth

2
@rudolfbyker, la risposta dice che gli emulatori che funzionano con CPU / ABI x86 / x86_64 sono molto più veloci, ma utilizzano lo stesso KVM (macchina virtuale basata sul kernel) di VitualBox. Creazione di un emulatore con un'altra CPU, come arm64, si è in conflitto con VirtualBox, ma emulatore è un molto più lento.
jayeffkay

16

Ho fermato le macchine virtuali che avevo in esecuzione con VirtualBox. Questo ha fatto scomparire l'errore.


Questo ha funzionato per me in Fedora 20. Con schermi più grandi, più RAM e spazi di lavoro Gnome 3, è facile dimenticare che stai eseguendo un'altra macchina da qualche parte in background. killall virtualboxdovrebbe farlo.
Ray Foss

Funziona ma non è la soluzione migliore. Puoi averli entrambi (vedi la risposta di Stanislav)
MonoThreaded

Ho avuto questo problema con Ubuntu 16 durante l'utilizzo della macchina docker e dei driver della scatola virtuale. l'interruzione del VM con docker-machine stop machine-namerisolto il problema come suggerito in questa risposta
Benjamin Slabbert

Si scopre che la semplice chiusura della GUI di VirtualBox e delle VM non farà il trucco. Nel mio caso avevo diversi processi di virtualbox ancora in esecuzione: VBoxSVC, VBoxNetDHCP, VBoxXPCCOMIPCD. Ucciderli in alto / in alto ha risolto il problema.
Babken Vardanyan

La domanda era "Come posso far funzionare entrambi allo stesso tempo?".
Stephen M -on sciopero-

5

Ho avuto lo stesso problema su Ubuntu 13.10. Prova a rimuovere i moduli del kernel kvm e kvm_intel.

Per fare questo:

  1. Ferma tutti gli emulatori.
  2. Esegui comando: 'sudo rmmod kvm_intel kvm'

Senza questi moduli del kernel, Virtualbox e gli emulatori Android possono funzionare allo stesso tempo.

BTW, non so perché i moduli vengono caricati.


16
Un avvertimento: sebbene funzioni, la rimozione dei moduli del kernel KVM provocherà un sostanziale calo delle prestazioni con l'immagine Intel Android, poiché si perde il supporto dell'accelerazione hardware della CPU senza i moduli del kernel.
JustJohn

1
@Tajchert: per ripristinare: 'sudo modprobe kvm_intel kvm'
Splitlocked

Gli emulatori x86 ... si rifiutavano di funzionare senza moduli KVM. Bah.
Martlark

sono necessari entrambi i driver
user1121055

5

C'è finalmente una soluzione per questo.

Segui questi passaggi per macOS :

  1. In Android Studio vai su Strumenti -> Android -> SDK Manager

  2. Conferma di avere l'ultima versione di Intel Emulator Accelerator HAXM installata (v6.1.1) Pannello delle preferenze in Android Studio.

  3. Vai alla extrasdirectory della posizione dell'SDK Android visualizzata nelle preferenze. Su MacOS puoi farlo:

    open ~/Library/Android/sdk/extras

  4. Installa il pacchetto HAXM aprendo IntelHAXM_6.1.1.dmg, quindi aprendo IntelHAXM_6.1.1.mpkg nella cartella montata e seguendo le istruzioni del programma di installazione.

Segui questi passaggi per Windows :

  1. In Android Studio vai su Strumenti -> Android -> SDK Manager

  2. Conferma di avere l'ultima versione di Intel Emulator Accelerator HAXM installata (v6.1.1) Pannello delle preferenze in Android Studio.

  3. Vai alla extrasdirectory della posizione dell'SDK Android visualizzata nelle preferenze. Qualcosa di simile a:

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

  4. In quella directory c'è una sorta di file come intelhaxm-android.exe. Eseguirlo.


2
Esiste anche una correzione per Ubuntu 16.04.3?
sanders

HAXM non supporta macchine virtuali annidate!
Jorgesys

Che mi dici di KVM? Come posso fare lo stesso?
Vadim Kotov

Non si tratta di macchine virtuali annidate. Il problema in questo argomento riguarda le macchine virtuali affiancate. E non ha assolutamente senso che questo non funzioni,
Lothar il

E non esiste una soluzione per Linux. Ancora sfortuna per l'utilizzo di Linux. Ciò significa che ora devo scegliere Windows come server di compilazione.
Lothar

4

È inoltre possibile modificare l'impostazione CPT / ABI da x86 per armare nelle impostazioni dell'emulatore.


2
Ma poi l'emulatore sarà lento come l'inferno ... ma almeno puoi eseguirli entrambi allo stesso tempo;)
biophonc

4

Alla fine ho reso questo problema obsoleto utilizzando Genmony invece dell'emulatore Android standard. Oltre a non avere questo conflitto, è molte volte più veloce del normale emulatore.


è un software gratuito?
vishnu viswanath

@vishnu viswanath Solo per casi d'uso a scopo non commerciale. Per saperne di più, fai clic su gen.com/legal/terms-and-conditions sotto "Licenza concessa: limitata". Il che dice: questa licenza è concessa all'utente finale solo ed esclusivamente in relazione all'uso personale, l'utente finale è un individuo, e non un professionista, che scarica l'applicazione per esigenze personali e private, escluso l'ambiente commerciale e professionale.
mykolaj

1
Questo probabilmente è scomparso perché genmony non utilizzava KVM. Né stabile (perché a un certo punto inizieranno a usarlo) , né soluzione performante.
Hi-Angel

Grazie per aver commentato questa opzione. Installerei Genmony for Personal Use in Ubuntu 18.04 e ora posso usare le mie macchine VirtualBox allo stesso tempo :)
Fer B.


2

Anche se è una soluzione alternativa, ma decisamente meglio che disabilitare KVM come suggeriscono tutti.

Esegui invece il guest virtualbox in KVM. Ad esempio ( kvmqui è solo uno script che esegue a qemu-system-x86_64 -enable-kvm) :

kvm Win7.vdi -boot c -m 2G -vga qxl

Questo ha risolto il problema per me, tuttavia non riesco a capire come fare in modo che la mia immagine virtuale si connetta a Internet e per qualche motivo la mappatura della tastiera è tutta incasinata ..
MikeSchem

@MikeSchem sì, sfortunatamente configurare una rete in KVM / QEMU è un grosso problema. Ai tempi in cui ho scritto la risposta non ho tempo di mettere in funzione la rete perché dopo alcune manipolazioni il guest di Windows ha iniziato a cadere con BSOD all'avvio in KVM, mentre funzionava ancora in VB.
Hi-Angel


1

In alcuni casi, è necessario mantenere le macchine virtualbox attive e in esecuzione, quindi lasciare che tutte le macchine virtualbox continuino a funzionare, passare al dispositivo mobile fisico per testare l'applicazione invece dell'emulatore.

puoi usare expo se stai facendo con React Native o il tuo vero dispositivo Android / ios.


0

Questo potrebbe essere fuori tema, perché OP ha richiesto VirtualBox + KVM nello stesso tempo, ma potrebbe comunque essere la soluzione alternativa: stavo cercando un modo per avviare Windows 7 e AVD su Ubuntu 18.10 x64. La disattivazione di KVM non è un'opzione poiché le prestazioni di AVD sono fondamentali per me. Ho installato Windows 7 tramite Virtual Machine Manager (pacchetto virt-manager) e ora sia AVD che Windows 7 sono accelerati hardware.


0

Ecco come è stato risolto questo problema, usando vagrant ed i suoi due plugin 'libvirt' e 'mutate':

  1. Apri il terminale e imposta le variabili d'ambiente:

     export VAGRANT_DEFAULT_PROVIDER=libvirt
     export VAGRANT_HOME=/home/directoryToStoreVagrant/
     VBoxManage list vms
    
  2. Ora copia il codice ottenuto dall'ultimo comando come "c1530713-aec2-4415-a6b5-b057928c7e5f" e usa quanto segue:

    pacchetto vagabondo - base c1530713-aec2-4415-a6b5-b057928c7e5f --output window7.box

     vagrant init window7
     vagrant up window7 --provider=libvirt 
     vagrant box list
    
  3. Devi installare alcuni plugin vagabondi come libvirt e mutate . Mutate convertirà .box in libvirt VM:

    plug-in vagrant installa vagrant-libvirt plug-in vagrant installa vagrant-mutate

  4. Conversione di vagrant box in libvirt:

    vagrant mutate window7_.box libvirt

  5. Ora puoi inizializzare la VM vagabonda. Se l'errore persiste, spostati per modificare il tuo file Vagrant. Come per me, ho rimosso il commento dalla riga che inizia con config.vm.network e quindi esegui il comando di seguito:

    vagrant up --provider=libvirt

È così che sono riuscito a sbarazzarmi completamente di questo errore

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.