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

리눅스에서 VirtualBox '커널 드라이버가 설치되지 않았습니다'(rc=-1908) 오류 해결 방법

리눅스는 평소에는 멀쩡히 잘 작동하다가도 어느 순간 갑자기 말썽을 부리곤 합니다. 특히 정작 중요한 작업을 시작하려는 바로 그 순간에 에러 메시지를 마주한다면 그 답답함은 이루 말할 수 없죠. 실제 사례를 하나 소개합니다. 어느 날 갑자기 VirtualBox에서 어떤 가상 머신도 실행되지 않는 현상이 발생했고, 화면에는 다음과 같은 오류 팝업이 나타났습니다.

"Kernel driver not installed (rc=-1908). The VirtualBox Linux kernel driver is either not loaded or not setup correctly."

즉, "커널 드라이버가 설치되어 있지 않습니다(rc=-1908). VirtualBox 리눅스 커널 드라이버가 로드되지 않았거나 올바르게 구성되지 않았습니다"라는 의미입니다. 한동안 VirtualBox 설정을 거의 손댄 적이 없었기 때문에 더욱 당황스러운 상황이었습니다.

오류 안내대로 /sbin/vboxconfig 명령을 실행해 보니, 시스템에 현재 실행 중인 커널용 드라이버를 빌드하는 데 필요한 커널 헤더(kernel headers)가 없다는 메시지가 출력되었습니다. 잠시 생각해 보니 얼마 전에 커널을 6.8 버전에서 6.14 버전으로 업그레이드했었는데, 이상하게도 VirtualBox가 이 변화를 자동으로 따라가지 못한 것이 원인이었습니다. 이번 글에서는 문제의 세부 내용과 해결 방법까지 차근차근 살펴보겠습니다.

문제의 원인 자세히 살펴보기

팝업에 표시된 오류 메시지는 분량이 길면서도 다소 혼란스럽습니다. 더 간단하고 확실한 방법은 터미널에서 /sbin/vboxconfig 명령을 직접 실행해 보는 것입니다. 실제 출력 결과는 아래와 같습니다.

sudo /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
The distribution packages containing the headers are probably:
linux-headers-generic linux-headers-6.14.0-35-generic

메시지의 핵심은 이렇습니다. 새 커널은 설치되어 있지만 해당 커널에 맞는 헤더 파일이 없어서, 시스템이 새 커널용 드라이버를 다시 컴파일하지 못하는 것입니다. 그 결과 VirtualBox 모듈을 로드할 수 없게 됩니다. 참고로 EFI Secure Boot를 사용하는 시스템이라면 커널 모듈(vboxdrv, vboxnetflt, vboxnetadp, vboxpci)에 서명을 해야 로드할 수 있다는 추가 안내도 함께 표시됩니다.

왜 커널 업그레이드 과정에서 프로그램이 제대로 재구성되지 않았는지는 별개의 문제지만, 결국 데스크톱 환경으로서의 리눅스 완성도와 관련된 지점입니다. 이번 사례의 환경은 Kubuntu 24.04(본질적으로 Ubuntu)였습니다.

해결 방법

해결책은 의외로 간단합니다. 누락된 커널 헤더 패키지를 설치하면 됩니다. 사용 중인 배포판과 버전에 따라 필요한 패키지 이름이나 패키지 관리 명령은 달라질 수 있습니다. Kubuntu 24.04(apt 사용) 기준으로는 다음 한 줄이면 충분했습니다.

sudo apt install linux-headers-generic linux-headers-6.14.0-35-generic

설치가 완료되면 /sbin/vboxconfig를 다시 실행합니다. 그러면 커널 모듈이 재컴파일되고 정상적으로 로드되며, VirtualBox를 평소처럼 사용할 수 있게 됩니다. 이제 미뤄뒀던 중요한 작업을 계속 진행하면 됩니다.

추가로 알아두면 좋은 점

커널을 업그레이드할 때마다 동일한 문제가 반복될 수 있습니다. 새 커널을 설치한 후에는 반드시 해당 버전의 헤더 패키지(linux-headers-<커널 버전>)가 함께 설치되었는지 확인하는 습관을 들이면 좋습니다. Ubuntu 계열에서는 linux-headers-generic 메타패키지를 유지하면 대부분 자동으로 최신 헤더가 설치됩니다.

마치며

리눅스 데스크톱에서 늘 아쉬웠던 점은 통합적인 사용자 경험 관점이 부족하다는 것입니다. 각 도구는 저마다의 방식대로만 동작하고 서로를 고려하지 않죠. 새 커널을 설치했다면 관련 모듈 재컴파일이나 헤더 설치를 '제안'해 주면 어떨까요? 아니면 최소한 이전 커널에서 헤더가 사용되었는지 확인해 줄 수도 있습니다. 이런 작은 배려들이 쌓이면 훨씬 매끄러운 경험이 가능합니다. 사용자가 정작 하고 싶은 일에 집중하는데 갑자기 시스템 관리자 노릇을 하게 만들어서는 안 되겠죠.

다행히 이번 드라이버 로딩 문제 자체는 비교적 간단하게 해결됩니다. 하지만 이것은 두 가지 문제 중 하나일 뿐입니다. 다음 글에서는 또 하나의 완전히 불필요한 문제, 발생해서는 안 되는 순수한 회귀(regression)에 해당하는 이슈를 다루어 보겠습니다. 여러분의 가상 머신이 늘 무사히 돌아가기를 바랍니다.