Come creare supporti live USB di avvio solo UEFI?


107

Avere supporti live che possono avviarsi in entrambi i modi può essere un problema quando si installa Ubuntu su computer Windows 8 attualmente disponibili.

In altre parole, il vantaggio principale della creazione di supporti live USB di avvio solo UEFI è: Sai che è stato avviato e installato definitivamente tramite UEFI.

Dato che Valve ha già avviato solo programmi di installazione USB UEFI con il suo sistema operativo Steam basato su Debian e UNetbootin - l'alternativa più votata a Startup Disk Creator di Ubuntu - non è compatibile UEFI e quindi fuorviante, penso che dovremmo avere un argomento separato per creazione di supporti live USB di avvio solo UEFI.

Risposte:


133

Panoramica

La creazione di supporti live USB solo per UEFI è piuttosto semplice. Basta copiare i file sull'unità USB formattata FAT32 . Questo è tutto!

Ricordare che per un'installazione o l'avvio del supporto:

Sommario

  • Copia i file dal metodo ISO
    1. Esempio tramite terminale
    2. Esempio tramite GUI
    3. Esempio su Windows
  • Il metodo di loopback ISO (avanzato)
    1. Creazione del binario
    2. Creazione del file di configurazione
    3. Aggiunta di persistenza
    4. Verifica dell'integrità
    5. Avvio protetto UEFI

1. Copia i file dal metodo ISO

Questo metodo funziona anche con altri supporti di installazione che contengono caricatori EFI, come ad esempio Windows.

1.1. Esempio tramite terminale

Puoi fare qualcosa di simile al seguente se 604A-00EAè la tua unità USB e hai già p7zipinstallato:

$ 7z x ubuntu-12.04-desktop-amd64.iso -o/media/$USER/604A-00EA/

Hai finito se hai solo una partizione su questa unità USB, altrimenti devi contrassegnare la partizione come avviabile, ad esempio tramite parted:

# parted /dev/sdX set 1 boot on

Dove /dev/sdXsi trova l'unità USB e 1il numero di partizione da utilizzare per l'avvio.

1.2. Esempio tramite GUI

  1. Montare il file .iso e copiare il contenuto sull'unità USB. Premi Ctrl+ Hin Nautilus per visualizzare e copiare anche i file nascosti.

    nautilus mostra Disk Image Mounter nel menu contestuale quando è selezionato .iso-file

  2. Aggiungi il flag di avvio tramite GParted .

    GParted mostra come gestire i flag di partizione

1.3. Esempio su Windows

  1. Come sopra, basta copiare i file.
  2. Premi Windows/Super+ X, vai su Gestione disco e controlla se la partizione è contrassegnata come attiva. Nelle versioni di Windows precedenti a Windows 8, premi Windows/Super+ Rper aprire il menu Esegui e diskmgmt.msc, per aprire Gestione disco.

2. Il metodo di loopback ISO (avanzato)

Invece di estrarre contenuti da un'immagine ISO, GRUB e GRUB2 sono stati in grado di eseguire l'avvio da immagini ISO direttamente tramite un dispositivo di loopback. Dato che l'immagine ISO è avviabile UEFI, possiamo configurare un'unità USB contenente più ISO con diversi sistemi operativi senza creare disordine sull'unità USB.

Se vuoi avviare anche Windows, potresti voler guardare SARDU . Ricordo di averlo usato con Windows PE intorno al 2005 e sembra essere stato aggiornato per supportare unità USB e UEFI, ma ricordo che questo strumento supporta anche l'avvio legacy.

Cosa ci serve?

  • Conoscenza di base dei file di configurazione di GRUB.
  • Conoscenze di base sull'avvio di UEFI e GRUB, in quanto genereremo la nostra immagine di bootloader GRUB con numerosi moduli inclusi.
  • Un'immagine ISO avviabile UEFI, un'unità USB formattata FAT e una macchina che esegue Linux.
    • No, non abbiamo bisogno di un'installazione UEFI di Linux (che potrebbe essere una situazione di pollo e uova), una macchina virtuale Linux tradizionale come in VirtualBox va bene.

2.1. Creazione del binario

Sul tuo computer o VM Ubuntu assicurati che il pacchetto grub-efi-amd64-bin sia installato (grub-efi-ia32-bin è disponibile anche per architetture Intel a 32 bit nelle versioni più recenti). Il pacchetto può avere un nome diverso su un'altra distribuzione, puoi confrontare l' elenco dei file del pacchetto per trovare il pacchetto giusto sulla tua distribuzione.

Il seguente comando genererà l'immagine GRUB, in questo caso un binario EFI che ogni computer con un firmware UEFI dovrebbe essere in grado di eseguire:

grub-mkimage -o bootx64.efi -p /efi/boot -O x86_64-efi \
 fat iso9660 part_gpt part_msdos \
 normal boot linux configfile loopback chain \
 efifwsetup efi_gop efi_uga \
 ls search search_label search_fs_uuid search_fs_file \
 gfxterm gfxterm_background gfxterm_menu test all_video loadenv \
 exfat ext2 ntfs btrfs hfsplus udf

Ogni firmware UEFI standard dovrebbe cercare \EFI\BOOT\un file chiamato boot{arch}.efi, quindi crea le cartelle sull'unità USB e copia l'immagine che abbiamo appena creato in questa posizione. Altre architetture invece di x64 sono possibili, ma manteniamolo semplice con x64 / amd64.

2.2. Creazione del file di configurazione

Un esempio molto semplice per un grub.cfgfile di configurazione che dovrebbe essere collocato nella stessa directory in bootx64.efiquesto modo:

set timeout=3
set color_highlight=black/light-magenta

menuentry 'Boot Ubuntu 14.04.2 LTS from ISO' {
        set isofile="/efi/boot/ubuntu-14.04.2-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash persistent --
        initrd (loop)/casper/initrd.lz
}
submenu 'Useful snippets' {
    menuentry 'Ubuntu' {
            chainloader /efi/ubuntu/grubx64.efi
    }
    menuentry 'Windows' {
            chainloader /efi/Microsoft/Boot/bootmgfw.efi
    }
    menuentry 'Firmware Setup' {
            fwsetup
    }
}

L'importante è il blocco di configurazione con il titolo Boot Ubuntu 14.04.2 LTS from ISO. È possibile modificare il colore e il timeout in base alle proprie preferenze. Ho scelto black/light-magentacome sembri ancora un po 'Ubuntu, ma è facilmente distinguibile quando si eseguono il chainloading di altre configurazioni. Puoi trovare altri esempi per altre distribuzioni in Arch Wiki e leggere il manuale di GRUB vale davvero la pena se vuoi andare oltre.

Tornando al blocco di configurazione, dovrebbe essere ovvio che si fa riferimento all'ISO /efi/boot/ubuntu-14.04.2-desktop-amd64.iso, quindi copia l'ISO \EFI\BOOT\e sostituiscilo ubuntu-14.04.2-desktop-amd64.isonella configurazione con il nome file effettivo dell'ISO.

loopback loop $isofileè la linea che caricherà il nostro file ISO su un dispositivo di loopback da cui possiamo avviare direttamente il kernel Linux. Ciò è possibile perché la nostra immagine EFI GRUB include il modulo loopback. (Un po 'di tentativi ed errori sono stati coinvolti nel capire quali moduli sono ragionevolmente da includere. Non dovresti vedere alcun messaggio di errore, tuttavia non è ancora perfetto.) Parlando del kernel puoi aggiungere parametri del kernel come toram, parametri per lingue diverse (esempio locale=de_DE bootkbd=de) e come nell'esempio:persistent

2.3. Aggiunta di persistenza

È possibile aggiungere una partizione come descritto in: Come posso ottenere un live-USB per utilizzare una partizione per la persistenza? Oppure puoi creare un casper-rwfile e posizionarlo nella directory principale dell'unità USB.

dd if=/dev/zero of=casper-rw bs=1M count=4094
mkfs.ext4 -m 0 casper-rw

Non ho testato quale sia il massimo assoluto, dovrebbe essere compreso tra 4094 e 4096 MB. Utilizzare una partizione se si intende utilizzare più spazio. Si noti che ogni modifica a (root) è una modifica al filesystem overlay, anche eliminando i file.

2.4. Verifica dell'integrità

È necessario esaminare le risposte alle seguenti domande per verificare che il contenuto ISO live sull'unità USB sia in ottime condizioni:

2.5. Avvio protetto UEFI

L'avvio protetto diventerà obbligatorio con le macchine Windows 10, ti suggerisco di dare un'occhiata al PreLoader della Linux Foundation per aggiungere la funzionalità Avvio protetto a questa configurazione. Ecco alcune opere ASCII che illustrano i menu dell'HashTool in dotazione .


Congratulazioni, direi che ora hai imparato l'avvio UEFI e non dovresti più aver paura.


1
vorrei sottolineare (a) che tutti i PC spediti negli ultimi 5 anni circa hanno questa capacità; (b) che il root del programma di installazione .iso può quindi utilizzare l'intera chiavetta USB come normale archivio persistente. (utilizzare le opzioni di montaggio ro per proteggere dalla cancellazione accidentale.) Per PC moderni e modelli di utilizzo comuni, questa sembra una soluzione migliore rispetto alla soluzione predefinita di live-usb-creator.
user1539216

3
Durante l'utilizzo del metodo GUI ho riscontrato alcuni errori nei collegamenti simbolici . Questo è rilevante? Puoi per favore elaborare?
VRR

1
Ciao, LiveWireBT! Grazie per la risposta così interessante !! Ho seguito 2. Il metodo di loopback ISO (avanzato) e sono riuscito all'avvio UEFI dall'unità flash USB. Ma alla fine dell'avvio ho ricevuto il messaggio di errore: Impossibile montare / dev / loop2 su / cow e dopo aver premuto Invio ho visto un prompt (initramfs). Potete aiutarmi con esso?
Zuba,

Voglio anche ringraziarti per un'ottima guida, è stato chiaro e conciso. Non ho nemmeno pensato di partizionare la chiavetta USB e di avere più SO su di essa. Grazie ancora!
Hatem Jaber,

2
Almeno nel 16.04, "copia tutti i file" non si avvia a causa dell'argomento della riga del kernel grub.cfg "file = / cdrom / preseed / ubuntu.seed". Non esiste un file simile, probabilmente correlato al collegamento simbolico mancante precedentemente menzionato (da Ubuntu a.). Modifica grub.cfg per rimuovere il file = ... e sostituiscilo con "live-media-path = / casper / ignore_uuid"
ubfan1,

3

Estrai da file ISO a FAT32

L'estrazione del contenuto di un file ISO desktop Ubuntu a 64 bit in una partizione con un file system FAT32 e un flag di avvio farà il lavoro: creare un'unità live, che si avvia solo in modalità UEFI. Qui si chiama "Copia file dal metodo ISO" (nella risposta accettata).

Test se eseguito in modalità UEFI o BIOS

Ma è facile testare su un sistema Ubuntu in esecuzione (sia live che installato), se è stato avviato in modalità UEFI o BIOS. Esegui questa riga di comando,

test -d /sys/firmware/efi && echo efi || echo bios

Questo rende semplice l'uso di sistemi live che possono essere utilizzati in entrambe le modalità di avvio, il che può anche essere un vantaggio.

Vedere anche i seguenti collegamenti per una spiegazione e una descrizione più dettagliate del metodo,

help.ubuntu.com/community/Installation/iso2usb

help.ubuntu.com/community/Installation/iso2usb/diy


2

L'utilizzo ha ddfunzionato per me, per qualche motivo, la versione della GUI non ha funzionato. Quindi, per prima cosa, potresti voler monitorare il progresso di dd , un'altra opzione sta usando l'opzione SIGUSR1 per innescare ddper segnalare periodicamente i suoi progressi, ma questo è più complicato di pv.

Poi:

sudo dd if=path/to/image/file | pv | sudo dd of=/dev/device_you_want_to_use

( /dev/device_you_want_to_usesarà in genere /dev/sdb, ma verificare con df!)


8
La creazione di supporti in questo modo non comporta supporti di avvio solo UEFI . L'enfasi è sull'ultimo paragrafo della domanda: "C'è anche un vantaggio nella creazione di supporti live USB solo per UEFI: sai che è stato avviato definitivamente tramite UEFI." Avere supporti che possono avviarsi in entrambi i modi è un problema quando si cerca di capire e configurare un'installazione Ubuntu avviabile dall'UEFI.
LiveWireBT

1
Vedo. La cosa strana è che in questo modo sono stato in grado di produrre un'immagine avviata in modalità UEFI (lo so, dato che il laptop era impostato per consentire solo l'avvio di uefi e anche a causa dello schermo iniziale). La risposta preferita non ha funzionato per me, il computer non si avviava semplicemente con un'immagine creata semplicemente copiando i file.
sup

5
@sup questo metodo crea supporti che possono essere avviati UEFI. Il problema è che non è solo l' avvio UEFI, come richiesto nella domanda: può anche essere avviato in modalità BIOS.
Darael,
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.