Apakah masih mungkin untuk menginstal Ubuntu ke hard drive eksternal dengan UEFI?

9

Sepertinya menginstal Ubuntu ke hard drive eksternal tidak dimungkinkan dengan UEFI, di mana dengan MBR tidak ada perbedaan besar antara eksternal dan internal. Apakah itu benar atau masih mungkin?

Apakah mungkin untuk menggabungkan kedua metode boot?

LiveWireBT
sumber

Jawaban:

12

Ini sebenarnya adalah mungkin .

Sebelum saya melanjutkan, instruksi ini dimaksudkan untuk Partisi Sistem EFI kosong (ESP) dan mungkin akan menimpa file yang ada, atau tidak berfungsi seperti yang diharapkan. Setidaknya buat cadangan!

Menambahkan partisi yang diperlukan untuk platform yang berbeda

Platform: Legacy PC, komputer Windows berbasis UEFI, komputer Apple

Tambahkan ESP ke instalasi yang ada dengan MBR

Anda harus mengikuti petunjuk ini dari instalasi lain atau media langsung.

  1. Instal grub-efi-amd64-binpaket. Ini hanya akan menginstal sumber daya yang dibutuhkan. Itu tidak akan mengalihkan instalasi gaya MBR Anda yang ada ke UEFI dan membalikkan keadaan.

  2. Kecilkan partisi Ubuntu Anda di GParted untuk memberikan ruang bagi ESP. Ukuran yang disarankan untuk ESP berkisar dari 100 MB hingga 500 MB, tetapi file yang dibuat dengan mengikuti petunjuk ini di sini tidak akan memerlukan lebih dari 2 hingga 5 megabyte.

    Catatan: Seharusnya tidak masalah di mana ESP Anda berada pada disk dan menyusutkan partisi Ubuntu Anda dengan beberapa megabyte dari akhirnya harus cepat dan aman. Menyusut di awal tidak aman . Namun satu peringatan, ESP Anda harus merupakan partisi primer dan bukan bagian dari partisi extended atau volume logis, nomor partisi dari 1 hingga 4 baik-baik saja, angka di atas menunjukkan partisi yang diperluas pada tabel partisi MBR.

    Pilih FAT32 sebagai sistem file dan atur bendera boot.

  3. Pasang ESP yang baru saja Anda buat dan sistem file root yang menyusut:

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

    Catatan: Ganti $esp_devicedan $root_devicedengan perangkat yang sesuai mis /dev/sdb2dan /dev/sdb1. The mountpoints /mnt/esp dan /mnt/rootfshanya contoh dipilih untuk bekerja dengan sisa bagian dari jawaban ini.

    Instal gambar EFI GRUB dan file konfigurasi minimal dengan:

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

    Perhatikan bahwa $deviceseluruh perangkat mis. /dev/sdb, Bukan partisi.

  4. Itu saja, kita sudah selesai, tetapi izinkan saya mencoba menjelaskan beberapa hal.

    Parameter --target x86_64-efiakan memastikan bahwa gambar dan modul UEFI akan diinstal ke jalur yang diberikan. --removableakan menginstal gambar UEFI ke jalur hardcoded \EFI\BOOT\BOOT{arch}.EFIuntuk media yang dapat dilepas, alih-alih jalur khusus distribusi. Anda grub.cfgdi /boot/grub/harus bekerja dengan kedua metode boot dan folder baru bernama x86_64-efisekarang harus ada di samping i386-pc.

    Untuk kelengkapan, ini adalah perintah untuk media yang tidak dapat dilepas yang menulis dan bergantung pada entri NVRAM di platform:

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

    Instalasi UEFI yang tepat mencakup garis yang mirip dengan yang di bawah ini /etc/fstab, tetapi setup berfungsi tanpa dan gambar UEFI (mirip dengan MBR bootloader) biasanya hanya ditulis / diperbarui selama instalasi OS.

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

Menambahkan ESP atau GRUB-BBP ke instalasi dengan GPT

Menambahkan ESP ke instalasi lawas pada drive yang dipartisi GPT sangat mirip dengan yang di atas:

  1. Instal grub-efi-amd64-binpaket.
  2. Buat partisi dengan sistem file FAT32 mirip dengan instruksi di atas dengan mengubah ukuran partisi root dan mengatur bootbendera.
  3. Pasang partisi dan jalankan grub-installperintah dari atas yang menyertakan --removableparameter.

Ini juga berfungsi jika Anda hanya ingin mem-boot instalasi UEFI yang ada di komputer lain.

Membuat Partisi Bootable BIOS (BBP) untuk GRUB sedikit berbeda:

  1. Instal grub-pc-binpaket.

  2. Buat partisi yang mirip dengan instruksi di atas dengan mengubah ukuran partisi root dan mengatur bios_grubbendera. Pilih tidak ada sistem file dan biarkan tidak diformat.

  3. Edit file konfigurasi /etc/default/grubdengan hak administratif dan tambahkan GRUB_DEVICE=/dev/sdb6sampai akhir. Ganti /dev/sdb6dengan nama perangkat BBP Anda yang sebenarnya. Anda dapat menggunakan editor baris perintah nano untuk menjaga hal tetap sederhana.

    Instal gambar GRUB MBR ke BBP dengan:

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

    Anda mungkin ingin menghapus atau mengomentari baris /etc/default/grubdan menambahkannya ke instalasi yang sebenarnya.

Bonus: Tambahkan partisi untuk Mac pada instalasi dengan GPT

Saya menemukan bahwa Mac yang sangat baru (Mac Mini A1347 EMC 2840) yang saya uji dapat mem-boot dari FAT32 ESP standar, bahkan dari MBR! Bagaimanapun, ini dia:

  1. Instal grub-efi-amd64-bin, hfsprogs, mactel-bootdan mactel-boot-logopaket (opsional). Anda perlu mengaktifkan repositori Universe ( Bagaimana cara mengaktifkan repositori "Universe" dari baris perintah? ) Dan menambahkan PPA dukungan Mactel saat ini (lihat tim Komunitas Dukungan Mactel untuk perincian lebih lanjut) untuk menginstal semuanya.

  2. Buat partisi dengan sistem file HFS + mirip dengan instruksi di atas dengan mengubah ukuran partisi root. Kali ini kami membutuhkan beberapa megabita lebih banyak ruang, jadi gandakan ukuran ESP jika Anda hanya memiliki 5 megabita atau kurang sebelumnya. Tidak diperlukan bendera.

  3. Pasang partisi:

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

    Catatan: Saya memilih $esp-mac_devicedan /mnt/esp-macmenghindari konflik.

    Jalankan grub-installperintah yang menyertakan --removableparameter:

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

    Terakhir, siapkan partisi seperti yang diharapkan oleh 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
    

    Untuk mem-boot Ubuntu dari media eksternal pada Mac Anda sekarang hanya perlu menekan tombol opsi atau Altpada keyboard Windows dan memilih disk yang tepat.

    Mac Startup Manager menampilkan volume dan logo Ubuntu

Tentang flag partisi, ketik kode, dan GUID

Agar seakurat mungkin, flag boot tidak penting untuk GRUB, secara default GRUB mencari UUID untuk menemukan sistem file yang tepat untuk boot. Mengatur flag boot atau flag bios_grub di GParted biasanya menetapkan tipe (MBR) atau GUID (GPT) untuk partisi.

Manfaat pengaturan jenis atau GUID yang benar, selain memiliki pengaturan yang berfungsi dengan baik, adalah bahwa partisi ini akan disembunyikan di filemanager. Cara termudah untuk memeriksa dan mengubah jenis dan GUID adalah melalui Disk ( gnome-disks).

tangkapan layar yang menunjukkan drive dan partisi di gnome-disk

tangkapan layar yang menunjukkan dialog edit partisi di gnome-disk

Atau Anda bisa menggunakan parted atau gdisk:

  • 0xef adalah kode jenis untuk ESP di MBR untuk digunakan dengan fdisk
  • ef00 adalah kode jenis disingkat untuk ESP di GPT untuk digunakan dengan gdisk
  • ef02 adalah kode jenis disingkat untuk BBP di GPT untuk digunakan dengan gdisk

Wikipedia memiliki daftar besar GUID untuk GPT .

Setara dengan commandline partedsesuai dengan manual adalah parted $device set partition esp ondan parted $device set partition bios_grub on.

LiveWireBT
sumber
Saya tidak mendokumentasikan detailnya. Tetapi bisa hanya mempartisi flash drive saya ke gpt, membuat partisi efi dan menyalin file boot efi ke partisi efi. Grub-mkimage membuat grubx64.efi yang mengharapkan path tertentu untuk file, jadi saya hanya menyalin struktur file dari instal saya ke / boot / grub dan menambahkan grub.cfg dengan entri configfile ke grub.cfg di my / iso folder ke loopmount boot ISO saya. Mungkin lebih tepat untuk membuat grubx64.efi Anda sendiri dengan make image, tetapi salin berhasil.
oldfred
Saya mencari tinggi dan rendah mencoba mencari cara untuk melakukan bagian "Tambahkan ESP ke instalasi yang sudah ada dengan MBR". Saya gugup tentang hal itu, tetapi itu berhasil pada percobaan pertama! Jawaban bagus!
Mark E. Haase
Saya mencoba untuk menambahkan kemampuan boot EFI ke instalasi BIOS / MRR penuh Ubuntu pada USB menggunakan Add an ESP ke instalasi yang ada dengan MBR bagian dari jawabannya. Saya mendapatkan "Kesalahan: File /boot/tidak ditemukan". The grub.cfgdalam ESP partisi poin ke UUID yang tepat. Ada ide? Saya akan senang memposting pertanyaan baru.
user68186
@ user68186 apakah Anda dapat melakukannya?
BRabbit27
Saya dapat menginstal Ubuntu di drive eksternal saya dari Mac. Ketika terhubung ke Mac, ia bisa boot dengan benar ke Ubuntu. Namun, ketika terhubung ke mesin Windows10 (xps 15 9560) di perangkat boot, hard drive eksternal tidak muncul. Firasat saya adalah karena UEFI. Dapatkah seseorang mengkonfirmasi apakah firasat saya benar dan juga apakah utas ini yang mungkin saya perlukan untuk bisa boot dari mesin windows?
BRabbit27