Trình giả lập Android và hộp ảo không thể chạy cùng một lúc


104

Bất cứ khi nào tôi chạy Virtualbox, tôi không thể khởi động hình ảnh giả lập Android (và ngược lại). Thông báo lỗi trong trình quản lý AVD là

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

Làm thế nào tôi có thể làm cho cả hai chạy cùng một lúc?

Đó là Ubuntu 64 bit, tất cả phần mềm liên quan đều là phiên bản phát hành mới nhất.

Câu trả lời:


40

Việc xóa các mô-đun nhân kvm (sử dụng 'sudo rmmod kvm_intel kvm') giúp bạn có thể chạy Virtualbox và trình giả lập Android cùng lúc nhưng hiệu suất của trình giả lập Android trong thiết lập như vậy là cực kỳ kém. Nếu có thể, tốt hơn nên tắt trình giả lập Virtualbox và dỡ trình điều khiển của nó (vboxdrv) bằng cách chạy 'sudo /etc/init.d/vboxdrv stop'. Google đề xuất "giải pháp" này trên trang Trình giả lập Android của mình trong phần về Linux.


9
Cần thiết cho việc ứng dụng phụ trợ của tôi để có dữ liệu chạy trên VirtualBox (Vagrant), do đó không phải là một lựa chọn tuyệt vời: P
Richard de Wit

4
Giải pháp này # @%! Do thực tế là tôi cần chạy cả hai cùng một lúc .. dịch vụ HTTPD của tôi ở trong Hộp ảo, trong khi Ứng dụng của tôi ở Android .. / tôi thở dài. Đoán, đã đến lúc kích hoạt Máy chủ nhà phát triển một lần nữa.
E Net Arch

1
Một tùy chọn khác có thể là sử dụng Docker thay vì VirtualBox kết hợp với trình giả lập Android.
Matt Welke

1
Hoặc chạy Vagrant với KVM.
Michael Hampton

Cảm ơn @MichaelHampton. Tôi đã cài đặt vagrant-libvert và nó hoạt động!
jchook

30

Tôi gặp xung đột VirtualBox tương tự. Đã giải quyết nó bằng cách sử dụng ABI khác với "x86" (trong trường hợp của tôi là armeabi-v7a)


Thanh lịch hơn nhiều so với việc tắt máy ảo hiện có. Cảm ơn.
MonoThreaded

2
Thật buồn khi nghe điều này.
MatBee

Có lẽ trình giả lập sẽ chạy chậm theo cách này, nhưng đó là một tùy chọn.
ToolmakerSteve

Trong trường hợp của tôi, tôi cũng cần VirtualBox VM để chạy (cho RDP), vì vậy đây là một lời khuyên thực sự tốt.
Csaba Toth

2
@rudolfbyker, câu trả lời cho biết là trình giả lập chạy với CPU / ABI x86 / x86_64 nhanh hơn rất nhiều, nhưng sử dụng cùng KVM (Máy ảo dựa trên nhân) như VitualBox. Tạo một giả lập với CPU khác, như arm64, sẽ không mâu thuẫn với VirtualBox, nhưng giả lập là một rất nhiều chậm hơn.
jayeffkay

16

Tôi đã dừng các máy ảo mà tôi đã chạy với VirtualBox. Điều này đã làm cho lỗi biến mất.


Điều này đã hiệu quả với tôi trong Fedora 20. Với màn hình lớn hơn, nhiều RAM hơn và không gian làm việc Gnome 3, thật dễ dàng quên rằng bạn đang chạy một máy khác ở đâu đó trong nền. killall virtualboxHãy làm nó.
Ray Foss

Hoạt động nhưng không phải là giải pháp tốt nhất. Bạn có thể có cả hai (xem câu trả lời của Stanislav)
MonoThreaded

Tôi gặp sự cố này với Ubuntu 16 khi sử dụng máy docker và trình điều khiển hộp ảo. dừng vms với docker-machine stop machine-namegiải quyết vấn đề như đề xuất trong asnwer này
Benjamin Slabbert

Hóa ra chỉ cần tắt VirtualBox GUI và các máy ảo sẽ không làm được điều này. Trong trường hợp của tôi, tôi có một số quy trình hộp ảo vẫn đang chạy: VBoxSVC, VBoxNetDHCP, VBoxXPCCOMIPCD. Giết chúng trong top / htop đã giải quyết được vấn đề.
Babken Vardanyan

Câu hỏi đặt ra là 'Làm thế nào tôi có thể làm cho cả hai chạy cùng một lúc?'.
Stephen M -on đình công-

5

Tôi đã gặp vấn đề tương tự trên Ubuntu 13.10. Cố gắng xóa các mô-đun nhân kvm và kvm_intel.

Để làm điều này:

  1. Dừng tất cả các trình giả lập.
  2. Chạy lệnh: 'sudo rmmod kvm_intel kvm'

Nếu không có các mô-đun hạt nhân này, Virtualbox và trình giả lập Android có thể hoạt động cùng một lúc.

BTW, tôi không biết tại sao các mô-đun được tải.


16
Một lời cảnh báo: trong khi điều này hoạt động, việc xóa các mô-đun nhân KVM sẽ làm giảm hiệu suất đáng kể với hình ảnh Intel Android, vì bạn mất hỗ trợ tăng tốc phần cứng của CPU mà không có mô-đun nhân.
JustJohn

1
@Tajchert: để hoàn nguyên: 'sudo modprobe kvm_intel kvm'
Splitlocked

x86 ... trình giả lập từ chối chạy mà không có mô-đun KVM. Bah.
Martlark

cả hai trình điều khiển đều cần thiết
user1121055

5

Cuối cùng có một bản sửa lỗi cho điều này.

Làm theo các bước sau cho macOS :

  1. Trong Android Studio, đi tới Công cụ -> Android -> Trình quản lý SDK

  2. Xác nhận rằng bạn đã cài đặt phiên bản mới nhất của Intel Emulator Accelerator HAXM (v6.1.1) Bảng tùy chọn trong Android Studio.

  3. Chuyển đến extrasthư mục của vị trí SDK Android được hiển thị trong tùy chọn. Trên MacOS, bạn có thể làm điều này:

    open ~/Library/Android/sdk/extras

  4. Cài đặt gói HAXM bằng cách mở IntelHAXM_6.1.1.dmg, sau đó mở IntelHAXM_6.1.1.mpkg trong thư mục được gắn kết và làm theo hướng dẫn của trình cài đặt.

Làm theo các bước sau cho Windows :

  1. Trong Android Studio, đi tới Công cụ -> Android -> Trình quản lý SDK

  2. Xác nhận rằng bạn đã cài đặt phiên bản mới nhất của Intel Emulator Accelerator HAXM (v6.1.1) Bảng tùy chọn trong Android Studio.

  3. Chuyển đến extrasthư mục của vị trí SDK Android được hiển thị trong tùy chọn. Cái gì đó như:

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

  4. Trong thư mục đó là một số loại tệp như intelhaxm-android.exe. Chạy nó.


2
Cũng có bản sửa lỗi cho Ubuntu 16.04.3?
sanders

HAXM không hỗ trợ Máy ảo lồng nhau!
Jorgesys

Còn KVM thì sao? Làm thế nào tôi có thể làm như vậy?
Vadim Kotov

Đây không phải là về Máy ảo lồng nhau. Vấn đề trong chủ đề này là đối với các máy ảo cạnh nhau. Và nó làm cho hoàn toàn không có cảm giác rằng điều này không nên làm việc,
Lothar

Và không có giải pháp nào cho Linux. Lại xui xẻo cho việc sử dụng Linux. Điều này có nghĩa là tôi phải chọn cửa sổ bây giờ làm máy chủ xây dựng của mình.
Lothar

4

Bạn cũng có thể thay đổi cài đặt CPT / ABI từ x86 sang cài đặt trình giả lập.


2
Nhưng sau đó giả lập sẽ là chậm như là địa ngục ... nhưng ít nhất bạn có thể chạy cả hai cùng một lúc;)
biophonc

4

Cuối cùng tôi đã làm cho vấn đề này trở nên lỗi thời bằng cách sử dụng Genymotion thay vì trình giả lập Android tiêu chuẩn. Ngoài việc không xảy ra xung đột này, nó còn nhanh hơn nhiều lần so với trình giả lập thông thường.


Đây có phải là một phần mềm miễn phí?
vishnu viswanath

@vishnu viswanath Chỉ dành cho các trường hợp sử dụng với mục đích phi thương mại. Đọc thêm tại đây genymotion.com/legal/terms-and-conditions bên dưới "Giấy phép được cấp: Có giới hạn". Có nghĩa là: Giấy phép này chỉ được cấp cho người dùng cuối và duy nhất liên quan đến việc sử dụng cá nhân, người dùng cuối là một cá nhân chứ không phải một chuyên gia, người tải xuống ứng dụng cho các nhu cầu cá nhân và riêng tư, ngoại trừ môi trường thương mại và chuyên nghiệp.
mykolaj

1
Điều này có thể đã biến mất vì genymotion không sử dụng KVM. Không ổn định (vì một lúc nào đó họ sẽ bắt đầu sử dụng nó) , cũng không phải giải pháp hiệu quả.
Hi-Angel

Cảm ơn bạn đã bình luận ra tùy chọn này. Tôi đã cài đặt Genymotion cho mục đích sử dụng cá nhân trong Ubuntu 18.04 và bây giờ tôi có thể sử dụng các máy VirtualBox của mình cùng lúc :)
Fer B. Ngày


2

Mặc dù đó cũng là một cách giải quyết, nhưng chắc chắn tốt hơn là vô hiệu hóa KVM như mọi người đề xuất.

Thay vào đó, chỉ cần chạy khách hộp thư ảo trong KVM. Ví dụ ( kvmđây chỉ là một tập lệnh chạy a qemu-system-x86_64 -enable-kvm) :

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

Đây giải quyết vấn đề đối với tôi, tuy nhiên tôi không thể tìm ra cách để có được hình ảnh ảo của tôi để kết nối với internet và đối với một số lý do các bản đồ Bàn phím được tất cả các điều sai lầm ..
MikeSchem

@MikeSchem vâng, thật không may khi định cấu hình mạng trong KVM / QEMU là một vấn đề lớn. Quay lại khi tôi viết câu trả lời Tôi không có thời gian để khởi động mạng bởi vì sau một số thao tác Windows khách bắt đầu rơi với BSOD khi khởi động trong KVM, trong khi vẫn hoạt động trong VB.
Hi-Angel


1

Trong một số trường hợp, chúng tôi cần duy trì và chạy các máy virtualbox, do đó hãy để tất cả các máy virtualbox tiếp tục chạy, chuyển sang thiết bị di động thực để kiểm tra ứng dụng của bạn thay vì giả lập.

bạn có thể sử dụng triển lãm nếu bạn đang làm với ứng dụng gốc hoặc thiết bị android / ios thực của bạn.


0

Điều này có thể không nằm trong chủ đề, do OP đã yêu cầu VirtualBox + KVM cùng một lúc, nhưng vẫn có thể là cách giải quyết: Tôi đang tìm cách khởi chạy Windows 7 và AVD trên Ubuntu 18.10 x64. Tắt KVM không phải là một tùy chọn vì thực tế là hiệu suất của AVD rất quan trọng đối với tôi. Tôi đã cài đặt Windows 7 thông qua Virtual Machine Manager (gói quản lý ảo) và bây giờ cả AVD và Windows 7 đều được tăng tốc phần cứng.


0

Đây là cách giải quyết vấn đề này, bằng cách sử dụng vagrant và đó là hai plugin 'libvirt' và 'mutate':

  1. Mở thiết bị đầu cuối và đặt các biến môi trường:

     export VAGRANT_DEFAULT_PROVIDER=libvirt
     export VAGRANT_HOME=/home/directoryToStoreVagrant/
     VBoxManage list vms
    
  2. Bây giờ sao chép mã a mã nhận được từ lệnh cuối cùng như "c1530713-aec2-4415-a6b5-b057928c7e5f" và sử dụng như sau:

    gói vagrant --base c1530713-aec2-4415-a6b5-b057928c7e5f --output window7.box

     vagrant init window7
     vagrant up window7 --provider=libvirt 
     vagrant box list
    
  3. Bạn cần cài đặt một số plugin ảo như libvirtmutate . Mutate sẽ chuyển đổi .box thành libvirt VM:

    plugin vagrant cài đặt vagrant-libvirt plugin vagrant cài đặt vagrant-mutate

  4. Chuyển đổi hộp lang thang thành libvirt:

    vagrant mutate window7_.box libvirt

  5. Bây giờ bạn có thể khởi tạo VM vagrant. Nếu bất kỳ lỗi nào vẫn tiếp diễn, hãy chuyển sang chỉnh sửa tệp Vagrant của bạn. Giống như đối với tôi, tôi bỏ ghi chú dòng bắt đầu bằng config.vm.network và sau đó chạy lệnh dưới đây:

    vagrant up --provider=libvirt

Đây là cách tôi có thể loại bỏ hoàn toàn lỗi này

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.