Không thể tải 'vboxdrv' sau khi nâng cấp lên Ubuntu 16.04 (và tôi muốn giữ an toàn khởi động)


130

Tôi nâng cấp từ Ubuntu 15.10 lên 16.04 và kể từ đó VirtualBox 5.0.18 không khởi động máy ảo của tôi nữa. Nó phàn nàn rằng 'vboxdrv' không được tải. Vì vậy, tôi cố gắng tải nó và nhận được lỗi sau:

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

Tôi tin rằng nó có liên quan đến khởi động an toàn mà tôi sử dụng và tôi muốn tiếp tục sử dụng. Trên thực tế với Ubuntu 15.10 khởi động an toàn và VirtualBox đã hoạt động tốt.

Ngoài ra, tôi đã thử $ sudo apt-get --reinstall install virtualbox-dkmsxây dựng mô-đun hạt nhân thành công nhưng không giải quyết được vấn đề này.

Bất kỳ ý tưởng làm thế nào để tải vboxdrv trong khi vẫn bật khởi động an toàn?

Cập nhật 2 : Ngoài ra tôi đã thử thực thi sudo mokutil --disable-validation. Khi thực hiện lệnh này, trong lần khởi động tiếp theo, tôi được nhắc tắt chức năng khởi động an toàn, thêm khóa hoặc hàm băm từ đĩa. Vì tôi không muốn tắt khởi động an toàn, có vẻ như điều này cũng không giải quyết được vấn đề của tôi. Ngoài ra tôi muốn giữ UEFI được kích hoạt để cài đặt Windows song song.

Lưu ý : Nếu bạn không ngại vô hiệu hóa khởi động an toàn, hãy xem Tại sao tôi nhận được "Khóa bắt buộc không khả dụng" khi cài đặt các mô-đun hạt nhân của bên thứ 3 hoặc sau khi nâng cấp kernel? thay thế.



Mặc dù câu hỏi này là một bản sao của Askubfox.com/questions/762254/ , nhưng câu hỏi đó không có câu trả lời được đưa ra bởi @Majal bên dưới.
zwets


FWIW, đối với nhân viên của Google: với Ubuntu 18.04, cài đặt aptitude install virtualbox virtualbox-dkms sẽ ký mô-đun và yêu cầu bạn nhập mật khẩu một lần (?). Khởi động lại, nhập cấu hình MOK và đăng ký khóa bằng mật khẩu đó.
Raphael

Câu trả lời:


177

Vì phiên bản kernel 4.4.0-20, nên các mô-đun kernel không dấu sẽ không được phép chạy khi bật Secure Boot. Vì bạn muốn giữ Secure Boot, nên bước hợp lý tiếp theo là các mô-đun đó.

Vì vậy, hãy thử nó.

  1. Tạo khóa ký

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

    Tùy chọn : để bảo mật hơn, bỏ qua công tắc -nodes, sẽ yêu cầu nhập mật khẩu. Sau đó trước khi chuyển sang bước tiếp theo, hãy đảm bảoexport KBUILD_SIGN_PIN='yourpassword'

  2. Ký mô-đun (vboxdrv cho ví dụ này, nhưng lặp lại cho các mô-đun khác ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko)để có đầy đủ chức năng)

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. Xác nhận mô-đun được ký

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. Đăng ký các phím để Khởi động an toàn

    sudo mokutil --import MOK.der
    

    sẽ yêu cầu sử dụng mật khẩu để xác nhận nhập trong bước tiếp theo.

  5. Khởi động lại và làm theo hướng dẫn để Đăng ký MOK (Khóa chủ sở hữu máy). Đây là một mẫu với hình ảnh. Hệ thống sẽ khởi động lại một lần nữa.

  6. Xác nhận khóa đã được đăng ký

    mokutil --test-key MOK.der
    

Nếu VirtualBox vẫn không tải, có thể là do mô-đun không tải ( sudo modprobe vboxdrvsẽ sửa lỗi đó) hoặc khóa không được ký. Đơn giản chỉ cần lặp lại bước đó và mọi thứ sẽ hoạt động tốt.

Tài nguyên: Bài viết trang web chi tiết để FedoraUbuntu thực hiện ký kết mô-đun. @zwets để bảo mật hơn . @shasha_trn để đề cập đến tất cả các mô-đun .

Tài nguyên bổ sung: Tôi đã tạo một tập lệnh bash để sử dụng cho riêng mình mỗi lần virtualbox-dkmsnâng cấp và do đó ghi đè lên các mô-đun đã ký. Kiểm tra vboxsign của tôi ban đầu trên GitHub .


7
Tôi cũng đã ký các mô-đun vboxnetadp, vboxnetflt, vboxpci để có mạng và vượt qua các thiết bị pci trong các máy ảo.
sasha_trn

4
Mở rộng câu trả lời của @ majal, tôi phải thực hiện sudo apt install --reinstall virtualbox-dkmstrước khi làm theo hướng dẫn được cung cấp.
TylersSN

1
@zwets bạn có thể giải thích cách đặt KBUILD_SIGN_PINbiến môi trường đúng không? export KBUILD_SIGN_PIN=passwordexport KBUILD_SIGN_PIN="password"trước bước 2 cả hai đều có kết quảSSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117
adempewolff

3
@adempewolff Nếu mật khẩu của bạn chứa các ký tự mà trình bao của bạn sẽ diễn giải (ví dụ: '$' trong một chuỗi được trích dẫn), bạn sẽ cần phải đặt nó trong dấu nháy đơn (').
zwets

1
@Majal Cảm ơn câu trả lời của bạn! Tôi cũng thích ký các mô-đun thay vì vô hiệu hóa tính năng này. Tôi có thể thêm: (1) Điều này cũng áp dụng cho các mô-đun VMware "vmmon" và "vmnet", có chung số phận. (2) Trong khi thêm các khóa đã tạo, hãy chọn mật khẩu của bạn một cách khôn ngoan. Trong giai đoạn đăng ký khởi động lại và khởi động an toàn, bố cục bàn phím của bạn có thể khác với cài đặt ngôn ngữ của bạn. (-> Bố cục Hoa Kỳ)
một mb

15

Trên hệ thống của tôi, tôi đã làm như sau để làm cho nó hoạt động:

Chạy mokutil:

sudo mokutil --disable-validation

Sau đó mokutil yêu cầu tôi đặt mật khẩu cho Trình quản lý MOK. Sau khi khởi động lại PC, BIOS hiển thị hộp thoại để cấu hình Trình quản lý MOK. Tôi đã tắt SecureBoot từ hộp thoại này, nó yêu cầu một vài ký tự từ mật khẩu (ví dụ: nhập ký tự (5), v.v.).

Sau khi khởi động lên các mô-đun vboxdrv được tải chính xác.

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

Thật kỳ lạ, mokutil vẫn hiển thị SecureBoot được bật:

sudo mokutil --sb-state
SecureBoot enabled

9
Như đã nêu trong câu hỏi của tôi, tôi muốn tiếp tục sử dụng khởi động an toàn. Vì vậy, vô hiệu hóa khởi động an toàn không giải quyết được vấn đề.
JANS

2
Không muốn tắt khởi động an toàn nhưng cuối cùng phải làm điều này vì không có gì khác hoạt động - không muốn bắt đầu ký mọi thứ theo cách thủ công mỗi khi có bản cập nhật kernel .. Đáng tiếc đây là giải pháp dễ dàng duy nhất chuyển tiếp. Btw, UEFI vẫn cho biết khởi động an toàn được kích hoạt. _ (ツ) _ / ¯
jaywink

4

Bạn có thể vô hiệu hóa kiểm tra xác nhận bằng cách

sudo apt install mokutil
sudo mokutil --disable-validation

Sau đó các gói DKMS nên cài đặt.


2
Ngoài ra tôi đã thử thực thi sudo mokutil --disable-verify. Khi thực hiện lệnh này, trong lần khởi động tiếp theo, tôi được nhắc tắt chức năng khởi động an toàn, thêm khóa hoặc hàm băm từ đĩa. Vì tôi không muốn tắt khởi động an toàn, có vẻ như điều này cũng không giải quyết được vấn đề của tôi. Xin vui lòng cho tôi biết trong trường hợp tôi hiểu nhầm lệnh này.
lúc 18 giờ 28 phút

2
Cố gắng vô hiệu hóa khởi động an toàn. Bạn có thể kích hoạt lại, nếu điều đó không có ích.
Pilot6

Tôi đã cố gắng vô hiệu hóa khởi động an toàn - nhưng nó vẫn được bật :( (
ubfox

0

Tôi đã gặp lỗi về vboxdrv sau khi nâng cấp quá. Nhưng có vấn đề với phiên bản cũ (5.0,14) của Gói mở rộng VirtualBox Oracle VM. Tôi đã tải xuống và cài đặt phiên bản mới hơn (5.0.18) của gói này và sự cố đã biến mất.


Hey, bạn có thể vui lòng giải thích? bạn đã tải nó từ đâu? PPA hay file deb?
Karthik Nishanth

1
Tôi đã tải xuống gói Tiện ích mở rộng từ các lượt tải xuống trên trang web VirtualBox , liên kết là "VirtualBox 5.0.18 Gói mở rộng VirtualBox của Oracle VM -> Tất cả các nền tảng được hỗ trợ ". Sau đó, tôi đã mở Tệp> Tùy chọn trên Trình quản lý Hộp ảo Oracle VM, chọn "Tiện ích mở rộng" và thêm tệp đã tải xuống vào danh sách. Nó đã thay thế phiên bản cũ của "Gói mở rộng VirtualBox Oracle VM" (là 5.0,14rxxxxxx).
Reling

1
Gói mở rộng không khắc phục lỗi. Lỗi là về việc ký mô-đun
Karthik Nishanth

Điều này không áp dụng cho vấn đề của tôi.
JANS

1
Điều này không liên quan đến vấn đề của OP. Thông báo lỗi "Khóa bắt buộc không khả dụng" chỉ ra rằng sự cố là do mô-đun hạt nhân chưa được ký trên nền tảng hỗ trợ Khởi động an toàn. Không có bản cập nhật VirtualBox nào có thể khắc phục điều này trừ khi nó bao gồm một mô-đun được ký bằng khóa được tin cậy bởi kernel. Tức là Canonical phải ký tên hoặc Oracle phải ký và khóa công khai của nó phải được thêm vào các khóa đáng tin cậy của kernel (hoặc nền tảng của bạn).
zwets

0

Được rồi, sau một chút thử nghiệm, tôi khá chắc chắn đây là sự cố khởi động an toàn.

Như trong khi nó được kích hoạt thì điều này được ném:

CẢNH BÁO: Mô-đun hạt nhân vboxdrv không được tải. Không có mô-đun nào khả dụng cho kernel hiện tại (4.4.0-21-generic) hoặc không tải được. Vui lòng biên dịch lại mô-đun hạt nhân và cài đặt nó bằng cách thiết lập sudo / sbin / rcvboxdrv

Tuy nhiên, nếu khởi động an toàn bị vô hiệu hóa thì hộp ảo chỉ hoạt động tốt mà không có lỗi.

Tôi vẫn có bios được đặt là UEFI.


3
Như đã nêu trong câu hỏi của tôi, tôi muốn tiếp tục sử dụng khởi động an toàn. Vì vậy, vô hiệu hóa khởi động an toàn không giải quyết được vấn đề.
JANS

0

Tôi đã gặp vấn đề tương tự ngày hôm nay, tôi đã có Windows 10 và Ubuntu 15.10 khi khởi động kép với uefi được bật trên Bios (Tôi không vô hiệu hóa nó để tôi có thể chạy Windows được cài đặt sẵn).

Sau khi nâng cấp lên Ubuntu 16.04 VirtualBox đã dừng tải VM của tôi với cùng một thông báo lỗi:

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

Tôi nghi ngờ sự cố UEFI vì trong khi nâng cấp trình cài đặt đã hỏi tôi có muốn tắt nó không, tôi đã trả lời Không (Vì Có thể làm cho Windows của tôi không sử dụng được).

Những gì tôi đã làm là đến Bios và cho phép hỗ trợ khởi động BIOS kế thừa mà KHÔNG tắt chức năng khởi động an toàn.

Virtualbox hoạt động tốt ngay bây giờ.

Cập nhật : Vì @zwets đã chỉ đúng trong nhận xét, cho phép các mô-đun kế thừa khiến khởi động an toàn bị vô hiệu hóa.


2
Thật ra tôi cũng cần UEFI để khởi động cài đặt Windows song song. Vì vậy, vô hiệu hóa nó cũng không phải là một lựa chọn cho tôi. Tôi cập nhật câu hỏi của tôi cho phù hợp.
JANS

Bạn đã kích hoạt Hỗ trợ cho các mô-đun BIOS kế thừa chưa? Đây là một tùy chọn khác trong UEFI bios, khác với khởi động an toàn.
Zeine77

1
@ Zeine77 bạn có thể xác minh rằng BIOS của bạn cho phép bật "các mô-đun kế thừa" trong khi Secure Boot vẫn được bật không? Điều này rất khó xảy ra, vì tùy chọn đầu tiên cho phép mã không tin cậy chạy trong không gian kernel, điều này đánh bại mục đích của lần thứ hai.
zwets

@zwets bạn nói đúng, tôi vừa kiểm tra cài đặt bios của mình; và cho phép các mô-đun kế thừa khiến khởi động an toàn bị vô hiệu hóa. Tôi đã giả sử, như đã giải thích trong phản hồi, rằng việc vô hiệu hóa khởi động an toàn sẽ khiến Windows 10 boot bị lỗi, đây không phải là trường hợp. Khi tôi cài đặt lần đầu 15.10 (Tháng trước), tôi đã cẩn thận không tắt khởi động an toàn vì điều này sẽ làm hỏng cài đặt Win 10. Điều này có nghĩa là Win 10 được cài đặt sẵn hoạt động tốt với chế độ bảo mật bị tắt?
Zeine77
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.