कई महीने पहले, मैं आखिरकार अपने Lenovo G50 लैपटॉप पर रीड-ओनली गाथा को हल करने में कामयाब रहा। आप मूल समस्या के बारे में पढ़ सकते हैं और फिर मेरा पहला वर्कअराउंड प्रयास, और फिर अंत में, एक बार समस्या वास्तव में Ubuntu 17.10 ड्राइवरों की विफलता के कारण लोकप्रिय हो गई, वास्तविक समाधान कर्नेल अपडेट के रूप में आया, और इसके बाद, मेरे पास था मेरा यूईएफआई फिर से ठीक से काम कर रहा है। मजेदार बात यह है कि यह एक बहुत बड़ा मुद्दा है, और उबंटू तक ही सीमित नहीं है, लेकिन इसे लापरवाही से लंबे समय तक नजरअंदाज किया गया।
अब, जब मैं फिक्स के बनने की प्रतीक्षा कर रहा था - यह नहीं जानते हुए कि क्या कभी एक होने वाला था, मैंने लेनोवो मशीन पर बूट करने के लिए नए ऑपरेटिंग सिस्टम प्राप्त करने के तरीके खोजने की कोशिश की। जैसा कि मैंने उल्लेख किया है, वर्चुअलबॉक्स के माध्यम से कच्ची डिस्क का उपयोग एक है। एक अन्य विधि, कुछ हद तक कम जोखिम वाली लेकिन कुछ हद तक कम प्रभावी भी है:GRUB2 ISOBoot। हम उस पर अब चर्चा करेंगे, क्योंकि एक दिन ऐसा आ सकता है जब आप BIOS/UEFI NVRAM रीड-ओनली समस्या का सामना कर सकते हैं (या अभी भी हैं), और उसके आसपास काम करने का एक तरीका चाहिए, और कोई कर्नेल अपडेट और ऐसा उपलब्ध नहीं है। चलिए आगे बढ़ते हैं।
बूट अप करें
ISO फाइलों से सीधे बूट करने की क्षमता GRUB2 बूटलोडर की एक नई विशेषता है, और अब हम इसका उपयोग इस तथ्य से बचने के लिए करेंगे कि हम वास्तव में लैपटॉप पर रिमूवेबल मीडिया का उपयोग नहीं कर सकते हैं। इस क्षमता के उपयोग पर प्रलेखन कुछ हद तक दुर्लभ है, और हमेशा की तरह और ठीक ही, उबंटू के पक्षपाती है, जो समझ में आता है, क्योंकि यह सबसे प्रचलित लिनक्स वितरण है। फिर भी।
वैसे भी, पहले, कृपया बूटलोडर से परिचित होने के लिए मेरा GRUB2 ट्यूटोरियल पढ़ें और यह कैसे काम करता है। उस ज्ञान के बिना, आप इस लेख में लिखे सुझावों को लागू नहीं कर पाएंगे।
मैन्युअल मेनू प्रविष्टि
मेरा मानना है कि स्वचालित या सहायक उपकरण का उपयोग करने से पहले चीजों का परीक्षण करना चाहिए, क्योंकि इस तरह, आप समझ पाएंगे कि क्या हो रहा है। परदे के पीछे। मूल विचार इस प्रकार है - आपको एक कस्टम GRUB2 स्क्रिप्ट बनाने की आवश्यकता है - या आप एक पूर्व-मौजूदा टेम्पलेट का उपयोग कर सकते हैं, इसे डिस्क पर किसी एक विभाजन पर प्रासंगिक ISO फ़ाइल पर इंगित करें, ISO को लूपबैक डिवाइस के रूप में माउंट करें, और फिर उपलब्ध कर्नेल और initrd/initramfs फ़ाइल को बूट करें।
हम 40_कस्टम स्क्रिप्ट का उपयोग करेंगे, जो /etc/grub.d के अंतर्गत उपलब्ध है। डिफ़ॉल्ट रूप से, फ़ाइल खाली है और केवल निम्नलिखित को सूचीबद्ध करती है:
#!/bin/sh
exec tail -n +3 $0
# यह फ़ाइल कस्टम मेनू प्रविष्टियों को जोड़ने का एक आसान तरीका प्रदान करती है। बस वह
# मेनू प्रविष्टियाँ टाइप करें जिन्हें आप इस टिप्पणी के बाद जोड़ना चाहते हैं। सावधान रहें कि
# ऊपर दी गई 'एक्जीक्यूटिव टेल' लाइन को न बदलें।
आइए अब एक प्रविष्टि बनाएं और देखें कि क्या देता है:
#!/bin/sh
exec tail -n +3 $0
# यह फ़ाइल कस्टम मेनू प्रविष्टियों को जोड़ने का एक आसान तरीका प्रदान करती है।
# बस उस मेनू प्रविष्टि को टाइप करें जिसे आप इस
# टिप्पणी के बाद जोड़ना चाहते हैं। सावधान रहें कि ऊपर दी गई 'एक्जीक्यूटिव टेल' लाइन को न बदलें।
मेनुएंट्री "<शीर्षक>" {
सेट रूट=(<डिस्क>,<विभाजन>)
सेट isoname="<आईएसओ फ़ाइल नाम>"
सेट isofile="
लूपबैक लूप $isofile
linux (लूप)
initrd (लूप)
}
हमारे पास यहां क्या है?
आइए अपनी स्क्रिप्ट पर एक नज़र डालते हैं, क्या हम?
- पहली पंक्ति - शीर्षक - विशिष्ट बूट प्रविष्टि का शीर्षक निर्दिष्ट करती है।
- अगला, हम रूट सेट करते हैं। यह GRUB को बताएगा कि स्क्रिप्ट में बाद में सूचीबद्ध विशेष पथों को किस विभाजन पर देखना है। ध्यान दें कि GRUB2 GRUB विरासत की तुलना में थोड़ा अलग संकेतन का उपयोग करता है और विभाजन संख्या 1 से शुरू होती है न कि 0 से।
- तीसरा निर्देश - isoname - डाउनलोड की गई ISO फ़ाइल का नाम निर्दिष्ट करता है।
- चौथी पंक्ति ISO फ़ाइल के स्थान के पूर्ण पथ की ओर इशारा करती है। हम ISO फ़ाइल के नाम और .iso प्रत्यय का उपयोग करके रेखा को संयोजित करते हैं।
- अगला निर्देश बूटलोडर को ISO फ़ाइल को लूपबैक डिवाइस के रूप में माउंट करने के लिए कहता है।
- अब, हम कर्नेल को लोड करते हैं - linux प्रविष्टि को UEFI सिस्टम पर linuxefi पढ़ना चाहिए। फिर, हमारे पास कई अन्य अनिवार्य बूट विकल्प हैं, जो (दुख की बात है) एक वितरण से दूसरे वितरण में भिन्न होंगे। अंत में, हम initrd (फिर से UEFI सिस्टम के लिए initrdefi) के साथ भी ऐसा ही करते हैं।
समस्या...
इस दृष्टिकोण के साथ समस्या यह है कि लगभग हर डिस्ट्रो लाइव सत्र में बूट करने के लिए अपनी स्वयं की विधि का उपयोग करता है, जिसमें ओवरले फाइलसिस्टम, बूट विकल्प और बहुत कुछ शामिल है। किसी भी सामान्य प्रविष्टि को बूट करने का कोई एकल और सरल तरीका नहीं है। दोबारा, यदि आप उपलब्ध उदाहरणों को देखते हैं, तो आप इस स्थान में भारी मात्रा में अंतर और विखंडन देखेंगे - लिनक्स डेस्कटॉप के किसी भी अन्य पहलू की तरह।
फेडोरा टेस्ट
मैंने फेडोरा के साथ परीक्षण करने का फैसला किया, क्योंकि उबंटू का उदाहरण वास्तव में तुच्छ है। ऑनलाइन पढ़ते हुए, मुझे F18-F27 परिवार में कम से कम एक दर्जन संदर्भ मिले, हर एक को कभी-कभी थोड़ा अलग तरीके से सूचीबद्ध किया गया। आम परिपाटी कम या ज्यादा हो जाती है:
मेन्यूएंट्री "फेडोरा लाइव" --क्लास फेडोरा {
सेट रूट='hd0,msdos8'
सेट isofile="/home/roger/Downloads/
फेडोरा-वर्कस्टेशन-लाइव-x86_64-27 -1.6.iso"
लूपबैक लूप $isofile
linux (loop)/isolinux/vmlinuz0 iso-scan/filename=${isofile}
root=live:CDLABEL=Fedora-Live rootfstype=auto ro rd.live.image
शांत rhgb rd.luks=0 rd.md=0 rd.dm=0
initrd (लूप)/isolinux/initrd0.img
}
मैंने नवीनतम फेडोरा 27 उदाहरण और आठवें विभाजन (sda8) पर स्थित ISO फ़ाइल के साथ एक दोहरे बूट सिस्टम का उपयोग किया। एक बार जब आप इसे कस्टम स्क्रिप्ट में जोड़ लेते हैं, तो अगला कदम GRUB मेनू को अपडेट करना होता है। फिर जांचें और सत्यापित करें कि बनाई गई GRUB कॉन्फ़िगरेशन फ़ाइल में वास्तव में आपकी प्रविष्टि है।
इसका परीक्षण करने से काम नहीं चला - न ही कोई दर्जन अन्य विविधताएँ। मैंने डिस्क और पार्टीशन नोटेशन के बजाय यूयूआईडी का भी इस्तेमाल किया, विभिन्न मॉड्यूल डालने की कोशिश की, और इनमें से किसी को भी गैर-उबंटू आईएसओ फ़ाइल के सरल और निर्बाध बूट के लिए अनुमति नहीं है।
गैर-मैन्युअल विधि:grml
एक सहायक उपकरण का उपयोग करना एक बहुत आसान तरीका है जो /boot/grml के अंतर्गत पाई गई किसी भी ISO फ़ाइल के लिए स्वचालित रूप से एक प्रविष्टि जोड़ देगा। प्रोग्राम इंस्टॉल करें - sudo apt-get install grml, संबंधित ISO फाइलों को कॉपी करें, और फिर GRUB अपडेट कमांड चलाएँ।
इस पद्धति के साथ, मेरे पास मिश्रित परिणाम थे - कुछ वितरण बूट होंगे, अन्य नहीं। उत्पन्न grub.cfg फ़ाइल को देखते हुए, फिर से, आउटपुट कैसा दिखना चाहिए, इस पर एक सामान्य, सरल सम्मेलन प्रतीत नहीं होता है। यकीनन, वर्चुअलबॉक्स में रॉ डिस्क एक्सेस का उपयोग करने की तुलना में अधिक सुरक्षित, जैसा कि मैंने आपको इस विषय पर अपने पहले लेख में दिखाया है, ISOBoot विधि के सभी मामलों में काम करने की संभावना कम है।
अन्य समाधान
GRUB2 ISOBoot से सख्ती से संबंधित नहीं है, लेकिन कुछ अन्य उपकरण हैं जिन पर आप विचार कर सकते हैं। इनमें से कुछ उपकरण मेरे पाठकों के सुझाव हैं, और मैं उन्हें उनकी वास्तविक मदद और योगदान के लिए धन्यवाद देना चाहता हूं, क्योंकि उन्होंने मेरे लैपटॉप को ठीक करने में मेरी सहायता करने का प्रयास किया।
आधिकारिक लेनोवो सिफारिश मदरबोर्ड को बदलने की है। यह काम करेगा, और हो सकता है कि आप वह प्रयास करना चाहें - लेकिन केवल सभी सॉफ़्टवेयर-आधारित समाधानों को समाप्त करने के बाद। वे सस्ते हैं, और आप हमेशा हार्डवेयर पर वापस आ सकते हैं। और जैसा कि हमने देखा है, एक कर्नेल अपडेट ने मदद की, इसलिए यह अभी तक मदरबोर्ड बदलने के लिए पैसे की बर्बादी होती (यह हमेशा एक विकल्प होता है, और इसलिए अंतिम होना चाहिए)।
एक और (कुछ हद तक अत्यधिक विशेषज्ञ) हार्डवेयर सुझाव है कि फ्लैशरोम टूल द्वारा समर्थित यूएसबी एसपीआई प्रोग्रामर का उपयोग करके सीधे लैपटॉप की चिप पर एक साफ यूईएफआई छवि को फ्लैश करने का प्रयास करें। मैंने इसे आजमाया नहीं है, लेकिन यह एक ऐसी चीज है जिस पर आप विचार कर सकते हैं, यदि आप अति-बोल्ड और समझदार हैं।
इस कहानी का एक उप-पाठ यह है कि प्रतीक्षा करना अच्छा है। मेरे मामले में, मैंने लगभग चार महीने तक धैर्यपूर्वक प्रतीक्षा की। मैंने हार्डवेयर की मरम्मत, या एक नया लैपटॉप खरीदने पर पैसा खर्च करने में जल्दबाजी नहीं की। हालाँकि, मैं समझता हूँ कि कुछ स्थितियों में, आप बिना किसी विकल्प के हो सकते हैं।अन्य विकल्प, प्राथमिकता के अवरोही क्रम में होने चाहिए:1) BIOS/UEFI फर्मवेयर फ्लैश यदि उपलब्ध हो 2) GRUB के प्रतिस्थापन के रूप में rEFInd बूट मैनेजर का उपयोग; थोड़ी सी हैकिंग के साथ (ऐसा कुछ जिसे हम एक दिन अधिक विस्तार से एक्सप्लोर कर सकते हैं), आप रीड-ओनली BIOS/UEFI 3 द्वारा लगाई गई मौजूदा सीमाओं के आसपास सफलतापूर्वक काम करने में सक्षम हो सकते हैं) कई अन्य UEFI प्रबंधन कार्यक्रम जैसे EasyUEFI 4) एक प्रार्थना पुस्तक, जो अधिकांश गीक्स के लिए एक पायथन मैनुअल होगी।
आइए दूसरे-से-अंतिम बिंदु पर थोड़ा और विस्तार से चर्चा करें। यह एक विंडोज-आधारित प्रोग्राम है, और इसका उपयोग ईएफआई बूटलोडर को प्रबंधित करने के लिए किया जा सकता है, जिसमें प्रविष्टियों को सक्षम/अक्षम करना, सूचीबद्ध प्रविष्टियों के क्रम को बदलना और अक्षम वस्तुओं को साफ करना शामिल है।
यह सफाई आदेश वह है जो आपके एनवीआरएएम को सहयोग करने में मदद कर सकता है (शायद)। In the main menu, try to disable one of the entries, or if you already have some in the disabled state, then you can try the cleanup option. In my case, this did not work. The tool threw a system API error, which is probably not that different from the interrupted system call issue we saw in my initial report on the problem. Don't get your hopes too high, but it might work for you better than it did for me.
I would like to thank aigle, Ivan, L., Neal, Marcin, Richard, Nik, Floris, zloster, Georg, and Matthew for their suggestions, ideas, encouragement through the adventure. Since the problem has been resolved, I won't be able to continue any additional tools or ways to resolve the issue, and with what you have above, plus the kernel update, plus the VirtualBox raw disk access, you should be okay.
निष्कर्ष
When you're facing an odd hardware situation, like we have here, there are no guarantees. In the first workaround article, I mentioned VirtualBox and raw disk access. This is bound to work, but the risks are quite high. A less intrusive method is to try to boot from ISO files using GRUB2, our topic today. My testing shows this is a much less successful and effective way, but it also carries less risk of damaging the data on the hard disk. Lastly, you could try some other tools, and we will explore some of those more in the future.
For the time being, my suggestion is - if the kernel update does not work for you AND you do not really have to change the current setup AND it works for you well - let it be. For me, this was the matter of using eight operating systems, more than plenty for a test box, and I could still perform in-vivo upgrades, so it was all right waiting for the kernel fix. If you do want to try to be able to use additional operating systems without making any hardware repairs, then you have several workaround solutions and semi-solutions to consider. I wish I could give you a 100% foolproof 100% applicable recipe, but that is never the case in a war between software and hardware. ख्याल रखना।
चीयर्स।