Insyde H2O EFI बायोस के साथ Sony VAIO GRUB EFI में बूट नहीं होगा


12

मैंने एक नया सोनी वायो एस सीरीज का लैपटॉप खरीदा है। यह Insyde H2O BIOS EFI का उपयोग करता है, और इस पर लिनक्स स्थापित करने की कोशिश मुझे पागल कर रही है।

root@kubuntu:~# parted /dev/sda print
Model: ATA Hitachi HTS72756 (scsi)
Disk /dev/sda: 640GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End    Size    File system  Name                          Flags
 1      1049kB  274MB  273MB  fat32        EFI system partition          hidden
 2      274MB  20.8GB  20.6GB  ntfs        Basic data partition          hidden, diag
 3      20.8GB  21.1GB  273MB  fat32        EFI system partition          boot
 4      21.1GB  21.3GB  134MB                Microsoft reserved partition  msftres
 5      21.3GB  342GB  320GB  ntfs        Basic data partition
 6      342GB  358GB  16.1GB  ext4        Basic data partition
 7      358GB  374GB  16.1GB  ntfs        Basic data partition
 8      374GB  640GB  266GB  ntfs        Basic data partition

आश्चर्य की बात यह है कि डिस्क पर 2 ईएफआई सिस्टम विभाजन हैं। Sda2 विभाजन एक 20gb रिकवरी विभाजन है जो एक बुनियादी रिकवरी इंटरफ़ेस के साथ विंडोज़ लोड करता है। सामान्य पावर बटन के विपरीत "ASSIST" बटन दबाकर यह सुलभ है। मुझे लगता है कि sda1 EFI सिस्टम विभाजन (ESP) इस वसूली में लोड होता है।

Sda3 ईएसपी में माइक्रोसॉफ्ट विंडोज के लिए प्रविष्टियां अधिक हैं, जो वास्तव में विंडोज 7 में जाती हैं (जैसा कि विंडोज पर bcdedit.exe द्वारा पुष्टि की गई है)। Ubuntu sda6 पर स्थापित है, और स्थापना के समय मैंने अपने बूट विभाजन के रूप में sda3 चुना। इंस्टॉलर ने सही ढंग से एक sda3 / EFI / ubuntu / grubx64.efi एप्लिकेशन बनाया।

असली समस्या: मेरे जीवन के लिए, मैं इसे डिफ़ॉल्ट रूप से सेट नहीं कर सकता! मैंने एक sda3 / startup.nsh बनाने की कोशिश की, जिसे grubx64.efi कहा जाता है, लेकिन यह मदद नहीं करता था - रिबूट करने पर, सिस्टम अभी भी विंडोज़ में बूट होता है। मैंने efibootmgr का उपयोग करने की कोशिश की, और यह दिखाता है कि यह काम करता है:

root@kubuntu:~# efibootmgr 
BootCurrent: 0000
BootOrder: 0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
root@kubuntu:~# efibootmgr --create --gpt --disk /dev/sda --part 3 --write-signature --label "GRUB2" --loader "\\EFI\\ubuntu\\grubx64.efi" 
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2
root@kubuntu:~# efibootmgr
BootCurrent: 0000
BootOrder: 0002,0000,0001
Boot0000* EFI USB Device
Boot0001* Windows Boot Manager
Boot0002* GRUB2

हालाँकि, रिबूट करने पर, जैसा कि आपने अनुमान लगाया था, मशीन ने सीधे विंडोज में वापस रिबूट किया।

केवल चीजें जो मैं सोच सकता हूं:

  1. Sda1 पार्टीशन किसी तरह इस्तेमाल किया जा रहा है
  2. Overubite /EFI/Boot/bootx64.efi और /EFI/Microsoft/Boot/bootmgfw.efi के साथ grubx64.efi [लेकिन यह वास्तव में कट्टरपंथी लगता है]।

क्या कोई मेरी मदद कर सकता है? धन्यवाद - किसी भी मदद की बहुत सराहना की है, क्योंकि यह मुद्दा मुझे पागल बना रहा है!


मैंने Sony Vaio S पर समान दृष्टिकोण का पालन किया - MS .efi फ़ाइल को GRUB एक के साथ बदल दिया, MS .efi की एक कॉपी को एक अलग निर्देशिका में रखते हुए, और फिर Windows को बूट करने के लिए प्रतिलिपि को चेन लोड करने के लिए। यह आम तौर पर काम करता है, लेकिन एक बुरा पक्ष प्रभाव यह है कि मैं विंडोज को हाइबरनेशन से फिर से शुरू नहीं कर सकता हूं - इसकी बूटलोडर त्रुटियां बाहर हैं, और एक साफ रिबूट की आवश्यकता है।

जवाबों:


11

मैं अंततः इसे हल करने में सक्षम था। मैंने EFI / Microsoft / boot / bootmgfw.efi को grub64.efi से बदल दिया। मैंने पूर्व का नाम बदलकर bootmgfw.efi.old कर दिया और उसमें एक मेनू विकल्प जोड़ने के लिए ग्रब का उपयोग किया।

इसका तात्पर्य यह है कि फर्मवेयर माइक्रोसॉफ्ट विंडोज बूटलोडर को देखने के लिए हार्डकोड किया गया है, और efibootmgr सेटिंग्स, या स्टार्टअप का सम्मान नहीं करता है। यह वास्तव में भयानक है।

मुझे पता चला कि सोनी EFI बूट प्रक्रिया कैसे काम करती है:

  1. /EFI/Microsoft/Boot/fwbootmgr.efi में देखें; यदि मौजूद है, तो बूट करें।
  2. / EFI / grubx64.efi के सभी उप-निर्देशिकाओं में देखें। यदि मौजूद है, तो बूट करें।
  3. बूट /EFI/Boot/bootx64.efi
  4. एक त्रुटि संदेश प्रदर्शित करें, जैसे "ऑपरेटिंग सिस्टम नहीं मिला"।

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

यहां बताया गया है कि मैंने यह सब कैसे सीखा:

  1. मैंने अपनी नई मशीन खोली और लिनक्स और मैक को एक साथ स्थापित करने के लिए विंडोज विभाजन को ध्वस्त कर दिया।
  2. मैंने Ubuntu 12.10 स्थापित किया है और इंस्टॉलर ने fwbootmgr.efi को ओवरवोट किया, पुराने विंडोज बूटलोडर का बैकअप लिया।
  3. मैंने पुराने विंडोज बूटलोडर को बहाल किया, लेकिन विंडोज के अलावा कुछ भी बूट नहीं कर सका।
  4. मैंने विंडोज बूटलोडर को कुछ फर्जी नाम दिया, और फिर ग्रब बीएल पर कब्जा कर लिया।
  5. मैंने ubuntu डाइरेक्टरी का नाम बदलकर कुछ और रख दिया, और ग्रब अभी भी लोड किया, भले ही मैंने rEFInd स्थापित किया था।
  6. एक ही रास्ता मुझे मिल सकता है और मैं जो चाहता था वह यह था:

  7. Fwbootmgr.efi को उसकी मूल निर्देशिका में ले जाएं; rEFInd अभी भी इसे ढूंढेगा, और Windows यह शिकायत नहीं करेगा कि आपने इसका नाम बदल दिया है।

  8. Grubx64.efi को rfgrubx64.efi या कुछ और पहचानने योग्य का नाम बदलें।
  9. कॉपी rEFInd से / EFI / refind to / EFI / boot, rename /EFI/refind_x64.efi से * .bak, और अंतिम नाम /Boot/refind_x64.efi को bootx64.efi पर बदलें। अब आपको rEFInd से Windows BL या GRUB को बूट करने में सक्षम होना चाहिए। मैं अपने MacOS को क्लोवर में अपग्रेड करने और REFInd से क्लोवर को लोड करने की योजना बना रहा हूं।

(शायद यह सब करने के लिए विंडोज बूट मैनेजर का उपयोग करना संभव है, लेकिन EeasyBCD का EFI समर्थन अभी भी मेरे अनुभव में गड़बड़ी है। मैं इसे थोड़ी देर के लिए फिर से छूने से इनकार करता हूं।)


ध्यान दें कि मैंने विंडोज से बीसीडी [bcdedit.exe] सेटिंग का उपयोग करके विंडोज बूट प्रबंधक को ग्रब करने के लिए सेट करने के लिए भी संशोधित करने की कोशिश की थी, और यह अभी भी काम नहीं किया - मुझे वास्तव में ग्रब के .efi फ़ाइल को .ub के साथ बदलना पड़ा। ।
रोहन ध्रुव

5

सबसे पहले, आपके पास दो ईएसपी नहीं हैं। एक ईएसपी एक विभाजन प्रकार कोड C12A7328-F81F-11D2-BA4B-00A0C93EC93B है, जो विभाजन के रूप में अपने "बूट फ्लैग" सेट के साथ पहचान करता है। आपके आउटपुट से संकेत मिलता है कि केवल / dev / sda3 का "बूट फ्लैग" सेट है, इसलिए आपको केवल एक ESP मिला है - / dev / sda3। GPT के तहत, विभाजन के नाम हो सकते हैं, और आपको "EFI सिस्टम विभाजन" नाम के साथ दो विभाजन मिले हैं, लेकिन इन नामों का उपयोग केवल मानव पहचान उद्देश्यों के लिए किया जाता है। इस प्रकार, मेरा अनुमान है कि आप (या कुछ स्वत: उपयोगिता) ने एक / देव / sda1 बनाया है जो इसे ईएसपी बनाने के इरादे से बनाया गया था, लेकिन या तो इसके विभाजन प्रकार कोड को स्थापित करने में कोई त्रुटि थी या कुछ अन्य उपयोगिता ने अनुचित रूप से इसके प्रकार कोड को बदल दिया C12A7328-F81F-11D2-BA4B-00A0C93EC93B कुछ और।

ऐसे कई तरीके हैं जिनसे आप इसे ठीक कर सकते हैं। भ्रम से बचने के लिए सबसे सरल / देव / sda1 का नाम बदलना है। यदि आपको लगता है कि / dev / sda1 बिना किसी उद्देश्य के कार्य करता है, तो आप इसे वापस कर सकते हैं और इसे हटा सकते हैं। यह इसे रास्ते से हट जाएगा और भ्रम से बच जाएगा, लेकिन निश्चित रूप से आपके पास 273 एमबी अप्रयुक्त डिस्क स्थान होगा। वैकल्पिक रूप से, आप किसी अन्य उद्देश्य के लिए जगह समर्पित कर सकते हैं, यदि आवश्यक हो तो भ्रम से बचने के लिए नाम और प्रकार कोड को बदलना। ईएफआई स्पष्ट रूप से कई ईएसपी की अनुमति देता है, इसलिए आप टाइप कोड को बदल सकते हैं (उदाहरण के लिए, पार्ट किए गए "बूट फ्लैग" का उपयोग करके) और दोनों ईएसपी का उपयोग कर सकते हैं; लेकिन यह भ्रामक हो सकता है।

संभावना है कि यह मुद्दा बूट लिनक्स के लिए आपकी अक्षमता से संबंधित नहीं है, क्योंकि यह लगता है कि सभी प्रासंगिक फाइलें / देव / sda3 पर हैं। इस समस्या के कई संभावित कारण मेरे लिए हैं:

  • यह हो सकता है कि आपने अपने efibootmgr कमांड में कुछ गलत किया हो। मुझे कोई स्पष्ट टाइपोस दिखाई नहीं देता है, लेकिन यदि GRUB बाइनरी स्थित नहीं है जहां आपने निर्दिष्ट किया है, तो कमांड काम नहीं करेगा। "--Gpt" और "- राइट-सिग्नेचर" विकल्प लगभग निश्चित रूप से अनावश्यक हैं, और अनुमानतः समस्या पैदा कर सकते हैं, लेकिन सबसे अधिक संभावना नहीं है।
  • आपके फर्मवेयर में बग हो सकता है जिससे efibootmgr कमांड के प्रभाव अस्थायी हो सकते हैं। रिबूट करने का प्रयास करें और फिर "sudo efibootmgr -v" टाइप करें यह देखने के लिए कि आपके द्वारा बनाई गई प्रविष्टि रिबूट बच गई है या नहीं।
  • आपके फ़र्मवेयर में एक बग हो सकता है जिससे बूट ऑर्डर वैरिएबल को अनदेखा किया जा सकता है। मुझे ऐसा मदरबोर्ड मिला है; यह उस क्रम में बूट होता है जिसमें बूट प्रविष्टियां बनाई जाती हैं, बजाए उस क्रम के जिसमें वे बूटऑर्डर चर द्वारा निर्दिष्ट किए जाते हैं। इस बग के आसपास काम करने के लिए, आपको सभी प्रविष्टियों को हटाना होगा और उन्हें बूट क्रम में फिर से बनाना होगा जिसे आप उपयोग करना चाहते हैं।
  • आपका grubx64.efi बाइनरी इस तरह से क्षतिग्रस्त हो सकता है कि फर्मवेयर इसे लॉन्च करने से इनकार कर देता है, और इसलिए यह बूट क्रम में अगले आइटम पर जाता है।

आप अपने efibootmgr कमांड को समायोजित करने का प्रयास कर सकते हैं, एक नई बाइनरी का पता लगा सकते हैं या इन संभावनाओं का परीक्षण कर सकते हैं। यदि अन्य सभी विफल होते हैं, तो मैं आपको निम्नलिखित करने की सलाह देता हूं:

  1. Efibootmgr या अपने फर्मवेयर (यदि यह ऐसा करने के लिए एक इंटरफ़ेस प्रदान करता है) का उपयोग करके सभी बूट प्रविष्टियों को हटा दें।
  2. ESP पर EFI / बूट / bootx64.efi पर grubx64.efi की प्रतिलिपि बनाएँ।
  3. यदि आप रिबूट करते हैं, तब भी आपको विंडोज मिलता है, तो EFI / Microsoft / बूट / bootmgfw.efi का नाम बदलकर EFI / Microsoft / bootmgfw.efi करें।

यह बूट लोडर (EFI / बूट / bootx64.efi) के लिए डिफ़ॉल्ट नाम का उपयोग करके GRUB बूटिंग प्राप्त करना चाहिए। इसके साथ एक समस्या यह है कि GRUB में विंडोज के लिए कार्यशील प्रविष्टि नहीं हो सकती है। आप संभवतः मैन्युअल रूप से एक बना सकते हैं; इस तरह एक प्रविष्टि काम करना चाहिए:

menuentry "Windows 7" {
    set root='(hd0,gpt3)'
    chainloader /EFI/Microsoft/bootmgfw.efi
}

वैकल्पिक रूप से, आप स्थापित कर सकता है मरम्मत या refind EFI / बूट / bootx64.efi के रूप में। ध्यान दें कि अपनी साइट से उपलब्ध rEFIt बायनेरी UEFI- आधारित पीसी पर काम नहीं करेगा; आपको उबंटू रिपॉजिटरी में संस्करण का उपयोग करने की आवश्यकता होगी। rEFInd बेहतर बग UEFI समर्थन सहित कई बग फिक्स और अपडेट के साथ rEFIt का एक कांटा है। (rEFIt के बारे में दो साल पहले छोड़ दिया गया है लगता है।) इस प्रकार, मैं rEFIt के बजाय rEFInd का उपयोग करने की सलाह देता हूं - लेकिन मैं rEFInd का अनुचर हूं, इसलिए मैं इस स्कोर पर एक स्वतंत्र पर्यवेक्षक नहीं हूं। दुर्भाग्य से, AFAIK rEFInd उबंटू रिपॉजिटरी में शामिल नहीं है (अभी तक), इसलिए आपको इसे मैन्युअल रूप से डाउनलोड और इंस्टॉल करना होगा।


बहुत बहुत धन्यवाद, रॉड! हालाँकि, sda1 अपने आप में एक ESP है (शायद डिफ़ॉल्ट रूप से बूट करने योग्य नहीं है], जिसका उपयोग बचाव विभाजन (20Gb SONSYS) में बूट करने के लिए किया जा रहा है। मुझे पता है कि यह एक अजीब सेटअप है, लेकिन सोनी ने किसी कारण से इसे करने के लिए चुना। पावर बटन के विपरीत "ASSIST" बटन को दबाने से वह बूटलोडर कहलाता है।
रोहन ध्रुव

रॉड के लिए जानकारी के लिए धन्यवाद, मेरे पास एक ही समस्या थी और आपके कदमों को आंशिक रूप से ठीक करना। GRUB ने ठीक काम किया और फिर मैंने Win7 के लिए प्रविष्टि जोड़ने की कोशिश की और अब GRUB दिखाई नहीं दे रहा है, बस सीधे उबंटू में बूट हो रहा है। किसी भी विचार क्यों और कैसे तय करने के लिए? इसके अलावा मेरे EFI विभाजन sda1 है और विन sda3 है एक्स को इस लाइन में "सेट रूट = '(hd0, gptX)'" बराबर 1 या 3 होना चाहिए? मैंने दोनों की कोशिश की है!
बैरो32

@Rod, मुझे मेनूपट्री (विंडोज 7) कहां जोड़ना चाहिए? in \ etc \ default \ grub?
अलेखीन

4

यहाँ एक नया सोनी vaio ई श्रृंखला पर एक ही प्रारंभिक स्थिति। आपके जवाब के लिए धन्यवाद रॉड।

बस अगर किसी को वॉकथ्रू चाहिए, तो यह मेरे लिए काम कर रहा है:

Win7 के साथ USB से ubuntu 12.04 स्थापित किया गया।

लाइव सत्र से बढ़ते / देव / sda3

  • EFI / बूट / के लिए कॉपी EFI / ubuntu / grubx64.efi
  • EFI / बूट / bootx64.efi को bootx64.efi.old में बदलें
  • EFI / बूट / grubx64.efi को bootx64.efi नाम दें

अब यह सीधे grub2 में बूट हो गया, लेकिन win7 प्रविष्टि के बिना

ubuntu लोड करने के बाद मैंने संपादित किया

/etc/grub.d/40_custom

जोड़ने

menuentry "Windows 7" {
    set root='(hd0,gpt3)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

और बाद में

sudo update-grub

सब कुछ ठीक काम करता है


1

मैं दो अलग-अलग विकल्पों का सुझाव देता हूं:

  1. खिड़कियों के मलबे को अधिलेखित न करें लेकिन इसे ग्रब लॉन्च करने के लिए उपयोग करें

  2. UEFI से लेगसी के बूट विकल्पों में बायोस सेटिंग्स ( f2या f3स्टार्टअप पर) बदलें , फिर यह आम तौर पर पहले से स्थापित अंतिम सिस्टम को लॉन्च करेगा।


MBR EFI कंप्यूटरों पर लागू नहीं होता है
बेन Voigt

0
  1. भागो बूट-मरम्मत से एक LiveCD / LiveUSB
  2. Recommended Repairबटन पर क्लिक करें। (यह ज़रूरत पड़ने पर SecureBoot पैरामीटर सहित, ग्रब-एफ़आई के लिए स्वचालित रूप से सही पैरामीटर स्थापित करेगा, और UEFI फ़र्मवेयर को विंडोज़ फ़ाइलों में बंद कर दिया गया है तो EFI फ़ाइलों का नाम बदल सकता है)। उस URL को इंगित करें जो किसी समस्या के कारण दिखाई देगा।

बूट-मरम्मत

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.