UEFI बायोस को GRUB कैसे शुरू करें, विंडोज नहीं?


23

संपादित करें में जोड़ा गया TL, DR:

प्रश्न है:

मैं एक ही UEFI बूट विभाजन पर Windows बूट प्रबंधक पर GRUB को प्राथमिकता कैसे दे सकता हूं?

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

मैं एक नया कंप्यूटर स्थापित कर रहा हूं, और इसे उबंटू में डिफ़ॉल्ट बूट द्वारा चाहता हूं, लेकिन बूट पर विंडोज का चयन करने का विकल्प है। यह विशेष रूप से महत्वपूर्ण है अगर शक्ति बाहर जाती है और वापस आती है; मैं घर में भी नहीं रहूंगा।

मैंने अपनी आंतरिक NVMe डिस्क पर Ubuntu 17.04 स्थापित करके शुरू किया, आधी डिस्क का उपयोग करने के लिए GPT के साथ विभाजन और एक अलग UEFI बूट विभाजन। GRUB बूट जो ठीक है, और मुझे स्टार्ट-अप पर GRUB बूट मेनू दिखाई देता है जहाँ मैं GRUB के बारे में जो भी आइटम चुन सकता हूँ।

फिर मैंने हाल ही में डाउनलोड किए गए आईएसओ से विंडोज 10 प्रो स्थापित किया। इसने एक ही यूईएफआई विभाजन पर विंडोज बूट मैनेजर स्थापित किया, और उबंटू बरकरार (महान!) छोड़ दिया और वह बूट विंडोज 10 में ठीक हो गया।

हालाँकि, इसने "कुछ" किया जो UEFI फर्मवेयर को पावर-अप पर GRUB के बजाय तुरंत विंडोज बूट मैनेजर का चयन करता है। लिनक्स को बूट करने का एकमात्र तरीका अब BIOS बूट मैनेजर (मेरे BIOS पर F11) का उपयोग करना है और मैन्युअल रूप से GRUB बूट लोडर का चयन करना है। यूईएफआई BIOS जानता है कि यूईएफआई विभाजन पर कई बूट करने योग्य अधिष्ठापन हैं, क्योंकि मैं बूट प्रबंधक में उनके बीच चयन कर सकता हूं। हालाँकि, जब मैं UEFI BIOS में सेटअप मेनू में हूँ, तो यह मुझे बूट प्राथमिकता चयन में "UEFI बूट माय इंटरनल ड्राइव" चुनने की सुविधा देता है - यह मुझे उस विभाजन पर विशेष बूट लोडर चुनने की अनुमति नहीं देता है । और, डिफ़ॉल्ट रूप से, यह विंडोज को चुनता है, GRUB को नहीं।

इंटर्नेट्स (और इस साइट) का सुझाव है कि इसे ठीक करने का पुराना तरीका है update-grub(इसलिए GRUB विंडोज को पहचानता है) और फिर grub-install(GRUB को डिवाइस पर वापस लाने के लिए।) मैंने ऐसा किया है, लेकिन दुर्भाग्य से, यह अभी भी व्यवहार के रूप में है। ऊपर वर्णित है, जहां डिफ़ॉल्ट रूप से BIOS विंडोज बूट प्रबंधक चुनता है। ( update-grubविंडोज बूट मैनेजर इंस्टॉल करता है, और मेनू में इसे जोड़ता है, और वह मेनू आइटम तब काम करता है जब मैं मैन्युअल रूप से UEFI बूट प्रबंधक में GRUB विभाजन का चयन करता हूं।)

मैं अपने UEFI बूट विभाजन पर GRUB को "डिफ़ॉल्ट" बूट बनाने के लिए क्या कर सकता हूं?

MSI X399 कार्बन मदरबोर्ड का उपयोग करना।

दूसरा संपादित: क्योंकि सही उत्तर समाप्त होता है एक टिप्पणी में एक टिप्पणी में उल्लेख किया जा रहा है, मैं इसे यहाँ दोहराऊंगा:

"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.

आपको बस Windows फिर Linux को इंस्टॉल करना है। कोई और रास्ता नही। मुझे ठीक विपरीत समस्या है। जब शक्ति बाहर जाती है, तो वापस आ जाती है, मेरा कंप्यूटर ग्रब और लिनक्स में चला जाता है, smh। एक बात है, यह है कि मैं अपने स्वयं के ड्राइव पर प्रत्येक प्रणाली है। बूट ऑर्डर पर, मैं इसमें लिनक्स और ग्रब के साथ ड्राइव चुनता हूं।
DMB

1
यह आश्चर्यजनक है कि कितने लोग उन चीजों का सुझाव देते हैं जो पहले से ही अन्य लोगों द्वारा सुझाए गए हैं, और मैंने पहले ही कहा था कि मेरे मूल पद पर या नीचे टिप्पणी में काम नहीं किया। विंडोज एडमिन शेल में सही समाधान "बीसीडीईडीआईटी" था। अन्य सुझावों में से किसी ने भी इसे हल नहीं किया (और उनमें से ज्यादातर, मैंने पहले ही कोशिश की थी, मेरे सवाल के अनुसार।)
जॉन वाटे

जवाबों:


22

ऐसा करने के लिए कुछ अलग तरीके हैं, जिनमें शामिल हैं:

  • ईएफआई सेटअप उपयोगिता - अधिकांश ईएफआई सेटअप उपयोगिताओं को प्रदान करते हैं जिन्हें आप बूट समय पर एक विशेष कुंजी मारकर (एस्क, डेल या फ़ंक्शन कुंजी, आमतौर पर मार सकते हैं, लेकिन एक सिस्टम से दूसरे सिस्टम में भिन्न क्या कुंजी है)। ये अक्सर, लेकिन हमेशा नहीं, बूट ऑर्डर को समायोजित करने का एक तरीका प्रदान करते हैं। यदि आपका फर्मवेयर ऐसा विकल्प प्रदान करता है, तो आपको GRUB को शीर्ष स्थान पर ले जाने के लिए इसका उपयोग करने में सक्षम होना चाहिए। (जीआरयूबी को बुलाए जाने की संभावना है ubuntu, यह देखते हुए कि आपने इसे उस वितरण से स्थापित किया है।)
  • एक EFI शेल - आप bcfgएक EFI संस्करण 2 शेल में कमांड का उपयोग कर सकते हैं , जैसा कि आर्क लिनक्स विकी पर वर्णित है यदि आपका सिस्टम पहले से ही एक आसान-से-एक्सेस शेल के साथ सेट नहीं है, तो यह दृष्टिकोण दूसरों की तुलना में उपयोग करने के लिए कठिन होने की संभावना है, लेकिन यह ओएस-अज्ञेयवादी है।
  • इज़ीयूईएफआई - तीसरे पक्ष के विंडोज इज़ीयूईएफआई कार्यक्रम को आप जो चाहते हैं, वह करने का सबसे आसान तरीका होने की संभावना है। आप ubuntuईज़ीयूईएफआई की सूची में प्रवेश पर क्लिक कर सकते हैं और इसे शीर्ष पर ले जा सकते हैं ।
  • bcdedit- विंडोज bcdeditकमांड NVRAM- आधारित बूट ऑर्डर को बदल सकता है। विशेष रूप से, एक प्रशासक कमांड प्रॉम्प्ट विंडो खोलना और टाइप करना bcdedit /set "{bootmgr}" path \EFI\ubuntu\shimx64.efi(वैकल्पिक रूप bcdedit /set "{bootmgr}" description "ubuntu"से विवरण को समझदार रखने के लिए) को चाल करना चाहिए।
  • efibootmgr- यह लिनक्स टूल बूट ऑर्डर को समायोजित कर सकता है। sudo efibootmgrविकल्प देखने के लिए अकेले टाइप करके शुरुआत करें। प्रविष्टि के Boot####साथ जुड़ी संख्या ( ) ubuntuऔर वर्तमान बूट क्रम ( BootOrderलाइन पर) पर ध्यान दें। फिर आप विकल्प ubuntuका उपयोग करके शीर्ष पर प्रविष्टि के साथ एक नया बूट ऑर्डर दर्ज कर सकते हैं -o। उदाहरण के लिए, यदि वर्तमान बूट ऑर्डर 0000,0003,0007,0004 है और ubuntu0007 है, तो आप sudo efibootmgr -o 0007,0000,0003,0004बूट ऑर्डर को समायोजित करना चाहेंगे ।
  • refind-mkdefault- यह स्क्रिप्ट rEFInd के साथ आती है, और यह पूर्ववर्ती प्रक्रिया को स्वचालित करने का एक तरीका है। यदि आप rEFInd का उपयोग नहीं कर रहे हैं, तो आपको यहां स्क्रिप्ट डाउनलोड करने और इसे निष्पादन योग्य ( chmod a+x refind-mkdefault) बनाने की आवश्यकता होगी । फिर आप इसे डिफ़ॉल्ट बूट प्रविष्टि GRUB के रूप में sudo ./refind-mkdefault -L ubuntuया चलाने के लिए चलाएंगे sudo ./refind-mkdefault -L shimx64

इनमें से किसी भी विकल्प के साथ संभावित समस्याएं और जटिलताएं हैं। सबसे अधिक संभावना जटिल कारक है यदि पुरानी या वैकल्पिक ubuntuबूट प्रविष्टियाँ हैं। यह महत्वपूर्ण है कि आप सही क्रम को बूट क्रम में शीर्ष स्थान पर ले जाएं; अगर आप गलत कदम उठाते हैं, तो आप व्यवहार में बदलाव या गैर-कार्यात्मक बूटिंग में कोई बदलाव नहीं करेंगे, जिससे बूट करना कठिन हो जाएगा। यदि आप उपयोग करते हैं efibootmgr, तो BootCurrentलाइन आपको यह बताने में मदद कर सकती है कि आपको किस विकल्प को डिफ़ॉल्ट के रूप में सेट करना चाहिए।

इसे करने के अन्य तरीके हैं जो ओवरकिल हैं। उदाहरण के लिए, GRUB ( बूट रिपेयर या grub-install) के माध्यम से फिर से इंस्टॉल करना चाहिए। इन तरीकों से एक ज्ञात-कार्यशील GRUB कॉन्फ़िगरेशन को नुकसान पहुंचाने का जोखिम होता है, हालांकि।

यह भी ध्यान दें कि कुछ ईएफआई छोटी गाड़ी हैं और कुछ अन्य मुद्दे हैं जो जीआरयूबी को मज़बूती से बूट करना मुश्किल बना सकते हैं। यदि आप ऐसी समस्याओं में भाग लेते हैं, तो आप AskUbuntu पर इन प्रश्नों और उत्तरों की जांच करना चाहते हैं:


जैसा कि मैंने प्रश्न में वर्णित किया है, EFI सेटअप उपयोगिता मुझे डिफॉल्ट के रूप में ubuntu को लेने नहीं देगी, हालांकि यह मुझे मैनुअल बूट मेनू में ऐसा करने देता है। यह बस मुझे ड्राइव लेने देगा, और फिर उसी से विंडोज शुरू करेगा। efibootmgr ने बूट ऑर्डर को बदलने का प्रयास किया, लेकिन BIOS ने रिबूट पर ध्यान नहीं दिया। EasyBCD ने काम नहीं किया - इसने मुझे अधिक मेनू आइटम जोड़ने की अनुमति नहीं दी। हालांकि, एक व्यवस्थापक शेल में "बीसीडीईडीआईटी" ने वास्तव में काम किया, इसलिए उस विकल्प के लिए धन्यवाद!
जॉन वाट ने

ध्यान दें कि EasyBCD और EasyUEFI एक ही विक्रेता से दो अलग-अलग कार्यक्रम हैं। अफसोस की बात है कि EasyUEFI का मुफ्त संस्करण अब उपलब्ध नहीं है - केवल परीक्षण संस्करण प्रदान किए जाते हैं। हालाँकि, BOOTICE एक और मुफ्त कार्यक्रम है जो UEFI बूट सेटिंग्स को संपादित कर सकता है: मूल चीनी साइट , विवरण और स्क्रीनशॉट के साथ अंग्रेजी-भाषा साइट
टेल्कोएम

sudo efibootmgr -n 0002वर्तमान एसओ क्रम को संशोधित करने की तुलना में उपयोग करना बेहतर है। यह बदल जाता है BootNext: 0001और BootCurrent: 0002अगली बार के लिए निकल जाता है, जिससे आपकी वर्तमान GRUB प्रविष्टियाँ अछूती रह जाती हैं। chmod +xरिबूट के साथ उस कमांड को लपेटने के साथ बस एक बैश जोड़ें ।
m3nda

3

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

तो मैं यह कैसे देखता हूं कि आपके पास दो विकल्प हैं।

विकल्प 1

मैं आपको सबसे पहले विंडोज 10 स्थापित करने की सलाह दूंगा। फिर ubuntu स्थापित करें। लेकिन मुझे पता है कि यह थोड़े वर्जित है कि आप "अपने सॉफ़्टवेयर को फिर से इंस्टॉल करें" तो मैं एक विकल्प भी पेश करूँगा।

विकल्प 2

आपके वर्तमान सेटअप के साथ मैं आपको एक लाइव उबंटू सीडी / फ्लैश ड्राइव में बूट करने और स्थापित करने और चलाने की सलाह दूंगा boot-repair। "अनुशंसित मरम्मत" विकल्प पर क्लिक करें और दिए गए निर्देशों का पालन करें। इसे ध्यान से देखें और निष्पादित करने से पहले सभी कमांड पढ़ें। यह एक नए के साथ वर्तमान ग्रब इंस्टॉलेशन को ओवरराइड करेगा जो इसे उम्मीद से ठीक करना चाहिए।


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

मुझे लगता है कि आपने अपने यूईएफआई में बूट ऑर्डर को समायोजित करने की कोशिश की है, है ना?
taterbotz

हां, जैसा कि मैं कहता हूं: "जब मैं यूईएफआई BIOS में सेटअप मेनू में हूं, तो यह मुझे बूट प्राथमिकता चयन में" यूईएफआई बूट माय इंटरनल ड्राइव "चुनने देता है - यह मुझे यह चुनने नहीं देता है कि कौन सा विशेष बूट लोडर है उस विभाजन का उपयोग करने के लिए "
जॉन वाट ने

2

मैं कई समाधान देखता हूं:

  1. डिफ़ॉल्ट को समायोजित करने के लिए अपने UEFI को संपादित करें। लाइनक्स पर आप उपयोग कर सकते हैं efibootmgr। विंडोज पर मुझे यकीन नहीं है लेकिन मुझे लगता है कि आप एक रिकवरी विकल्प में बूट कर सकते हैं जो आपको यूईएफआई को कॉन्फ़िगर करने देता है। या आप rEFInd जैसा कुछ इंस्टॉल करना पसंद कर सकते हैं।
  2. EFI पार्टीशन पर फ़ोल्डर का नाम बदलें। मुझे लगता है कि यह पसंद करता है, या एक फ़ोल्डर में वापस आता है, जिसे एक फ़ोल्डर कहा जाता है boot
  3. बस विंडोज बूट लोडर का उपयोग करें, मुझे लगता है कि इसे अन्य ओएस को बूट करने के लिए कॉन्फ़िगर किया जा सकता है।

मैं बूट ऑर्डर को efibootmgr का उपयोग करके संपादित कर सकता हूं, लेकिन BIOS इसे अनदेखा करता है और वैसे भी विंडोज शुरू करता है। बूट फ़ोल्डर का नाम बदलना (या यहां तक ​​कि "बूट" में ग्रब कॉपी करना) तब तक काम नहीं करता है जब तक कि मैं Microsoft को हटा नहीं देता। विंडोज बूट लोडर गैर-विंडोज ओएस-एस को बूट नहीं करता है (कम से कम अहस्ताक्षरित लोगों को नहीं।)
जॉन वॉट

@JonWatte शायद uefi बूटलोडर अलग है, मुझे याद है एक 32-बिट बायोस मशीन पर विंडोज 7 बूटलोडर से ubuntu बूटिंग। शायद यह अभी भी grload2 श्रृंखला कर सकते हैं? जब से efibootmgrकाम नहीं करता है, मुझे पता है कि मैं एमएसआई नहीं खरीदूंगा।
जिगगंजर

हाँ, इस MSI मदरबोर्ड में कुछ अन्य समस्याएं भी हैं और एक गीगाबाइट के बदले अमेज़न पर वापस जा रहा है।
जॉन वाट

1

मेरे लैपटॉप में मेरी माँ का बोर्ड लगा था और ग्रब पूरी तरह से गायब था।

मुझे पता है कि यह निश्चित के रूप में चिह्नित है लेकिन मुझे लगा कि यह आपके लिए उपयोगी हो सकता है।

ग्रब को बूट विकल्प के रूप में प्रदर्शित करने के लिए। मुझे बायोस में EFI जोड़ने की आवश्यकता है।

मैं अपने बायोस में "बूट सूची विकल्प" पर गया। "बूट विकल्प जोड़ें" पर क्लिक किया गया (मुझे पता है कि यह बायोस विशिष्ट है)। इससे मुझे फ़ाइल नाम के लिए एक विकल्प मिला, जो मेरे मामले में था \EFI\ubuntu\grubx64.efiऔर इसे एक नाम दियाgrub

मैंने फिर grubबूट अनुक्रम के शीर्ष पर प्रविष्टि को स्थानांतरित किया , और अब यह डिफ़ॉल्ट प्रविष्टि के रूप में दिखाता है।

यानी मैं जो कह रहा हूं वह आपको सही EFI फ़ाइल का पता लगाने और इसे अपने बूट अनुक्रम / क्रम के शीर्ष पर ले जाने की आवश्यकता हो सकती है।


1

उपरोक्त विकल्पों में से कोई भी मेरे लिए पुराने एचपी 655 लैपटॉप के साथ काम नहीं किया। मुझे पता चला कि समाधान बूट बूट प्रबंधक को निष्क्रिय करने के लिए है:

sudo -s
efibootmgr
efibootmgr -b 4 --inactive

4 को अपने बूट बूट मैनेजर की संख्या से बदलें। Efibootmgr फिर से चलाएँ और आपको निष्क्रियता को चिह्नित करने के लिए स्टार को गायब होना चाहिए।

मेरे कंप्यूटर बूट के बाद बूट मेनू और विंडो को बूट करने के लिए अभी भी उसी से चुना जा सकता है।


-2

एक संभव समाधान मैन्युअल रूप से / etc / default / grub फ़ाइल को संपादित करना होगा।

sudo vim /etc/default/grub

डिफ़ॉल्ट प्रविष्टि GRUB_DEFAULT=/ etc / default / grub में सेटिंग द्वारा निर्धारित की जाती है । पहले "मेनू प्रविष्टि" में "0" का मान है। यदि उबंटू बूट स्क्रीन में दूसरी प्रविष्टि है, तो GRUB_DEFAULT = 1 सेट करें।

बाद में, आपको grub config को अपडेट करने के लिए कमांड चलाने की आवश्यकता होगी: update-grub

एक अन्य विकल्प अधिष्ठापन ग्रब-कस्टमाइज़र होगा और बूट प्राथमिकता को कॉन्फ़िगर करने के लिए अपने GUI का उपयोग करेगा।


समस्या ग्रब के साथ नहीं है। जैसा कि मैंने पोस्ट में कहा था, अगर मैं BIOS को ग्रब यूईएफआई बूट विकल्प चुन सकता हूं, तो मुझे ग्रब बूट-अप मेनू मिलेगा, जो मुझे विंडोज या उबंटू चुनने की सुविधा देता है। यह वह मेनू है जो मैं डिफ़ॉल्ट रूप से चाहता हूं। दुर्भाग्य से, BIOS डिफ़ॉल्ट रूप से विंडोज बूट मैनेजर चुनता है।
जॉन वाट ने

जैसा कि मैंने कहा, आप इसे उबंटू क्रम में उबंटू को पहले सिस्टम के रूप में कॉन्फ़िगर करके ठीक कर सकते हैं। GUI का उपयोग करने के लिए ग्रब-कस्टमाइज़र का उपयोग करें। linuxandubuntu.com/home/…
श्री रास्पबेरी

फिर से, ग्रब भी BIOS द्वारा शुरू नहीं होता है। ग्रब बूट ऑर्डर कोई फर्क नहीं पड़ता। GRUB_DEFAULT कोई मायने नहीं रखता। यहाँ यह समस्या नहीं है।
जॉन वाट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.