¿Qué comandos para convertir una instalación de BIOS de Ubuntu a EFI / UEFI sin reparación de arranque en hardware de arranque único?

35

Instalación accidental del modo BIOS

Tengo un hardware Intel de 64 bits con la utilidad de configuración UEFI. Ubuntu 14.04.1 LTS se instaló como el único sistema operativo en la única unidad conectada. Accidentalmente Ubuntu se instaló en modo BIOS / CSM / legacy.

Convertir a UEFI

Mientras más tarde aprende sobre UEFI, el objetivo es cambiar esta instalación de Ubuntu existente para que arranque (más rápido) a través de EFI / UEFI. Todavía quiero tener algún tipo de - 2 segundos de visualización - menú de arranque que me permite ingresar a la utilidad de configuración UEFI. Por lo tanto, creo que necesito usar Grub (no puedo usar un stub de arranque EFI) y el soporte GOP requiere Grub versión 1.99 o superior . Ya he particionado de nuevo la unidad usando un Live CD e inserté una partición EFI de 200 MiB en el comienzo de la unidad y marqué esa partición formateada fat16 como tipo id 0xEF.

Antes de:

# 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

Después:

   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

Sin reparación de arranque por favor

El wiki de la comunidad de Ubuntu sugiere utilizar la reparación de arranque para convertir Ubuntu en modo EFI . No quiero usar una GUI o instalar ningún paquete adicional, y no quiero que ningún dato sea enviado accidentalmente a pastebin.com y porque quiero saber qué se cambiará exactamente, no quiero use la reparación de arranque .

Bajo el capó

Intentando averiguar qué hace realmente la reparación de arranque, encontré este fragmento:

Boot-Repair convertirá una instalación de BIOS a UEFI desinstalando grub-pc e instalando grub-efi, si gpt está particionado.

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

Comparación de instalación del modo UEFI

Una instalación limpia de Ubuntu 14.04.1 en modo UEFI crea una partición EFI formateada 512 MiB Fat32. Esa partición contiene un directorio /EFI/ubuntu, que contiene 4 archivos: grub.cfg, grubx64.efi, MokManager.efiy shimx64.efi. El 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 apunta al UUID de la partición de instalación de Linux, en esta comparación, la instalación de UEFI Linux se instala en la partición / dev / sda2 (versus sda1 en la instalación en modo BIOS) .

No se encontraron problemas potenciales de firmware de Asrock

Tener CSM aún deshabilitado en el firmware y usar la instalación limpia de Ubuntu en modo UEFI. Cambiar el tamaño de la partición EFI 512 MiB a 200 MiB usando un Live CD y gpartedda como resultado que su formato cambie de FAT32 a FAT16. El firmware de Asrock P1.50 (llamado incorrectamente BIOS por AMI en el mensaje de arranque "Fecha de BIOS") todavía puede arrancar en modo UEFI Ubuntu: UEFI + FAT16 = ok .
La conversión de la tabla de particiones de GPT a MBR (msdos) usando el mismo comando de terminal Live CD gdisky sus comandos r g p wtambién da como resultado un Ubuntu UEFI arrancable en una unidad particionada MBR: UEFI + MBR = ok .

Pregunta

¿Significa esto que los únicos comandos que necesito ejecutar, desde la instalación de Ubuntu heredada y en este orden, son:

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

? ¿O se necesita hacer más?

Pro Backup
fuente
1
Todavía usaría la reparación de arranque. Asume que necesita instalar paquetes ... Creo que está equivocado. Ver: askubuntu.com/questions/226061/…
Rinzwind
@Rinzwind No puedo usar la reparación de arranque porque no hay GUI en la instalación actual de Ubuntu (solo consola) y ubuntu-14.04.1-desktop-amd64.iso no arranca cuando se configura como primer dispositivo de arranque USB UEFI en Asrock H81 Pro BTC P1.50 Utilidad de configuración UEFI.
Pro Backup
1
Boot-Repair no es una interfaz gráfica de usuario, sino que tiene uno de los complementos que lo hace más parecido a la interfaz gráfica de usuario. Con la versión más reciente de los nombres de paquetes de Ubuntu han cambiado un poco, creo que ahora es grub-efi-amd64 o grub-efi-amd64 -igned. Puede ser porque quieren lanzar un cargador de arranque UEFI de 32 bits que cambió su nombre. Versión de Chroot, tenga en cuenta que también tiene install grub & create grub.cfg. askubuntu.com/questions/53578/…
oldfred
@oldfred Boot-Repair depende de la interfaz apt-get install boot-repairgráfica de usuario : al ejecutar esta instalación del servidor Ubuntu, se obtienen 245 MB de GTK como dependencias que la reparación de arranque quiere instalar. Y la ejecución del boot-repaircomando posterior falla. La actualización de los nuevos nombres de grub-efi fue realmente útil.
Pro Backup
Si es un Asrock, asegúrese de no tener una unidad o unidad de DVD conectada a los puertos Asmedia. No tienen conductores. Es mejor tener solo una unidad particionada gpt si se inicia en UEFI. rodsbooks.com/gdisk/hybrid.html
oldfred

Respuestas:

41

Inicie un Live CD de Ubuntu Linux (14.04) en modo UEFI. En el caso de un dispositivo de arranque USB, desactive "Arranque rápido" en UEFI.

Abrir una ventana de terminal ( Ctrl+ Alt+ T)

Para verificar que realmente está ejecutando en modo UEFI, use este comando bash:

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

El resultado resultante debe ser:

UEFI

En caso de que diga BIOS, reinicie en su firmware y corrija la preferencia del dispositivo de arranque.

Para realizar la conversión de BIOS a EFI / UEFI, ingrese estos comandos:

$ 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

A pesar de terminar en mensaje de error:

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

el próximo reinicio ya muestra " ubuntu " en el firmware, su menú de opciones de arranque, y arranca en la consola como antes, excepto que ahora arranca en modo 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

En caso de que algo salga mal, https://superuser.com/questions/376470/how-to-reinstall-grub2-efi podría ayudar.

Pro Backup
fuente
Esto me ayudó a actualizar mi disco duro y convertirlo a GPT / UEFI / SecureBoot sin reinstalarlo. Gracias. Una nota: necesitaba el grub-efi-amd64-signedpaquete para evitar tener que meterme con la desactivación de SecureBoot en mi BIOS UEFI.
Robie Basak
Ahora es 2018 y este problema con EFI aún persiste. incluso el arranque de efi está instalado pero termino en grub cli. Me rindo en Ubuntu.
Abhishek Dujari
Esto funcionó para mí en Ubuntu 19.10. Arranqué el USB en vivo con EFI, y agregué una partición de 200 MB de tipo FAT32 para EFI al final de mi disco.
Joey Adams
1

Esto funcionó para mí también con una pequeña alteración. Aunque la red funcionaba, no pude obtener el "apt-get install grub-efi-amd64" para encontrar ninguno de los servidores de paquetes.

Lo solucioné arrancando en modo BIOS por última vez e instalando grub-efi-amd64.

Entonces podría seguir los procedimientos aquí con la excepción de omitir "apt-get install grub-efi-amd64".

WallyZ
fuente
1

Pequeña corrección:

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

Hecho.

Daniel Jean
fuente
¿Puede explicar por qué sugiere estos cambios a partir de la respuesta del OP? ... ... ... ... Por favor no responda en los comentarios; edite  su respuesta para que sea más clara y completa.
G-Man dice 'Restablece a Monica' el