본문 바로가기

Develop

Ubuntu에서 VirtualBox KVM 충돌 이슈 해결 방법

환경

  • OS: Ubuntu 24.04.2 LTS (Noble)
  • Distributor ID: Ubuntu
  • Release: 24.04
  • Codename: noble
  • 이슈 메시지:
  • No LSB modules are available. VirtualBox can't operate in VMX root mode. Please disable the KVM kernel extension, recompile your kernel and reboot (VERR_VMX_IN_VMX_ROOT_MODE). Result Code: NS_ERROR_FAILURE (0x80004005) Component: ConsoleWrap Interface: IConsole {6ac83d89-6ee7-4e33-8ae6-b257b2e81be8}

 

이슈 원인

이 에러는 KVM(Kernel-based Virtual Machine)이 CPU의 가상화 확장 기능(VT-x/AMD-V)을 점유하고 있어 VirtualBox가 이를 사용할 수 없을 때 발생합니다. KVM과 VirtualBox는 동시에 동일한 가상화 자원을 사용할 수 없기 때문에 충돌이 발생하는 것입니다.

해결 방법

아래 단계를 통해 KVM 모듈을 비활성화하여 VirtualBox가 CPU 가상화 자원을 사용할 수 있도록 설정합니다.

1. KVM 모듈 비활성화

다음 명령어를 사용하여 KVM 관련 모듈을 제거합니다:

sudo modprobe -r kvm_intel
sudo modprobe -r kvm
  • kvm_intel: Intel CPU에서 사용되는 KVM 모듈
  • kvm: KVM의 기본 모듈
  • 위 명령어는 KVM 모듈을 언로드하여 VirtualBox가 VT-x/AMD-V를 사용할 수 있도록 합니다.

2. KVM 모듈 비활성화 확인

아래 명령어를 실행하여 KVM 모듈이 제대로 제거되었는지 확인합니다:

lsmod | grep kvm

출력 결과에 kvm 또는 kvm_intel이 나타나지 않으면 성공적으로 제거된 것입니다.

3. VirtualBox 실행

KVM 모듈을 비활성화한 후 VirtualBox를 다시 실행하여 가상 머신이 정상적으로 작동하는지 확인합니다.

4. (선택) 영구적 비활성화

KVM 모듈을 부팅 시 자동으로 로드되지 않도록 설정하려면, 아래와 같이 블랙리스트에 추가합니다:

sudo nano /etc/modprobe.d/blacklist.conf

파일 끝에 다음 두 줄을 추가합니다:

blacklist kvm
blacklist kvm_intel

저장 후 시스템을 재부팅합니다:

sudo reboot

주의사항

  • KVM과 VirtualBox의 상호 배타성: KVM과 VirtualBox는 CPU의 가상화 확장 기능을 독점적으로 사용합니다. 따라서 QEMU, libvirt, 또는 다른 KVM 기반 가상화 소프트웨어를 사용하는 경우, 이들을 종료하거나 KVM 모듈을 비활성화해야 VirtualBox가 정상적으로 작동합니다.
  • 시스템 재부팅 시 모듈 재로드: 일시적으로 KVM 모듈을 비활성화한 경우, 시스템 재부팅 시 KVM 모듈이 다시 로드될 수 있습니다. 영구적 비활성화를 원한다면 blacklist.conf에 모듈을 추가하는 것이 필수입니다.
  • AMD CPU 사용자: AMD CPU를 사용하는 경우 kvm_intel 대신 kvm_amd 모듈을 비활성화해야 합니다. 명령어는 다음과 같습니다:
  • sudo modprobe -r kvm_amd sudo modprobe -r kvm
  • 성능 영향: KVM 모듈을 비활성화하면 KVM 기반 가상화 소프트웨어를 사용할 수 없게 되므로, VirtualBox와 KVM을 번갈아 사용하는 환경에서는 필요에 따라 모듈을 로드/언로드해야 합니다.
  • BIOS 설정 확인: CPU 가상화 기능(VT-x/AMD-V)이 BIOS에서 활성화되어 있는지 확인하세요. 비활성화된 경우 VirtualBox와 KVM 모두 작동하지 않을 수 있습니다.
  • KVM 모듈 재활성화: KVM을 다시 사용하려면 다음 명령어로 모듈을 로드할 수 있습니다:
  • sudo modprobe kvm sudo modprobe kvm_intel

문제 해결에 대한 통찰

  • 근본 원인 분석: 이 에러는 하드웨어 가상화 자원의 경쟁에서 비롯됩니다. Ubuntu에서 KVM은 기본적으로 가상화 작업을 위해 설치되어 있을 수 있으며, 특히 서버 환경이나 클라우드 관련 작업에서 자주 사용됩니다. VirtualBox와 KVM이 동시에 실행되려 하면 자원 충돌이 불가피하므로, 사용자는 작업 환경에 따라 적절한 가상화 솔루션을 선택해야 합니다.
  • 일시적 vs 영구적 해결: 일시적 해결(modprobe -r)은 빠르게 문제를 해결할 수 있지만, 재부팅 후 문제가 재발할 수 있습니다. 영구적 해결(blacklist.conf)은 안정적이지만, KVM을 다시 사용할 필요가 있는 경우 추가 관리가 필요합니다. 따라서 사용자는 자신의 워크플로우(예: VirtualBox 전용 vs KVM과 병행 사용)를 고려해 적절한 방법을 선택해야 합니다.
  • 대체 솔루션 고려: KVM과 VirtualBox 간 충돌이 빈번하다면, VirtualBox 대신 KVM 기반 가상화 도구(예: Virt-Manager)를 사용하거나, Docker와 같은 컨테이너 기술을 활용하는 것도 대안이 될 수 있습니다. 이는 시스템 자원 사용을 최적화하고 충돌을 줄이는 데 도움이 됩니다.
  • 커뮤니티와 문서 활용: VirtualBox와 KVM 관련 문제는 오픈소스 커뮤니티에서 자주 논의됩니다. Ubuntu 포럼, VirtualBox 공식 문서, 또는 Stack Overflow에서 유사한 사례를 참고하면 추가적인 문제 해결 아이디어를 얻을 수 있습니다.
  • 업데이트와 호환성: Ubuntu 24.04와 같은 최신 배포판에서는 VirtualBox와 KVM의 최신 버전이 설치되어 있을 가능성이 높습니다. 그러나 버전 간 호환성 문제로 인해 충돌이 발생할 수 있으므로, VirtualBox와 KVM의 최신 패치를 적용하는 것이 중요합니다.

결론

Ubuntu 24.04에서 VirtualBox의 VERR_VMX_IN_VMX_ROOT_MODE 에러는 KVM과 VirtualBox 간의 CPU 가상화 자원 충돌로 인해 발생합니다. 위의 해결 방법을 통해 KVM 모듈을 비활성화하고 VirtualBox를 정상적으로 사용할 수 있습니다. 하지만 사용 환경에 따라 일시적 또는 영구적 해결 방법을 선택하고, 필요 시 KVM과 VirtualBox를 번갈아 사용할 수 있도록 모듈 관리를 철저히 해야 합니다. 추가적으로 BIOS 설정 확인, 대체 가상화 솔루션 검토, 그리고 커뮤니티 자원 활용은 문제를 보다 효과적으로 해결하는 데 도움이 될 것입니다.