Quali comandi per convertire un'installazione BIOS Ubuntu in EFI / UEFI senza ripristino di avvio su hardware a avvio singolo?


35

Installazione accidentale della modalità BIOS

Ho un hardware Intel a 64 bit con utility di configurazione UEFI. Ubuntu 14.04.1 LTS è stato installato come unico sistema operativo sull'unica unità collegata. Accidentalmente Ubuntu è stato installato in modalità BIOS / CSM / legacy.

Converti in UEFI

Mentre più avanti imparerai a conoscere UEFI, l'obiettivo è cambiare questa installazione di Ubuntu esistente in (più veloce) avvio tramite EFI / UEFI. Voglio ancora avere una sorta di - 2 secondi visualizzati - menu di avvio che mi consente di accedere all'utilità di configurazione UEFI. Pertanto penso di aver bisogno di usare Grub (non posso usare uno stub di avvio EFI) e il supporto GOP richiede Grub versione 1.99 o successiva . Ho già partizionato nuovamente l'unità usando un Live CD e ho inserito una partizione EFI da 200 MiB all'inizio dell'unità e ho contrassegnato quella partizione formattata fat16 come id di tipo 0xEF.

Prima:

# fdisk -l /dev/sda
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   108478463    54238208   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Dopo:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *      411648   108478463    54033408   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda3            2048      411647      204800   ef  EFI (FAT-12/16/32)
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Partition table entries are not in disk order

Nessuna riparazione di avvio per favore

La wiki della comunità Ubuntu suggerisce di utilizzare la riparazione di avvio per convertire Ubuntu in modalità EFI . Non voglio utilizzare una GUI o installare pacchetti aggiuntivi e non voglio che i dati vengano inviati accidentalmente a pastebin.com e poiché voglio sapere cosa verrà modificato esattamente, non voglio usa Boot-repair .

Sotto il cappuccio

Cercando di capire cosa fa effettivamente la riparazione del boot, ho trovato questo frammento:

Boot-Repair convertirà un'installazione BIOS in UEFI disinstallando grub-pc e installando grub-efi, se gpt partizionato.

fonte: http://ubuntuforums.org/showthread.php?t=2147295&p=12657352#post12657352

Confronto di installazione in modalità UEFI

Un'installazione pulita di Ubuntu 14.04.1 in modalità UEFI crea una partizione EFI formattata Fat32 da 512 MiB. Quella partizione contiene una directory /EFI/ubuntu, che contiene 4 file: grub.cfg, grubx64.efi, MokManager.efie shimx64.efi. Grub.cfg contiene:

search.fs_uuid 7d843e47-3917-4114-8725-55dfa1fbe002 root hd0,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

Search.fs_uuid punta all'UUID della partizione di installazione di Linux, in questo confronto installazione UEFI Linux è installata partizione / dev / sda2 (rispetto a sda1 nell'installazione in modalità BIOS) .

Non sono stati rilevati potenziali problemi del firmware Asrock

Avere CSM ancora disabilitato nel firmware e utilizzare l'installazione Ubuntu in modalità UEFI pulita. Ridimensionare la partizione EFI da 512 MiB a 200 MiB usando un Live CD e il gpartedrisultato è che la sua formattazione cambia da FAT32 a FAT16. Il firmware Asrock P1.50 (erroneamente chiamato BIOS da AMI nel messaggio di avvio "BIOS date") è ancora in grado di avviarsi in modalità UEFI Ubuntu: UEFI + FAT16 = ok .
La conversione della tabella delle partizioni da GPT a MBR (msdos) utilizzando lo stesso comando del terminale Live CD gdiske i suoi comandi r g p wcomporta anche un Ubuntu avviabile UEFI su un'unità partizionata MBR: UEFI + MBR = ok .

Domanda

Questo significa che gli unici comandi che devo eseguire - dall'installazione precedente di Ubuntu e in questo ordine - sono:

# apt-get install grub-efi
# apt-get remove grub-pc

? O è necessario fare di più?


1
Userei ancora la riparazione del bagagliaio. Supponi di dover installare i pacchetti ... Credo che tu abbia torto. Vedi: askubuntu.com/questions/226061/…
Rinzwind

@Rinzwind Non riesco a usare boot-repair perché non c'è GUI nell'attuale installazione di Ubuntu (solo console) e ubuntu-14.04.1-desktop-amd64.iso non si avvia quando impostato come primo dispositivo di avvio UEFI USB in Asrock's H81 Pro BTC P1.50 Utilità di configurazione UEFI.
Pro Backup

1
Boot-Repair non è gui, ma bash con uno dei componenti aggiuntivi che lo rende più gui. Con la versione più recente di Ubuntu i nomi dei pacchetti sono cambiati un po ', ora è grub-efi-amd64 o grub-efi-amd64, credo. Potrebbe essere perché vogliono rilasciare un boot loader UEFI a 32 bit che il nome è cambiato. Versione di Chroot, nota che hai anche installare grub e creare grub.cfg. askubuntu.com/questions/53578/…
oldfred

@oldfred Boot-Repair dipende dalla gui: eseguendo apt-get install boot-repairsu questa installazione del server Ubuntu, risulta 245 MB di GTK come le dipendenze che boot-repair vuole installare. E l'esecuzione del boot-repaircomando aftwerwards non riesce. L'aggiornamento della nuova denominazione grub-efi è stato davvero utile.
Pro Backup

Se si tratta di un Asrock, assicurarsi che non vi siano unità o unità DVD collegate alle porte Asmedia. Non hanno i driver. Meglio avere gpt partizionato solo se si avvia in UEFI. rodsbooks.com/gdisk/hybrid.html
oldfred

Risposte:


41

Avviare un Live CD di Ubuntu Linux (14.04) in modalità UEFI. Nel caso di un dispositivo di avvio USB, disabilitare "Avvio rapido" in UEFI.

Apri una finestra del terminale ( Ctrl+ Alt+ T)

Per verificare che si stia effettivamente eseguendo in modalità UEFI, utilizzare questo comando bash:

$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

L'output risultante dovrebbe essere:

UEFI

Nel caso affermativo BIOS, riavviare il firmware e correggere le preferenze del dispositivo di avvio.

Per eseguire la conversione da BIOS a EFI / UEFI, immettere questi comandi:

$ sudo mount /dev/sda1 /mnt
$ sudo mkdir -p /mnt/boot/efi
$ sudo mount /dev/sda3 /mnt/boot/efi
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /run /mnt/run
$ modprobe efivars
$ sudo chroot /mnt
# apt-get install grub-efi-amd64

The following extra packages will be installed:
  efibootmgr grub-efi-amd64-bin
The following packages will be removed:
  grub-gfxpayload-lists grub-pc
...
After this operation, 2,399 kB of additional disk space will be used.

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Nonostante la conclusione nel messaggio di errore:

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

il prossimo riavvio mostra già " ubuntu " nel firmware il suo menu delle opzioni di avvio e si avvia sulla console come prima, tranne che ora si avvia in modalità efi:

$ dmesg | grep EFI
efi: EFI v2.31 by American Megatrends
fb0: EFI VGA frame buffer device
EFI Variables Facility v0.08 2004-May-17
fb: switching to inteldrmfb from EFI VGA

Nel caso in cui qualcosa vada storto, https://superuser.com/questions/376470/how-to-reinstall-grub2-efi potrebbe essere d'aiuto.


Questo mi ha aiutato ad aggiornare il mio disco rigido e convertirmi in GPT / UEFI / SecureBoot senza reinstallare. Grazie. Una nota: avevo bisogno del grub-efi-amd64-signedpacchetto per evitare di dover pasticciare con la disabilitazione di SecureBoot nel mio BIOS UEFI.
Robie Basak,

Ora è il 2018 e questo problema con EFI i è ancora persistente. anche il boot efi è installato ma finisco in grub cli. Mi arrendo su Ubuntu.
Abhishek Dujari il

Questo ha funzionato per me con Ubuntu 19.10. Ho avviato l'USB live con EFI e ho aggiunto una partizione da 200 MB di tipo FAT32 per EFI alla fine del mio disco.
Joey Adams,

1

Questo ha funzionato anche per me con una piccola modifica. Anche se la rete funzionava, non sono riuscito a trovare "apt-get install grub-efi-amd64" per trovare nessuno dei pacchetti server.

Ho risolto il problema avviando un'ultima volta in modalità BIOS e installando grub-efi-amd64.

Potrei quindi seguire le procedure qui ad eccezione dell'omissione di "apt-get install grub-efi-amd64".


1

Piccola correzione:

sudo apt-get install -y grub-efi-amd64
sudo mount /dev/sda1 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda3 /mnt/boot/efi
for d in dev sys proc usr run; do sudo mount -B /$d /mnt/$d; done
sudo modprobe efivars
sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Fatto.


Puoi spiegare perché stai suggerendo questi cambiamenti dalla risposta del PO? ... ... ... ... Per favore non rispondere nei commenti; modifica la  tua risposta per renderla più chiara e completa.
G-Man dice "Reinstate Monica" il
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.