우분투 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거나 ( 수정) 키가 서명 되지 않았기 때문일 수 있습니다 . 이 단계를 반복하면 모든 것이 잘 작동합니다.

자료 : FedoraUbuntu 모듈 서명 구현대한 자세한 웹 사이트 기사 . 추가 보안을 위해 @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.