उबंटू 16.04 में उन्नयन के बाद 'vboxdrv' लोड नहीं कर सका (और मैं सुरक्षित बूट रखना चाहता हूं)


130

मैं Ubuntu 15.10 से 16.04 तक अपग्रेड करता हूं और तब से VirtualBox 5.0.18 अब मेरा VMs शुरू नहीं कर रहा है। यह शिकायत करता है कि 'vboxdrv' लोड नहीं है। इसलिए मैं इसे लोड करने और निम्न त्रुटि प्राप्त करने का प्रयास करता हूं:

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

मेरा मानना ​​है कि यह सुरक्षित बूट से संबंधित है जिसका मैं उपयोग करता हूं और जिसका मैं उपयोग जारी रखना चाहता हूं। दरअसल उबंटू 15.10 सुरक्षित बूट और वर्चुअलबॉक्स ठीक काम कर रहा था।

इसके अलावा मैंने कोशिश की $ sudo apt-get --reinstall install virtualbox-dkmsजिसने कर्नेल मॉड्यूल को सफलतापूर्वक बनाया लेकिन इस समस्या को हल नहीं किया।

किसी भी विचार कैसे सुरक्षित बूट सक्षम रखते हुए vboxdrv लोड करने के लिए?

अद्यतन 2 : इसके अलावा मैंने निष्पादन की कोशिश की sudo mokutil --disable-validation। इस कमांड को निष्पादित करते समय, अगले बूट के दौरान मुझे सुरक्षित बूट को अक्षम करने का संकेत मिलता है, डिस्क से एक कुंजी या हैश जोड़ें। चूंकि मैं सुरक्षित बूट को निष्क्रिय नहीं करना चाहता, इसलिए ऐसा लगता है कि इससे मेरी समस्या का समाधान नहीं हुआ है। इसके अलावा, मैं एक समानांतर विंडोज इंस्टॉलेशन के लिए यूईएफआई को सक्रिय रखना चाहता हूं।

नोट : यदि आप सुरक्षित बूट को अक्षम करने में कोई आपत्ति नहीं करते हैं, तो देखें कि मुझे 3 पार्टी कर्नेल मॉड्यूल स्थापित करने या कर्नेल अपग्रेड के बाद "आवश्यक कुंजी उपलब्ध नहीं है" क्यों मिलती है? बजाय।



हालाँकि यह प्रश्न askubuntu.com/questions/762254/… का एक डुप्लिकेट है , लेकिन यह प्रश्न नीचे दिए गए @Majal द्वारा दिए गए उत्तर की सुविधा नहीं देता है।
zwets

1
स्टेप बाय स्टेप गाइड: stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail
Dušan Ma Duar

FWIW, googlers के लिए: Ubuntu 18.04 के साथ, इंस्टॉलेशन मॉड्यूल पर हस्ताक्षर aptitude install virtualbox virtualbox-dkms करेगा और आपसे एक-बार (?) पासवर्ड मांगेगा। रिबूट, MOK config दर्ज करें और उस पासवर्ड का उपयोग करके कुंजी को नामांकित करें।
राफेल

जवाबों:


177

कर्नेल संस्करण 4.4.0-20 के बाद से, यह लागू किया गया कि अहस्ताक्षरित कर्नेल मॉड्यूल को सुरक्षित बूट सक्षम के साथ चलने की अनुमति नहीं दी जाएगी। क्योंकि आप सुरक्षित बूट रखना चाहते हैं, तो अगला तार्किक कदम उन मॉड्यूल पर हस्ताक्षर करना है।

तो आइये आजमाते हैं।

  1. हस्ताक्षर कुंजी बनाएँ

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

    विकल्प : अतिरिक्त सुरक्षा के लिए, -nodes स्विच को छोड़ें, जो पासवर्ड मांगेगा। फिर अगले चरण पर जाने से पहले, सुनिश्चित करेंexport KBUILD_SIGN_PIN='yourpassword'

  2. मॉड्यूल पर हस्ताक्षर करें (इस उदाहरण के लिए vboxdrv, लेकिन ls $(dirname $(modinfo -n vboxdrv))/vbox*.ko)पूर्ण कार्यक्षमता के लिए अन्य मॉड्यूल के लिए दोहराएं )

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der $(modinfo -n vboxdrv)
    
  3. मॉड्यूल की पुष्टि की है पर हस्ताक्षर किए

    tail $(modinfo -n vboxdrv) | grep "Module signature appended"
    
  4. बूट को सुरक्षित करने के लिए कुंजियों को पंजीकृत करें

    sudo mokutil --import MOK.der
    

    जो अगले चरण में आयात की पुष्टि करने के लिए पासवर्ड का उपयोग करने के लिए कहेगा।

  5. रिबूट करें और एमओके (मशीन मालिक कुंजी) का नामांकन करने के निर्देशों का पालन करें। यहाँ चित्रों के साथ एक नमूना है । सिस्टम एक बार फिर रिबूट करेगा।

  6. पुष्टि करें कि कुंजी नामांकित है

    mokutil --test-key MOK.der
    

अगर वर्चुअलबॉक्स अभी भी लोड नहीं होता है, तो यह हो सकता है क्योंकि मॉड्यूल लोड नहीं sudo modprobe vboxdrvकरेगा ( इसे ठीक करेगा) या कि कुंजी पर हस्ताक्षर नहीं किया गया है। बस उस कदम को दोहराएं और सब कुछ ठीक काम करे।

संसाधन: मॉड्यूल हस्ताक्षर के फेडोरा और उबंटू कार्यान्वयन के लिए विस्तृत वेबसाइट लेखअतिरिक्त सुरक्षा के लिए @zwets । सभी मॉड्यूल का उल्लेख करने के लिए @shaha_trn ।

अतिरिक्त संसाधन: मैंने हर बार virtualbox-dkmsअपग्रेड के लिए अपने स्वयं के उपयोग के लिए एक बैश स्क्रिप्ट बनाई और इस प्रकार हस्ताक्षर किए गए मॉड्यूल को अधिलेखित कर दिया। मूल रूप से GitHub पर मेरे vboxsign की जाँच करें ।


7
मैंने vboxnetadp, vboxnetflt, vboxpci मॉड्यूल्स पर नेटवर्क और वर्चुअल मशीनों में थ्रो pci डिवाइसों को पास करने के लिए हस्ताक्षर किए।
साशा_ट्रॉन

4
@ माजल के उत्तर का विस्तार करते हुए, मुझे sudo apt install --reinstall virtualbox-dkmsदिए गए निर्देशों का पालन करने से पहले निष्पादित करना था ।
टायलरसैन

1
@zwets संभवत: KBUILD_SIGN_PINपर्यावरण चर को ठीक से सेट करने के तरीके के बारे में विस्तार से बता सकते हैं । export KBUILD_SIGN_PIN=passwordऔर export KBUILD_SIGN_PIN="password"चरण 2 से पहले दोनों का परिणाम थाSSL error:0907B068:PEM routines:PEM_READ_BIO_PRIVATEKEY:bad password read: pem_pkey.c:117
adempewolff

3
@adempewolff यदि आपके पासवर्ड में ऐसे अक्षर हैं, जो आपके शेल की व्याख्या करेंगे (जैसे कि एक उद्धृत स्ट्रिंग में '$'), तो आपको इसे apostrophes (') में संलग्न करना होगा।
8

1
@ माजल आपके जवाब के लिए धन्यवाद! मैं भी सुविधा को अक्षम करने के बजाय मॉड्यूल पर हस्ताक्षर करने का पक्ष लेता हूं। मैं जोड़ सकता हूं: (1) यह VMware मॉड्यूल "वेमन" और "वीएमनेट" पर भी लागू होता है, जो समान भाग्य साझा करते हैं। (2) अपनी बनाई गई कुंजियों को जोड़ते समय, अपना पासवर्ड समझदारी से चुनें। रिबूट और सुरक्षित-बूट नामांकन चरण के दौरान, आपका कीबोर्ड लेआउट आपकी स्थानीय सेटिंग से भिन्न हो सकता है। (-> यूएस-लेआउट)
एक-एमबी 16

15

अपने सिस्टम पर मैंने इसे काम करने के लिए निम्नलिखित किया:

रन मोकुतिल:

sudo mokutil --disable-validation

तब mokutil ने मुझे MOK प्रबंधक के लिए एक पासवर्ड सेट करने के लिए कहा। पीसी रिबूट करने के बाद BIOS ने MOK प्रबंधक को कॉन्फ़िगर करने के लिए एक संवाद दिखाया। मैंने इस संवाद से SecureBoot को निष्क्रिय कर दिया है, इसने पासवर्ड से कई वर्णों के लिए कहा (यानी। प्रवेश चरित्र (5), आदि)।

सही ढंग से लोड किए गए vboxdrv मॉड्यूल को बूट करने के बाद।

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

उत्सुकता से, mokutil अभी भी दिखाता है SecureBoot सक्षम है:

sudo mokutil --sb-state
SecureBoot enabled

9
जैसा कि मेरे प्रश्न में कहा गया है, मैं सुरक्षित बूट का उपयोग जारी रखना चाहता हूं। इसलिए सुरक्षित बूट को अक्षम करने से समस्या हल नहीं होती है।

2
सुरक्षित बूट को अक्षम नहीं करना चाहता था, लेकिन अंत में ऐसा करना पड़ा क्योंकि कुछ और काम नहीं करेगा - हर बार एक कर्नेल अपडेट आने पर चीजों को मैन्युअल रूप से शुरू करना नहीं चाहते हैं। दया है कि यह एकमात्र आसान समाधान है। Btw, UEFI अभी भी कहता है कि सुरक्षित बूट सक्षम है। ¯_ (¯) _ / ¯
jaywink

4

आप सत्यापन जांच को अक्षम कर सकते हैं

sudo apt install mokutil
sudo mokutil --disable-validation

उसके बाद DKMS पैकेज स्थापित करना चाहिए।


2
इसके अलावा मैंने sudo mokutil को क्रियान्वित करने की कोशिश की - उल्लेखनीय-सत्यापन। इस कमांड को निष्पादित करते समय, अगले बूट के दौरान मुझे सुरक्षित बूट को अक्षम करने का संकेत मिलता है, डिस्क से एक कुंजी या हैश जोड़ें। चूंकि मैं सुरक्षित बूट को निष्क्रिय नहीं करना चाहता, इसलिए ऐसा लगता है कि इससे मेरी समस्या का समाधान नहीं हुआ है। कृपया मुझे बताएं कि मुझे इस आदेश की गलत जानकारी है।
Jans

2
सुरक्षित बूट को अक्षम करने का प्रयास करें। आप इसे वापस सक्षम कर सकते हैं, अगर यह मदद नहीं करता है।
पायलट 6

मैंने सुरक्षित बूट को निष्क्रिय करने की कोशिश की - लेकिन यह अभी भी सक्षम है :( (ubuntu 18.04)
xhudik

0

मुझे उन्नयन के बाद भी vboxdrv के बारे में त्रुटि मिली। लेकिन Oracle VM VirtualBox एक्सटेंशन पैक के पुराने संस्करण (5.0.14) के साथ समस्या थी। मैंने इस पैक का नया संस्करण (5.0.18) डाउनलोड और स्थापित किया और समस्या गायब हो गई।


अरे, क्या आप कृपया विस्तार से बता सकते हैं? आपने इसे कहां से डाउनलोड किया? पीपीए या डिबेट फाइल?
कार्तिक निशांत

1
मैंने VirtualBox साइट पर डाउनलोड से एक्सटेंशन पैक डाउनलोड किया है , लिंक "VirtualBox 5.0.18 Oracle VM VirtualBox एक्सटेंशन पैक -> सभी समर्थित प्लेटफ़ॉर्म " है। फिर मैंने ओरेकल वीएम वर्चुअल बॉक्स मैनेजर पर फ़ाइल> प्राथमिकताएं खोलीं, "एक्सटेंशन" का चयन किया, और डाउनलोड की गई फ़ाइल को सूची में जोड़ा। इसने "ओरेकल वीएम वर्चुअलबॉक्स एक्सटेंशन पैक" (5.0.14rxxxxxx) के पुराने संस्करण को बदल दिया।
Reling

1
एक्सटेंशन पैक त्रुटि को ठीक नहीं करता है। त्रुटि मॉड्यूल पर हस्ताक्षर करने के बारे में है
कार्तिक निशांथ

यह मेरी समस्या पर लागू नहीं होता है।
१६:२४

1
यह ओपी की समस्या से संबंधित नहीं है। त्रुटि संदेश "आवश्यक कुंजी उपलब्ध नहीं है" इंगित करता है कि मुद्दा सुरक्षित बूट सक्षम प्लेटफ़ॉर्म पर अहस्ताक्षरित कर्नेल मॉड्यूल के कारण है। कोई वर्चुअलबॉक्स अपडेट तब तक इसे ठीक नहीं कर सकता जब तक कि इसमें कर्नेल द्वारा भरोसेमंद कुंजी का उपयोग करके हस्ताक्षरित मॉड्यूल शामिल हो। यानी या तो कैननिकल को इस पर हस्ताक्षर करना चाहिए, या ओरेकल को इस पर हस्ताक्षर करना चाहिए और इसकी सार्वजनिक कुंजी को कर्नेल (या आपके प्लेटफ़ॉर्म की) विश्वसनीय कुंजियों में जोड़ा जाना चाहिए।
zwets

0

ठीक है इसलिए थोड़ा परीक्षण के बाद मुझे पूरा यकीन है कि यह एक सुरक्षित बूट मुद्दा है।

जैसे कि अगर यह सक्षम है तो इसे फेंक दिया जाता है:

चेतावनी: vboxdrv कर्नेल मॉड्यूल लोड नहीं किया गया है। या तो वर्तमान कर्नेल के लिए कोई मॉड्यूल उपलब्ध नहीं है (4.4.0-21-जेनेरिक) या यह लोड करने में विफल रहा। कृपया कर्नेल मॉड्यूल को फिर से जोड़ें और इसे sudo / sbin / rcvboxdrv सेटअप द्वारा स्थापित करें

हालाँकि अगर सुरक्षित बूट अक्षम है तो वर्चुअलबॉक्स बिना किसी त्रुटि के लोड होता है।

मेरे पास अभी भी UEFI के रूप में मेरा बायोस सेट है।


3
जैसा कि मेरे प्रश्न में कहा गया है, मैं सुरक्षित बूट का उपयोग जारी रखना चाहता हूं। इसलिए सुरक्षित बूट को अक्षम करने से समस्या हल नहीं होती है।
१५:२५

0

मेरे पास आज भी यही मुद्दा था, मेरे पास विंडोज 10 और उबंटू 15.10 में डुअल बूट के साथ बायोस पर सक्षम uefi था (मैंने इसे अक्षम नहीं किया था इसलिए मैं पूर्व-स्थापित विंडोज चला सकता हूं)।

Ubuntu 16.04 में अपग्रेड करने के बाद VirtualBox ने एक ही त्रुटि संदेश के साथ मेरे VMs को लोड करना बंद कर दिया:

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

मुझे UEFI की समस्या पर संदेह है क्योंकि इंस्टॉलर को अपग्रेड करते समय मुझसे पूछा कि क्या मैं इसे अक्षम करना चाहता हूं, जिसके लिए मैंने कोई जवाब नहीं दिया (क्योंकि हां मेरे विंडोज को अनुपयोगी बना सकता है)।

मैंने जो किया वह बायोस जा रहा है और सुरक्षित बूट को अक्षम किए बिना विरासत BIOS बूट के लिए समर्थन सक्षम करें।

वर्चुअलबॉक्स अब ठीक काम करता है।

अपडेट : जैसा कि @zwets ने टिप्पणी में ठीक कहा है, विरासत मॉड्यूल को सक्षम करने से सुरक्षित बूट निष्क्रिय हो जाता है।


2
वास्तव में मुझे समानांतर विंडोज इंस्टॉलेशन को बूट करने के लिए UEFI की भी आवश्यकता है। इसलिए इसे अक्षम करना मेरे लिए कोई विकल्प नहीं है। मैंने उसी हिसाब से अपना सवाल अपडेट किया।
१६:२६

क्या आपने विरासत BIOS मॉड्यूल के लिए समर्थन सक्षम किया है? यह UEFI बायोस में एक और विकल्प है, जो सुरक्षित बूट से अलग है।
Zeine77

1
@ Zeine77 क्या आप यह सत्यापित कर सकते हैं कि आपका BIOS "लीगेसी मॉड्यूल" को सक्षम करने की अनुमति देता है जबकि सुरक्षित बूट सक्षम रहता है ? यह अत्यधिक संभावना नहीं है, क्योंकि पहला विकल्प अविश्वास कोड को कर्नेल स्पेस में चलाने की अनुमति देता है, जो दूसरे के उद्देश्य को पराजित करता है।
zwets

@zwets आप सही हैं, मैंने अभी-अभी अपनी बायोस सेटिंग जाँची हैं; और सक्षम विरासत मॉड्यूल के कारण सुरक्षित बूट अक्षम हो गया। मैंने मान लिया, जैसा कि प्रतिक्रिया में बताया गया है कि सुरक्षित बूट को अक्षम करने से विंडोज 10 बूट विफल हो जाएगा, ऐसा नहीं है। जब मैंने पहली बार 15.10 (महीने पहले) स्थापित किया तो मैंने सुरक्षित बूट को अक्षम नहीं करने का ध्यान रखा क्योंकि इससे विन 10 इंस्टालेशन को नुकसान होगा। क्या इसका मतलब यह है कि पहले से इंस्टॉल विन 10 सुरक्षित मोड के साथ ठीक काम करता है?
Zeine77
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.