जब मैं नए UEFI सिस्टम और पारंपरिक BIOS सिस्टम दोनों के लिए समान हैं, तो अवधारणाओं के संदर्भ में नीचे BIOS शब्द का उपयोग किया जा रहा है , क्योंकि यह एक UEFI उन्मुख प्रश्न है, "BIOS" के बारे में बात करना बेहतर है, उदाहरण के लिए, GRUB प्रलेखन , और "BIOS / UEFI" बहुत क्लूनी है। GRUB (वास्तव में, GRUB 2 - यह अक्सर अस्पष्ट रूप से उपयोग किया जाता है) लिनक्स द्वारा स्थापित बूटलोडर है और इसका उपयोग बूट विंडोज को दोहरी करने के लिए किया जाता है।
सबसे पहले, ड्राइव ऑर्डर और बूट ऑर्डर के बारे में एक शब्द। ड्राइव ऑर्डर उस आदेश को संदर्भित करता है जिसमें ड्राइव मदरबोर्ड पर बस से शारीरिक रूप से जुड़े होते हैं (पहली ड्राइव, दूसरी ड्राइव, आदि); यह जानकारी BIOS द्वारा बताई गई है। बूट ऑर्डरउस अनुक्रम को संदर्भित करता है जिसमें BIOS बूट करने योग्य ड्राइव की जांच करता है। यह आवश्यक रूप से ड्राइव ऑर्डर के समान नहीं है, और आमतौर पर BIOS सेट-अप स्क्रीन के माध्यम से कॉन्फ़िगर करने योग्य है। ड्राइव ऑर्डर बूट ऑर्डर से कॉन्फ़िगर करने योग्य या प्रभावित नहीं होना चाहिए, क्योंकि यह करने के लिए एक बहुत ही ओएस अनफ्रीगेटेड चीज़ होगी (लेकिन सिद्धांत रूप में एक ऑस्पेट BIOS सकता है)। इसके अलावा, यदि आप पहली ड्राइव को अनप्लग करते हैं, तो दूसरा ड्राइव संभवतः पहले वाला बन जाएगा। हम बूट लोडर को कॉन्फ़िगर करने के लिए UUIDs का उपयोग करने जा रहे हैं ताकि इस तरह के मुद्दों से बचने की कोशिश की जा सके (समकालीन लिनक्स इंस्टॉलर भी ऐसा करते हैं)।
आप जो चाहते हैं उसे प्राप्त करने का आदर्श तरीका ड्राइव ऑर्डर के संदर्भ में दूसरी ड्राइव पर लिनक्स स्थापित करना है और फिर इसे यूईएफआई सेट-अप का उपयोग करके बूट ऑर्डर के मामले में पहले चुनें । इसका एक अतिरिक्त फायदा यह है कि आप चाहें तो विंडोज़ ड्राइव का चयन करने के लिए BIOS / UEFI बूट ऑर्डर का उपयोग कर सकते हैं और यदि चाहें तो ग्रब को बायपास कर सकते हैं। कारण मैं दूसरी ड्राइव पर लिनक्स की सिफारिश करता हूं क्योंकि GRUB को विंडोज देशी बूटलोडर को "चेनलोड" करना होगा, और विंडोज बूटलोडर हमेशा यह मानता है कि यह पहली ड्राइव पर है। इसे ट्रिक करने का एक तरीका है, हालांकि, यदि आप इसे पसंद करते हैं या इसे दूसरे तरीके की आवश्यकता है।
उम्मीद है, आप बस आगे जा सकते हैं और एक लाइव सीडी या जो भी उपयोग कर सकते हैं और यह जीयूआई इंस्टॉलर का उपयोग करके प्राप्त कर सकते हैं। सभी इंस्टॉलर समान नहीं बनाए जाते हैं, हालांकि, और अगर यह खराब हो जाता है और आपको इस तरह की समस्याओं के साथ छोड़ दिया जाता है:
मैंने पहली डिस्क पर लिनक्स स्थापित किया था और अब मैं विंडोज़ बूट नहीं कर सकता, या
मैंने दूसरी डिस्क पर लिनक्स स्थापित किया है, लेकिन बूटलोडर के लिए पहली डिस्क का उपयोग कर रहा है, और अब मैं कुछ भी बूट नहीं कर सकता!
फिर पढ़ते रहे। दूसरे मामले में, आपको पहले दूसरी डिस्क पर लिनक्स को फिर से स्थापित करने का प्रयास करना चाहिए, और इस बार सुनिश्चित करें कि जहां बूटलोडर जाता है। सबसे आसान और सबसे आसान तरीका है कि मशीन से विंडोज ड्राइव को अस्थायी रूप से हटा दिया जाएगा, क्योंकि हम यह मानने जा रहे हैं कि ड्राइव ऑर्डर की परवाह किए बिना इस पर कुछ भी अतिरिक्त स्थापित नहीं है।
एक बार जब आप लिनक्स स्थापित कर लेते हैं और आपने यह सुनिश्चित कर लिया है कि यह बूट कर सकता है, तो विंडोज ड्राइव को वापस प्लग करें (यदि आपने इसे हटा दिया है - और याद रखें, हम आदर्श रूप से इसे ड्राइव ऑर्डर के मामले में पहले चाहते हैं, और दूसरा ड्राइव पहले के संदर्भ में। बूट ऑर्डर) और अगले चरण पर आगे बढ़ें।
GRUB कॉन्फ़िगरेशन तक पहुँचना
बूट लिनक्स, एक टर्मिनल खोलें, और
> su root
आपसे रूट का पासवर्ड मांगा जाएगा। इस बिंदु से आगे, आप उस टर्मिनल में (जांचने, कोशिश करने वाले whoami
) सुपरसुसर हैं , इसलिए कुछ भी बेवकूफी न करें। हालाँकि, आप अभी भी GUI में एक सामान्य उपयोगकर्ता हैं, और जब से हम एक टेक्स्ट फ़ाइल का संपादन करेंगे, यदि आप GUI संपादक को पसंद करते हैं, तो हमें उस फ़ाइल के स्वामित्व और उस निर्देशिका में इसे अस्थायी रूप से बदलना होगा:
> chown -R yourusername /etc/grub.d/
यदि आपको "ऑपरेशन की अनुमति नहीं है", तो आपने su
ठीक से नहीं किया । यदि आप प्राप्त करते हैं chown: invalid user: ‘yourusername’
, तो आपने अंतिम कमांड को भी शाब्दिक रूप से लिया।
अब आप /etc/grub.d
अपने फ़ाइल-ब्रॉउज़र में नेविगेट कर सकते हैं और नामक फ़ाइल की तलाश कर सकते हैं 40_custom
। इसे ऐसा दिखना चाहिए:
#!/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.
यदि आप इसे नहीं पा सकते हैं, तो रूट टर्मिनल में निम्नलिखित कमांड दर्ज करें:
> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom
इसे अपने टेक्स्ट एडिटर में खोलें, ऊपर के हिस्से (w / शुरू करने #!/bin/sh
) और अगले स्टेप पर कॉपी पेस्ट करें ।
विंडोज बूट विकल्प जोड़ना
फ़ाइल के अंत में पाठ संपादक के साथ इसे कॉपी-पेस्ट करें:
menuentry "MS Windows" {
insmod part_gpt
insmod search_fs_uuid
insmod ntfs
insmod chain
}
यह उन मॉड्यूलों की सूची है जिन्हें GRUB को काम करने की आवश्यकता होगी ( ntfs
हो सकता है कि यह बहुत अच्छा हो, लेकिन किसी भी चीज को चोट नहीं पहुंचानी चाहिए)। ध्यान दें कि यह एक अधूरी प्रविष्टि है - हमें कुछ महत्वपूर्ण कमांड जोड़ने की आवश्यकता है।
विंडोज दूसरा चरण बूटलोडर ढूँढना
आपके लिनक्स इंस्टाल ने शायद आपके विंडोज विभाजन को स्वचालित कर दिया है और आपको इसे एक फ़ाइल ब्राउज़र में खोजने में सक्षम होना चाहिए। यदि नहीं, तो इसे बनाने का एक तरीका समझें (यदि आप सुनिश्चित नहीं हैं कि कैसे, इस साइट पर एक प्रश्न पूछें)। एक बार ऐसा करने के बाद, हमें आरोह बिंदु को जानना होगा - यह फ़ाइल ब्राउज़र में स्पष्ट होना चाहिए, उदा /media/ASDF23SF23/
। कुछ टाइपिंग को बचाने के लिए, हम इसे एक शेल चर में डाल रहे हैं:
win="/whatever/the/path/is"
बराबरी के चिन्ह के दोनों ओर रिक्त स्थान नहीं होना चाहिए। यहां विंडोज पथ के किसी भी तत्व को शामिल न करें। यह विंडोज विभाजन पर शीर्ष स्तर के फ़ोल्डर को इंगित करना चाहिए। अभी:
cd $win
find . -name bootmgfw.efi
यदि आपके पास एक बड़ा विभाजन है तो इसमें कुछ मिनट लग सकते हैं, लेकिन सबसे पहली बात यह है कि यह वही है जो हम खोज रहे हैं; लंबे गोओब्लेडगुक स्ट्रिंग्स वाले फाइल सिस्टम में आगे संदर्भ हो सकते हैं - वे नहीं हैं। का प्रयोग करें Ctrl-c
खोज को रोकने के लिए एक बार आप कुछ छोटी और जैसे सरल देखने ./Windows/Boot/EFI/bootmgfw.efi
या ./EFI/HP/boot/bootmgfw.efi
।
.
शुरुआत में छोड़कर , बाद के लिए इस रास्ते को याद रखें; आप इसे अपने टेक्स्ट एडिटर में नीचे की ओर एक खाली लाइन पर कॉपी कर सकते हैं, क्योंकि हम इसे वहीं इस्तेमाल करेंगे। यदि आप अपनी पिछली निर्देशिका में वापस जाना चाहते हैं, तो उपयोग करें cd -
, हालांकि इससे कोई फर्क नहीं पड़ता कि आप आगे की तरफ यहां से शेल में कहां हैं।
सही पैरामीटर सेट करना
GRUB को बूट प्रक्रिया को दूसरे चरण के विंडोज बूटलोडर को खोजने और सौंपने में सक्षम होना चाहिए। हमारे पास पहले से ही Windows विभाजन पर पथ है, लेकिन हमें GRUB को यह बताने के लिए कुछ मापदंडों की भी आवश्यकता है कि वह विभाजन कहां है। आपके सिस्टम grub-probe
पर (या, जैसे, फेडोरा) नामक उपकरण स्थापित होना चाहिए grub2-probe
। टाइप करें grub
और फिर Tabदो या तीन बार हिट करें ; आपको एक या दूसरे सहित एक सूची देखनी चाहिए।
> grub-probe --target=hints_string $win
आपको एक स्ट्रिंग देखना चाहिए जैसे:
--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1
इसमें ग्रब कॉन्फ़िगरेशन के साथ पाठ संपादक पर वापस जाएं और सभी insmod
कमांड के बाद एक पंक्ति जोड़ें (लेकिन समापन घुंघराले ब्रेस से पहले) तो ऐसा दिखता है:
insmod chain
search --fs-uuid --set=root [the complete "hint bios" string]
}
उस पंक्ति को मत तोड़ो या अपने पाठ संपादक को ऐसा करने की अनुमति दें। यह प्रदर्शन में चारों ओर लपेट सकता है - अंतर बताने का एक आसान तरीका लाइन नंबरिंग को सेट करना है। आगे:
> grub-probe --target=fs_uuid $win
यह "123A456B789X6X" या "b942fb5c-2573-4222-acc8-bbb883f19043" जैसे अक्षरों, संख्याओं और संभावित डैश को वापस भेजना चाहिए। search --fs-uuid
एक संकेत के साथ अलग किए गए संकेत बायोस स्ट्रिंग के बाद लाइन के अंत में जोड़ें ।
अगला, अगर (और केवल अगर) विंडोज ड्राइव ऑर्डर के संदर्भ में दूसरी ड्राइव पर है , तो लाइन के बाद एक पंक्ति जोड़ें search --fs-uuid
:
drivemap -s hd0 hd1
यह पहले बताई गई "ट्रिक" है। ध्यान दें कि यह काम करने की गारंटी नहीं है लेकिन यह कोशिश करने के लिए चोट नहीं करता है।
अंत में, अंतिम पंक्ति होनी चाहिए:
chainloader (${root})[the Windows path to the bootloader]
}
केवल स्पष्ट होने के लिए, उदाहरण के लिए:
chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi
बस। फ़ाइल को सहेजें और फ़ाइल ब्राउज़र में जांचें कि यह वास्तव में सहेजा गया है और जिस तरह से उसे दिखना चाहिए।
GRUB में नया मेनू विकल्प जोड़ें
यह नामक उपकरण के साथ किया जाता है grub-mkconfig
या grub2-mkconfig
; यह उस सूची में रहा होगा जो आपने Tabपहले पाया था। आपके पास आ कमांड भी आ सकती है update-grub
। उसके लिए जाँच करने के लिए, बस इसे रूट टर्मिनल में टाइप करें। यदि आपको "कमांड नहीं मिला", तो आपको grub-mkconfig
सीधे उपयोग करने की आवश्यकता है । यदि नहीं (आ रही लंबी त्रुटि सहित), आपने अभी कॉन्फ़िगरेशन सेट किया है और थोड़ा नीचे स्किम कर सकते हैं।
grub-mkconfig
सीधे उपयोग करने के लिए , हमें सबसे पहले खोजने की आवश्यकता है grub.cfg
:
> find /boot -name grub.cfg
यह शायद /boot/grub/grub.cfg
या होगा /boot/grub2/grub.cfg
।
> grub-mkconfig -o /boot/grub/grub.cfg
update-grub
त्रुटियों के लिए कॉन्फ़िगरेशन को स्वचालित रूप से स्कैन करेगा। grub-mkconfig
नहीं होगा, लेकिन ऐसा करना महत्वपूर्ण है क्योंकि जब आप मशीन को बूट करने की कोशिश करते हैं, तो इससे निपटना बहुत आसान होता है। इसके लिए, उपयोग grub-script-check
(या grub2-script-check
):
> grub-script-check /boot/grub/grub.cfg
यदि यह (या update-grub
) एक लाइन नंबर को इंगित करने में त्रुटि उत्पन्न करता है, तो यह grub.cfg में लाइन नंबर है, लेकिन आपको /etc/grub.d/40_custom
(अपने पाठ संपादक में फ़ाइल) संबंधित भाग को ठीक करने की आवश्यकता है । आपको पूर्व फ़ाइल देखने के लिए बस रूट करने की आवश्यकता हो सकती है, इसलिए less /boot/grub/grub.cfg
टर्मिनल में कोशिश करें , हिट करें :, और लाइन नंबर दर्ज करें। आपको अपनी मेनू प्रविष्टि देखनी चाहिए। टाइपो को ढूंढें, इसे पाठ संपादक में ठीक करें, और फिर से चलाएं update-grub
या चलाएं grub-mkconfig
।
जब आप कर लिए जाते हैं तो आप टेक्स्ट एडिटर को बंद कर सकते हैं और exit
सुपरसुअर मोड को छोड़ने के लिए टर्मिनल में टाइप कर सकते हैं ।
रीबूट!
जब आप ग्रब मेनू में आते हैं, तो जल्दी से नीचे स्क्रॉल करें (टाइमआउट समाप्त होने से पहले, आमतौर पर 5 सेकंड) "विंडोज" विकल्प पर जाएं और इसका परीक्षण करें। यदि आपको ग्रब से पाठ संदेश की त्रुटि मिलती है, तो कॉन्फ़िगरेशन में कुछ गड़बड़ है। यदि आपको विंडोज से कोई त्रुटि संदेश मिलता है , तो वह समस्या आपके और Microsoft के बीच है। चिंता न करें, हालाँकि, आपकी विंडोज ड्राइव को संशोधित नहीं किया गया है और आप इसे BIOS सेट-अप के माध्यम से सीधे (बूट क्रम के अनुसार) डालकर सीधे बूट कर पाएंगे।
जब आप फिर से लिनक्स पर लौटते हैं, तो /etc/grub.d
निर्देशिका का स्वामित्व लौटाते हैं और यह उनकी मूल स्थिति में होती है:
sudo chmod 755 /etc/grub.d/40_custom
संदर्भ