Android öykünücüsü ve sanal kutu aynı anda çalışamaz


104

Virtualbox'ı her çalıştırdığımda, bir Android öykünücü görüntüsünü başlatamıyorum (ve tersi). AVD yöneticisindeki hata mesajı

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

Her ikisinin aynı anda çalışmasını nasıl sağlayabilirim?

Bu bir Ubuntu 64 bittir, ilgili tüm yazılımlar en son yayınlanan sürümdedir.

Yanıtlar:


40

Kvm çekirdek modüllerini kaldırmak ('sudo rmmod kvm_intel kvm' kullanarak) Virtualbox ve Android öykünücüsünü aynı anda çalıştırmayı mümkün kılar, ancak Android öykünücüsünün böyle bir kurulumdaki performansı son derece kötüdür. Mümkünse Virtualbox öykünücüsünü kapatmak ve sürücüsünü (vboxdrv) 'sudo /etc/init.d/vboxdrv stop' komutunu çalıştırarak kaldırmak daha iyidir. Google bu "çözümü" Linux ile ilgili bölümde Android Emulator sayfasında önermektedir .


9
Arka ucum, uygulamanın VirtualBox (Vagrant) üzerinde veri çalıştırması için gerekli, bu yüzden bu harika bir seçenek değil: P
Richard de Wit

4
Bu çözüm # @%! ', İkisini de aynı anda çalıştırmam gerektiğinden kaynaklanıyor .. HTTPD hizmetim Sanal Kutuda, Uygulamam ise Android'de .. / me iç çekiyor. Tahmin edin, Dev Server'ı tekrar çalıştırmanın zamanı geldi.
E Net Arch

1
Başka bir seçenek, Android öykünücüsü ile birlikte VirtualBox yerine Docker kullanmak olabilir.
Matt Welke

1
Veya KVM ile Vagrant'ı çalıştırın.
Michael Hampton

Teşekkürler @MichaelHampton. Ben yüklü serseri-libvert ve işe yaradı!
jchook

30

Aynı VirtualBox çakışmasına sahibim. "X86" dan farklı ABI kullanarak çözdüm (benim durumumda armeabi-v7a)


Mevcut sanal makineyi kapatmaktan çok daha zarif. Teşekkürler.
MonoThreaded

2
Bunu duyduğuma üzüldüm.
MatBee

Muhtemelen öykünücü bu şekilde yavaş çalışacaktır, ancak bu bir seçenektir.
ToolmakerSteve

Benim durumumda, çalıştırmak için VirtualBox VM'ye de ihtiyacım var (RDP için), bu yüzden bu gerçekten iyi bir tavsiyeydi.
Csaba Toth

2
@rudolfbyker, cevabın söylediği şey, CPU / ABI x86 / x86_64 ile çalışan emülatörlerin çok daha hızlı olduğu, ancak VitualBox ile aynı KVM'yi (Kernel tabanlı Sanal Makine) kullandığı. , Arm64 gibi, VirtualBox ile çatışma başka CPU ile bir emülatör olmaz Oluşturma ancak emülatörü bir çok yavaştır.
jayeffkay

16

VirtualBox ile çalıştırdığım sanal makineleri durdurdum. Bu hatayı ortadan kaldırdı.


Bu benim için Fedora 20'de işe yaradı. Daha büyük ekranlar, daha fazla RAM ve Gnome 3 çalışma alanı ile arka planda başka bir makine çalıştırdığınızı unutmak kolaydır. killall virtualboxyapmalı.
Ray Foss

İşe yarıyor ama en iyi çözüm değil.
İkisine

Docker makinesi ve sanal kutu sürücülerini kullanırken Ubuntu 16 ile bu sorunu yaşadım. vms'i durdurarak docker-machine stop machine-namesorunu bu asnwer'da önerildiği gibi çözme
Benjamin Slabbert

Görünüşe göre VirtualBox GUI'yi kapatmak ve VM'ler hile yapmaz. Benim durumumda hala çalışan birkaç sanal kutu işlemim vardı: VBoxSVC, VBoxNetDHCP, VBoxXPCCOMIPCD. Onları top / htop'ta öldürmek sorunu çözdü.
Babken Vardanyan

Soru, 'İkisini aynı anda nasıl çalıştırabilirim?' İdi.
Stephen M -on grev-

5

Ubuntu 13.10'da da aynı sorunu yaşadım. Kvm ve kvm_intel çekirdek modüllerini kaldırmayı deneyin.

Bunu yapmak için:

  1. Tüm emülatörleri durdurun.
  2. Çalıştır komutu: 'sudo rmmod kvm_intel kvm'

Bu çekirdek modülleri olmadan Virtualbox ve Android emülatörleri aynı anda çalışabilir.

BTW, modüllerin neden yüklendiğini bilmiyorum.


16
Bir uyarı: bu işe yararken, KVM çekirdek modüllerini kaldırmak, çekirdek modülleri olmadan CPU'nun donanım hızlandırma desteğini kaybettiğiniz için Intel Android görüntüsüyle performansta önemli bir düşüşe neden olacaktır.
JustJohn

1
@Tajchert: Geri alma için: 'sudo modeprobe kvm_intel kvm'
Splitlocked

x86 ... emülatörleri KVM modülleri olmadan çalışmayı reddetti. Bah.
Martlark

her iki sürücü de gerekli
user1121055

5

Sonunda bunun için bir düzeltme var.

MacOS için şu adımları izleyin :

  1. Android Studio'da Araçlar -> Android -> SDK Yöneticisi'ne gidin

  2. Intel Emulator Accelerator HAXM'nin en son sürümüne sahip olduğunuzu doğrulayın (v6.1.1) Android Studio'daki tercihler paneli.

  3. extrasTercihlerde görüntülenen Android SDK konumunun dizinine gidin . MacOS'ta bunu yapabilirsiniz:

    open ~/Library/Android/sdk/extras

  4. HAXM paketini IntelHAXM_6.1.1.dmg'yi açarak, ardından bağlı klasörde IntelHAXM_6.1.1.mpkg'yi açarak ve yükleyici talimatlarını izleyerek kurun.

Windows için şu adımları izleyin :

  1. Android Studio'da Araçlar -> Android -> SDK Yöneticisi'ne gidin

  2. Intel Emulator Accelerator HAXM'nin en son sürümüne sahip olduğunuzu doğrulayın (v6.1.1) Android Studio'daki tercihler paneli.

  3. extrasTercihlerde görüntülenen Android SDK konumunun dizinine gidin . Gibi bir şey:

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

  4. Bu dizinde bir tür dosya var intelhaxm-android.exe. Çalıştırın.


2
Ubuntu 16.04.3 için de bir düzeltme var mı?
sanders

HAXM, yuvalanmış sanal Makineleri desteklemez!
Jorgesys

Peki ya KVM? Aynısını nasıl yapabilirim
Vadim Kotov

Bu, yuvalanmış sanal Makineler ile ilgili değildir. Bu konudaki sorun yan yana sanal makineler içindir. Ve bunun işe yaramayacağı kesinlikle mantıklı değil,
Lothar

Ve Linux için bir çözüm yok. Linux kullanımı için yine kötü şans. Bu, artık yapım sunucum olarak pencereleri seçmem gerektiği anlamına geliyor.
Lothar

4

Emülatör ayarlarında CPT / ABI ayarını x86'dan arm'a da değiştirebilirsiniz.


2
Ama sonra emülatör cehennem kadar yavaş olacak ... ama en azından ikisini aynı anda çalıştırabilirsiniz;)
biophonc

4

Sonunda standart Android öykünücüsü yerine Genymotion kullanarak bu sorunu eski haline getirdim. Bu çatışmaya sahip olmamanın yanı sıra, normal emülatörden birkaç kat daha hızlıdır.


bu özgür bir yazılım mı?
vishnu viswanath

@vishnu viswanath Yalnızca ticari olmayan amaçlarla kullanım için. "Lisans verildi: Sınırlı" aşağıda genymotion.com/legal/terms-and-conditions hakkında daha fazla bilgi edinin . Şöyle diyor: Bu lisans, yalnızca son kullanıcıya verilir ve yalnızca kişisel kullanımla bağlantılı olarak, son kullanıcı, uygulamayı ticari ve profesyonel ortam dışında kişisel ve özel ihtiyaçlar için indiren bir profesyonel değil, bir bireydir.
mykolaj

1
Bu muhtemelen kayboldu çünkü genymotion KVM kullanmadı. Ne kararlı (çünkü bir noktada onu kullanmaya başlayacaklar) ne de performanslı çözüm.
Hi-Angel

Bu seçeneğe yorum yaptığınız için teşekkür ederiz. Ubuntu 18.04'te Kişisel Kullanım için Genymotion'u kurardım ve artık VirtualBox makinelerimi aynı anda kullanabilirim :)
Fer


2

Her ne kadar geçici bir çözüm olsa da, herkesin önerdiği gibi KVM'yi devre dışı bırakmaktan kesinlikle daha iyidir.

Bunun yerine sanal kutu konuğunu KVM'de çalıştırın. Örneğin ( kvmburada sadece a çalıştıran bir komut dosyası verilmiştir qemu-system-x86_64 -enable-kvm) :

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

Bu benim için sorunu çözdü, ancak sanal görüntümü internete nasıl bağlayacağımı
çözemiyorum

@MikeSchem evet, maalesef KVM / QEMU'da bir ağ yapılandırmak çok önemli. Cevabı yazdığım zaman, ağın çalışmasını sağlamak için vaktim olmadı çünkü bazı manipülasyonlardan sonra Windows konuğu KVM'de başlarken BSOD ile hala VB'de çalışırken düşmeye başladı.
Hi-Angel


1

Bazı durumlarda, sanal kutu makinelerini çalışır durumda tutmamız gerekir, bu nedenle tüm sanal kutu makinelerinin çalışmaya devam etmesine izin verin, uygulamanızı test etmek için öykünücü yerine fiziksel mobil cihaza geçin.

React-native veya gerçek android / ios cihazınız ile yapıyorsanız, expo'yu kullanabilirsiniz.


0

OP'nin VirtualBox + KVM'yi aynı anda talep etmesi nedeniyle bu konu konu dışı olabilir, ancak yine de geçici çözüm olabilir: Ubuntu 18.10 x64'te Windows 7 ve AVD'yi başlatmanın bir yolunu arıyordum. AVD'nin performansı benim için kritik olduğu için KVM'yi kapatmak bir seçenek değil. Windows 7'yi Virtual Machine Manager (sanal yönetici paketi) üzerinden kurdum ve şimdi hem AVD hem de Windows 7 donanım hızlandırmalı.


0

İşte bu sorunu, serseri kullanarak nasıl çözüldüğünü ve iki eklentisi olan 'libvirt' ve 'mutate':

  1. Terminali açın ve ortam değişkenlerini ayarlayın:

     export VAGRANT_DEFAULT_PROVIDER=libvirt
     export VAGRANT_HOME=/home/directoryToStoreVagrant/
     VBoxManage list vms
    
  2. Şimdi "c1530713-aec2-4415-a6b5-b057928c7e5f" gibi son komuttan elde edilen bir kodu kopyalayın ve aşağıdakileri kullanın:

    serseri paketi --base c1530713-aec2-4415-a6b5-b057928c7e5f - çıktı window7.box

     vagrant init window7
     vagrant up window7 --provider=libvirt 
     vagrant box list
    
  3. Sen gibi bazı serseri eklentileri yüklemeniz gerekir uyarlanması, libvirt ve mutasyona . Mutate, .box'ı libvirt VM'ye dönüştürecek:

    vagrant eklentisi vagrant-libvirt vagrant eklentisi yükle vagrant-mutate yükle

  4. Serseri kutuyu libvirt'e dönüştürme:

    vagrant mutate window7_.box libvirt

  5. Artık serseri VM'yi başlatabilirsiniz. Herhangi bir hata devam ederse, Vagrant dosyanızı düzenlemek için taşıyın. Benim için olduğu gibi, satırın config.vm.network ile başladığını ve ardından aşağıdaki komutu çalıştırdım:

    vagrant up --provider=libvirt

Bu hatayı tamamen bu şekilde çözebildim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.