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

VirtualBox rc=-1908 커널 드라이버 오류 해결법 – 우분투·데비안 gcc-12 누락 문제

문제 개요

데비안 계열 리눅스(우분투, Kubuntu 등)를 사용하다가 시스템 전체 업데이트를 진행했는데, 여기에 VirtualBox의 새 버전도 함께 포함되어 있다면 주의가 필요합니다. 특히 공식(upstream) VirtualBox 저장소를 이용해 최신 버전을 유지하는 환경에서는 업데이트 직후 가상 머신이 더 이상 실행되지 않는 현상이 자주 나타납니다.

이때 표시되는 오류 메시지는 다음과 같습니다.

Kernel driver not installed (rc=-1908)
VirtualBox Linux 커널 드라이버가 로드되지 않았거나 올바르게 설정되지 않았습니다. root 권한으로 '/sbin/vboxconfig'를 실행해 다시 설정해 보시기 바랍니다.

오류 메시지 자세히 살펴보기

전체 오류 메시지에는 EFI Secure Boot 관련 안내도 포함되어 있습니다.

If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them.
→ 즉, EFI Secure Boot가 활성화된 시스템에서는 커널 모듈(vboxdrv, vboxnetflt, vboxnetadp, vboxpci)에 서명해야 로드할 수 있다는 내용입니다.

메시지 마지막에는 다음과 같은 코드도 함께 출력됩니다.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT.

솔직히 말해 이 오류 메시지는 다소 혼란스럽습니다. 대부분의 경우 Secure Boot와는 무관하며, 앞부분과 뒷부분의 문장 구조도 서로 달라 원인을 직관적으로 파악하기 어렵습니다. 따라서 감으로 추측하기보다 단계별로 체계적으로 접근하는 것이 좋습니다.

vboxconfig 실행 결과 확인

터미널에서 sudo /sbin/vboxconfig 명령을 실행하면 다음과 같은 출력을 볼 수 있습니다.

[sudo] password for igor:
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

모듈 빌드가 실패했다는 메시지와 함께, 자세한 원인은 /var/log/vbox-setup.log 파일에서 확인하라고 안내됩니다.

로그 파일 분석

/var/log/vbox-setup.log 파일에는 다음과 같은 내용이 기록되어 있습니다.

Building the main VirtualBox module.
Error building the module:
make V=1 CONFIG_MODULE_SIG= CONFIG_MODULE_SIG_ALL= -C /lib/modules/6.5.0-14-generic/build M=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j20 modules
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
/bin/sh: 1: gcc-12: not found
make[2]: *** [scripts/Makefile.build:251: /tmp/vbox.0/linux/SUPDrv-linux.o] Error 127
make[1]: *** [Makefile:2037: /tmp/vbox.0] Error 2

로그에는 방대한 컴파일 과정이 담겨 있어 초보자에게는 다소 어려워 보일 수 있지만, 핵심은 로그 끝부분에서 'Error' 또는 'not found'가 포함된 줄을 찾는 것입니다. 위 로그의 결정적인 단서는 바로 이 줄입니다.

/bin/sh: 1: gcc-12: not found

VirtualBox 커널 모듈을 빌드하려면 gcc-12 컴파일러가 필요한데, 시스템에 해당 패키지가 설치되어 있지 않다는 의미입니다. 참고로 필자의 경우 동일한 Kubuntu 22.04 환경임에도 한 대의 머신에는 gcc-12가 설치되어 있었고, 다른 한 대에는 없었습니다. 패키지가 누락된 이유는 시스템마다 다양할 수 있으므로, 그 원인을 일일이 따지기보다 문제를 확인하고 해결하는 데 집중하는 편이 현명합니다.

해결 방법

의외로 해결책은 아주 간단합니다. gcc-12 패키지만 설치하면 됩니다.

sudo apt update
sudo apt install gcc-12

설치가 완료되면 다음 명령을 다시 실행합니다.

sudo /sbin/vboxconfig

이번에는 커널 모듈 빌드가 정상적으로 완료되며, VirtualBox를 다시 문제없이 사용할 수 있습니다.

추가 팁

사용 중인 커널이 다른 버전의 GCC로 빌드된 경우라면, 커널에 맞는 gcc 패키지(gcc-11, gcc-13 등)를 설치해야 할 수도 있습니다. 또한 EFI Secure Boot가 활성화된 환경에서는 모듈 서명 문제가 별도로 발생할 수 있으니, 이 경우에는 배포판의 공식 문서를 참고해 커널 모듈 서명 절차를 진행해야 합니다.

마무리

이 문제는 새로운 우분투 커널, 새로운 VirtualBox 버전, 호환되지 않는 컴파일러 등 여러 요소가 얽혀서 발생합니다. rc=-1908 오류를 만났다면 당황하지 말고 체계적으로 접근하세요. 터미널에서 설정 명령을 직접 다시 실행하고, 상세 로그(vbox-setup.log)를 추적하며 진짜 원인을 찾아내는 것이 가장 확실한 해결 경로입니다.

최근 이러한 오류의 가장 흔한 원인은 gcc-12 컴파일러 패키지 누락으로 밝혀졌습니다. 해당 패키지를 설치하고 나면 VirtualBox 드라이버가 성공적으로 컴파일되며, 이후에는 가상화 소프트웨어와 가상 머신을 아무 문제 없이 사용할 수 있습니다. 이 글이 여러분의 생산성을 되찾는 데 도움이 되기를 바랍니다.