ยังคงเป็นไปได้ไหมที่จะติดตั้ง Ubuntu ไปยังฮาร์ดไดรฟ์ภายนอกด้วย UEFI


9

ดูเหมือนว่าการติดตั้ง Ubuntu ไปยังฮาร์ดไดรฟ์ภายนอกเป็นไปไม่ได้กับ UEFI ซึ่ง MBR ไม่มีความแตกต่างอย่างมากระหว่างภายนอกและภายใน เป็นเรื่องจริงหรือเป็นไปได้ไหม

เป็นไปได้หรือไม่ที่จะรวมวิธีการบูตทั้งสองเข้าด้วยกัน?

คำตอบ:


12

มันเป็นไปได้จริง

ก่อนที่ฉันจะดำเนินการต่อคำแนะนำเหล่านี้มีไว้สำหรับ EFI System Partitions (ESP) ที่ว่างเปล่าและอาจจะเขียนทับไฟล์ที่มีอยู่หรือไม่ทำงานตามที่คาดไว้ อย่างน้อยทำการสำรองข้อมูล!

การเพิ่มพาร์ติชันที่จำเป็นสำหรับแพลตฟอร์มที่แตกต่างกัน

แพลตฟอร์ม: Legacy PC, คอมพิวเตอร์ Windows ที่ใช้ UEFI, คอมพิวเตอร์ Apple

เพิ่ม ESP ลงในการติดตั้งที่มีอยู่ด้วย MBR

คุณต้องทำตามคำแนะนำเหล่านี้จากการติดตั้งอื่นหรือสื่อสด

  1. ติดตั้งgrub-efi-amd64-binแพ็คเกจ สิ่งนี้จะติดตั้งทรัพยากรที่จำเป็นเท่านั้น มันจะไม่เปลี่ยนการติดตั้งสไตล์ MBR ที่คุณมีอยู่ไปเป็น UEFI และพลิกกลับด้าน

  2. ลดขนาดพาร์ติชัน Ubuntu ของคุณในGPartedเพื่อให้มีที่ว่างสำหรับ ESP ขนาดที่แนะนำสำหรับ ESP มีขนาดตั้งแต่ 100 MB ถึง 500 MB แต่ไฟล์ที่สร้างโดยทำตามคำแนะนำเหล่านี้ที่นี่จะไม่ต้องการมากกว่า 2 ถึง 5 เมกะไบต์

    หมายเหตุ: มันไม่สำคัญว่า ESP ของคุณจะอยู่ที่ใดบนดิสก์และลดขนาดพาร์ติชั่น Ubuntu ของคุณด้วยเมกะไบต์ไม่กี่เมกะไบต์จากจุดสิ้นสุดควรรวดเร็วและปลอดภัย การหดตัวที่จุดเริ่มต้นคือไม่ปลอดภัย หนึ่ง caveat แม้ว่า ESP ของคุณควรเป็นพาร์ติชันหลักและไม่ได้เป็นส่วนหนึ่งของพาร์ติชันเสริมหรือโลจิคัลวอลุ่มหมายเลขพาร์ติชันจาก 1 ถึง 4 ไม่เป็นผลดีตัวเลขด้านบนบ่งบอกถึงพาร์ติชันเสริมบนตารางพาร์ติชัน MBR

    เลือก 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 mountpointsและเป็นตัวอย่างเพียงแค่เลือกที่จะทำงานร่วมกับส่วนที่เหลือของคำตอบนี้/dev/sdb1 /mnt/esp/mnt/rootfs

    ติดตั้งอิมเมจ EFI ของ GRUB และไฟล์กำหนดค่าขั้นต่ำด้วย:

    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จะทำให้มั่นใจได้ว่ารูปภาพและโมดูล UEFI จะถูกติดตั้งในพา ธ ที่กำหนด --removableจะติดตั้งอิมเมจ UEFI ไปยังเส้นทางฮาร์ดโค้ด\EFI\BOOT\BOOT{arch}.EFIสำหรับสื่อที่ถอดได้แทนการกระจายเฉพาะเส้นทาง ของคุณgrub.cfgใน/boot/grub/ควรจะทำงานด้วยวิธีการบูตและทั้งโฟลเดอร์ใหม่ที่ชื่อว่าตอนนี้ควรอยู่ติดกับx86_64-efii386-pc

    เพื่อความสมบูรณ์นี่เป็นคำสั่งสำหรับสื่อที่ไม่สามารถลบได้ซึ่งเขียนและอาศัยรายการ NVRAM ในแพลตฟอร์ม:

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

    การติดตั้ง UEFI ที่เหมาะสมนั้นรวมถึงบรรทัดที่คล้ายกับบรรทัดด้านล่าง/etc/fstabแต่การตั้งค่าใช้งานได้โดยไม่ต้องใช้และรูปภาพ UEFI (คล้ายกับ MBR bootloader) มักจะเขียน / อัปเดตระหว่างการติดตั้งระบบปฏิบัติการเท่านั้น

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

การเพิ่ม ESP หรือ GRUB-BBP ไปยังการติดตั้งด้วย GPT

การเพิ่มESPในการติดตั้งแบบดั้งเดิมบนไดรฟ์ที่แบ่งพาร์ติชัน GPT นั้นคล้ายกับด้านบน:

  1. ติดตั้งgrub-efi-amd64-binแพ็คเกจ
  2. สร้างพาร์ติชันด้วยระบบไฟล์ FAT32 คล้ายกับคำแนะนำข้างต้นโดยปรับขนาดพาร์ติชันรากและตั้งค่าbootสถานะ
  3. เมาท์พาร์ติชันและเรียกใช้grub-installคำสั่งจากด้านบนที่มี--removableพารามิเตอร์

นอกจากนี้ยังใช้งานได้หากคุณต้องการบู๊ตการติดตั้ง UEFI ที่มีอยู่บนคอมพิวเตอร์เครื่องอื่น

การสร้างBIOS Bootable Partition (BBP) สำหรับ GRUB นั้นแตกต่างกันเล็กน้อย:

  1. ติดตั้งgrub-pc-binแพ็คเกจ

  2. สร้างพาร์ติชันที่คล้ายกับคำแนะนำข้างต้นโดยการปรับขนาดพาร์ติชันรากและตั้งค่าbios_grubสถานะ เลือกไม่มีระบบไฟล์และไม่ฟอร์แมต

  3. แก้ไขไฟล์การกำหนดค่า/etc/default/grubด้วยสิทธิ์ของผู้ดูแลระบบและเพิ่มGRUB_DEVICE=/dev/sdb6ในตอนท้าย แทนที่/dev/sdb6ด้วยชื่ออุปกรณ์จริงของ BBP ของคุณ คุณสามารถใช้ commandline editor nanoเพื่อทำให้เป็นเรื่องง่าย

    ติดตั้งอิมเมจ GRUB MBR ไปยัง BBP ด้วย:

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

    คุณอาจต้องการลบหรือใส่เครื่องหมายในบรรทัด/etc/default/grubและเพิ่มเข้าไปในการติดตั้งจริง

โบนัส: เพิ่มพาร์ติชันสำหรับ Mac บนการติดตั้งด้วย GPT

ฉันพบว่า Mac เครื่องใหม่ (Mac Mini A1347 EMC 2840) ที่ฉันกำลังทดสอบสามารถบูตได้จาก FAT32 ESP มาตรฐานแม้แต่จาก MBR! อย่างไรก็ตามเราไปที่:

  1. ติดตั้งgrub-efi-amd64-bin, hfsprogs, mactel-bootและmactel-boot-logoแพคเกจ (อุปกรณ์เสริม) คุณต้องเปิดใช้งานที่เก็บข้อมูลUniverse ( ฉันจะเปิดใช้งานที่เก็บ "Universe" จากบรรทัดคำสั่งได้อย่างไร ) และเพิ่มการสนับสนุน MactelปัจจุบันPPA (ดูรายละเอียดเพิ่มเติมจากทีม Mactel Support Community ) เพื่อติดตั้งทั้งหมด

  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
    

    ในที่สุดการตั้งค่าพาร์ติชันในแบบที่ Mac คาดว่าจะเป็น:

    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
    

    ในการบูต Ubuntu จากสื่อภายนอกบน Mac ตอนนี้คุณเพียงแค่ต้องกดปุ่มตัวเลือก หรือAltบนแป้นพิมพ์ Windows และเลือกดิสก์ที่เหมาะสม

    Mac Startup Manager แสดงไดรฟ์ข้อมูลและโลโก้ Ubuntu

เกี่ยวกับการตั้งค่าสถานะพาร์ติชันพิมพ์รหัสและ GUID

เพื่อให้แม่นยำที่สุดแฟล็กสำหรับบูตไม่สำคัญสำหรับ GRUB ตามค่าเริ่มต้น GRUB จะค้นหา UUID เพื่อค้นหาระบบไฟล์ที่เหมาะสมในการบูต การตั้งค่าสถานะการบูตหรือการตั้งค่าสถานะ bios_grub ใน GParted มักจะตั้งค่าชนิด (MBR) หรือ GUID (GPT) สำหรับพาร์ติชัน

ประโยชน์ของการตั้งค่าประเภทที่ถูกต้องหรือ GUID นอกเหนือจากการตั้งค่าการทำงานที่เหมาะสมคือพาร์ทิชันเหล่านี้จะถูกซ่อนใน filemanager วิธีที่ง่ายที่สุดในการตรวจสอบและเปลี่ยนประเภทและ GUID ก็คือผ่านดิสก์ ( gnome-disks)

สกรีนช็อตแสดงไดรฟ์และพาร์ติชั่นในดิสก์ GNOME

สกรีนช็อตแสดงกล่องโต้ตอบแก้ไขพาร์ติชันใน gnome-disk

อีกวิธีหนึ่งคุณสามารถใช้แยกส่วนหรือ gdisk:

  • 0xef เป็นรหัสประเภทสำหรับ ESP ใน MBR สำหรับใช้กับ fdisk
  • ef00 เป็นรหัสประเภทย่อสำหรับ ESP ใน GPT สำหรับใช้กับ gdisk
  • ef02 เป็นรหัสประเภทย่อสำหรับ BBP ใน GPT สำหรับใช้กับ gdisk

วิกิพีเดียมีรายการใหญ่ของguid ของสำหรับ GPT

เทียบเท่า commandline ในpartedตามคู่มือการอยู่และparted $device set partition esp onparted $device set partition bios_grub on


ฉันไม่ได้เอกสารรายละเอียด แต่ก็สามารถแบ่งพาร์ติชันแฟลชไดรฟ์ของฉันเป็น gpt สร้างพาร์ติชัน efi และคัดลอกไฟล์บูต efi ไปยังพาร์ติชัน efi grub-mkimage สร้าง grubx64.efi ซึ่งคาดว่าจะมีพา ธ สำหรับไฟล์ดังนั้นฉันเพิ่งคัดลอกโครงสร้างไฟล์จากการติดตั้งไปยัง / boot / grub และเพิ่ม grub.cfg ด้วยรายการ configfile ไปยัง grub.cfg อื่นใน my / iso โฟลเดอร์ที่จะวนบูตระบบ ISO ของฉัน อาจจะถูกต้องมากขึ้นในการสร้าง grubx64.efi ของคุณเองด้วย make image แต่การคัดลอกใช้งานได้
oldfred

ฉันค้นหาความพยายามในระดับสูงและต่ำเพื่อหาวิธีการทำส่วน "เพิ่มการ ESP ไปยังการติดตั้งที่มีอยู่ด้วย MBR" ฉันกังวลเกี่ยวกับมัน แต่มันก็ใช้ได้ในการลองครั้งแรก! คำตอบที่ดี!
Mark E. Haase

ฉันพยายามเพิ่มความสามารถในการบูตของ EFI ให้เต็มการติดตั้ง BIOS / MRR ของ Ubuntu บน USB โดยใช้Add an ESP ไปยังการติดตั้งที่มีอยู่ด้วยส่วนMBRของคำตอบ ฉันได้รับ "ข้อผิดพลาด: /boot/ไม่พบไฟล์" grub.cfgใน ESP จุดพาร์ทิชันไปทางขวา UUID ความคิดใด ๆ ฉันยินดีที่จะโพสต์คำถามใหม่
user68186

@ user68186 คุณสามารถทำได้หรือไม่
BRabbit27 27

ฉันสามารถติดตั้ง Ubuntu ในไดรฟ์ภายนอกของฉันจาก Mac เมื่อเชื่อมต่อกับ Mac มันจะบู๊ตอย่างถูกต้องใน Ubuntu อย่างไรก็ตามเมื่อเชื่อมต่อกับเครื่อง Windows10 (xps 15 9560) ในอุปกรณ์บู๊ตฮาร์ดไดรฟ์ภายนอกจะไม่ปรากฏขึ้น ลางสังหรณ์ของฉันเป็นเพราะ UEFI มีใครยืนยันได้ไหมว่าลางสังหรณ์ของฉันถูกต้องหรือไม่และถ้าเธรดนี้เป็นสิ่งที่ฉันอาจต้องสามารถบูตจากเครื่อง windows ได้
BRabbit27 27
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.