vboxdrv.sh : 실패 : modprobe vboxdrv가 실패했습니다. 이유를 알아 보려면 'dmesg'를 사용하십시오


53

Ubuntu 랩톱에서 VirtualBox를 실행하는 데 문제가 있습니다. 내 노트북은 듀얼 부팅이며 Ubuntu 16.0.4 LTS뿐만 아니라 실행 중입니다 (Windows 10-몇 년 동안 사용하지 않은 것 같습니다).

랩탑의 BIOS 설정에서 보안 부팅을 활성화했습니다.

나는 여기에 비슷한 질문이 게시되어 있음을 알고 있습니다.

이 두 질문에 대한 답변 섹션에 제공된 모든 지침을 따랐지만 여전히 문제는 해결되지 않았습니다.

virtualbox를 실행하려고 할 때의 콘솔 출력은 다음과 같습니다.

me@YOURBOX:~$ virtualbox
WARNING: The vboxdrv kernel module is not loaded. Either there is no module
         available for the current kernel (4.4.0-47-generic) or it failed to
         load. Please recompile the kernel module and install it by

           sudo /sbin/vboxconfig

         You will not be able to start VMs until this problem is fixed.

다음은 /sbin/vboxconfig제안대로 실행하면 콘솔 출력입니다 .

me@YOURBOX:~$ sudo /sbin/vboxconfig  
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.

다음은 출력의 꼬리 끝입니다 dmesg.

[   44.319682] audit: type=1400 audit(1491313982.374:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/evince-previewer" pid=705 comm="apparmor_parser"
[   45.041433] cgroup: new mount options do not match the existing superblock, will be ignored
[   59.682936] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
[   59.697820] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
[   59.702008] IPv6: ADDRCONF(NETDEV_UP): enp2s0f0: link is not ready
[   60.267000] IPv6: ADDRCONF(NETDEV_UP): enp2s0f0: link is not ready
[   62.473044] IPv6: ADDRCONF(NETDEV_UP): wlp3s0: link is not ready
[   70.681706] audit_printk_skb: 60 callbacks suppressed
[   70.681709] audit: type=1400 audit(1491314008.734:32): apparmor="STATUS" operation="profile_load" profile="unconfined" name="docker-default" pid=2009 comm="apparmor_parser"
[   70.850936] aufs 4.x-rcN-20160111
[   75.407218] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[   75.408555] Bridge firewalling registered
[   75.427172] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[   75.848416] ip_tables: (C) 2000-2006 Netfilter Core Team
[   76.703232] Initializing XFRM netlink socket
[   77.060003] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready
[   80.101042] aufs au_opts_verify:1597:dockerd[1402]: dirperm1 breaks the protection by the permission bits on the lower branch
[  113.895236] wlp3s0: authenticate with 84:16:f9:77:e1:54
[  113.910483] wlp3s0: send auth to 84:16:f9:77:e1:54 (try 1/3)
[  113.912712] wlp3s0: authenticated
[  113.915101] wlp3s0: associate with 84:16:f9:77:e1:54 (try 1/3)
[  113.919397] wlp3s0: RX AssocResp from 84:16:f9:77:e1:54 (capab=0x1411 status=0 aid=1)
[  113.919516] wlp3s0: associated
[  113.919559] IPv6: ADDRCONF(NETDEV_CHANGE): wlp3s0: link becomes ready

이제, 나는 거짓말하지 않을 것입니다-나는 dmesg가 방금 퍼져 나온 것을 전혀 알지 못합니다. 알 수있는 한 로그 출력에 오류 메시지가 없습니다.

누구든지 Ubuntu 16.0.4 LTS를 실행하는 랩톱에 VirtualBox 5.x를 설치했지만 BIOS에서 보안 부팅을 활성화 한 적이 있습니까? -그렇다면 해결책은 무엇입니까? ???!

많은 사람들이이 문제를 겪고 있습니다. 아무도 그것에 대한 해결책을 가지고 있지 않은 것은 매우 이상합니다-???


2
"노트북의 BIOS 설정에서 보안 부팅을 활성화했습니다." -문제의 일부일 수 있습니다. 보안 부팅으로 인해 VBox가 손상되었다고 들었습니다.
Android Dev

또 다른 비슷한 질문 : askubuntu.com/questions/760671/…
Dan Dascalescu

답변:


64

VirtualBox + 보안 부팅 + 우분투 = 실패

문제는 모든 커널 모듈이 UEFI 시스템이 신뢰하는 키로 서명해야한다는 요구 사항입니다. 그렇지 않으면로드가 실패합니다. Ubuntu는 타사 vbox * 커널 모듈에 서명하지 않고 사용자에게 virtualbox 패키지 설치시 보안 부팅을 비활성화 할 수있는 옵션을 제공합니다. 그렇게 할 수는 있지만 컴퓨터가 시작될 때마다 성가신 "안전하지 않은 모드로 부팅"메시지가 표시되고 이중 부팅 Windows 10 설치가 작동하지 않습니다.

BIOS A18 및 이중 부팅 Windows 10 설치가 설치된 Dell Latitude E7440의 Ubuntu 16.04

크레딧은이 문제를 해결하는 데 사용한 기본 정보 소스로갑니다. 이는 특히 Fedora / Redhat에 적용됩니다 : http://gorka.eguileor.com/vbox-vmware-in-secureboot-linux-2016-update/

관련 Ask Ubuntu 질문 : Ubuntu 16.04로 업그레이드 한 후 'vboxdrv'를로드 할 수 없습니다 (보안 부팅을 유지하고 싶습니다)

우분투 / 데비안을 위해 특별히 작동시키는 단계

  1. virtualbox 패키지를 설치하십시오. 설치시 보안 부팅이 활성화 된 것으로 감지되면 현재 문제가 표시되고 보안 부팅을 비활성화하는 옵션이 제공됩니다. "아니오"를 선택하십시오.

  2. 커널 모듈에 서명하는 데 사용될 개인 공개 / 개인 RSA 키 쌍을 작성하십시오. 커널 계정 서명과 관련된 모든 것을 저장하기 위해 루트 계정과 / root / module-signing / 디렉토리를 사용하기로 결정했습니다.

    $ sudo -i
    # mkdir /root/module-signing
    # cd /root/module-signing
    # openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=YOUR_NAME/"
    [...]
    # chmod 600 MOK.priv
    
  3. MOK (“Machine Owner Key”) 유틸리티를 사용하여 시스템에서 신뢰할 수있는 공개 키를 가져옵니다. 이것은 키를 처음 가져온 후 다음에 시스템을 부팅 할 때 나중에 등록해야하는 2 단계 프로세스입니다. 간단한 비밀번호는 임시 용으로 만 사용하기에 충분합니다.

    # mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:
    
  4. 머신을 재부팅하십시오. 부트 로더가 시작되면 MOK Manager EFI 유틸리티가 자동으로 시작됩니다. 3 단계에서 제공 한 암호의 일부를 묻습니다.“MOK 등록”을 선택하면 3 단계에서 가져온 키가 표시됩니다. 등록 단계를 완료 한 다음 부팅을 계속하십시오. Linux 커널은로드 된 키를 기록하므로 다음 명령을 사용하여 자신의 키를 볼 수 있습니다. dmesg|grep 'EFI: Loaded cert'

  5. 커널 빌드 파일과 함께 제공되는 서명 유틸리티를 사용하여 2 단계에서 생성 된 개인 MOK 키를 사용하여 모든 VirtualBox 모듈에 서명합니다. 작은 스크립트에 넣었습니다 /root/module-signing/sign-vbox-modules. 따라서 정기적 인 업데이트의 일부로 새 커널을 설치할 때 쉽게 실행할 수 있습니다. :

    #!/bin/bash
    
    for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
      echo "Signing $modfile"
      /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 \
                                    /root/module-signing/MOK.priv \
                                    /root/module-signing/MOK.der "$modfile"
    done
    

    그리고:

    # chmod 700 /root/module-signing/sign-vbox-modules
    
  6. 5 단계에서 스크립트를 루트로 실행하십시오. 새로운 커널 업데이트가 설치 될 때마다 서명 스크립트를 실행해야합니다. 이로 인해 타사 VirtualBox 모듈이 다시 빌드 될 수 있습니다. 이에 의존하기 때문에, 새로운 커널이 부팅 한 후에 만 스크립트를 사용 modinfo -n하고 uname -r위해 서명하는 커널 버전을 알 수 있습니다.

  7. vboxdrv 모듈을로드하고 VirtualBox를 시작하십시오.

    # modprobe vboxdrv
    

필요한 경우이 절차를 사용하여 nvidia 그래픽 드라이버와 같은 다른 타사 커널 모듈에 서명 할 수도 있습니다. (나는 그것을 직접 테스트하지 않았습니다.)

참고 : 위의 답변은 Øyvind Stegard의 블로그 게시물 인 VirtualBox + Secure Boot + Ubuntu = fail에서 온 것 입니다.


1
오류가 발생합니다 : vboxdrv.sh: failed: modprobe vboxnetflt failed. Please use 'dmesg' to find out why. dmesg :[70567.246789] vboxdrv: Found 2 processor cores [70567.267310] vboxdrv: TSC mode is Invariant, tentative frequency 2166734189 Hz [70567.267315] vboxdrv: Successfully loaded version 5.0.40_Ubuntu (interface 0x00240000)
marshy101

5
18.04+에 대한 참고 사항 : 제안 된 grep은 다음과 같이 읽어야합니다. dmesg|grep 'EFI:'대신dmesg|grep 'EFI: Loaded cert'
gkephorus

3
이것이 무엇을하는지 모르고 이해할 수는 있지만 제대로 작동했습니다.
naneri

1
일부 경우 필요한 경우 : UEFI 또는 보안 모드 없이이 문제가 발생했습니다. 필자의 경우 18.04.x의 virtualbox-dkms 설치가 중단되었습니다. 내 수정은 : apt purge virtualbox-dkms && apt install virtualbox-dkms && modprobe vboxdrv
gorlok

1
virtualbox를 5.2에서 6.0으로 업그레이드하는 경우 6 단계와 7 단계를 다시 완료하는 것을 잊지 마십시오.
voleger

12

위의 대답은 아마 잘 작동하지만 더 쉬운 시간을 원한다면 :

나는 그것을 해결할 수 있었다

BIOS로 부팅하고 고급 (f7)> 부팅> 아래로 스크롤하여 "보안 부팅"으로 이동> "Windows EUFI 모드"를 "기타 OS"로 변경

내 가상 박스는 이제 완벽하게 작동합니다.


2
이것을 원하지 않는 이유가 있습니까?
Taegost

전원 서지 나 BIOS로 인해 재설정되었으므로이 작업을 수행해야했습니다. 이제 위의 오류가 발생하지 않습니다.
jamadagni
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.