Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Máy Ảo

Chạy KVM và VirtualBox song song: Hướng dẫn từng bước

KVM và VirtualBox được cho là không thể cùng tồn tại, hoặc đúng hơn, VirtualBox sẽ không chạy trong khi các module KVM được tải vào bộ nhớ. KVM có thể hoạt động tốt cùng với VirtualBox, vì vậy đây là một vấn đề một chiều. Giải quyết nó cũng dễ dàng. Thật không may, tôi đã gặp nhiều hướng dẫn tồi tệ khuyên gỡ cài đặt sản phẩm này hoặc sản phẩm kia. Và trong số các hướng dẫn hợp lý hơn chọn giải pháp ít nghiêm ngặt hơn, hầu hết chỉ nói rmmod cái này hoặc cái kia, nhưng họ không nói cách để làm cho mọi thứ chạy lại.

Tôi sẽ chỉ cho bạn cách sử dụng KVM và VirtualBox song song, không gỡ cài đặt bất kỳ cái nào hoặc khởi động lại giữa các lần sử dụng. Bạn sẽ học cách vô hiệu hóa và kích hoạt các sản phẩm để đối tác xung đột có thể chạy. In vivo, không khởi động lại. Hãy làm điều này.

Triệu chứng - VirtualBox không chạy

Bạn có thể thấy loại lỗi này khi khởi chạy VirtualBox:

Nó nói: VirtualBox không thể hoạt động ở chế độ VMX root. Vui lòng tắt phần mở rộng kernel KVM, biên dịch lại kernel và khởi động lại. Wow, wow, chậm lại. Đây là một thông báo rất geeky và đáng sợ. Không cần phải biên dịch lại bất cứ thứ gì. Sửa chữa mất năm giây và hoàn toàn không phá hủy.

Giải thích vấn đề

VirtualBox và KVM không thể làm việc cùng nhau. Điều này có nghĩa là KVM cần bị vô hiệu hóa nếu chúng ta muốn chạy VirtualBox. Câu hỏi là làm thế nào chúng ta làm điều này. Câu trả lời là: bằng cách chèn và gỡ bỏ các module kernel.

Hệ điều hành Linux hỗ trợ chèn và gỡ bỏ module kernel ngay lập tức, không cần khởi động lại. Điều này có nghĩa là bạn có thể tải và gỡ các module kernel vào và từ bộ nhớ in vivo. Chi tiết thêm trong bài viết lệnh Linux và Crash Book của tôi.

Để đạt được những gì chúng ta cần, chúng ta sẽ sử dụng lệnh insmod và rmmod.

Gỡ bỏ module

Hãy kiểm tra không gian kernel. Chúng ta sẽ chạy lệnh lsmod trước, để xem module nào được tải vào bộ nhớ:

Như bạn thấy, VirtualBox sử dụng driver vboxdrv và vboxnetflt, trong khi KVM sử dụng driver kvm và kvm_intel. Lưu ý: kvm_intel dành riêng cho kiến trúc Intel. Có kvm_amd cho nền tảng AMD. Chúng ta cần gỡ bỏ module KVM.

/sbin/rmmod kvm_intel
/sbin/rmmod kvm

Câu hỏi lớn: Nhưng bây giờ KVM đã mất. Làm sao tôi lấy lại nó?

À, rất tốt! Hãy xem cách khôi phục.

Chèn module

Chúng ta có thể chèn module giống như chúng ta gỡ bỏ chúng. Bạn sẽ cần tìm module trên đĩa và sau đó chèn chúng. Bạn cũng có thể sử dụng lệnh modprobe, luôn hữu ích nếu có phụ thuộc.

Hãy tìm module (giả sử sudo trong lệnh, nhưng có thể chạy dưới root):

updatedb
locate kvm

Sẽ có nhiều kết quả, vì vậy bạn có thể giới hạn tìm kiếm cho kvm.ko và kvm-intel.ko.

Bây giờ, chèn module khớp với kernel đang chạy. Bạn có thể kiểm tra bằng uname -r.

/sbin/insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm.ko
/sbin/insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm-intel.ko

Đây là ảnh chụp màn hình. Đầu tiên, kiểm tra module kvm. Lệnh lsmod cho thấy nó không được tải. Sau đó, tải module kvm và chạy lệnh lsmod một lần nữa.

Lưu ý lệnh ảnh chụp màn hình khác một chút so với lệnh viết trong hộp mã ở trên. Tôi giả định /sbin nằm trong PATH, nên tôi dùng lệnh insmod rút gọn cho ngắn gọn. Đồng thời, tôi cũng dùng đường dẫn module đầy đủ, để cho bạn thấy nó trông như thế nào. Nếu bạn định viết script cho quy trình, cái bạn nên làm, thì đường dẫn đầy đủ là bắt buộc và thay thế lệnh bằng backticks được khuyến khích để tính mô-đun cao hơn.

Script

Bây giờ, đến lúc tự động hóa. Bạn cần hai script. Một để gỡ module KVM và một để tải chúng. Nếu bạn thực sự muốn nghiêm ngặt, bạn cũng có thể dừng dịch vụ VirtualBox khi dùng KVM và khởi động lại sau khi dùng KVM. Ví dụ, làm việc với driver VirtualBox:

Do đó, script mẫu để bật VirtualBox và tắt KVM sẽ là:

#!/bin/bash
/sbin/rmmod kvm_intel
/sbin/rmmod kvm
/etc/init.d/vboxdrv start

Và script để tải KVM và dừng VirtualBox:

#!/bin/bash
/etc/init.d/vboxdrv stop
/sbin/insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm.ko
/sbin/insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm-intel.ko

Đối với máy AMD, thay kvm-intel.ko bằng kvm-amd.ko. Lưu ý kiểm tra tính hợp lý cần thiết để đảm bảo bạn không cố gắng khởi động dịch vụ đã chạy. Tôi chưa thêm những này; coi như bài tập về nhà.

Tương tự, lưu ý kiến trúc bộ xử lý. Đối với hầu hết mọi người, x86 (và x86_64) sẽ hoạt động, nhưng bạn có thể có kiến trúc khác, như SPARC, ARM, Itanium, hoặc khác, vì vậy hãy thay đổi cho phù hợp.

Bây giờ, đặt shortcut trên desktop liên kết đến các script này và Bob's your uncle. Sử dụng uname thay vì phiên bản kernel cụ thể đảm bảo script của bạn sẽ hoạt động ngay cả sau khi nâng cấp kernel.

Kết luận

Như bạn thấy, thực tế không khắc nghiệt như bạn có thể mong đợi. Hướng dẫn này tiết lộ những cách đơn giản để VirtualBox và KVM hợp tác, không gỡ cài đặt cái này hay cái kia hoặc liên tục khởi động lại. Kiến trúc Linux cho phép chèn module trực tiếp, vì vậy điều duy nhất bạn thực sự phải khởi động lại là nâng cấp kernel.

Hướng dẫn này dạy bạn một số điều, bao gồm cách thông minh kết hợp sự thoải mái với khả năng sử dụng, cách chèn và gỡ module kernel, cách viết script công việc và cách đạt được mục tiêu mong muốn là có KVM và VirtualBox song song.

Hy vọng bạn thích bài này.

Chúc vui.