È ancora possibile installare Ubuntu su un hard disk esterno con UEFI?


Risposte:


12

In realtà è possibile .

Prima di continuare, queste istruzioni sono pensate per le partizioni di sistema EFI (ESP) vuote e probabilmente sovrascriveranno i file esistenti o non funzioneranno come previsto. Almeno fare dei backup!

Aggiunta di partizioni richieste per piattaforme diverse

Piattaforme: PC legacy, computer Windows basato su UEFI, computer Apple

Aggiungi un ESP a un'installazione esistente con MBR

È necessario seguire queste istruzioni da un'altra installazione o live media.

  1. Installa il grub-efi-amd64-binpacchetto. Questo installerà solo le risorse necessarie. Non cambierà la tua attuale installazione in stile MBR in UEFI e capovolgerà le cose.

  2. Riduci la tua partizione Ubuntu in GParted per fare spazio a un ESP. Le dimensioni consigliate per gli ESP vanno da 100 MB a 500 MB, ma i file creati seguendo queste istruzioni qui non richiederanno più di 2 a 5 megabyte.

    Nota: non dovrebbe importare dove si trova il tuo ESP sul disco e ridurre la partizione di Ubuntu di qualche megabyte dalla fine dovrebbe essere rapido e sicuro. Ridurre all'inizio non è sicuro . Un avvertimento però, il tuo ESP dovrebbe essere una partizione primaria e non far parte di una partizione estesa o di un volume logico, i numeri di partizione da 1 a 4 vanno bene, i numeri sopra indicano una partizione estesa sulle tabelle delle partizioni MBR.

    Scegli FAT32 come filesystem e imposta il flag di avvio.

  3. Montare l'ESP appena creato e il filesystem di root ridotto:

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

    Nota: Sostituire $esp_devicee $root_devicecon i dispositivi appropriati ad esempio /dev/sdb2e /dev/sdb1. I mountpoint /mnt/esp e /mnt/rootfssono solo esempi scelti per lavorare con la parte rimanente di questa risposta.

    Installa l'immagine EFI di GRUB e un file di configurazione minimo con:

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

    Si noti che $deviceè l'intero dispositivo /dev/sdb, ad esempio , non una partizione.

  4. Ecco fatto, abbiamo già finito, ma lasciami provare a spiegare alcune cose.

    Il parametro --target x86_64-efiassicurerà che le immagini ei moduli UEFI vengano installati nei percorsi indicati. --removableinstalla l'immagine UEFI sul percorso codificato \EFI\BOOT\BOOT{arch}.EFIper i supporti rimovibili, anziché un percorso specifico di distribuzione. Il tuo grub.cfgin /boot/grub/dovrebbe funzionare con entrambi i metodi di avvio e x86_64-efiaccanto dovrebbe esserci una nuova cartella denominata i386-pc.

    Per completezza, questo è il comando per supporti non rimovibili che scrive e si basa su voci NVRAM nella piattaforma:

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

    Le installazioni UEFI appropriate includono una linea simile a quella in basso /etc/fstab, ma l'installazione è funzionale senza e l'immagine UEFI (simile al bootloader MBR) viene solitamente scritta / aggiornata solo durante l'installazione del sistema operativo.

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

Aggiunta di un ESP o GRUB-BBP a un'installazione con GPT

L'aggiunta di un ESP a un'installazione legacy su un'unità partizionata GPT è molto simile alla precedente:

  1. Installa il grub-efi-amd64-binpacchetto.
  2. Crea una partizione con un filesystem FAT32 simile alle istruzioni precedenti ridimensionando la partizione di root e impostando il bootflag.
  3. Montare le partizioni ed eseguire il grub-installcomando dall'alto che include il --removableparametro.

Questo funziona anche se vuoi solo avviare la tua installazione UEFI esistente su un altro computer.

La creazione di una partizione di avvio del BIOS (BBP) per GRUB è leggermente diversa:

  1. Installa il grub-pc-binpacchetto.

  2. Crea una partizione simile alle istruzioni sopra ridimensionando la partizione di root e imposta il bios_grubflag. Scegli nessun filesystem e lascialo non formattato.

  3. Modifica il file di configurazione /etc/default/grubcon diritti amministrativi e aggiungi GRUB_DEVICE=/dev/sdb6alla fine. Sostituisci /dev/sdb6con il nome effettivo del dispositivo del tuo BBP. Puoi usare l'editor della riga di comando nano per semplificare le cose.

    Installa l'immagine MBR di GRUB sul BBP con:

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

    Potresti voler rimuovere o commentare la linea /etc/default/grube aggiungerla all'installazione effettiva.

Bonus: aggiungi una partizione per Mac su un'installazione con GPT

Ho scoperto che il nuovissimo Mac (Mac Mini A1347 EMC 2840) con cui stavo testando poteva avviarsi da un ESP FAT32 standard, anche da MBR! Comunque, eccoci qui:

  1. Installare i grub-efi-amd64-bin, hfsprogs, mactel-boote mactel-boot-logopacchetti (opzionale). È necessario abilitare i repository Universe ( Come si abilita il repository "Universe" dalla riga di comando? ) E aggiungere l'attuale PPA di supporto Mactel (vedere il team della Community di supporto Mactel per maggiori dettagli) per installarli tutti.

  2. Crea una partizione con un filesystem HFS + simile alle istruzioni sopra ridimensionando la partizione root. Questa volta abbiamo bisogno di qualche megabyte in più di spazio, quindi raddoppia le dimensioni dell'ESP se in precedenza avevi solo 5 megabyte o meno. Non è richiesta la bandiera.

  3. Montare le partizioni:

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

    Nota: ho scelto $esp-mac_devicee /mnt/esp-macper evitare conflitti.

    Esegui il grub-installcomando che include il --removableparametro:

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

    Infine, imposta la partizione nel modo in cui un Mac si aspetta che sia:

    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
    

    Per avviare Ubuntu da un supporto esterno su un Mac ora è sufficiente premere il tasto opzione o Altsulla tastiera di Windows e selezionare il disco giusto.

    Mac Startup Manager che mostra i volumi e il logo Ubuntu

Informazioni su flag di partizione, codici di tipo e GUID

Per essere il più accurato possibile, il flag di avvio non è importante per GRUB, per impostazione predefinita GRUB cerca gli UUID per trovare il giusto filesystem da cui avviare. L'impostazione del flag di avvio o del flag bios_grub in GParted solitamente imposta un tipo (MBR) o GUID (GPT) per la partizione.

Il vantaggio di impostare il tipo corretto o GUID, oltre ad avere una configurazione correttamente funzionante, è che queste partizioni saranno nascoste nel gestore dei file. Il modo più semplice per controllare e modificare tipi e GUID è tramite Disks ( gnome-disks).

screenshot che mostra le unità e le partizioni nei dischi gnome

screenshot che mostra la finestra di dialogo di modifica delle partizioni nei dischi gnome

In alternativa puoi usare parted o gdisk:

  • 0xef è il codice del tipo per ESP in MBR da utilizzare con fdisk
  • ef00 è il codice di tipo abbreviato per ESP in GPT da utilizzare con gdisk
  • ef02 è il codice di tipo abbreviato per BBP in GPT da utilizzare con gdisk

Wikipedia ha un grande elenco di GUID per GPT .

Gli equivalenti della riga di comando partedsecondo il manuale sono parted $device set partition esp one parted $device set partition bios_grub on.


Non ho documentato i dettagli. Ma è stato in grado di partizionare il mio flash drive per gpt, creare una partizione efi e copiare i file di avvio efi nella partizione efi. Grub-mkimage crea un grubx64.efi che prevede determinati percorsi per i file, quindi ho appena copiato la struttura dei file dalla mia installazione in un / boot / grub e ho aggiunto un grub.cfg con una voce di configurazione in un altro grub.cfg nel mio / iso cartella per loopmount avviare i miei ISO. Probabilmente più corretto per creare il tuo grubx64.efi con l'immagine di creazione, ma la copia ha funzionato.
oldfred,

Ho cercato in alto e in basso cercando di capire come eseguire la parte "Aggiungi un ESP a un'installazione esistente con MBR". Ero nervoso, ma ha funzionato al primo tentativo! Bella risposta!
Mark E. Haase,

Sto cercando di aggiungere la funzionalità di avvio EFI a un'installazione BIOS / MRR completa di Ubuntu su USB utilizzando Aggiungi un ESP a un'installazione esistente con parte MBR della risposta. Viene visualizzato il messaggio "Errore: file /boot/non trovato". La grub.cfgpartizione ESP punta all'UUID giusto. Qualche idea? Sarei felice di pubblicare una nuova domanda.
user68186

@ user68186 sei stato in grado di farlo?
BRabbit27,

Sono stato in grado di installare Ubuntu nel mio disco esterno da un Mac. Quando è collegato al Mac, si avvia correttamente in Ubuntu. Tuttavia, quando è collegato a un computer Windows 10 (xps 15 9560) nei dispositivi di avvio, il disco rigido esterno non viene visualizzato. Il mio sospetto è che sia dovuto all'UEFI. Qualcuno può confermare se il mio sospetto è giusto e anche se questo thread è ciò di cui potrei aver bisogno per poter avviare da un computer Windows?
BRabbit27
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.