कई महीने पहले, मैंने आखिरकार अपने लेनोवो G50 लैपटॉप पर रीड-ओनली गाथा को हल कर लिया। आप मूल समस्या के बारे में पढ़ सकते हैं और फिर मेरा पहला वर्कअराउंड प्रयास, और फिर अंत में, एक बार जब समस्या वास्तव में उबंटू 17.10 ड्राइवर्स फियास्को के कारण लोकप्रिय हो गई, तो वास्तविक समाधान कर्नेल अपडेट के रूप में आया, और उसके बाद, मेरा UEFI फिर से ठीक से काम कर रहा था। मजेदार बात यह है, यह एक बहुत बड़ा मुद्दा है, और उबंटू तक सीमित नहीं है, लेकिन इसे लंबे समय तक लापरवाही से नजरअंदाज किया गया था।
अब, जब मैं फिक्स बनने का इंतजार कर रहा था - यह जाने बिना कि कभी कोई होने वाला था या नहीं, मैंने लेनोवो मशीन पर नए ऑपरेटिंग सिस्टम को बूट करने के तरीके खोजने की कोशिश की। जैसा कि मैंने उल्लेख किया, VirtualBox के माध्यम से रॉ डिस्क एक्सेस एक है। एक अन्य विधि, कुछ हद तक कम जोखिम भरी लेकिन कुछ हद तक कम प्रभावी भी है: GRUB2 ISOBoot। हम अब उस पर चर्चा करेंगे, क्योंकि एक दिन आ सकता है जब आप BIOS/UEFI NVRAM रीड-ओनली समस्या का सामना कर सकते हैं (या अभी भी कर रहे हैं), और उसके लिए एक वर्कअराउंड की आवश्यकता है, और कोई कर्नेल अपडेट और ऐसा उपलब्ध नहीं है। आइए आगे बढ़ें।
बूट अप
ISO फाइलों से सीधे बूट करने की क्षमता GRUB2 बूटलोडर की एक नई सुविधा है, और हम अब इसका उपयोग इस तथ्य को दरकिनार करने के लिए करेंगे कि हम लैपटॉप पर रिमूवेबल मीडिया का उपयोग नहीं कर सकते। इस क्षमता के उपयोग पर दस्तावेज कुछ हद तक दुर्लभ है, और हमेशा की तरह और उचित रूप से, उबंटू की ओर पक्षपाती है, जो समझ में आता है, क्योंकि यह सबसे प्रचलित लिनक्स वितरण है। फिर भी।
वैसे भी, पहले, कृपया मेरे GRUB2 ट्यूटोरियल को पढ़ें ताकि बूटलोडर और यह कैसे काम करता है, इससे परिचित हो सकें। उस ज्ञान के बिना, आप इस लेख में लिखे सुझावों को लागू नहीं कर पाएंगे।
मैन्युअल मेनू एंट्री
मैं चीजों को पहले टेस्ट करने में विश्वास करता हूं, ऑटोमेट करने या हेल्पर टूल्स का उपयोग करने से पहले, क्योंकि इस तरह, आप पर्दे के पीछे क्या हो रहा है इसे समझ पाएंगे। मूल विचार इस प्रकार है - आपको एक कस्टम GRUB2 स्क्रिप्ट बनाने की आवश्यकता है - या आप एक पूर्व-मौजूदा टेम्पलेट का उपयोग कर सकते हैं, इसे डिस्क पर विभाजन में से एक पर संबंधित ISO फाइल पर इंगित करें, ISO को लूपबैक डिवाइस के रूप में माउंट करें, और फिर उपलब्ध कर्नेल और initrd/initramfs फाइल को बूट करें।
हम 40_custom स्क्रिप्ट का उपयोग करेंगे, जो /etc/grub.d के तहत उपलब्ध है। डिफ़ॉल्ट रूप से, फाइल खाली है और केवल निम्नलिखित सूचीबद्ध करती है:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
आइए अब एक एंट्री बनाएं और देखें क्या निकलता है:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.
# Simply type the menu entries you want to add after this
# comment. Be careful not to change the 'exec tail' line above.
menuentry "<title>" {
set root=(<disk>,<partition>)
set isoname="<iso file name>"
set isofile="<path>${isoname}.iso"
loopback loop $isofile
linux (loop)<vmlinuz> <boot options>
initrd (loop)<initrd>
}
यहां हमारे पास क्या है?
आइए हमारी स्क्रिप्ट पर एक नज़र डालें, क्या हम?
- पहली पंक्ति - शीर्षक - विशेष बूट एंट्री का शीर्षक निर्दिष्ट करता है।
- अगला, हम रूट सेट करते हैं। यह GRUB को बताएगा कि बाद में स्क्रिप्ट में सूचीबद्ध विशेष पथों के लिए किस विभाजन पर देखना है। ध्यान दें कि GRUB2 GRUB लिगेसी की तुलना में थोड़ा अलग नोटेशन का उपयोग करता है और विभाजन संख्या 0 के बजाय 1 से शुरू होती है।
- तीसरा निर्देश - isoname - डाउनलोड की गई ISO फाइल का नाम निर्दिष्ट करता है।
- चौथी पंक्ति ISO फाइल के स्थान का पूरा पथ इंगित करती है। हम ISO फाइल के नाम और .iso सफिक्स का उपयोग करके लाइन को जोड़ते हैं।
- अगला निर्देश बूटलोडर को ISO फाइल को लूपबैक डिवाइस के रूप में माउंट करने के लिए कहता है।
- अब, हम कर्नेल लोड करते हैं - लिनक्स एंट्री को UEFI सिस्टम पर linuxefi पढ़ना चाहिए। फिर, हमारे पास कई अन्य अनिवार्य बूट विकल्प हैं, जो (दुखद रूप से) एक वितरण से दूसरे में भिन्न होंगे। अंत में, हम initrd के साथ भी ऐसा ही करते हैं (फिर से UEFI सिस्टम के लिए initrdefi)।
समस्या ...
इस दृष्टिकोण के साथ समस्या यह है कि बहुत अधिक हर डिस्ट्रो वहां अपने लाइव सत्र में बूट करने के लिए अपनी विधि का उपयोग करता है, जिसमें ओवरले फाइलसिस्टम, बूट विकल्प, और बहुत कुछ शामिल है। किसी भी सामान्य एंट्री को बूट करने का एक भी सरल तरीका नहीं है। फिर से, यदि आप उपलब्ध उदाहरणों को देखते हैं, तो आप इस क्षेत्र में अंतर और विखंडन की भारी मात्रा देखेंगे - लिनक्स डेस्कटॉप के किसी भी अन्य पहलू की तरह।
फेडोरा टेस्ट
मैंने फेडोरा के साथ परीक्षण करने का फैसला किया, क्योंकि उबंटू उदाहरण वास्तव में तुच्छ है। ऑनलाइन पढ़कर, मुझे F18-F27 परिवार में कम से कम एक दर्जन संदर्भ मिले, प्रत्येक को कभी इतना थोड़ा अलग सूचीबद्ध किया गया। सामान्य कन्वेंशन संकीर्ण होता है, कमोबेश:
menuentry "Fedora Live" --class fedora {
set root='hd0,msdos8'
set isofile="/home/roger/Downloads/
Fedora-Workstation-Live-x86_64-27-1.6.iso"
loopback loop $isofile
linux (loop)/isolinux/vmlinuz0 iso-scan/filename=${isofile}
root=live:CDLABEL=Fedora-Live rootfstype=auto ro rd.live.image
quiet rhgb rd.luks=0 rd.md=0 rd.dm=0
initrd (loop)/isolinux/initrd0.img
}
मैंने नवीनतम फेडोरा 27 उदाहरण और ISO फाइल के साथ आठवें विभाजन (sda8) पर स्थित एक डुअल-बूट सिस्टम का उपयोग किया। एक बार जब आप इसे कस्टम स्क्रिप्ट में जोड़ते हैं, तो अगला कदम GRUB मेनू को अपडेट करना है। फिर जांचें और सत्यापित करें कि बनाई गई GRUB कॉन्फिगरेशन फाइल में वास्तव में आपकी एंट्री है।
इसे टेस्ट करने से काम नहीं चला - न ही कोई दर्जन अन्य विविधताएं। मैंने डिस्क और पार्टीशन नोटेशन के बजाय UUID का भी उपयोग किया, विभिन्न मॉड्यूल डालने की कोशिश की, और इनमें से किसी ने भी गैर-उबंटू ISO फाइल के सरल और सहज बूट की अनुमति नहीं दी।
गैर-मैन्युअल विधि: grml
एक बहुत आसान दृष्टिकोण एक हेल्पर टूल का उपयोग करना है जो /boot/grml के तहत पाए गए किसी भी ISO फाइल के लिए स्वचालित रूप से एक एंट्री जोड़ देगा। प्रोग्राम इंस्टॉल करें - sudo apt-get install grml, संबंधित ISO फाइल्स कॉपी करें, और फिर GRUB अपडेट कमांड चलाएं।
इस विधि के साथ, मेरे मिश्रित परिणाम थे - कुछ वितरण बूट होंगे, अन्य नहीं। उत्पन्न grub.cfg फाइल को देखते हुए, फिर से, ऐसा नहीं लगता कि आउटपुट कैसा दिखना चाहिए इस पर एक सामान्य, सरल कन्वेंशन है। यकीनन, VirtualBox में रॉ डिस्क एक्सेस का उपयोग करने की तुलना में सुरक्षित, जैसा कि मैंने इस विषय पर अपने पहले लेख में दिखाया था, ISOBoot विधि सभी मामलों में काम करने की संभावना कम है।
अन्य वर्कअराउंड
सख्ती से GRUB2 ISOBoot से संबंधित नहीं, लेकिन कुछ अन्य उपकरण हैं जिन पर आप विचार करना चाह सकते हैं। इनमें से कुछ उपकरण मेरे पाठकों के सुझाव हैं, और मैं उनके वास्तविक मदद और योगदान के लिए उन्हें धन्यवाद देना चाहता हूं, क्योंकि उन्होंने मेरी लैपटॉप को ठीक करने में सहायता करने की कोशिश की।
आधिकारिक लेनोवो सिफारिश मदरबोर्ड को बदलने की है। यह काम करेगा, और आप इसे आजमाना चाह सकते हैं - लेकिन केवल सभी सॉफ्टवेयर-आधारित समाधानों को समाप्त करने के बाद। वे सस्ते हैं, और आप हमेशा हार्डवेयर पर वापस आ सकते हैं। और जैसा कि हमने देखा, एक कर्नेल अपडेट ने मदद की, इसलिए अभी मदरबोर्ड प्रतिस्थापन के लिए पैसा खर्च करना बेकार होता (वह हमेशा एक विकल्प है, और इसलिए अंतिम होना चाहिए)।
एक और (कुछ हद तक अत्यधिक विशेषज्ञ) हार्डवेयर सुझाव है कि एक साफ UEFI इमेज को सीधे लैपटॉप के चिप पर फ्लैश करने की कोशिश करें, एक USB SPI प्रोग्रामर का उपयोग करके जिसे फ्लैशरोम टूल द्वारा समर्थित किया जाता है। मैंने इसे नहीं आजमाया, लेकिन यह कुछ ऐसा है जिस पर आप विचार करना चाह सकते हैं, अगर आप अल्ट्रा-बोल्ड और जानकार हैं।
इस कहानी का एक उप-पाठ यह है कि इंतजार करना अच्छा है। मेरे मामले में, मैंने लगभग चार महीने धैर्यपूर्वक इंतजार किया। मैंने हार्डवेयर मरम्मत पर पैसा खर्च करने या नया लैपटॉप खरीदने की जल्दी नहीं की। हालांकि, मैं समझता हूं कि कुछ स्थितियों में, आपके पास विकल्प नहीं हो सकता है।
अन्य विकल्प, प्राथमिकता के अवरोही क्रम में होना चाहिए: 1) BIOS/UEFI फर्मवेयर फ्लैश यदि उपलब्ध हो 2) rEFInd बूट मैनेजर का उपयोग, GRUB के प्रतिस्थापन के रूप में; थोड़ी सी हैकिंग के साथ (कुछ ऐसा जिसे हम एक दिन अधिक विस्तार से खोज सकते हैं), आप मौजूदा सीमाओं को दरकिनार करने में सक्षम हो सकते हैं जो रीड-ओनली BIOS/UEFI द्वारा लगाई गई हैं 3) कई अन्य UEFI प्रबंधन प्रोग्राम जैसे EasyUEFI 4) एक प्रार्थना पुस्तक, जो अधिकांश गीक्स के लिए एक पायथन मैनुअल होगी।
आइए अंतिम से दूसरे बिंदु पर थोड़ा और विस्तार से चर्चा करें। यह एक विंडोज-आधारित प्रोग्राम है, और इसका उपयोग EFI बूटलोडर को प्रबंधित करने के लिए किया जा सकता है, जिसमें एंट्री को इनेबल/डिसेबल करना, सूचीबद्ध एंट्री के क्रम को बदलना, और अक्षम आइटम को साफ करना शामिल है।
मुख्य मेनू में, एंट्री में से एक को अक्षम करने का प्रयास करें, या यदि आपके पास पहले से ही कुछ अक्षम स्थिति में हैं, तो आप क्लीनअप विकल्प का प्रयास कर सकते हैं। मेरे मामले में, यह काम नहीं किया। टूल ने एक सिस्टम API त्रुटि फेंकी, जो शायद उस इंटरप्टेड सिस्टम कॉल मुद्दे से बहुत अलग नहीं है जिसे हमने समस्या पर अपनी प्रारंभिक रिपोर्ट में देखा था। अपनी उम्मीदें बहुत अधिक न रखें, लेकिन यह आपके लिए मुझसे बेहतर काम कर सकता है।
मैं aigle, Ivan, L., Neal, Marcin, Richard, Nik, Floris, zloster, Georg, और Matthew को उनके सुझावों, विचारों, साहसिक कार्य के माध्यम से प्रोत्साहन के लिए धन्यवाद देना चाहूंगा। चूंकि समस्या हल हो गई है, मैं किसी अतिरिक्त उपकरण या समस्या को हल करने के तरीकों को जारी रखने में सक्षम नहीं होऊंगा, और आपके पास उपरोक्त के साथ, प्लस कर्नेल अपडेट, प्लस VirtualBox रॉ डिस्क एक्सेस, आपको ठीक होना चाहिए।
निष्कर्ष
जब आप एक अजीब हार्डवेयर स्थिति का सामना कर रहे होते हैं, जैसे हमारे यहां, तो कोई गारंटी नहीं होती। पहले वर्कअराउंड लेख में, मैंने VirtualBox और रॉ डिस्क एक्सेस का उल्लेख किया। यह काम करने के लिए बाध्य है, लेकिन जोखिम काफी अधिक हैं। एक कम घुसपैठ वाली विधि GRUB2 का उपयोग करके ISO फाइलों से बूट करने की कोशिश करना है, हमारा आज का विषय। मेरा परीक्षण दिखाता है कि यह बहुत कम सफल और प्रभावी तरीका है, लेकिन यह हार्ड डिस्क पर डेटा को नुकसान पहुंचाने के कम जोखिम को भी वहन करता है। अंत में, आप कुछ अन्य उपकरणों को आजमा सकते हैं, और हम भविष्य में उनमें से कुछ का अधिक पता लगाएंगे।
फिलहाल, मेरा सुझाव है - यदि कर्नेल अपडेट आपके लिए काम नहीं करता है AND आपको वास्तव में वर्तमान सेटअप को बदलने की आवश्यकता नहीं है AND यह आपके लिए अच्छी तरह से काम करता है - इसे रहने दें। मेरे लिए, यह आठ ऑपरेटिंग सिस्टम का उपयोग करने का मामला था, एक टेस्ट बॉक्स के लिए पर्याप्त से अधिक, और मैं अभी भी इन-विवो अपग्रेड कर सकता था, इसलिए कर्नेल फिक्स का इंतजार करना ठीक था। यदि आप अतिरिक्त ऑपरेटिंग सिस्टम का उपयोग करने में सक्षम होने के लिए किसी भी हार्डवेयर मरम्मत के बिना प्रयास करना चाहते हैं, तो आपके पास विचार करने के लिए कई वर्कअराउंड समाधान और अर्ध-समाधान हैं। काश मैं आपको 100% फुलप्रूफ 100% लागू नुस्खा दे सकता, लेकिन सॉफ्टवेयर और हार्डवेयर के बीच युद्ध में ऐसा कभी नहीं होता। ध्यान रखें।
चीयर्स।