क्या यूईएफआई के साथ बाहरी हार्डड्राइव में उबंटू स्थापित करना अभी भी संभव है?


9

ऐसा लगता है कि उबंटू को बाहरी हार्डड्राइव में स्थापित करना यूईएफआई के साथ संभव नहीं है, जहां एमबीआर के साथ बाहरी और आंतरिक के बीच कोई बड़ा अंतर नहीं था। क्या यह सच है या यह अभी भी संभव है?

क्या दोनों बूट विधियों को संयोजित करना भी संभव है?

जवाबों:


12

यह वास्तव में संभव है

इससे पहले कि मैं जारी रखूं, ये निर्देश खाली ईएफआई सिस्टम विभाजन (ईएसपी) के लिए हैं और संभवत: मौजूदा फाइलों को अधिलेखित कर देंगे, या अपेक्षा के अनुरूप काम नहीं करेंगे। कम से कम बैकअप तो बनाओ!

विभिन्न प्लेटफार्मों के लिए आवश्यक विभाजन जोड़ना

प्लेटफ़ॉर्म: लीगेसी पीसी, यूईएफआई-आधारित विंडोज कंप्यूटर, एप्पल कंप्यूटर

एमबीआर के साथ मौजूदा इंस्टॉलेशन में ईएसपी जोड़ें

आपको अन्य इंस्टॉलेशन या लाइव मीडिया से इन निर्देशों का पालन करने की आवश्यकता है।

  1. grub-efi-amd64-binपैकेज स्थापित करें । यह केवल आवश्यक संसाधनों को स्थापित करेगा। यह आपके मौजूदा एमबीआर स्टाइल इंस्टॉलेशन को यूईएफआई में स्विच नहीं करेगा और चीजों को उल्टा कर देगा।

  2. एक ईएसपी के लिए जगह बनाने के लिए GParted में अपने Ubuntu विभाजन को सिकोड़ें । ईएसपी के लिए अनुशंसित आकार 100 एमबी से 500 एमबी तक होते हैं, लेकिन यहां इन निर्देशों का पालन करके बनाई गई फ़ाइलों को 2 से 5 मेगाबाइट से अधिक की आवश्यकता नहीं होगी।

    नोट: यह मायने नहीं रखता है कि आपका ESP डिस्क पर कहां स्थित है और अंत से कुछ मेगाबाइट्स द्वारा अपने Ubuntu विभाजन को सिकोड़कर त्वरित और सुरक्षित होना चाहिए। शुरुआत में सिकुड़ना सुरक्षित नहीं है । हालांकि, आपका ईएसपी एक प्राथमिक विभाजन होना चाहिए और विस्तारित विभाजन या तार्किक मात्रा का हिस्सा नहीं होना चाहिए, 1 से 4 तक विभाजन संख्याएं ठीक हैं, ऊपर की संख्याएं एमबीआर विभाजन तालिकाओं पर एक विस्तारित विभाजन का संकेत देती हैं।

    फ़ाइल सिस्टम के रूप में FAT32 चुनें और बूट फ्लैग सेट करें।

  3. आपके द्वारा अभी बनाया गया ESP और आपके द्वारा सिकुड़ी गई रूट फाइलसिस्टम को माउंट करें:

    mkdir -p /mnt/esp
    mount $esp_device /mnt/esp
    mkdir -p /mnt/rootfs
    mount $root_device /mnt/rootfs
    

    नोट: बदलें $esp_deviceऔर $root_deviceसाथ उचित उपकरणों जैसे /dev/sdb2और /dev/sdb1Mountpoints /mnt/esp और /mnt/rootfsसिर्फ इस जवाब के शेष भाग के साथ काम करने के लिए चुना उदाहरण हैं।

    GRUB की EFI छवि और इसके साथ एक न्यूनतम कॉन्फ़िगरेशन फ़ाइल स्थापित करें:

    grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
    

    ध्यान दें कि $deviceसंपूर्ण डिवाइस उदा /dev/sdb, विभाजन नहीं है।

  4. यही है, हम पहले से ही कर रहे हैं, लेकिन मुझे कुछ चीजों को समझाने की कोशिश करें।

    पैरामीटर --target x86_64-efiयह सुनिश्चित करेगा कि यूईएफआई चित्र और मॉड्यूल दिए गए रास्तों पर स्थापित किए जाएंगे। एक वितरण विशिष्ट पथ के बजाय, हटाने योग्य मीडिया के लिए --removableहार्डकोड किए गए पथ पर UEFI छवि स्थापित करेगा \EFI\BOOT\BOOT{arch}.EFI। आपका grub.cfgमें /boot/grub/दोनों बूट विधियों और नाम के एक नए फ़ोल्डर के साथ काम करना चाहिए x86_64-efiअब के बगल में मौजूद होना चाहिए i386-pc

    पूर्णता के लिए, यह गैर-हटाने योग्य मीडिया के लिए कमांड है जो प्लेटफॉर्म में एनवीआरएएम प्रविष्टियों पर लिखता है और निर्भर करता है:

    grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --bootloader-id "Ubuntu" $device
    

    उचित यूईएफआई इंस्टॉलेशन में नीचे दिए गए एक के समान एक पंक्ति शामिल है /etc/fstab, लेकिन सेटअप बिना कार्यात्मक है और यूईएफआई छवि (एमबीआर बूटलोडर के समान) आमतौर पर ओएस स्थापना के दौरान केवल लिखित / अद्यतन होती है।

    UUID=1234-567F /boot/efi vfat defaults 0 1
    

GPT के साथ एक संस्थापन में ESP या GRUB-BBP जोड़ना

GPT पार्टीशन ड्राइव पर एक विरासत संस्थापन में ESP जोड़ना उपरोक्त के समान है:

  1. grub-efi-amd64-binपैकेज स्थापित करें ।
  2. रूट विभाजन का आकार बदलकर और bootध्वज सेट करके ऊपर दिए गए निर्देशों के समान एक FAT32 फाइल सिस्टम के साथ एक विभाजन बनाएँ ।
  3. विभाजनों को माउंट करें और grub-installऊपर से कमांड चलाएं जिसमें --removableपैरामीटर शामिल है ।

यह भी काम करता है अगर आप बस अपने एक्सिसिटिव UEFI इंस्टॉलेशन को किसी अन्य कंप्यूटर पर बूट करना चाहते हैं।

GRUB के लिए BIOS बूट करने योग्य विभाजन (BBP) बनाना थोड़ा अलग है:

  1. grub-pc-binपैकेज स्थापित करें ।

  2. रूट विभाजन को ऊपर करके निर्देशों के समान एक विभाजन बनाएँ और bios_grubध्वज सेट करें । कोई फाइलसिस्टम नहीं चुनें और इसे बिना सूचना के छोड़ दें।

  3. कॉन्फ़िगरेशन फ़ाइल /etc/default/grubको प्रशासनिक अधिकारों के साथ संपादित करें और GRUB_DEVICE=/dev/sdb6अंत में जोड़ें । /dev/sdb6अपने BBP के वास्तविक डिवाइस नाम से बदलें । आप कमांडलाइन एडिटर नैनो का उपयोग किसी साधारण चीज़ को रखने के लिए कर सकते हैं।

    BBP के साथ GRUB MBR छवि स्थापित करें:

    grub-install --boot-directory /mnt/test/boot/ --target i386-pc $device
    

    आप लाइन को हटाने या /etc/default/grubउसमें टिप्पणी करना चाहते हैं और इसे वास्तविक स्थापना में जोड़ सकते हैं।

बोनस: GPT के साथ इंस्टॉलेशन पर Mac के लिए एक विभाजन जोड़ें

मैंने पाया कि बहुत नए मैक (मैक मिनी ए 1347 ईएमसी 2840) मैं एमबीआर से भी मानक एफएटी 32 ईएसपी से बूट कर सकता था! वैसे भी, यहाँ हम जाते हैं:

  1. स्थापित करें grub-efi-amd64-bin, hfsprogs, mactel-bootऔर mactel-boot-logo(वैकल्पिक) संकुल। आपको यूनिवर्स रिपॉजिटरी को सक्षम करने की आवश्यकता है ( मैं कमांड लाइन से "यूनिवर्स" रिपॉजिटरी को कैसे सक्षम करूं? ) और उन सभी को स्थापित करने के लिए वर्तमान मेक्टेल सपोर्ट पीपीए ( अधिक विवरण के लिए मैक्टेल सपोर्ट कम्युनिटी टीम देखें) को जोड़ें।

  2. रूट विभाजन का आकार बदलकर उपरोक्त निर्देशों के समान HFS + फाइलसिस्टम के साथ एक विभाजन बनाएँ। इस बार हमें कुछ मेगाबाइट्स की अधिक जगह चाहिए, इसलिए ESP का आकार दोगुना करें यदि आपके पास पहले केवल 5 मेगाबाइट्स या उससे कम था। किसी ध्वज की आवश्यकता नहीं है।

  3. विभाजन माउंट करें:

    mkdir -p /mnt/esp-mac
    mount $esp-mac_device /mnt/esp-mac
    mkdir -p /mnt/rootfs
    mount $root_device /mnt/rootfs
    

    नोट: मैंने चुना $esp-mac_deviceऔर /mnt/esp-macसंघर्षों से बचने के लिए।

    पैरामीटर grub-installशामिल करने के लिए आदेश चलाएँ --removable:

    grub-install --efi-directory /mnt/esp-mac --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
    

    अंत में एक मैक जिस तरह से होने की उम्मीद है विभाजन को सेटअप करें:

    sudo hfs-bless /mnt/esp-mac/EFI/BOOT/bootx64.efi
    sudo cp -v /mnt/esp-mac/EFI/BOOT/bootx64.efi /mnt/esp-mac/System/Library/CoreServices/boot.efi
    sudo cp -v /mnt/esp-mac/EFI/BOOT/grub.cfg /mnt/esp-mac/System/Library/CoreServices/grub.cfg
    sudo cp -v /usr/share/mactel-boot/SystemVersion.plist /mnt/esp-mac/System/Library/CoreServices/SystemVersion.plist
    sudo cp -v /usr/share/mactel-boot-logo/ubuntu.icns /mnt/esp-mac/.VolumeIcon.icns
    echo "Dummy kernel for booting" | sudo tee /mnt/esp-mac/mach_kernel
    

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

    मैक स्टार्टअप मैनेजर वॉल्यूम और Ubuntu लोगो दिखा रहा है

विभाजन झंडे के बारे में, कोड और GUID टाइप करें

जितना संभव हो उतना सटीक होने के लिए, बूट ध्वज को GRUB के लिए महत्वपूर्ण नहीं है, डिफ़ॉल्ट GRUB द्वारा UUIDs के लिए बूट करने के लिए सही फाइल सिस्टम खोजने के लिए। GParted में बूट फ्लैग या bios_grub फ्लैग सेट करना आमतौर पर विभाजन के लिए एक प्रकार (MBR) या GUID (GPT) सेट करता है।

ठीक प्रकार से काम करने वाले सेटअप के अलावा, सही प्रकार या GUID सेट करने का लाभ यह है कि ये विभाजन फिल्म निर्माता में छिपे रहेंगे। प्रकार और GUID की जांच और परिवर्तन का सबसे आसान तरीका डिस्क के माध्यम से है ( gnome-disks)।

सूक्ति-डिस्क में ड्राइव और विभाजन दिखाने वाला स्क्रीनशॉट

स्क्रीनशॉट gnome-disks में विभाजन संवाद दिखा रहा है

वैकल्पिक रूप से आप parted या gdisk का उपयोग कर सकते हैं:

  • 0xef fdisk के साथ उपयोग के लिए MBR में ESP के लिए टाइप कोड है
  • Gdisk के साथ उपयोग के लिए GPT में ES00 के लिए संक्षिप्त प्रकार कोड ES00 है
  • ef02 gdisk के साथ उपयोग के लिए GPT में BBP के लिए संक्षिप्त प्रकार कोड है

जीपीटी के लिए विकिपीडिया पर GUID की एक बड़ी सूची है ।

मैनुअल केparted अनुसार कमांडलाइन समकक्ष हैं और ।parted $device set partition esp onparted $device set partition bios_grub on


मैंने विवरण नहीं दिया। लेकिन बस मेरी फ्लैश ड्राइव को विभाजित करने में सक्षम था, एक efi विभाजन बनाने और efi विभाजन में efi बूट फ़ाइलों की प्रतिलिपि बनाएँ। Grub-mkimage एक grubx64.efi बनाता है, जो फ़ाइलों के लिए कुछ निश्चित पथों की अपेक्षा करता है, इसलिए मैंने अपने इंस्टॉलेशन से फ़ाइल संरचना को एक / बूट / ग्रब में कॉपी किया और एक grub.cfg को अपने / iso में दूसरे grub.cfg के लिए configfile प्रविष्टि के साथ जोड़ा। मेरे आईएसओ बूट करने के लिए फ़ोल्डर। संभवतः अपनी छवि बनाने के लिए अपने स्वयं के grubx64.efi को बनाने के लिए अधिक सही है, लेकिन प्रतिलिपि ने काम किया।
पुरानी बात

मैंने उच्च और निम्न को यह पता लगाने की कोशिश की कि "एमबीआर के साथ एक मौजूदा इंस्टॉलेशन के लिए एक ईएसपी कैसे जोड़ें"। मैं इसके बारे में घबरा गया था, लेकिन इसने पहली कोशिश में काम किया! बहुत बढ़िया जवाब!
मार्क ई। हासे

मैं जवाब देने के लिए एमबीआर के साथ मौजूदा इंस्टॉलेशन में ईएसपी जोड़ें का उपयोग करके यूएसबी पर एक पूर्ण BIOS / उबंटू की ईएफआई बूट क्षमता को जोड़ने की कोशिश कर रहा हूं । मुझे एक "त्रुटि: फ़ाइल /boot/नहीं मिली"। grub.cfgसही UUID को ईएसपी विभाजन अंक में। कोई विचार? मुझे एक नया प्रश्न पोस्ट करने में खुशी होगी।
user68186

@ user68186 क्या आप इसे करने में सक्षम थे?
BRBbit27

मैं एक मैक से अपने बाहरी ड्राइव में उबंटू स्थापित करने में सक्षम था। मैक से जुड़ा होने पर यह उबंटू में सही ढंग से बूट करता है। हालाँकि, बूट डिवाइस में Windows10 मशीन (xps 15 9560) से कनेक्ट होने पर बाहरी हार्ड ड्राइव दिखाई नहीं देता है। मेरा कूबड़ यूईएफआई के कारण है। क्या कोई पुष्टि कर सकता है कि मेरा कूबड़ सही है और यह भी कि अगर यह धागा है तो मुझे विंडोज़ मशीन से बूट करने की क्या आवश्यकता हो सकती है?
BRBbit27
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.