Pertanyaan Tidak dapat memuat 'vboxdrv' setelah upgrade ke Ubuntu 16.04 (dan saya ingin tetap boot aman)


Saya melakukan upgrade dari Ubuntu 15.10 ke 16.04 dan sejak itu VirtualBox 5.0.18 tidak memulai VM saya lagi. Ini mengeluh bahwa 'vboxdrv' tidak dimuat. Jadi saya mencoba memuatnya dan mendapatkan kesalahan berikut:

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

Saya percaya ini terkait dengan boot aman yang saya gunakan dan yang ingin saya terus gunakan. Sebenarnya dengan Ubuntu 15.10 boot aman dan VirtualBox bekerja dengan baik.

Saya juga mencoba $ sudo apt-get --reinstall install virtualbox-dkms yang membuat modul kernel berhasil tetapi tidak menyelesaikan masalah ini.

Tahu bagaimana cara mendapatkan vboxdrv dimuat sambil menjaga keamanan boot diaktifkan?

Perbarui 2: Juga saya mencoba mengeksekusi sudo mokutil --disable-validation. Ketika menjalankan perintah ini, selama boot berikutnya saya diminta untuk menonaktifkan boot aman, tambahkan kunci atau hash dari disk. Karena saya tidak ingin menonaktifkan boot aman, tampaknya ini juga tidak menyelesaikan masalah saya. Juga saya ingin tetap UEFI diaktifkan untuk instalasi Windows paralel.

Catatan: Jika Anda tidak keberatan menonaktifkan boot aman, lihat Mengapa saya mendapatkan "Kunci yang diperlukan tidak tersedia" ketika menginstal modul kernel pihak ke-3 atau setelah upgrade kernel? sebagai gantinya.


104
2018-04-22 16:10


asal


saya juga. mencoba menginstal ulang / membersihkan - Karthik Nishanth
Lihat askubuntu.com/questions/762254/… - Pilot6
Meskipun pertanyaan ini merupakan duplikat dari askubuntu.com/questions/762254/…, pertanyaan itu tidak menampilkan jawaban yang diberikan oleh @Majal di bawah ini. - zwets
Panduan langkah demi langkah: stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail - Dušan Maďar


Jawaban:


Sejak versi kernel 4.4.0-20, diberlakukan unsigned modul kernel tidak akan diizinkan untuk dijalankan dengan Boot Aman diaktifkan. Karena Anda ingin menjaga Secure Boot, maka langkah logis selanjutnya adalah tanda modul-modul itu.

Jadi ayo coba.

  1. Buat kunci penandatanganan

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

    Pilihan: untuk keamanan tambahan, lewati saklar -node, yang akan meminta kata sandi. Kemudian sebelum melanjutkan ke langkah berikutnya, pastikan untuk melakukannya export KBUILD_SIGN_PIN='yourpassword'

  2. Tanda tangani modul (vboxdrv untuk contoh ini, tetapi ulangi untuk modul lain di ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko) untuk fungsionalitas penuh)

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. Konfirmasikan bahwa modul sudah ditandatangani

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. Daftarkan kunci ke Secure Boot

    sudo mokutil --import MOK.der
    

    yang akan meminta kata sandi untuk digunakan untuk mengkonfirmasi impor di langkah berikutnya.

  5. Reboot dan ikuti instruksi untuk Mendaftar MOK (Kunci Pemilik Mesin). Ini a mencicipi dengan gambar. Sistem akan reboot satu kali lagi.

  6. Konfirmasikan bahwa kunci terdaftar

    mokutil --test-key MOK.der
    

Jika VirtualBox masih tidak memuat, itu mungkin karena modul tidak memuat (sudo modprobe vboxdrv akan memperbaikinya) atau bahwa kunci tidak ditandatangani. Cukup ulangi langkah itu dan semuanya harus berfungsi dengan baik.

Sumber daya: Situs web terperinci artikel untuk Fedora dan Implementasi Ubuntu penandatanganan modul. @zwet untuk keamanan tambahan. @shasha_trn untuk menyebutkan semua modul.

Sumber daya tambahan: Saya membuat skrip bash untuk saya gunakan setiap saat virtualbox-dkms upgrade dan dengan demikian menimpa modul yang ditandatangani. Lihat saya vboxsign di GitHub.


143
2018-05-06 05:57



Saya juga menandatangani vboxnetadp, vboxnetflt, modul vboxpci untuk memiliki jaringan dan melewatkan perangkat pci di mesin virtual. - sasha_trn
Satu tambahan untuk keamanan-sadar: kunci privat MOK.priv dihasilkan oleh openssl -nodes seperti di atas tidak dilindungi oleh kata sandi. Jadi pada prinsipnya, program jahat dapat menggunakannya untuk menandatangani modul yang disusupi atau bahkan mencemari bootloader, karena kunci penandatanganan Anda sekarang berada dalam penyimpanan perangkat keras sebagai kunci tepercaya. Solusi yang lebih aman adalah dengan menghilangkan -nodes pilihan. Di langkah 1 openssl kemudian akan meminta kata sandi untuk melindungi kunci privat. Sebelum langkah 2, saat menandatangani, atur KBUILD_SIGN_PIN variabel lingkungan ke kata sandi yang Anda tentukan di langkah 1. - zwets
Memperluas jawaban @ majal, saya harus mengeksekusi sudo apt install --reinstall virtualbox-dkms sebelum mengikuti instruksi yang diberikan. - TylersSN
@zwets dapat Anda jelaskan tentang cara mengaturnya dengan benar KBUILD_SIGN_PIN variabel lingkungan? export KBUILD_SIGN_PIN=password dan export KBUILD_SIGN_PIN="password" sebelum langkah 2 keduanya menghasilkan SSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117 - adempewolff
@adempewolff Jika kata sandi Anda mengandung karakter yang akan ditafsirkan oleh shell Anda (mis. '$' dalam string yang dikutip), Anda harus menyertakannya dalam apostrof ('). - zwets


Di sistem saya, saya melakukan hal berikut untuk membuatnya berfungsi:

Jalankan mokutil:

sudo mokutil --disable-validation

Kemudian mokutil meminta saya untuk mengatur kata sandi untuk Manajer MOK. Setelah me-reboot PC, BIOS menunjukkan dialog untuk mengkonfigurasi Manajer MOK. Saya menonaktifkan SecureBoot dari dialog ini, itu meminta beberapa karakter dari kata sandi (mis. Masukkan karakter (5), dll).

Setelah melakukan boot atas modul vboxdrv dimuat dengan benar.

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

Anehnya, mokutil masih menunjukkan SecureBoot diaktifkan:

sudo mokutil --sb-state
SecureBoot enabled

13
2018-04-26 16:16



Seperti yang dinyatakan dalam pertanyaan saya, saya ingin terus menggunakan boot aman. Jadi menonaktifkan boot aman tidak menyelesaikan masalah. - jans
Tidak ingin menonaktifkan boot aman tetapi pada akhirnya harus melakukan ini karena tidak ada yang bisa berfungsi - tidak ingin mulai menandatangani barang secara manual setiap kali pembaruan kernel datang .. Sayang ini adalah satu-satunya solusi mudah ke depan. Btw, UEFI masih mengatakan boot aman diaktifkan. ¯_ (ツ) _ / ¯ - jaywink


Anda dapat menonaktifkan pemeriksaan validasi oleh

sudo apt install mokutil
sudo mokutil --disable-validation

Setelah itu paket DKMS harus diinstal.


4
2018-04-25 07:39



Juga saya mencoba mengeksekusi sudo mokutil - validasi yang dapat dihapus. Ketika menjalankan perintah ini, selama boot berikutnya saya diminta untuk menonaktifkan boot aman, tambahkan kunci atau hash dari disk. Karena saya tidak ingin menonaktifkan boot aman, tampaknya ini juga tidak menyelesaikan masalah saya. Tolong beri tahu saya jika saya salah memahami perintah ini. - jans
Coba nonaktifkan boot aman. Anda dapat mengaktifkannya kembali, jika itu tidak membantu. - Pilot6


Saya mendapat kesalahan tentang vboxdrv setelah peningkatan juga. Namun ada masalah dengan versi lama (5.0.14) dari Oracle VM VirtualBox Extension Pack. Saya mengunduh dan menginstal versi yang lebih baru (5.0.18) dari paket ini dan masalah hilang.


0
2018-04-22 22:41



Hei, bisakah kamu menjelaskannya? Dari mana Anda mengunduhnya? PPA atau file deb? - Karthik Nishanth
Saya mengunduh paket Ekstensi dari unduhan di situs VirtualBox, tautannya adalah "VirtualBox 5.0.18 Oracle VM VirtualBox Extension Pack -> Semua platform yang didukung". Kemudian saya membuka File> Preferensi di Oracle VM Virtual Box Manager, memilih" Extensions ", dan menambahkan file yang diunduh ke daftar. Ini menggantikan versi lama" Oracle VM VirtualBox Extension Pack "(adalah 5.0.14rxxxxxx). - Reling
Paket ekstensi tidak memperbaiki kesalahan. Kesalahannya adalah tentang menandatangani modul - Karthik Nishanth
Ini tidak berlaku untuk masalah saya. - jans
Ini tidak terkait dengan masalah OP. Pesan kesalahan "Kunci yang diperlukan tidak tersedia" menunjukkan bahwa masalah ini disebabkan oleh modul kernel yang tidak ditandatangani pada platform yang didukung Secure Boot. Tidak ada pembaruan VirtualBox yang dapat memperbaiki ini kecuali kalau itu termasuk modul yang ditandatangani menggunakan kunci yang dipercaya oleh kernel. Yaitu. Canonical harus menandatanganinya, atau Oracle harus menandatanganinya dan kunci publiknya harus ditambahkan ke kunci tepercaya kernel (atau platform Anda). - zwets


Baiklah, setelah sedikit pengujian, saya yakin ini adalah masalah boot yang aman.

Seperti jika diaktifkan maka ini dilemparkan:

PERINGATAN: Modul kernel vboxdrv tidak dimuat. Entah tidak ada modul            tersedia untuk kernel saat ini (4.4.0-21-generic) atau gagal            beban. Silakan kompilasi ulang modul kernel dan instal dengan setup sudo / sbin / rcvboxdrv

Namun jika boot aman dinonaktifkan, maka virtualbox akan dimuat dengan baik tanpa kesalahan.

Saya masih mengatur bios saya sebagai UEFI.


0
2018-04-23 16:22



Seperti yang dinyatakan dalam pertanyaan saya, saya ingin terus menggunakan boot aman. Jadi menonaktifkan boot aman tidak menyelesaikan masalah. - jans


Saya memiliki masalah yang sama hari ini, saya memiliki Windows 10 dan Ubuntu 15.10 pada dual boot dengan uefi diaktifkan pada Bios (saya tidak menonaktifkannya sehingga saya dapat menjalankan Windows yang sudah diinstal sebelumnya).

Setelah meningkatkan ke Ubuntu 16.04 VirtualBox berhenti memuat VM saya dengan pesan kesalahan yang sama:

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

Saya mencurigai masalah UEFI karena saat memutakhirkan penginstal menanyakan saya jika saya ingin menonaktifkannya, yang saya jawab Tidak (Karena Ya dapat membuat Windows saya tidak dapat digunakan).

Apa yang saya lakukan adalah pergi ke Bios dan memungkinkan dukungan untuk boot BIOS warisan tanpa menonaktifkan boot aman.

Virtualbox berfungsi dengan baik sekarang.

Memperbarui: Seperti yang ditunjukkan @zwets di komentar, memungkinkan modul warisan menyebabkan boot aman dinonaktifkan.


0
2018-04-22 23:23



Sebenarnya saya juga perlu UEFI untuk mem-boot instalasi Windows paralel. Jadi melumpuhkannya juga bukan pilihan bagi saya. Saya memperbarui pertanyaan saya dengan tepat. - jans
Apakah Anda telah mengaktifkan Dukungan untuk modul BIOS lama? Ini adalah opsi lain di UEFI bios, berbeda dari boot aman. - Zeine77
@ Zeine77 dapatkah Anda memverifikasi bahwa BIOS Anda memungkinkan mengaktifkan "modul warisan" sementara Secure Boot tetap diaktifkan? Ini sangat tidak mungkin, karena opsi pertama memungkinkan kode yang tidak dipercaya untuk berjalan di ruang kernel, yang mengalahkan tujuan dari yang kedua. - zwets
@zwets Anda benar, saya hanya memeriksa pengaturan bios saya; dan memungkinkan modul warisan yang menyebabkan boot aman dinonaktifkan. Saya berasumsi, seperti yang dijelaskan dalam tanggapan, bahwa menonaktifkan boot aman akan menyebabkan Windows 10 gagal, ini tidak terjadi. Ketika saya pertama kali menginstal 15.10 (Bulan lalu) saya berhati-hati untuk tidak menonaktifkan boot aman karena ini akan merusak instalasi Win 10. Apakah ini berarti bahwa pra-instal Win 10 berfungsi dengan baik dengan mode aman dinonaktifkan? - Zeine77