GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo reinstalar GRUB2 EFI?

  • Inicie su computadora con un USB/CD en vivo en modo UEFI . Tenía dos opciones de arranque <flash_drive> y UEFI: <flash_drive> , el segundo es necesario para exponer las variables efi en /sys/firmware/efi/ para que efibootmgr no fallar después. Arrancar con la primera opción me da el siguiente error:

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

    modprobe efivars no funcionó para mí.

  • chroot en el sistema roto (similar a la ayuda de ubuntu grub2 pero con especificidades de efi):

    sudo mount /dev/sda2 /mnt #sda2 is the root partition
    sudo mount /dev/sda1 /mnt/boot/efi #sda1 is the efi partition
    for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
    sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting
    modprobe efivars # make sure this is loaded
    sudo chroot /mnt
    
  • Dependiendo de su distribución de Linux, ahora puede hacer cosas diferentes.

    • Para Ubuntu/Debian :

      apt-get install --reinstall grub-efi-amd64
      

      o alternativamente:

      apt-get install --reinstall grub-efi
      update-grub
      

      ¿Debería lo anterior darte un grub, pero no uno de arranque?

    • Para Fedora (hasta 16, puede funcionar para otros):

      yum reinstall grub-efi
      

      En el siguiente comando, debe reemplazar sdX con el dispositivo que tiene la partición EFI desde la que desea iniciar. En --part Y tienes que reemplazar el Y con el número de la partición EFI (como en /dev/sdXY ).

      efibootmgr -c --disk /dev/sdX --part Y
      efibootmgr -v # verify a new record called Linux is there
      
  • Ahora escribe Ctrl+D para salir de chroot, desmontar todo y reiniciar:

    for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
    sudo umount /mnt/boot/efi #please do this. Corrupted efi partitions are not nice
    sudo umount /mnt
    sudo reboot
    

Es posible que deba adaptar esto a sus necesidades (diferente tabla de particiones, partición separada / de arranque, etc.) y puede que no sea la única opción, pero funcionó bien para mí.

Un sistema en vivo adecuado para arreglar cosas es grml. También hay una guía extensa sobre cómo configurar un dispositivo USB de arranque, de los cuales la sección Mac es la más útil en realidad (simplemente cree una partición FAT32, copie los archivos, reinicie y listo).


Como posible simplificación del primer método, es posible iniciar directamente el sistema en el disco duro, solo usando grub del CD en vivo. Probado en xubuntu 13.10 con el CD en vivo de xubuntu 13.10.

Asegúrese de que el Arranque seguro esté deshabilitado en su BIOS. Inserte el CD en vivo y arranque a través de UEFI. Aparecerá el menú GRUB del CD. Presione "c" para llegar a la línea de comando.

configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg

Adapte el comando grub anterior si tiene una partición de sistema EFI diferente.

Después de que su sistema haya arrancado desde el disco duro, debería ser suficiente reinstalar grub en la partición del sistema EFI y registrarlo con el firmware a través de grub-install.

sudo grub-install

Al igual que con Maxine, encontré que mi configuración de UEFI en BIOS se dañó y mi máquina no arrancó.

En mi caso es un Lenovo ThinkServer RD430 con Linux Mint Debian y me pareció cualquier cosa Haría sobre update-grub o cambiar cualquier disco duro en el servidor haría que no arranque. El sistema operativo en mi caso es linuxmint-201403-mate-dvd-64bit instalado a través de USB. (consulte a continuación para obtener una descripción completa de los eventos que harían que UEFI no funcione)

Seguir exactamente los mismos pasos en un ThinkServer TS140 no hizo que UEFI perdiera la cabeza ni una sola vez. Miré la página del controlador RD430 y mi BIOS tiene dos versiones. Nunca antes había tenido que actualizar la BIOS en una placa base, por lo que no soy de los que actualizan automáticamente cuando hay nuevas versiones disponibles. Después de actualizar la biografía, la respuesta anterior de Maxine funcionó, solo con un giro...

# efibootmgr -c --disk /dev/sdX --part Y
# efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0002,0000,0003,0001,0004
Boot0000* linuxmint HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\EFI\linuxmint\grubx64.efi)
Boot0001* LMDE Linux Mint Debian    HD(1,800,15d505800,934c598c-fe3c-fd43-84a1-fa38e4f72552)File(\EFI\linuxmint\grubx64.efi)
Boot0002* Linux HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\elilo.efi)
Boot0003* UEFI: Built-in EFI Shell  Vendor(5023b95c-db26-429b-a648-bd47664c8012,)AMBO
Boot0004* UEFI: VerbatimSTORE N GO 1.00 ACPI(a0341d0,0)PCI(1a,0)USB(1,0)USB(4,0)HD(1,80,1d70780,00000000)AMBO
mint / # 

El efibootmgr -c comando agregó dos entradas 0000 y 0002 !
El Boot0002* Linux HD la primera entrada en el orden de arranque no es correcta .
El 0000 la entrada es correcta.

Para probar esto, intenté arrancar sin ninguna interrupción, que es el 0002 entrada. Como era de esperar, no funcionó. Así que reinicié el servidor, presioné F12 y elegí linuxmint . Tal como esperaba, arrancó en mi instalación de LMDE.

La forma de eliminar entradas no deseadas a través de efibootmgr es:

# efibootmgr -b 2 -B

Usé este comando para eliminar las entradas 0001 y 0002 . Opción 0001 fue del último de mis muchos intentos de recuperar el sistema operativo.

Notas UEFI

Si está leyendo esto y está tan frustrado con UEFI como yo/estaba, aquí hay algunas notas y recursos:
» Arrancar en UEFI Shell es similar a usar un shell de DOS.
» Intel creó un manual de referencia en PDF para los comandos de efi shell.
» El documento UEFI_on_TS430 de Lenovo es el único recurso que he visto que explica el uso de efi shell.
» Otra referencia de shell uefi de la Guía del administrador de nPartition .
» Puede intentar arrancar en una partición desde el shell efi navegando hasta el cargador y ejecutándolo.
» UEFI quiere que el disco tenga una tabla de particiones GPT, no una tabla de partes msdos.
» UEFI quiere que la primera partición de su disco tenga el formato fat32 o vfat.
» Para un arranque "genérico" debe haber un /EFI/boot directorio en la raíz con bootx64.efi en eso.
» Algunas personas copian su grubx64.efi desde donde se instaló hasta /EFI/boot/bootx64.efi y este truco funcionó para ellos.
» Cada vez que realice cambios en grub, use efibootmgr -v antes y después para asegurarse de que su reinicio esté bien.

Mi experiencia con el RD430

He reinstalado el sistema operativo más de 10 veces la semana pasada tratando de resolver esto y configurar el servidor. Mi configuración es una SSD en este controlador RAID en la ranura PCIe 2.0 con LMDE instalado. Controlador RAID AOC-S3008L-L8i (actualizado en modo TI) en la segunda ranura PCIe 3.0 con 6 unidades de 3 TB. RAM:12 GB ECC (3x 4 GB).

Estos son los cambios que haría que provocaron que mi sistema no arrancara:
» Cambiar ranuras pci S3008L-L8i (dejando solo la tarjeta SSD+).
» Deshabilite el aviso de BIOS raid del software LSi para el controlador integrado.
» Agregue mi antigua tarjeta HighPoint RocketRaid a una ranura PCIe abierta.
» Haz un cambio a /etc/default/grub y luego ejecuta update-grub .
(tal vez grub-install debe ejecutarse también? )


Linux
  1. Cómo configurar hosts virtuales en Apache

  2. ¿Cómo degradar a Subversion 1.6?

  3. ¿Cómo reinstalar los controladores de gráficos predeterminados?

  4. Cómo instalar MongoDB en Debian 11

  5. Cómo instalar Docker en Ubuntu 22.04

Cómo reinstalar Ubuntu

Cómo actualizar a AlmaLinux 8.5

Cómo instalar Go en Debian 11

¿CÓMO INSTALAR NEXTCLOUD EN UBUNTU?

Cómo instalar Asterisk en Ubuntu 20.04

Cómo instalar Sendmail en Ubuntu 22.04