vboxdrv.sh: fail: modprobe vboxdrv không thành công. Vui lòng sử dụng 'dmesg' để tìm hiểu lý do tại sao


53

Tôi gặp sự cố khi chạy VirtualBox trên máy tính xách tay Ubuntu của mình. Máy tính xách tay của tôi là khởi động kép và đang chạy (Windows 10 - tôi nghĩ, đã không sử dụng nó trong nhiều năm), cũng như Ubuntu 16.0.4 LTS.

Tôi đã bật khởi động an toàn trên cài đặt BIOS của máy tính xách tay của mình.

Tôi biết rằng có những câu hỏi tương tự được đăng trên đây, cụ thể là hai câu hỏi sau:

Tôi đã làm theo tất cả các hướng dẫn được đưa ra trong phần câu trả lời cho hai câu hỏi đó - tuy nhiên, vấn đề vẫn chưa được giải quyết.

Đây là đầu ra giao diện điều khiển, khi tôi cố chạy 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.

Đây là đầu ra giao diện điều khiển khi tôi chạy /sbin/vboxconfignhư được đề xuất:

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.

Đây là phần cuối của đầu ra của 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

Bây giờ, tôi sẽ không nói dối - tôi hoàn toàn không biết dmesg vừa mới nói ra điều gì - và theo như tôi có thể nói, không có thông báo lỗi nào trong đầu ra nhật ký - điều này khiến tình hình trở nên đáng sợ hơn.

Có ai đã từng cài đặt VirtualBox 5.x trên máy tính xách tay chạy Ubuntu 16.0.4 LTS - nhưng với tính năng khởi động an toàn được bật trên BIOS ? - nếu có, giải pháp là gì. ???!

Rất nhiều người có vấn đề này - thậm chí vài năm trở lại đây. thật kỳ lạ khi dường như không ai có giải pháp cho nó - ???


2
"Tôi đã bật khởi động an toàn trên cài đặt BIOS của máy tính xách tay của mình." - Đó có thể là một phần của vấn đề của bạn. Tôi nhớ một thời gian trước khi nghe rằng khởi động an toàn đã phá vỡ VBox.
Android Dev

Một câu hỏi tương tự khác: askubfox.com/questions/760671/ Google
Dan Dascalescu

Câu trả lời:


64

VirtualBox + Khởi động an toàn + Ubuntu = thất bại

Vấn đề là yêu cầu tất cả các mô-đun hạt nhân phải được ký bởi một khóa được hệ thống UEFI tin cậy, nếu không việc tải sẽ thất bại. Ubuntu không ký các mô-đun hạt nhân vbox * của bên thứ ba, mà thay vào đó cung cấp cho người dùng tùy chọn tắt Khởi động an toàn khi cài đặt gói hộp ảo. Tôi có thể làm điều đó, nhưng sau đó tôi sẽ thấy một Thông báo khởi động khó chịu ở chế độ không an toàn, mỗi khi máy khởi động và cài đặt Windows 10 khởi động kép mà tôi không hoạt động.

Ubuntu 16.04 trên Dell Latitude E7440 với BIOS A18 và cài đặt Windows 10 khởi động kép.

Tín dụng đi vào nguồn thông tin chính mà tôi đã sử dụng để giải quyết vấn đề này, áp dụng cụ thể cho Fedora / Redhat: http://gorka.eguileor.com/vbox-vmware-in-secureboot-linux-2016-update/

Và một câu hỏi Hỏi về Ubuntu có liên quan: Không thể tải 'vboxdrv' sau khi nâng cấp lên Ubuntu 16.04 (và tôi muốn giữ khởi động an toàn)

Các bước để làm cho nó hoạt động, đặc biệt cho Ubuntu / Debian

  1. Cài đặt gói hộp ảo. Nếu quá trình cài đặt phát hiện Secure Boot được bật, bạn sẽ được xử lý sự cố và đưa ra tùy chọn để tắt Secure Boot. Chọn Nô-ên.

  2. Tạo một cặp khóa RSA công khai / riêng tư sẽ được sử dụng để ký các mô-đun hạt nhân. Tôi đã chọn sử dụng tài khoản root và thư mục / root / module-ký / để lưu trữ tất cả những thứ liên quan đến việc ký các mô-đun hạt nhân.

    $ 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. Sử dụng tiện ích MOK (chủ sở hữu máy chủ khóa) để nhập khóa chung để hệ thống có thể tin cậy. Đây là một quá trình gồm hai bước trong đó khóa được nhập trước, và sau đó phải được đăng ký khi máy được khởi động vào lần tiếp theo. Một mật khẩu đơn giản là đủ tốt, vì nó chỉ được sử dụng tạm thời.

    # mokutil --import /root/module-signing/MOK.der
    input password:
    input password again:
    
  4. Khởi động lại máy. Khi bộ nạp khởi động khởi động, tiện ích EFI của trình quản lý MOK sẽ tự động khởi động. Nó sẽ yêu cầu các phần của mật khẩu được cung cấp ở bước 3. Chọn vào En Enroll MOK, sau đó bạn sẽ thấy khóa được nhập ở bước 3. Hoàn thành các bước đăng ký, sau đó tiếp tục khởi động. Nhân Linux sẽ ghi lại các khóa được tải và bạn sẽ có thể thấy khóa của riêng mình bằng lệnh: dmesg|grep 'EFI: Loaded cert'

  5. Sử dụng tiện ích ký được gửi kèm với các tệp xây dựng nhân, ký tất cả các mô-đun VirtualBox bằng khóa MOK riêng được tạo ở bước 2. Tôi đặt mã này trong một tập lệnh nhỏ /root/module-signing/sign-vbox-modules, để có thể dễ dàng chạy khi các hạt nhân mới được cài đặt như một phần của các bản cập nhật thông thường :

    #!/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
    

    Và sau đó:

    # chmod 700 /root/module-signing/sign-vbox-modules
    
  6. Chạy đoạn script từ bước 5 với quyền root. Bạn sẽ cần chạy tập lệnh ký mỗi khi cài đặt bản cập nhật kernel mới, vì điều này sẽ gây ra việc xây dựng lại các mô-đun VirtualBox của bên thứ ba. Chỉ sử dụng tập lệnh sau khi kernel mới đã được khởi động, vì nó dựa vào modinfo -nuname -rđể cho biết phiên bản kernel nào cần đăng nhập.

  7. Tải mô-đun vboxdrv và kích hoạt VirtualBox:

    # modprobe vboxdrv
    

Quy trình cũng có thể được sử dụng để ký các mô-đun hạt nhân bên thứ ba khác, như trình điều khiển đồ họa nvidia, nếu cần. (Tôi chưa tự mình kiểm tra điều đó.)

Lưu ý: Câu trả lời trên được lấy hoàn toàn từ bài đăng trên blog của yvind Stegard, VirtualBox + Secure Boot + Ubuntu = fail .


1
Tôi gặp lỗi: 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
Lưu ý về 18.04+: grep được đề xuất nên đọc: dmesg|grep 'EFI:'thay chodmesg|grep 'EFI: Loaded cert'
gkephorus

3
Tuyệt đối không biết và hiểu những gì nó làm, nhưng nó đã làm việc.
naneri

1
Chỉ trong trường hợp cần thiết: Tôi gặp vấn đề này với UEFI hoặc Chế độ bảo mật. Trong trường hợp của tôi, cài đặt virtualbox-dkms vào ngày 18.04.x ​​đã bị hỏng. Cách khắc phục của tôi là: apt purge virtualbox-dkms && apt install virtualbox-dkms && modprobe vboxdrv
gorlok

1
nếu bạn nâng cấp hộp ảo từ 5.2 lên 6.0, đừng quên hoàn thành 6 và 7 bước nữa.
voleger

12

Câu trả lời trên có thể hoạt động tốt, nhưng nếu bạn muốn có thời gian dễ dàng hơn cho nó:

Tôi đã có thể giải quyết nó bằng cách

khởi động vào BIOS và đi> nâng cao (f7)> khởi động> cuộn xuống "khởi động an toàn"> thay đổi "chế độ Windows EUFI" thành "hệ điều hành khác"

Virtualbox của tôi hoạt động hoàn hảo bây giờ.


2
Có một lý do bạn sẽ không muốn làm điều này?
Taegost

Do một số sự cố tăng điện hoặc do thứ gì đó, BIOS của tôi đã được thiết lập lại nên tôi cần phải làm điều này. Bây giờ tôi không nhận được lỗi trên.
jamadagni
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.