vboxdrv.sh: ล้มเหลว: modprobe vboxdrv ล้มเหลว โปรดใช้ 'dmesg' เพื่อค้นหาสาเหตุ


53

ฉันมีปัญหาในการใช้งาน VirtualBox บนแล็ปท็อป Ubuntu ของฉัน แล็ปท็อปของฉันคือดูอัลบูตและทำงานอยู่ (Windows 10 - ฉันคิดว่าไม่ได้ใช้มาหลายปี) รวมถึง Ubuntu 16.0.4 LTS

ฉันเปิดใช้งานการบูตอย่างปลอดภัยในการตั้งค่า 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 เพิ่งคาย - และเท่าที่ฉันสามารถบอกได้ว่าไม่มีข้อความแสดงข้อผิดพลาดในเอาต์พุตของบันทึก - ซึ่งทำให้สถานการณ์ยิ่งโมโหมากขึ้น

มีใครเคยติดตั้ง VirtualBox 5.x บนแล็ปท็อปที่ใช้ Ubuntu 16.0.4 LTS แต่มีการเปิดใช้งานการบูตที่ปลอดภัยบน BIOSหรือไม่ - ถ้าใช่ทางออกคืออะไร ???!

ผู้คนจำนวนมากมีปัญหานี้ - แม้จะย้อนกลับไปไม่กี่ปี มันแปลกมากที่ไม่มีใครดูเหมือนจะมีทางออกสำหรับมัน - ???


2
"ฉันเปิดใช้งานการบูตอย่างปลอดภัยในการตั้งค่า BIOS ของแล็ปท็อปของฉัน" - นั่นอาจเป็นส่วนหนึ่งของปัญหาของคุณ ฉันจำได้ว่าในขณะที่ได้ยินกลับมาว่าบูตปลอดภัยได้ทำลาย VBox
Android Dev

อีกคำถามที่คล้ายกัน: askubuntu.com/questions/760671/…
Dan Dascalescu

คำตอบ:


64

VirtualBox + Secure Boot + Ubuntu = ล้มเหลว

ปัญหาคือข้อกำหนดที่ทุกเคอร์เนลโมดูลต้องลงนามโดยคีย์ที่เชื่อถือได้โดยระบบ UEFI มิฉะนั้นการโหลดจะล้มเหลว Ubuntu ไม่ได้ลงนามในโมดูลเคอร์เนล vbox * ของบุคคลที่สาม แต่ให้ผู้ใช้เลือกที่จะปิดการใช้งาน Secure Boot เมื่อทำการติดตั้งแพ็คเกจ Virtualbox ฉันสามารถทำเช่นนั้นได้ แต่จากนั้นฉันจะเห็นข้อความ“ การบูทในโหมดไม่ปลอดภัย” ที่น่ารำคาญทุกครั้งที่เครื่องเริ่มทำงานและการติดตั้ง Windows 10 แบบดูอัลบูตฉันไม่สามารถทำงานได้

Ubuntu 16.04 บน Dell Latitude E7440 ที่มี BIOS A18 และการติดตั้งดูอัลบูท Windows 10

เครดิตไปที่แหล่งข้อมูลหลักที่ฉันใช้เพื่อแก้ไขปัญหานี้ซึ่งใช้เฉพาะกับ Fedora / Redhat: http://gorka.eguileor.com/vbox-vmware-in-secureboot-linux-2016-update/

และคำถามที่เกี่ยวข้องถามอูบุนตู: ไม่สามารถโหลด 'vboxdrv' หลังจากอัปเกรดเป็น Ubuntu 16.04 (และฉันต้องการให้บูตอย่างปลอดภัย)

ขั้นตอนในการทำให้ใช้งานได้เฉพาะกับ Ubuntu / Debian

  1. ติดตั้งแพคเกจ virtualbox หากการติดตั้งตรวจพบว่าเปิดใช้งาน Secure Boot แล้วคุณจะพบกับปัญหาในมือและกำหนดตัวเลือกให้ปิดใช้งาน Secure Boot เลือก“ ไม่”

  2. สร้างคู่คีย์ RSA สาธารณะ / ส่วนตัวส่วนบุคคลซึ่งจะใช้ในการลงนามโมดูลเคอร์เนล ฉันเลือกที่จะใช้บัญชีรูทและไดเรกทอรี / รูท / โมดูลลงนาม / เพื่อเก็บทุกสิ่งที่เกี่ยวข้องกับการเซ็นโมดูลเคอร์เนล

    $ 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 (“ รหัสเจ้าของเครื่อง”) เพื่อนำเข้ากุญแจสาธารณะเพื่อให้ระบบเชื่อถือได้ นี่เป็นกระบวนการสองขั้นตอนที่คีย์จะถูกนำเข้าครั้งแรกและจากนั้นจะต้องลงทะเบียนเมื่อเครื่องบูตในครั้งต่อไป รหัสผ่านที่ง่ายนั้นดีพอเพราะเป็นเพียงการใช้งานชั่วคราว

    # mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:
    
  4. รีบูทเครื่อง เมื่อ bootloader เริ่มต้นยูทิลิตี้ MOI ผู้จัดการ EFI ควรเริ่มต้นโดยอัตโนมัติ มันจะถามถึงบางส่วนของรหัสผ่านที่ให้มาในขั้นตอนที่ 3 เลือกที่“ ลงทะเบียน MOK” จากนั้นคุณจะเห็นคีย์ที่นำเข้าในขั้นตอนที่ 3 ทำตามขั้นตอนการลงทะเบียนให้สมบูรณ์ เคอร์เนล Linux จะบันทึกคีย์ที่โหลดและคุณควรเห็นคีย์ของคุณเองด้วยคำสั่ง: dmesg|grep 'EFI: Loaded cert'

  5. ใช้ยูทิลิตี้การเซ็นชื่อ shippped กับไฟล์สร้างเคอร์เนลลงนามโมดูล VirtualBox ทั้งหมดโดยใช้คีย์ MOK ส่วนตัวที่สร้างขึ้นในขั้นตอนที่ 2 ฉันใส่มันในสคริปต์ขนาดเล็ก/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 + Boot ปลอดภัย + Ubuntu = ล้มเหลว


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 หรือ Secure ในกรณีของฉันการติดตั้ง virtualbox-dkms ใน 18.04.x ​​นั้นใช้งานไม่ได้ การแก้ไขของฉันคือ: apt purge virtualbox-dkms && apt ติดตั้ง virtualbox-dkms && modprobe vboxdrv
gorlok

1
ถ้าคุณอัพเกรด virtualbox จาก 5.2 เป็น 6.0 อย่าลืมทำตามขั้นตอนที่ 6 และ 7 อีกครั้ง
voleger

12

คำตอบข้างต้นอาจใช้ได้ดี แต่ถ้าคุณต้องการเวลาที่ง่ายขึ้น:

ฉันสามารถแก้ไขได้โดย

การบูตเข้าสู่ไบออสและไปที่> ขั้นสูง (f7)> บูต> เลื่อนลงไปที่ "บูตปลอดภัย"> เปลี่ยน "โหมด Windows EUFI" เป็น "ระบบปฏิบัติการอื่น"

VirtualBox ของฉันทำงานได้อย่างสมบูรณ์แบบในขณะนี้


2
มีเหตุผลที่คุณไม่ต้องการทำเช่นนี้หรือไม่?
Taegost

เนื่องจากไฟกระชากหรือบางสิ่งบางอย่าง BIOS ของฉันได้รับการรีเซ็ตดังนั้นฉันจึงต้องทำสิ่งนี้ ตอนนี้ฉันไม่ได้รับข้อผิดพลาดดังกล่าว
jamadagni
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.