VirtualBox 커널 드라이버가 설치되지 않았습니다(rc=-1908) 오류 해결 방법
Secure Boot와 같은 보안 기능은 이유가 있어서 존재하는 것이지만, 때로는 타사 커널 모듈(예: VirtualBox의 vboxdrv)과 충돌하여 문제를 일으키기도 합니다. Secure Boot가 서명되지 않았거나 호환되지 않는 커널 확장 프로그램 로드를 차단하면 VirtualBox는 가상 머신을 제대로 시작하지 못합니다.이는 Mac과 일부 Linux 배포판, 특히 대규모 OS 업데이트 후 또는 사용자 지정 커널을 사용하는 경우에 흔히 발생하는 문제입니다.이러한 문제를 해결하는 방법을 알아두면 시간과 노력을 크게 절약할 수 있습니다.
macOS 및 Linux에서 이 오류를 해결하는 방법
macOS에서 커널 모듈을 허용하세요
macOS 10.13 이상 버전이 설치된 Mac에서 VirtualBox를 실행하는 경우, 확장 프로그램 사용을 허용하라는 메시지가 표시되거나 수동으로 허용해야 할 수 있습니다. Linux는 자체적인 특성이 있지만, macOS의 보안 설정은 비교적 쉽게 수정할 수 있습니다.macOS는 서명되지 않았거나 새로 설치된 모듈의 로드를 차단하는데, 이로 인해 가상 머신 커널 드라이버 오류가 발생하기 때문입니다.
- 시스템 환경설정을 열고 보안 및 개인정보 보호 로 이동하세요.
- 일반 탭 에서 차단된 소프트웨어에 대한 메시지가 표시되면 그 옆에 있는 허용을 클릭하십시오.
VirtualBox 커널 서비스를 재시작하세요
때로는 VirtualBox 시작 스크립트를 다시 시작하는 것만으로도 서명된 커널 확장 프로그램을 제대로 가져오는 데 도움이 될 수 있습니다.터미널을 열고 다음 명령을 실행하세요.
sudo /Library/Application\ Support/VirtualBox/LaunchDaemons/VirtualBoxStartup.sh restart
이 명령은 VirtualBox 커널 확장 프로그램 로딩 프로세스를 중지한 다음 다시 시작합니다.제 Mac에서는 이 방법을 보안 메시지 표시와 함께 사용하면 재부팅 후 VirtualBox가 드라이버를 제대로 인식하는 것을 확인했습니다.
vboxdrv 커널 확장 프로그램을 등록합니다.
또 다른 방법은 VirtualBox 드라이버를 수동으로 등록하는 것입니다.
sudo kmutil load -p '/Library/Application Support/VirtualBox/VBoxDrv.kext'
이렇게 하면 운영체제가 확장 프로그램을 강제로 로드하게 됩니다.일종의 “시스템이 주의를 기울이도록 하는” 조치입니다.이 작업을 실행한 후 재부팅하고 VirtualBox에서 가상 머신이 실행되는지 확인하십시오.때때로 시스템이 SIP(시스템 무결성 보호) 때문에 기본적으로 드라이버를 로드하지 않는 경우가 있습니다.
Oracle 개발자 ID를 승인하세요
위의 방법으로도 문제가 해결되지 않으면 macOS가 해당 개발자를 신뢰하지 않아 드라이버를 차단하고 있을 수 있습니다.이 경우 Oracle의 개발자 ID를 시스템의 보안 평가 목록에 수동으로 추가해야 합니다.이렇게 하면 macOS에 “이 개발자를 신뢰합니다.”라고 알려주는 것과 같습니다.
터미널을 열고 다음 명령어를 실행하세요:
spctl kext-consent add VB5E2TV963
이렇게 하면 Oracle이 신뢰 목록에 추가됩니다.혹시 SIP 때문에 변경이 차단되는 경우를 대비하여 복구 모드에서 이 단계를 다시 한번 수행하는 것이 좋습니다.
- Mac을 재부팅하고 Command + R 키를 눌러 복구 모드로 진입하세요.
- 유틸리티 > 터미널을 엽니다.
- 동일한 명령어를 입력하세요:
- 정상적으로 재부팅한 후 VirtualBox가 문제없이 드라이버를 로드하는지 확인하십시오.
spctl kext-consent add VB5E2TV963
VirtualBox 확장 팩을 설치하세요
드라이버가 여전히 로드되지 않으면 최신 VirtualBox 확장 팩을 설치해 보세요.특히 일부 기능은 추가 커널 모듈이 필요하기 때문입니다.VirtualBox 다운로드 페이지 에서 확장 팩을 다운로드하세요. VirtualBox를 설치한 후, VirtualBox 내의 도구 > 확장 프로그램 으로 이동하여 확장 팩을 설치합니다.경우에 따라 이 확장 팩에는 운영 체제에서 커널 모듈을 인식하는 데 필요한 서명된 드라이버가 포함되어 있을 수 있습니다.
커널 확장 캐시 지우기
macOS는 커널 확장 프로그램을 캐시하는데, 때때로 멈추는 현상이 발생합니다.터미널에서 다음 명령을 실행하세요.
sudo kextcache --clear-staging
이렇게 하면 캐시가 지워집니다.재부팅 후 문제가 해결되었는지 확인해 보세요.해결되지 않으면 재부팅 후 명령어를 다시 실행해 보세요.
다른 VirtualBox 버전을 사용해 보세요.
때때로 새 버전이 현재 운영 체제 설정이나 보안 설정과 호환성을 깨뜨릴 수 있습니다.이럴 때는 VirtualBox를 완전히 제거하십시오.
- 일반적으로 또는 유사한 방법으로 제거 스크립트를 실행합니다
/Library/Application Support/VirtualBox/Uninstall.tool. - 컴퓨터를 재시작한 다음 이전 버전이나 최신 버전을 웹사이트에서 다운로드하세요.경우에 따라 다른 버전이 시스템과 더 잘 호환될 수 있습니다.
SIP용 커널 확장 플래그 수정
SIP 같은 악성 프로그램은 특정 플래그가 제대로 설정되지 않으면 드라이버 로딩을 차단할 수 있습니다.복구 모드로 부팅한 다음( 시작 시 Command + R ), 터미널에서 다음 명령을 실행하세요.
chflags restricted /Volumes/Macintosh\ HD/private/var/db/KernelExtensionManagement
디스크 이름이 실제와 다르면 해당 이름으로 바꾸세요 Macintosh\ HD.재부팅 후 VirtualBox를 다시 설치하고 테스트해 보세요.
보안 부팅 비활성화는 최후의 수단입니다.
정말 어쩔 수 없다면, 보안 부팅(Secure Boot)을 끄는 방법도 있지만, 시스템 보안이 약화된다는 점을 명심하세요.끄는 방법은 다음과 같습니다.
- 복구 모드( Command + R )로 재부팅한 다음 유틸리티 > 시작 보안 유틸리티 로 이동하십시오.
- 보안 부팅을 ‘보안 없음’ 으로 설정하세요.
- 재부팅하면 서명되지 않았거나 신뢰할 수 없는 커널 확장 프로그램이 정상적으로 로드될 수 있습니다.
이 변경 후에는 필요한 경우 보안 부팅을 수동으로 다시 켜야 하지만, 디버깅 목적으로는 빠른 해결책이 될 수 있습니다.
리눅스에서 이 오류를 해결하는 방법
리눅스는 커널 모듈이 버전, 헤더 파일, 서명 프로세스에 크게 의존하기 때문에 골칫거리일 수 있습니다. VirtualBox에서 vboxdrv가 로드되지 않는다는 오류가 발생하는 경우, 다음과 같은 문제가 원인일 가능성이 높습니다.
먼저 재부팅하세요
리눅스 커널 업데이트 후에는 vboxdrv 모듈이 제대로 작동하려면 재부팅이 필요한 경우가 많습니다.간단한 시작이지만, 커널 업데이트가 항상 즉시 반영되는 것은 아니기 때문에 재부팅만으로도 문제가 해결되는 경우가 있습니다.
커널과 헤더를 일치시키세요
커널이 최근에 업데이트되었다면 vboxdrv 모듈이 호환되지 않을 수 있습니다.이 문제를 해결하려면 현재 커널과 동일한 커널 헤더를 다시 설치하십시오. Debian/Ubuntu의 경우:
sudo apt purge virtualbox dkms linux-headers-$(uname -r) sudo apt install linux-headers-$(uname -r) sudo apt install virtualbox
다른 배포판에서는 apt사용하는 패키지 관리자(예: dnf또는 yum)로 전환한 다음 커널 모듈을 다시 적용하세요.
sudo /etc/init.d/vboxdrv setup
또는 DKMS가 설치된 시스템의 경우:
sudo dkms autoinstall
이전 커널로 롤백
현재 사용 중인 커널이 제대로 지원되지 않거나 작동하지 않는 경우, 안정적인 이전 버전으로 되돌리는 것을 고려해 보세요.배포판의 메인라인 아카이브에서 이전 커널을 다운로드하여 설치한 다음, 해당 커널로 재부팅하세요.올바른 버전의 커널을 설치하면 오류가 사라지는 경우가 많습니다.
GCC 버전 조정
모듈이 특정 컴파일러 버전으로 빌드된 경우가 있습니다.사용 중인 GCC 버전이 다르면 문제가 발생할 수 있습니다.해결 방법은 다음과 같습니다.
- VirtualBox 삭제:
sudo apt purge virtualbox - GCC 8(또는 원하는 버전)을 설치하세요.
sudo apt install gcc-8 g++-8 - 기본값으로 설정하세요:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8
그 후에 VirtualBox를 다시 설치하면 모듈이 제대로 로드될 가능성이 높습니다.
보안 부팅을 위해 모듈에 서명하세요
Secure Boot를 사용 중이고 서명 오류가 발생하는 경우, 커널 모듈에 직접 서명해야 할 수도 있습니다.GitHub의 서명 스크립트 와 같은 도구를 사용하면 이 과정을 쉽게 진행할 수 있습니다.하지만 솔직히 말해서, 테스트 시에는 Secure Boot를 끄는 것이 더 빠른 경우가 많습니다.
보안 부팅 비활성화(리눅스용)
최후의 수단으로 시스템 펌웨어 설정(대부분 부팅 메뉴를 통해 시작)에서 “보안 부팅”을 찾아 비활성화하십시오.이렇게 하면 보안 수준이 낮아지지만 가상 머신이 실행될지 여부를 결정짓는 중요한 요소가 될 수 있습니다.
이 가이드가 누군가 머리를 싸매고 고민하는 것을 막는 데 도움이 되기를 바랍니다.물론, 보안 부팅은 불필요하게 일을 더 복잡하게 만드는 추가 단계입니다.
요약
- macOS 보안 및 개인 정보 설정에서 커널 확장을 허용하세요.
- VirtualBox 커널 모듈을 수동으로 재설정하거나 등록하세요.
- 시스템 정책에 Oracle 개발자 ID를 추가합니다.
- VirtualBox 확장 팩을 설치하거나 업데이트하세요.
- 커널 확장 캐시 지우기
- VirtualBox의 다른 버전을 다시 설치하세요
- 다른 모든 방법이 실패하면 보안 부팅을 비활성화하십시오.
- Linux에서는 커널 헤더를 일치시키거나, 커널 롤백을 고려하거나, GCC 버전을 변경하십시오.
- 보안 부팅을 비활성화하는 것이 가장 간단한 해결 방법인 경우가 많습니다.다만, 나중에 필요할 경우 다시 활성화하는 것을 잊지 마세요.
마무리
솔직히 말해서, 보안 부팅과 가상 머신 드라이버를 다루는 건 좀 번거롭긴 하지만, 결국 시스템이 해당 소프트웨어를 신뢰하도록 만드는 문제일 뿐입니다.모듈을 허용하거나 보안 부팅을 일시적으로 끄는 방법을 익히면 훨씬 수월해집니다.다만 모든 시스템 환경이 조금씩 다르기 때문에 시행착오를 거쳐야 할 수도 있다는 점을 기억하세요.이 정보가 누군가의 시간을 조금이라도 절약해 주길 바랍니다.