vboxdrv.sh: विफल: modprobe vboxdrv विफल। कृपया पता लगाने के लिए 'dmesg' का उपयोग करें


53

मुझे अपने Ubuntu लैपटॉप पर VirtualBox चलाने में समस्या हो रही है। मेरा लैपटॉप डुअल बूट है, और चल रहा है (विंडोज 10 - मुझे लगता है, वर्षों में इसका इस्तेमाल नहीं किया है), साथ ही साथ उबंटू 16.0.4 एलटीएस।

मेरे पास अपने लैपटॉप की BIOS सेटिंग्स पर सुरक्षित बूट सक्षम है।

मुझे पता है कि यहाँ ऐसे ही कुछ प्रश्न हैं, विशेषकर ये दोनों:

मैंने उन दो प्रश्नों के उत्तर अनुभागों में दिए गए सभी निर्देशों का पालन किया है - फिर भी, समस्या अनसुलझी है।

यहाँ कंसोल आउटपुट है, जब मैं वर्चुअलबॉक्स चलाने का प्रयास करता हूँ:

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

अब, मैं झूठ नहीं बोलने जा रहा हूं - मुझे बिल्कुल पता नहीं है कि अभी क्या हुआ।

क्या किसी ने कभी भी UbuntuBox 16.0.4 LTS पर चलने वाले लैपटॉप पर VirtualBox 5.x स्थापित किया है - लेकिन BIOS पर सुरक्षित बूट सक्षम है ? - यदि हाँ, तो समाधान क्या है। ???!

बहुत से लोगों को यह समस्या है - कुछ साल पहले भी। यह बहुत अजीब है कि किसी को भी इसके लिए एक समाधान नहीं लगता है - ???


2
"मेरे पास मेरे लैपटॉप की BIOS सेटिंग्स पर सुरक्षित बूट सक्षम है।" - जो आपकी समस्या का हिस्सा हो सकता है। मुझे याद है कि कुछ समय पहले यह सुनने को मिला कि सुरक्षित बूट ने VBox को तोड़ दिया है।
एंड्रॉइड देव

इसी तरह का एक और सवाल: askubuntu.com/questions/760671/…
Dan Dascalescu

जवाबों:


64

VirtualBox + सुरक्षित बूट + Ubuntu = विफल

समस्या यह है कि सभी कर्नेल मॉड्यूल को UEFI प्रणाली द्वारा एक प्रमुख विश्वसनीय द्वारा हस्ताक्षरित किया जाना चाहिए, अन्यथा लोडिंग विफल हो जाएगी। Ubuntu तीसरे पक्ष के vbox * कर्नेल मॉड्यूल पर हस्ताक्षर नहीं करता है, बल्कि उपयोगकर्ता को virtualbox पैकेज की स्थापना पर सुरक्षित बूट को अक्षम करने का विकल्प देता है। मैं ऐसा कर सकता था, लेकिन फिर मुझे हर बार मशीन शुरू होने पर एक कष्टप्रद "असुरक्षित मोड में बूटिंग" संदेश दिखाई देता था, और मेरे द्वारा काम न करने वाले दोहरे बूट विंडोज 10 इंस्टॉलेशन पर भी काम होता।

उबंटू 16.04 BIOS A18 के साथ एक डेल अक्षांश E7440 पर, और एक डुअल बूट विंडोज 10 इंस्टॉलेशन के साथ।

क्रेडिट मैं इस समस्या को हल करने के लिए उपयोग की गई जानकारी के प्राथमिक स्रोत पर जाता है, जो विशेष रूप से फेडोरा / रेडहैट पर लागू होता है: http://gorka.eguileor.com/vbox-vmware-in-secureboot-linux-2016-upateate/

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

यह काम करने के लिए कदम, विशेष रूप से Ubuntu / डेबियन के लिए

  1. वर्चुअलबॉक्स पैकेज स्थापित करें। यदि इंस्टॉलेशन यह सुनिश्चित करता है कि सिक्योर बूट सक्षम है, तो आपको हाथ में इश्यू के साथ प्रस्तुत किया जाएगा और सुरक्षित बूट को अक्षम करने का विकल्प दिया जाएगा। "नहीं" चुनें।

  2. एक व्यक्तिगत सार्वजनिक / निजी आरएसए कुंजी जोड़ी बनाएं जिसका उपयोग कर्नेल मॉड्यूल पर हस्ताक्षर करने के लिए किया जाएगा। मैंने कर्नेल मॉड्यूल से संबंधित सभी चीजों को संग्रहीत करने के लिए रूट खाते और निर्देशिका / रूट / मॉड्यूल-हस्ताक्षर / का उपयोग करने के लिए चुना।

    $ 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. मशीन को रिबूट करें। जब बूटलोडर शुरू होता है, तो MOK प्रबंधक EFI उपयोगिता स्वचालित रूप से शुरू होनी चाहिए। यह चरण 3 में दिए गए पासवर्ड के हिस्सों के लिए पूछेगा। "एनओआरके एमओके" को चुनें, फिर आपको चरण 3 में आयातित कुंजी को देखना चाहिए। नामांकन चरणों को पूरा करें, फिर बूट के साथ जारी रखें। लिनक्स कर्नेल भरी हुई कुंजियों को लॉग करेगा, और आपको कमांड के साथ अपनी खुद की कुंजी देखने में सक्षम होना चाहिए: dmesg|grep 'EFI: Loaded cert'

  5. कर्नेल बिल्ड फ़ाइलों के साथ shippped हस्ताक्षर की उपयोगिता का उपयोग करते हुए, चरण 2 में उत्पन्न निजी MOK कुंजी का उपयोग करके सभी वर्चुअलबॉक्स मॉड्यूल पर हस्ताक्षर करें। मैंने इसे एक छोटी स्क्रिप्ट में रखा है /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 ग्राफिक्स ड्राइवरों की तरह अन्य तृतीय पक्ष कर्नेल मॉड्यूल पर भी हस्ताक्षर करने के लिए उपयोग की जा सकती है। (मैंने खुद परीक्षण नहीं किया है।)

नोट: उपरोक्त उत्तर indyvind Stegard के ब्लॉग पोस्ट, वर्चुअलबॉक्स + सिक्योर बूट + उबंटू = से पूरी तरह खट्टा था ।


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
बिल्कुल नहीं जानते और समझते हैं कि यह क्या करता है, लेकिन यह काम किया।
नेनेरी

1
बस कुछ जरूरत होने पर: मुझे यह समस्या w / o UEFI या सिक्योर मोड में थी। मेरे मामले में, 18.04.x ​​पर वर्चुअलबॉक्स-डीकेएमएस इंस्टॉलेशन टूट गया था। मेरा फिक्स था: apt purge virtualbox-dkms && apt इंस्टॉल वर्चुअलबॉक्स-dkms && modprobe vboxdrv
gorlok

1
यदि आप वर्चुअलबॉक्स को 5.2 से 6.0 पर अपग्रेड करते हैं, तो 6 और 7 चरणों को फिर से पूरा न करें।
voleger

12

उपरोक्त उत्तर शायद ठीक काम करता है, लेकिन अगर आप इसके लिए एक आसान समय चाहते हैं:

मैं इसे हल करने में सक्षम था

BIOS में जा रहा है और जा रहा है> उन्नत (f7)> बूट> "सुरक्षित बूट" के लिए नीचे स्क्रॉल करें> "Windows EUFI मोड" को "अन्य OS" में बदलें

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


2
क्या कोई कारण है जो आप ऐसा नहीं करना चाहेंगे?
तायगेओस्ट

कुछ पावर सर्ज या कुछ के कारण मेरे BIOS को रीसेट मिल गया था इसलिए मुझे ऐसा करने की आवश्यकता थी। अब मुझे उपरोक्त त्रुटि नहीं मिली।
जमदग्नि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.