우분투 16.04로 업그레이드 한 후 'vboxdrv'를로드 할 수 없습니다 (보안 부팅을 유지하고 싶습니다)


130

Ubuntu 15.10에서 16.04로 업그레이드 한 이후 VirtualBox 5.0.18이 더 이상 VM을 시작하지 않습니다. 'vboxdrv'가로 드되지 않았다고 불평합니다. 그래서 그것을로드하려고 시도하고 다음 오류가 발생합니다.

$ sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available

보안 부팅과 관련이 있으며 계속 사용하고 싶습니다. 실제로 Ubuntu 15.10 보안 부팅 및 VirtualBox에서는 제대로 작동했습니다.

또한 $ sudo apt-get --reinstall install virtualbox-dkms커널 모듈을 성공적으로 빌드했지만이 문제를 해결하지 못했습니다.

안전한 부팅을 유지하면서 vboxdrv를로드하는 방법에 대한 아이디어가 있습니까?

업데이트 2 : 또한 실행을 시도했습니다 sudo mokutil --disable-validation. 이 명령을 실행할 때 다음 부팅 중에 보안 부팅을 비활성화하고 디스크에서 키 또는 해시를 추가하라는 메시지가 표시됩니다. 보안 부팅을 비활성화하고 싶지 않기 때문에 이것이 문제를 해결하지 못하는 것 같습니다. 또한 병렬 Windows 설치를 위해 UEFI를 활성화 상태로 유지하고 싶습니다.

참고 : 보안 부팅을 비활성화하지 않으 려면 타사 커널 모듈을 설치할 때 또는 커널 업그레이드 후 "필수 키를 사용할 수 없습니다"라는 이유는 무엇입니까?를 참조하십시오 . 대신에.



이 질문은 askubuntu.com/questions/762254/… 와 중복되지만이 질문에는 아래 @Majal의 답변이 포함되어 있지 않습니다.
— zwets


FWIW, Google 직원 : Ubuntu 18.04와 함께 설치 aptitude install virtualbox virtualbox-dkms 하면 모듈에 서명하고 일회용 비밀번호 (?)를 묻습니다. 재부팅하고 MOK config를 입력 한 후 해당 비밀번호를 사용하여 키를 등록하십시오.
— 라파엘

답변:


177

커널 버전 4.4.0-20부터 서명되지 않은 커널 모듈은 보안 부팅이 활성화 된 상태에서 실행할 수 없습니다. 보안 부팅을 유지하려면 다음 논리적 단계는 해당 모듈 에 서명 하는 것입니다.

시도해 봅시다.

  1. 서명 키 만들기

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive common name/"
    

    옵션 : 추가 보안을 위해 비밀번호를 요청하는 -nodes 스위치를 건너 뜁니다. 그런 다음 다음 단계로 넘어 가기 전에export KBUILD_SIGN_PIN='yourpassword'

  2. 모듈에 서명하십시오 (이 예제에서는 vboxdrv, 다른 ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko)기능에서는 전체 기능 을 위해 반복하십시오 )

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. 모듈 서명 확인

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. 보안 부팅에 키 등록

    sudo mokutil --import MOK.der
    

    다음 단계에서 가져 오기를 확인하는 데 사용할 비밀번호를 묻습니다.

  5. 재부팅하고 지시에 따라 MOK (기계 소유자 키)를 등록하십시오. 다음 은 사진 이 포함 된 샘플 입니다. 시스템이 한 번 더 재부팅됩니다.

  6. 키가 등록되어 있는지 확인

    mokutil --test-key MOK.der
    

VirtualBox가 여전히로드되지 않으면 모듈이로드되지 않았 sudo modprobe vboxdrv거나 ( 수정) 키가 서명 되지 않았기 때문일 수 있습니다 . 이 단계를 반복하면 모든 것이 잘 작동합니다.

자료 : Fedora 및 Ubuntu 모듈 서명 구현 에 대한 자세한 웹 사이트 기사 . 추가 보안을 위해 @zwets . 모든 모듈 을 언급 한 @shasha_trn .

추가 리소스 :virtualbox-dkms 업그레이드 할 때마다 본인이 사용할 bash 스크립트를 만들어서 서명 된 모듈을 덮어 씁니다. 원래 GitHub 에서 내 vboxsign을 확인하십시오 .


7
또한 vboxnetadp, vboxnetflt, vboxpci 모듈에 서명하여 가상 시스템에서 네트워크 및 패스 던져 PCI 장치를 갖습니다.
— sasha_trn

4
@majal의 대답을 확장 sudo apt install --reinstall virtualbox-dkms하면서 제공된 지침을 따르기 전에 실행 해야했습니다.
— TylersSN

1
@zwets KBUILD_SIGN_PIN환경 변수 를 올바르게 설정하는 방법에 대해 자세히 설명해 주 시겠습니까? export KBUILD_SIGN_PIN=password그리고 export KBUILD_SIGN_PIN="password"2 단계 이전에SSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117
— adempewolff

3
@adempewolff 암호에 쉘이 해석 할 문자가 포함 된 경우 (예 : 인용 된 문자열에서 '$') 아포스트로피 ( ')로 묶어야합니다.
— zwets

1
@Majal 답변 주셔서 감사합니다! 또한 기능을 비활성화하는 대신 모듈에 서명하는 것이 좋습니다. (1) 동일한 운명을 공유하는 VMware 모듈 "vmmon"및 "vmnet"에도 적용됩니다. (2) 생성 된 키를 추가하는 동안 현명하게 비밀번호를 선택하십시오. 재부팅 및 보안 부팅 등록 단계에서 키보드 레이아웃이 로캘 설정과 다를 수 있습니다. (-> US-Layout)
— 중 하나

15

내 시스템에서 작동하도록 다음을 수행했습니다.

mokutil을 실행하십시오.

sudo mokutil --disable-validation

그런 다음 mokutil에서 MOK Manager의 암호를 설정하도록 요청했습니다. PC를 재부팅 한 후 BIOS는 MOK Manager를 구성하는 대화 상자를 표시했습니다. 이 대화 상자에서 SecureBoot를 비활성화했으며 암호로 여러 문자를 입력했습니다 (예 : 문자 (5) 입력 등).

부팅 후 vboxdrv 모듈이 올바르게로드되었습니다.

lsmod | grep vboxdrv
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci

흥미롭게도 mokutil은 여전히 ​​SecureBoot가 활성화되어 있음을 보여줍니다.

sudo mokutil --sb-state
SecureBoot enabled

9
내 질문에서 언급했듯이 보안 부팅을 계속 사용하고 싶습니다. 따라서 보안 부팅을 비활성화해도 문제가 해결되지 않습니다.
— jans

2
보안 부팅을 비활성화하고 싶지는 않았지만 결국에는 아무것도 작동하지 않기 때문에이 작업을 수행해야했습니다. 커널 업데이트가 올 때마다 수동으로 서명을 시작하고 싶지는 않습니다.이 방법은 유일한 쉬운 해결책입니다. Btw에서 UEFI는 여전히 보안 부팅이 활성화되어 있다고 말합니다. ¯_ (ツ) _ / ¯
— jaywink

4

다음과 같은 방법으로 유효성 검사를 비활성화 할 수 있습니다

sudo apt install mokutil
sudo mokutil --disable-validation

그런 다음 DKMS 패키지가 설치되어야합니다.


2
또한 sudo mokutil --disable-validation을 실행하려고했습니다. 이 명령을 실행할 때 다음 부팅 중에 보안 부팅을 비활성화하고 디스크에서 키 또는 해시를 추가하라는 메시지가 표시됩니다. 보안 부팅을 비활성화하고 싶지 않기 때문에 이것이 문제를 해결하지 못하는 것 같습니다. 이 명령을 잘못 이해 한 경우 알려주십시오.
— jans

2
보안 부팅을 비활성화하십시오. 도움이되지 않으면 다시 활성화 할 수 있습니다.
— Pilot6

보안 부팅을 비활성화하려고 시도했지만 여전히 활성화되어 있습니다 :( (ubuntu 18.04)
— xhudik

0

업그레이드 후 vboxdrv에 대한 오류가 발생했습니다. 그러나 Oracle VM VirtualBox Extension Pack의 이전 버전 (5.0.14)에 문제가있었습니다. 이 팩의 최신 버전 (5.0.18)을 다운로드하여 설치했는데 문제가 사라졌습니다.


이봐 요, 좀 더 자세히 설명해 주시겠습니까? 어디서 다운로드 했습니까? PPA 또는 deb 파일?
— Karthik Nishanth

1
VirtualBox 사이트의 다운로드에서 확장팩을 다운로드했으며 링크는 "VirtualBox 5.0.18 Oracle VM VirtualBox Extension Pack-> 모든 지원되는 플랫폼 "입니다. 그런 다음 Oracle VM Virtual Box Manager에서 File> Preferences를 열고 "Extensions"를 선택한 다음 다운로드 한 파일을 목록에 추가했습니다. 이전 버전의 "Oracle VM VirtualBox Extension Pack"(기존 5.0.14rxxxxxx)을 대체했습니다.
— Reling

1
확장 팩은 오류를 수정하지 않습니다. 오류는 모듈에 서명하는 것입니다
— Karthik Nishanth

이것은 내 문제에 적용되지 않습니다.
— jans

1
이것은 OP의 문제와 관련이 없습니다. "필수 키를 사용할 수 없습니다"라는 오류 메시지는 보안 부팅 가능 플랫폼의 서명되지 않은 커널 모듈로 인한 문제임을 나타냅니다. 커널이 신뢰하는 키를 사용하여 서명 한 모듈이 포함되어 있지 않으면 VirtualBox 업데이트로이 문제를 해결할 수 없습니다 . 즉, Canonical이 서명하거나 Oracle이 서명해야하며 공개 키를 커널 (또는 플랫폼)의 신뢰할 수있는 키에 추가해야합니다.
— zwets

0

테스트를 마친 후에는 이것이 안전한 부팅 문제라고 확신합니다.

그것이 활성화 된 것처럼 이것은 던져집니다 :

경고 : vboxdrv 커널 모듈이로드되지 않았습니다. 현재 커널에 사용 가능한 모듈이 없거나 (4.4.0-21-generic)로드하지 못했습니다. 커널 모듈을 다시 컴파일하고 sudo / sbin / rcvboxdrv setup으로 설치하십시오

그러나 보안 부팅이 비활성화되면 virtualbox는 오류없이 정상적으로로드됩니다.

여전히 BIOS가 UEFI로 설정되어 있습니다.


3
내 질문에서 언급했듯이 보안 부팅을 계속 사용하고 싶습니다. 따라서 보안 부팅을 비활성화해도 문제가 해결되지 않습니다.
— jans

0

나는 오늘 같은 문제가 있었고 Bios에서 uefi가 활성화 된 이중 부팅에서 Windows 10 및 Ubuntu 15.10을 사용했습니다 (사용하지 않도록 설정하지 않았으므로 사전 설치된 Windows를 실행할 수 있습니다).

Ubuntu 16.04로 업그레이드 한 후 VirtualBox는 동일한 오류 메시지와 함께 내 VM로드를 중지했습니다.

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

설치 프로그램을 업그레이드하는 동안 설치 해제 여부를 물었으므로 아니오로 응답했기 때문에 UEFI 문제가 의심되었습니다 (예 : Windows를 사용하지 못하게 할 수 있음).

내가 한 일은 Bios로 가서 보안 부팅을 비활성화하지 않고 레거시 BIOS 부팅을 지원하는 것입니다.

Virtualbox는 이제 잘 작동합니다.

업데이트 : @zwets가 주석에서 올바르게 지적했듯이 레거시 모듈을 활성화하면 보안 부팅이 비활성화됩니다.


2
실제로 병렬 Windows 설치를 부팅하려면 UEFI도 필요합니다. 따라서 비활성화해도 나에게 옵션이 아닙니다. 그에 따라 질문을 업데이트했습니다.
— jans

레거시 BIOS 모듈 지원을 활성화 했습니까? 이것은 UEFI BIOS에서 보안 부팅과 다른 옵션입니다.
— Zeine77

1
@ Zeine77 보안 부팅이 활성화 된 상태에서 BIOS가 "레거시 모듈" 을 활성화 할 수 있는지 확인할 수 있습니까? 첫 번째 옵션은 신뢰할 수없는 코드가 커널 공간에서 실행될 수 있으므로 두 번째 목적을 무효화 할 가능성이 매우 낮습니다.
— zwets

@zwets 당신 말이 맞아, 난 그냥 내 바이오스 설정을 확인; 레거시 모듈을 활성화하면 보안 부팅이 비활성화되었습니다. 응답에서 설명한 것처럼 보안 부팅을 사용하지 않으면 Windows 10 부팅이 실패한다고 가정했지만 그렇지 않습니다. 처음 15.10 (개월 전)을 설치할 때 보안 부팅을 비활성화하지 않도록주의를 기울였습니다. Win 10 설치가 손상 될 수 있습니다. 이것은 사전 설치된 Win 10이 보안 모드가 비활성화 된 상태에서 제대로 작동한다는 것을 의미합니까?
— Zeine77
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.