Solución:
-
Arranque su computadora con un Live-USB / CD en modo UEFI. Tenía dos opciones de arranque
<flash_drive>
yUEFI: <flash_drive>
, el segundo es necesario para exponer las variables efi en/sys/firmware/efi/
así que esoefibootmgr
no falles más tarde. 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
si lo anterior le da 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 elY
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 (tabla de particiones diferente, partición separada / de arranque, etc.) y puede que no sea la única opción, pero esto 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, listo).
Como una posible simplificación del primer método, es posible arrancar directamente en el sistema en el disco duro, solo usando grub del Live CD. Probado en xubuntu 13.10 con el Live CD de xubuntu 13.10.
Asegúrese de que el arranque seguro esté desactivado en su BIOS. Inserte el CD en vivo e inícielo 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 del sistema EFI diferente.
Una vez 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ñaba y mi máquina no arrancaba.
En mi caso, es un Lenovo ThinkServer RD430 con Linux Mint Debian y parecía cualquier cosa Haría sobre update-grub o cambiar cualquier disco duro en el servidor haría que no arrancara. 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 anteriores. 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 BIOS, la respuesta de Maxine anterior 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(EFIlinuxmintgrubx64.efi)
Boot0001* LMDE Linux Mint Debian HD(1,800,15d505800,934c598c-fe3c-fd43-84a1-fa38e4f72552)File(EFIlinuxmintgrubx64.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 / #
los efibootmgr -c
comando agregó dos entradas 0000
y 0002
!
los Boot0002* Linux HD
entrada primero en el orden de inicio no es correcto.
los 0000
entrada es correcto.
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
. Como se 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 entradas 0001
y 0002
. Opción 0001
fue el último de mis muchos intentos por recuperar el sistema operativo.
Notas UEFI
Si está leyendo esto y está tan frustrado con UEFI como yo, aquí hay algunas notas y recursos:
»Arrancar en UEFI Shell es similar a usar un shell de DOS.
»Intel elaboró un manual de referencia en PDF para los comandos de shell efi.
»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 nGuía del administrador de partición.
»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 una bota” genérica “debe haber un /EFI/boot
directorio en la raíz con bootx64.efi
en eso.
»Algunas personas copian sus grubx64.efi
desde donde se instaló hasta /EFI/boot/bootx64.efi
y este truco les funcionó.
»Siempre que realice cambios en grub, utilice efibootmgr -v
antes y después para asegurarse de que su reinicio esté bien.
Mi experiencia RD430
He reinstalado el sistema operativo más de 10 veces en la última semana tratando de solucionar 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 a modo IT) en la segunda ranura PCIe 3.0 con 6 unidades de 3 TB. RAM: 12 GB ECC (3 x 4 GB).
Aquí hay cambios que haría que hicieran que mi sistema no arrancara:
»Cambie las ranuras pci S3008L-L8i (dejando la tarjeta SSD + sola).
»Deshabilite el indicador de BIOS RAID del software LSi para el controlador integrado.
»Agregue mi antigua tarjeta HighPoint RocketRaid a una ranura PCIe abierta.
»Realizar un cambio en /etc/default/grub
y luego corre update-grub
.
(quizás grub-install
necesita ser ejecutado también?)