दूसरी हार्डड्राइव पर दोहरी बूट विंडो, UEFI / GPT सिस्टम


15

मैं लिनक्स स्थापित करना चाहूंगा, लेकिन मैं अपनी वर्तमान खिड़कियों की स्थापना को नुकसान पहुंचाने का जोखिम नहीं उठाना चाहता क्योंकि मैंने बहुत सी डरावनी कहानियां सुनी हैं। सौभाग्य से, मेरे पास एक अतिरिक्त हार्ड ड्राइव है। क्या मैं विंडोज़ ड्राइव को संशोधित किए बिना उस पर और फिर दोहरी बूट विंडो पर लिनक्स स्थापित कर सकता हूं?

इसके अलावा, मेरे पास एक UEFI "BIOS" है और विंडोज़ ड्राइव GPT प्रारूप में है।

जवाबों:


18

जब मैं नए UEFI सिस्टम और पारंपरिक BIOS सिस्टम दोनों के लिए समान हैं, तो अवधारणाओं के संदर्भ में नीचे BIOS शब्द का उपयोग किया जा रहा है , क्योंकि यह एक UEFI उन्मुख प्रश्न है, "BIOS" के बारे में बात करना बेहतर है, उदाहरण के लिए, GRUB प्रलेखन , और "BIOS / UEFI" बहुत क्लूनी है। GRUB (वास्तव में, GRUB 2 - यह अक्सर अस्पष्ट रूप से उपयोग किया जाता है) लिनक्स द्वारा स्थापित बूटलोडर है और इसका उपयोग बूट विंडोज को दोहरी करने के लिए किया जाता है।

सबसे पहले, ड्राइव ऑर्डर और बूट ऑर्डर के बारे में एक शब्द। ड्राइव ऑर्डर उस आदेश को संदर्भित करता है जिसमें ड्राइव मदरबोर्ड पर बस से शारीरिक रूप से जुड़े होते हैं (पहली ड्राइव, दूसरी ड्राइव, आदि); यह जानकारी BIOS द्वारा बताई गई है। बूट ऑर्डरउस अनुक्रम को संदर्भित करता है जिसमें BIOS बूट करने योग्य ड्राइव की जांच करता है। यह आवश्यक रूप से ड्राइव ऑर्डर के समान नहीं है, और आमतौर पर BIOS सेट-अप स्क्रीन के माध्यम से कॉन्फ़िगर करने योग्य है। ड्राइव ऑर्डर बूट ऑर्डर से कॉन्फ़िगर करने योग्य या प्रभावित नहीं होना चाहिए, क्योंकि यह करने के लिए एक बहुत ही ओएस अनफ्रीगेटेड चीज़ होगी (लेकिन सिद्धांत रूप में एक ऑस्पेट BIOS सकता है)। इसके अलावा, यदि आप पहली ड्राइव को अनप्लग करते हैं, तो दूसरा ड्राइव संभवतः पहले वाला बन जाएगा। हम बूट लोडर को कॉन्फ़िगर करने के लिए UUIDs का उपयोग करने जा रहे हैं ताकि इस तरह के मुद्दों से बचने की कोशिश की जा सके (समकालीन लिनक्स इंस्टॉलर भी ऐसा करते हैं)।

आप जो चाहते हैं उसे प्राप्त करने का आदर्श तरीका ड्राइव ऑर्डर के संदर्भ में दूसरी ड्राइव पर लिनक्स स्थापित करना है और फिर इसे यूईएफआई सेट-अप का उपयोग करके बूट ऑर्डर के मामले में पहले चुनें । इसका एक अतिरिक्त फायदा यह है कि आप चाहें तो विंडोज़ ड्राइव का चयन करने के लिए BIOS / UEFI बूट ऑर्डर का उपयोग कर सकते हैं और यदि चाहें तो ग्रब को बायपास कर सकते हैं। कारण मैं दूसरी ड्राइव पर लिनक्स की सिफारिश करता हूं क्योंकि GRUB को विंडोज देशी बूटलोडर को "चेनलोड" करना होगा, और विंडोज बूटलोडर हमेशा यह मानता है कि यह पहली ड्राइव पर है। इसे ट्रिक करने का एक तरीका है, हालांकि, यदि आप इसे पसंद करते हैं या इसे दूसरे तरीके की आवश्यकता है।

उम्मीद है, आप बस आगे जा सकते हैं और एक लाइव सीडी या जो भी उपयोग कर सकते हैं और यह जीयूआई इंस्टॉलर का उपयोग करके प्राप्त कर सकते हैं। सभी इंस्टॉलर समान नहीं बनाए जाते हैं, हालांकि, और अगर यह खराब हो जाता है और आपको इस तरह की समस्याओं के साथ छोड़ दिया जाता है:

  1. मैंने पहली डिस्क पर लिनक्स स्थापित किया था और अब मैं विंडोज़ बूट नहीं कर सकता, या

  2. मैंने दूसरी डिस्क पर लिनक्स स्थापित किया है, लेकिन बूटलोडर के लिए पहली डिस्क का उपयोग कर रहा है, और अब मैं कुछ भी बूट नहीं कर सकता!

फिर पढ़ते रहे। दूसरे मामले में, आपको पहले दूसरी डिस्क पर लिनक्स को फिर से स्थापित करने का प्रयास करना चाहिए, और इस बार सुनिश्चित करें कि जहां बूटलोडर जाता है। सबसे आसान और सबसे आसान तरीका है कि मशीन से विंडोज ड्राइव को अस्थायी रूप से हटा दिया जाएगा, क्योंकि हम यह मानने जा रहे हैं कि ड्राइव ऑर्डर की परवाह किए बिना इस पर कुछ भी अतिरिक्त स्थापित नहीं है।

एक बार जब आप लिनक्स स्थापित कर लेते हैं और आपने यह सुनिश्चित कर लिया है कि यह बूट कर सकता है, तो विंडोज ड्राइव को वापस प्लग करें (यदि आपने इसे हटा दिया है - और याद रखें, हम आदर्श रूप से इसे ड्राइव ऑर्डर के मामले में पहले चाहते हैं, और दूसरा ड्राइव पहले के संदर्भ में। बूट ऑर्डर) और अगले चरण पर आगे बढ़ें।

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

संदर्भ


2
तकनीकी रूप से सही शब्द जिसे आप ढूंढ रहे हैं, जो कि क्लंकी भी नहीं है, फर्मवेयर है , जो खुद को BIOS या एसईएफआई के रूप में प्रस्तुत कर सकता है।
मिलिंद आर

दुर्भाग्य से फर्मवेयर का एक बहुत अधिक सामान्य अर्थ है कि यह किसी भी सॉफ़्टवेयर को संदर्भित करता है जो हार्डवेयर में एम्बेडेड है।
काइलोटन

मेरे डेस्कटॉप पर, "चेन" बूटिंग के दौरान एक कमांड के रूप में निराधार है, लेकिन यह 40_custom फाइल में चेनलोडर है जिसे मुझे लिखना होगा। मुझे बताएं कि क्या यह सामान्य है
FlogFR

बहुत अच्छा! हालाँकि जब मैं यह कोशिश करता हूं, तो मेरा विंडोज 8 इंस्टॉल ग्रब 2 में एक प्रविष्टि के रूप में दिखाई नहीं देगा। मैंने सभी सिंटैक्स त्रुटियों को ठीक कर दिया है और grub.cfg फ़ाइल त्रुटियों के बिना बनाई गई है। कृपया ध्यान दें कि जब चेनलोड पहली बार उल्लिखित किया गया है तो एक सिंटैक्स त्रुटि है: chainload $({root})होना चाहिए chainload (${root})(मैं इसे संपादित नहीं कर सकता क्योंकि यह बहुत छोटा है)।
सोबेक

@sobek इसके लिए धन्यवाद - सही किया गया। यदि आपने फ़ाइल में कुछ जोड़ा है /etc/grub.dऔर कॉन्फ़िगरेशन बनाते समय इसे जोड़ा नहीं जा रहा है, तो कुछ अजीब हो रहा है। यदि आप इसके grub-mkconfigबिना चलते हैं, तो -oयह मानक से बाहर निकलता है, जो इस बात की पुष्टि या खंडन करने में मदद कर सकता है कि आपके अतिरिक्त को संसाधित किया जा रहा है।
गोल्डीलॉक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.