-
Inicie su computadora con un USB/CD en vivo 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/
para queefibootmgr
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 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 (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? )