Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 기기

KVM과 VirtualBox를 나란히 사용

KVM과 VirtualBox는 공존할 수 없거나 오히려 KVM 모듈이 메모리에 로드되는 동안 VirtualBox가 실행되지 않습니다. KVM은 VirtualBox와 함께 잘 작동할 수 있으므로 실제로는 단방향 문제입니다. 해결도 쉽습니다. 안타깝게도 이 제품 또는 해당 제품을 제거하도록 권장하는 끔찍한 자습서를 많이 보았습니다. 그리고 덜 엄격한 솔루션을 찾는 건전한 가이드 중 대부분은 단순히 rmmod 이것 또는 저것을 알려줄 뿐 다시 실행하는 방법은 알려주지 않습니다.

KVM과 VirtualBox를 제거하거나 중간에 재부팅하지 않고 나란히 사용하는 방법을 보여드리겠습니다. 충돌하는 상대방이 실행될 수 있도록 제품을 비활성화 및 활성화하는 방법을 배웁니다. 생체 내에서는 재부팅하지 않습니다. 해보자.

증상 - VirtualBox가 실행되지 않음

VirtualBox를 시작할 때 다음과 같은 오류가 표시될 수 있습니다.

VirtualBox는 VMX 루트 모드에서 작동할 수 없다고 합니다. KVM 커널 확장을 비활성화하고 커널을 다시 컴파일한 다음 재부팅하십시오. 와우, 와우, 천천히. 이것은 매우 괴상하고 무서운 메시지입니다. 아무것도 다시 컴파일할 필요가 없습니다. 수정에는 5초가 소요되며 완전히 비파괴적입니다.

문제 설명

VirtualBox와 KVM은 함께 작동할 수 없습니다. 즉, VirtualBox를 실행하려면 KVM을 비활성화해야 합니다. 문제는 우리가 이것을 어떻게 하는가입니다. 대답은 커널 모듈을 삽입하고 제거하는 것입니다.

Linux 운영 체제는 재부팅 없이 즉석에서 커널 모듈을 삽입하고 제거할 수 있도록 지원합니다. 즉, 생체 내 메모리에서 커널 모듈을 로드 및 언로드할 수 있습니다. 자세한 내용은 내 Linux 명령 기사와 Crash Book을 참조하십시오.

필요한 것을 달성하기 위해 insmod 및 rmmod 명령을 사용합니다.

모듈 제거

커널 공간을 살펴보자. 먼저 lsmod 명령을 실행하여 어떤 모듈이 메모리에 로드되는지 확인합니다.

보시다시피 VirtualBox는 vboxdrv 및 vboxnetflt 드라이버를 사용하고 KVM은 kvm 및 kvm_intel 드라이버를 사용합니다. 참고:kvm_intel은 Intel 아키텍처에만 해당됩니다. AMD 플랫폼용 kvm_amd가 있습니다. KVM 모듈을 언로드해야 합니다.

/sbin/rmmod kvm_intel
/sbin/rmmod kvm

중요한 질문:하지만 이제 KVM은 사라졌습니다. 어떻게 돌려받을 수 있나요?

아, 아주 좋아! 회복할 수 있는 방법을 알아봅시다.

모듈 삽입

모듈을 제거한 것처럼 모듈을 삽입할 수 있습니다. 디스크에서 모듈을 찾은 다음 삽입해야 합니다. 종속성이 있는 경우 항상 유용한 modprobe 명령을 사용할 수도 있습니다.

모듈을 찾아봅시다(명령에서 sudo를 가정하지만 루트로도 실행할 수 있음):

업데이트됨b
kvm 찾기

결과가 많을 것이므로 kvm.ko 및 kvm-intel.ko로 검색을 제한할 수 있습니다.

이제 실행 중인 커널과 일치하는 것을 삽입하십시오. 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

다음은 스크린샷입니다. 먼저 kvm 모듈을 확인합니다. lsmod 명령은 로드되지 않았음을 보여줍니다. 그런 다음 kvm 모듈을 로드하고 lsmod 명령을 다시 한 번 실행합니다.

스크린샷 명령은 위의 코드 상자에 작성된 명령과 약간 다릅니다. 나는 /sbin이 PATH에 있다고 가정했기 때문에 간결함을 위해 단축된 insmod 명령을 사용했습니다. 동시에 전체 모듈 경로를 사용하여 어떻게 생겼는지 보여주기도 했습니다. 절차를 스크립팅하려는 경우 전체 경로는 필수이며 백틱을 사용한 명령 대체는 모듈성을 향상하는 데 권장됩니다.

스크립트

이제 이것을 자동화할 시간입니다. 두 개의 스크립트가 필요합니다. 하나는 KVM 모듈을 언로드하고 다른 하나는 로드합니다. 정말로 엄격하게 하고 싶다면 KVM을 사용할 때 VirtualBox 서비스를 중지하고 KVM을 사용한 후에 시작할 수도 있습니다. 예를 들어, VirtualBox 드라이버 사용:

따라서 VirtualBox를 활성화하고 KVM을 비활성화하는 샘플 스크립트는 다음과 같습니다.

#!/빈/배시
/sbin/rmmod kvm_intel
/sbin/rmmod kvm
/etc/init.d/vboxdrv 시작

KVM을 로드하고 VirtualBox를 중지하는 방법은 다음과 같습니다.

#!/빈/배시
/etc/init.d/vboxdrv 중지
/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

AMD 시스템의 경우 kvm-intel.ko를 kvm-amd.ko로 바꾸십시오. 시작된 서비스를 시작하려고 시도하지 않았는지 확인하려면 온전성 검사가 필요합니다. 나는 이것을 추가하지 않았습니다. 숙제로 생각하십시오.

마찬가지로 프로세서 아키텍처에 유의하십시오. 대부분의 사람들에게 x86(및 x86_64)이 작동하지만 SPARC, ARM, Itanium 등과 같은 다른 아키텍처가 있을 수 있으므로 적절하게 변경하십시오.

이제 이러한 스크립트와 Bob의 삼촌에 연결되는 바탕 화면 바로 가기를 배치하십시오. 특정 커널 버전 대신 uname을 사용하면 커널 업그레이드 후에도 스크립트가 작동합니다.

결론

보시다시피 현실은 예상만큼 가혹하지 않습니다. 이 튜토리얼은 VirtualBox와 KVM을 제거하거나 지속적으로 재부팅하지 않고 협력하는 간단한 방법을 보여줍니다. Linux 아키텍처는 모듈의 라이브 삽입을 허용하므로 실제로 재부팅해야 하는 유일한 것은 커널 업그레이드입니다.

이 튜토리얼은 편안함과 유용성을 결합하는 영리한 방법, 커널 모듈을 삽입하고 제거하는 방법, 작업을 스크립팅하는 방법, KVM과 VirtualBox를 나란히 사용하는 원하는 목표를 달성하는 방법을 포함하여 여러 가지를 알려줍니다.

나는 당신이 이것을 좋아했으면 좋겠다.

건배.