Emulator Android dan virtualbox tidak dapat berjalan secara bersamaan

104

Setiap kali saya menjalankan Virtualbox, saya tidak dapat memulai gambar emulator Android (dan sebaliknya). Pesan kesalahan di AVD manager adalah

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

Bagaimana saya bisa membuat keduanya berjalan pada waktu yang sama?

Itu adalah Ubuntu 64 bit, semua perangkat lunak yang terlibat adalah versi rilis terbaru.

Pisang
sumber

Jawaban:

40

Menghapus modul kernel kvm (menggunakan 'sudo rmmod kvm_intel kvm') memungkinkan Virtualbox dan emulator Android dijalankan secara bersamaan, tetapi kinerja emulator Android dalam penyiapan seperti itu sangat buruk. Jika memungkinkan, lebih baik matikan emulator Virtualbox dan bongkar drivernya (vboxdrv) dengan menjalankan 'sudo /etc/init.d/vboxdrv stop'. Google menyarankan "solusi" ini di halaman Android Emulator di bagian tentang Linux.

traber
sumber
9
Backend saya diperlukan agar aplikasi dapat menjalankan data di VirtualBox (Vagrant), jadi itu bukan pilihan yang bagus: P
Richard de Wit
4
Solusi ini # @%! Karena fakta bahwa saya perlu menjalankan keduanya pada waktu yang sama .. layanan HTTPD saya ada di Virtual Box, sementara Aplikasi saya di Android .. / me menghela napas. Tebak, sudah waktunya untuk mengaktifkan Server Pengembang lagi.
E Net Arch
1
Opsi lain mungkin menggunakan Docker, bukan VirtualBox bersama dengan emulator Android.
Matt Welke
1
Atau jalankan Vagrant dengan KVM.
Michael Hampton
Terima kasih @MichaelHampton. Saya menginstal vagrant-libvert dan berhasil!
jchook
30

Saya mendapat konflik VirtualBox yang sama. Memecahkannya dengan menggunakan ABI yang berbeda dari "x86" (armeabi-v7a dalam kasus saya)

Stanislav Makarenko
sumber
Jauh lebih elegan daripada menurunkan VM yang ada. Terima kasih.
MonoThreaded
2
Sedih mendengarnya.
MatBee
Agaknya emulator akan berjalan lambat dengan cara ini, tetapi ini adalah opsi.
ToolmakerSteve
Dalam kasus saya, saya juga membutuhkan VM VirtualBox untuk dijalankan (untuk RDP), jadi ini adalah saran yang sangat bagus.
Csaba Toth
2
@rudolfbyker, jawabannya adalah bahwa emulator yang berjalan dengan CPU / ABI x86 / x86_64 jauh lebih cepat, tetapi menggunakan KVM (Mesin Virtual berbasis Kernel) yang sama dengan VitualBox. Membuat emulator dengan CPU lain, seperti arm64, tidak akan bertentangan dengan VirtualBox, tetapi emulator adalah sebuah banyak lebih lambat.
jayeffkay
16

Saya menghentikan mesin virtual yang saya jalankan dengan VirtualBox. Ini membuat kesalahan hilang.

Ole Tange
sumber
Ini berhasil untuk saya di Fedora 20. Dengan layar yang lebih besar, lebih banyak RAM dan ruang kerja Gnome 3, mudah untuk melupakan Anda sedang menjalankan komputer lain di suatu tempat di latar belakang. killall virtualboxharus melakukannya.
Ray Foss
Berfungsi tetapi bukan solusi terbaik. Anda dapat memiliki keduanya (lihat jawaban Stanislav)
MonoThreaded
Saya mengalami masalah ini dengan Ubuntu 16 saat menggunakan mesin buruh pelabuhan dan driver kotak virtual. menghentikan vms dengan docker-machine stop machine-namemenyelesaikan masalah seperti yang disarankan dalam jawaban ini
Benjamin Slabbert
Ternyata hanya mematikan VirtualBox GUI dan VM tidak akan berhasil. Dalam kasus saya, saya memiliki beberapa proses kotak virtual yang masih berjalan: VBoxSVC, VBoxNetDHCP, VBoxXPCCOMIPCD. Membunuh mereka di atas / htop memecahkan masalah.
Babken Vardanyan
Pertanyaannya adalah 'Bagaimana saya bisa membuat keduanya berjalan pada waktu yang sama?'.
Stephen M-pada pemogokan-
5

Saya memiliki masalah yang sama di Ubuntu 13.10. Cobalah untuk menghapus modul kernel kvm dan kvm_intel.

Untuk melakukan ini:

  1. Hentikan semua emulator.
  2. Jalankan perintah: 'sudo rmmod kvm_intel kvm'

Tanpa modul kernel ini, Virtualbox dan emulator Android dapat bekerja secara bersamaan.

BTW, saya tidak tahu mengapa modul tersebut dimuat.

Alexander Zhukov
sumber
16
Peringatan: meskipun ini berhasil, menghapus modul kernel KVM akan menyebabkan penurunan performa yang substansial dengan citra Android Intel, karena Anda kehilangan dukungan akselerasi perangkat keras CPU tanpa modul kernel.
JustJohn
1
@Tajchert: untuk mengembalikan: 'sudo modprobe kvm_intel kvm'
Splitlocked
x86 ... emulator menolak untuk berjalan tanpa modul KVM. Bah.
Martlark
kedua driver dibutuhkan
user1121055
5

Akhirnya ada perbaikan untuk ini.

Ikuti langkah-langkah berikut untuk macOS :

  1. Di Android Studio, buka Tools -> Android -> SDK Manager

  2. Pastikan Anda telah menginstal Intel Emulator Accelerator HAXM versi terbaru (v6.1.1) Panel Preferensi di Android Studio.

  3. Buka extrasdirektori lokasi Android SDK yang ditampilkan di preferensi. Di MacOS, Anda dapat melakukan ini:

    open ~/Library/Android/sdk/extras

  4. Instal pengemasan HAXM dengan membuka IntelHAXM_6.1.1.dmg, lalu buka IntelHAXM_6.1.1.mpkg di folder yang dipasang, dan ikuti petunjuk penginstal.

Ikuti langkah-langkah berikut untuk Windows :

  1. Di Android Studio, buka Tools -> Android -> SDK Manager

  2. Pastikan Anda telah menginstal Intel Emulator Accelerator HAXM versi terbaru (v6.1.1) Panel Preferensi di Android Studio.

  3. Buka extrasdirektori lokasi Android SDK yang ditampilkan di preferensi. Sesuatu seperti:

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

  4. Di direktori itu ada beberapa jenis file seperti intelhaxm-android.exe. Menjalankannya.

pembajak tanah
sumber
2
Apakah ada juga perbaikan untuk Ubuntu 16.04.3?
Sanders
HAXM tidak mendukung Mesin virtual bersarang!
Jorgesys
Bagaimana dengan KVM? Bagaimana saya bisa melakukan hal yang sama?
Vadim Kotov
Ini bukan tentang Mesin virtual bersarang. Masalah dalam topik ini adalah untuk mesin virtual berdampingan. Dan sama sekali tidak masuk akal bahwa ini seharusnya tidak berhasil,
Lothar
Dan tidak ada solusi untuk Linux. Sial sekali lagi untuk penggunaan Linux. Ini berarti saya harus memilih windows sekarang sebagai server build saya.
Lothar
4

Anda juga dapat mengubah setelan CPT / ABI dari x86 ke arm di setelan emulator.

0x8BADF00D
sumber
2
Tapi kemudian emulator akan menjadi lambat sekali ... tapi setidaknya Anda dapat menjalankan keduanya pada saat yang sama;)
biophonc
4

Saya akhirnya membuat masalah ini menjadi usang dengan menggunakan Genymotion, bukan emulator Android standar. Selain tidak mengalami konflik ini, ini beberapa kali lebih cepat dari emulator normal.

Pisang
sumber
apakah ini perangkat lunak gratis?
vishnu viswanath
@vishnu viswanath Hanya untuk kasus penggunaan tujuan non-komersial. Baca lebih lanjut di sini genymotion.com/legal/terms-and-conditions di bawah "Lisensi diberikan: Terbatas". Yang mengatakan: Lisensi ini diberikan kepada pengguna akhir saja dan secara eksklusif sehubungan dengan penggunaan pribadi, pengguna akhir adalah individu, dan bukan profesional, yang mengunduh aplikasi untuk kebutuhan pribadi dan pribadi, tidak termasuk lingkungan komersial dan profesional.
mykolaj
1
Ini mungkin hilang karena genymotion tidak menggunakan KVM. Tidak stabil (karena pada titik tertentu mereka akan mulai menggunakannya) , atau solusi yang berkinerja baik.
Hi-Angel
Terima kasih telah mengomentari opsi ini. Saya akan menginstal Genymotion untuk Penggunaan Pribadi di Ubuntu 18.04 dan sekarang saya dapat menggunakan mesin VirtualBox saya pada saat yang sama :)
Fer B.14
3

Solusi lain adalah menggunakan gelandangan yang didukung libvirt menggunakan plugin vagrant-libvirt .

DHH
sumber
2

Meskipun ini adalah solusi, tapi pasti lebih baik daripada menonaktifkan KVM seperti yang disarankan semua orang.

Jalankan saja virtualbox guest di KVM. Misalnya (di kvmsini hanya skrip yang menjalankan a qemu-system-x86_64 -enable-kvm) :

kvm Win7.vdi -boot c -m 2G -vga qxl
Hai-Angel
sumber
Ini memecahkan masalah bagi saya, namun saya tidak dapat menemukan cara untuk menghubungkan gambar virtual saya ke internet dan untuk beberapa alasan pemetaan keybord semuanya kacau ..
MikeSchem
@MikeSchem ya, sayangnya mengonfigurasi jaringan di KVM / QEMU adalah masalah besar. Kembali ketika saya menulis jawaban, saya tidak punya waktu untuk menjalankan jaringan karena setelah beberapa manipulasi, tamu Windows mulai jatuh dengan BSOD saat memulai di KVM, sementara masih bekerja di VB.
Hi-Angel
1

Dalam beberapa kasus, kami perlu menjaga dan menjalankan mesin virtualbox, sehingga biarkan semua mesin virtualbox tetap berjalan, beralihlah ke perangkat seluler fisik untuk menguji aplikasi Anda, bukan emulator.

Anda dapat menggunakan expo jika Anda melakukannya dengan react-native atau perangkat android / ios asli Anda.

Ashwin J Chhetri
sumber
0

Ini mungkin keluar dari topik, karena fakta bahwa OP meminta VirtualBox + KVM pada saat yang sama, tetapi tetap saja, itu mungkin solusinya: Saya sedang mencari cara untuk meluncurkan Windows 7 dan AVD di Ubuntu 18.10 x64. Mematikan KVM bukanlah sebuah pilihan karena fakta bahwa kinerja AVD sangat penting bagi saya. Saya telah menginstal Windows 7 melalui Virtual Machine Manager (paket virt-manager) dan sekarang AVD dan Windows 7 diakselerasi dengan perangkat keras.

vocasle
sumber
0

Berikut adalah cara memecahkan masalah ini, menggunakan gelandangan dan dua plugin 'libvirt' dan 'mutate':

  1. Buka terminal dan atur variabel lingkungan:

     export VAGRANT_DEFAULT_PROVIDER=libvirt
     export VAGRANT_HOME=/home/directoryToStoreVagrant/
     VBoxManage list vms
    
  2. Sekarang salin kode yang diperoleh dari perintah terakhir seperti "c1530713-aec2-4415-a6b5-b057928c7e5f" dan gunakan perintah berikut:

    paket gelandangan --base c1530713-aec2-4415-a6b5-b057928c7e5f --output window7.box

     vagrant init window7
     vagrant up window7 --provider=libvirt 
     vagrant box list
    
  3. Anda perlu menginstal beberapa plugin gelandangan seperti libvirt dan mutate . Mutate akan mengonversi .box menjadi libvirt VM:

    Plugin gelandangan menginstal plugin gelandangan-libvirt menginstal vagrant-mutate

  4. Mengonversi kotak gelandangan ke libvirt:

    vagrant mutate window7_.box libvirt

  5. Sekarang Anda dapat menginisialisasi VM gelandangan. Jika ada kesalahan terus berlanjut pindah untuk mengedit file Vagrant Anda. Seperti bagi saya, saya menghapus komentar baris dimulai dengan config.vm.network dan kemudian jalankan perintah di bawah ini:

    vagrant up --provider=libvirt

Beginilah cara saya bisa menghilangkan kesalahan ini sepenuhnya

muhammad tayyab
sumber