vmlinuz-4.18.12-041812-जेनेरिक में अमान्य हस्ताक्षर हैं


15

मैंने अपना कर्नेल आज उकु के साथ अपग्रेड किया, और तब से मैंने बूट नहीं किया क्योंकि मुझे यह त्रुटियां हो रही हैं:

error: /boot/vmlinuz-4.18.12-041812-generic has invalid signature
error: you need to load the kernel first

मेरे पास विंडोज़ 10 और ubuntu 18.10 के साथ दोहरी बूट है (आज अपग्रेड किया गया)

अपडेट: मैं पुराने कर्नेल को बूट करने में कामयाब रहा जिसे मैंने ग्रब में "उबंटू के लिए उन्नत विकल्प" से चुना

लेकिन मुझे अपनी कर्नेल को अपग्रेड करने की आवश्यकता है और अगर मैं ऐसा करता हूं तो मुझे अभी भी वही समस्या है ...


मैं अपने लेनोवो T480 के फर्मवेयर को अपडेट करने के बाद अब इसी समस्या का सामना कर रहा हूं और मुझे समझ में नहीं आता है कि पुराने कर्नेल अभी भी क्यों काम करते हैं।
user205301

जवाबों:


5

प्रश्न में कर्नेल पर हस्ताक्षर करने के बजाय, मैंने अपने लैपटॉप के BIOS / UEFI मेनू में सिक्योर बूट को बंद कर दिया।

आप आमतौर पर बूट के दौरान एक विशेष कुंजी दबाकर मेनू में प्रवेश कर सकते हैं, आप अपने डिवाइस के लिए विशिष्ट एक को google कर सकते हैं या इसे बूट पर स्क्रीन पर भी दिखाया जा सकता है।


धन्यवाद! मैंने अभी-अभी अपना BIOS अपडेट किया है और इसे अक्षम करना भूल गया हूँ!
लुकास Bustamante

यह मेरे लिए काम कर रहा है!
जोनाथन

5

https://github.com/jakeday/linux-surface/blob/master/SIGNING.md के कर्नेल हस्ताक्षर पर अधिक विशिष्ट निर्देश हैं (स्वीकृत उत्तर में लिंक किए गए उसी ट्यूटोरियल से अनुकूलित)। निर्देशों को निम्नानुसार पूरा किया गया है:

सुरक्षित बूट के लिए एक कस्टम कर्नेल पर हस्ताक्षर करना

निर्देश उबंटू के लिए हैं, लेकिन अन्य डिस्ट्रो के लिए समान काम करना चाहिए, अगर वे बूट लोडर के रूप में शिम और ग्रब का उपयोग कर रहे हैं। यदि आपका डिस्चार्ज शिम का उपयोग नहीं कर रहा है (जैसे लिनक्स फाउंडेशन प्रीलोडर), तो हस्ताक्षर को पूरा करने के लिए समान चरण होने चाहिए (जैसे LF प्रीलोडर के लिए मोकुइल के बजाय हैशटूल) या आप इसके बजाय शिम का उपयोग करने के लिए स्थापित कर सकते हैं। शिम के लिए उबंटू पैकेज कहा जाता है shim-signed, लेकिन कृपया अपने आप को सूचित करें कि इसे सही तरीके से कैसे स्थापित किया जाए, ताकि आप अपने बूटलोडर को गड़बड़ न करें।

उबंटू में सबसे हालिया GRUB2 अपडेट (2.02 + dfsg1-5ubuntu1) के बाद से, GRUB2 ने अहस्ताक्षरित गुठली को लोड नहीं किया है, जब तक कि सुरक्षित बूट सक्षम है। उबंटू 18.04 के उपयोगकर्ताओं को ग्रब-एफी पैकेज के उन्नयन के दौरान सूचित किया जाएगा, कि यह कर्नेल हस्ताक्षरित नहीं है और अपग्रेड निरस्त हो जाएगा।

इस प्रकार आपके पास इस समस्या को हल करने के लिए तीन विकल्प हैं:

  1. आप स्वयं कर्नेल पर हस्ताक्षर करें।
  2. आप अपने डिस्ट्रो के एक हस्ताक्षरित, सामान्य कर्नेल का उपयोग करते हैं।
  3. आप सुरक्षित बूट अक्षम करें।

चूंकि विकल्प दो और तीन वास्तव में व्यवहार्य नहीं हैं, ये कर्नेल को स्वयं हस्ताक्षर करने के चरण हैं।

निर्देश उबंटू ब्लॉग से अनुकूलित । अनुसरण करने से पहले, कृपया अपने / boot / EFI निर्देशिका का बैकअप लें, ताकि आप सब कुछ पुनर्स्थापित कर सकें। अपने जोखिम पर इन चरणों का पालन करें।

  1. हस्ताक्षर कुंजी बनाने के लिए विन्यास बनाएं, mokconfig.cnf के रूप में सहेजें:
# This definition stops the following lines failing if HOME isn't
# defined.
HOME                    = .
RANDFILE                = $ENV::HOME/.rnd 
[ req ]
distinguished_name      = req_distinguished_name
x509_extensions         = v3
string_mask             = utf8only
prompt                  = no

[ req_distinguished_name ]
countryName             = <YOURcountrycode>
stateOrProvinceName     = <YOURstate>
localityName            = <YOURcity>
0.organizationName      = <YOURorganization>
commonName              = Secure Boot Signing Key
emailAddress            = <YOURemail>

[ v3 ]
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always,issuer
basicConstraints        = critical,CA:FALSE
extendedKeyUsage        = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment               = "OpenSSL Generated Certificate"

अपने विवरण के साथ सभी भागों को समायोजित करें।

  1. कर्नेल पर हस्ताक्षर करने के लिए सार्वजनिक और निजी कुंजी बनाएँ:
openssl req -config ./mokconfig.cnf \
        -new -x509 -newkey rsa:2048 \
        -nodes -days 36500 -outform DER \
        -keyout "MOK.priv" \
        -out "MOK.der"
  1. कुंजी को भी PEM प्रारूप में परिवर्तित करें (mokutil को DER की आवश्यकता है, sbsign को PEM की आवश्यकता है):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  1. अपने शिम इंस्टालेशन की कुंजी को एनरोल करें:
sudo mokutil --import MOK.der

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

  1. अपने सिस्टम को पुनरारंभ करें। आप MOKManager नामक टूल की नीली स्क्रीन से सामना करेंगे। "MOK नामांकन करें" और फिर "कुंजी देखें" चुनें। सुनिश्चित करें कि यह आपकी कुंजी है जिसे आपने चरण 2 में बनाया है। बाद में प्रक्रिया जारी रखें और आपको वह पासवर्ड दर्ज करना होगा जो आपने चरण 4 में प्रदान किया था। अपने सिस्टम को बूट करना जारी रखें।

  2. सत्यापित करें कि आपकी कुंजी के माध्यम से नामांकित है:

sudo mokutil --list-enrolled
  1. अपने स्थापित कर्नेल पर हस्ताक्षर करें (यह / boot / vmlinuz- [KERNEL-VERSION] -surface-linux-सतह पर होना चाहिए):
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
  1. अहस्ताक्षरित कर्नेल के इनट्राम को कॉपी करें, इसलिए हमारे पास हस्ताक्षरित के लिए एक इनआट्रम भी है।
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
  1. अपना grub-config अपडेट करें
sudo update-grub
  1. अपने सिस्टम को रिबूट करें और हस्ताक्षरित कर्नेल का चयन करें। यदि बूटिंग कार्य करता है, तो आप अहस्ताक्षरित कर्नेल को हटा सकते हैं:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub

अब आपका सिस्टम एक हस्ताक्षरित कर्नेल के तहत चलना चाहिए और GRUB2 कार्यों को फिर से अपग्रेड करना चाहिए। यदि आप कस्टम कर्नेल को अपग्रेड करना चाहते हैं, तो आप चरण सात पर फिर से उपरोक्त चरणों का पालन करके आसानी से नए संस्करण पर हस्ताक्षर कर सकते हैं। इस प्रकार MOK- कीज (MOK.der, MOK.pem, MOK.priv) पर वापस जाएं।


Ecxellent प्रतिक्रिया, मैं अकेले ubuntu निर्देश के साथ वहाँ नहीं मिल सकता था
User632716

नाम बदलने और पोस्टफ़िक्स के साथ फ़ाइलों को अधिलेखित करने के लिए शानदार शॉर्टकट।
टॉम

1

मैंने सुरक्षित बूट के लिए साइन / बूट / vmlinuz फ़ाइल के लिए इस ट्यूटोरियल के बाद अपनी समस्या को हल किया , बस ट्यूटोरियल के अंतिम भाग पर ध्यान दें


6
क्या आप इस समस्या के समाधान के बारे में कुछ विस्तृत जानकारी प्रदान कर सकते हैं? मेरे पास बिल्कुल वही त्रुटि है, लेकिन मुझे समझ नहीं आ रहा है कि मुझे बताए गए ट्यूटोरियल के अनुसार क्या करना है।
स्लोन

मुझे अभी याद नहीं है, मैं इस दिन बाद में आपकी मदद करने की कोशिश करूँगा अगर इसकी अभी भी प्रासंगिक है
नादव शाबाई

यह मेरे लिए भी प्रासंगिक है। मेरे पास एक ही मुद्दा है
विटालि डीरावका

बस यह मिल गया, मुझे इसकी भी आवश्यकता है
मिच तलमदगे

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