Recuperación de una partición EFI dañada o desaparecida

El sistema sobre el que se ha trabajado arranca con EFI, y contiene dos discos duros descritos a continuación:

  • En el primer disco hay un Windows Server 2008 R2 instalado. En total, hay 3 particiones:
    1. Partición ESP (EFI System Partition)
    2. Partición MSR (Microsoft Reserved)
    3. Partición del sistema operativo.
  • En el segundo disco hay un Windows Server Core 2008 R2. En este disco hay x particiones:
    1. Partición MSR (Microsoft Reserved)
    2. Partición del sistema operativo.

Al instalar el segundo sistema operativo (Server Core en el segundo disco), los archivos de arranque se vuelcan sobre la partición ESP del primer disco, y el almacén BCD (que se ubica en dicha partición) añade una entrada para poder arrancar el Server Core.

Ocurre un desastre

Supongamos que el primer disco se rompe, y no tenemos copia ni nada que se le parezca. Y además, tenemos que arrancar como sea el Server Core que está en el segundo disco. El problema que tenemos:

  • El segundo disco no tiene una partición ESP donde se almacenen los archivos de arranque.
  • No existe ningún almacén BCD que permite arrancar este sistema.
  • No hay ninguna entrada en el Firmware EFI que parmita arrancar el sistema.

Una solución

Lo siguiente se haría todo sobre el segundo disco.

1. Hacer hueco en el disco para añadir la partición EPS.

Arrancamos con el disco de instalación de Windows hasta llegar a una consola de recuperación:

# diskpart > list disk Comentario: Muestra una tabla con los discos disponibles. > select disk 0 > list partition Comentario: Muestra una tabla con las particiones disponibles > select partition > shrink desired=1024 Comentario: Reduce la partición seleccionada en 1024 MB, dejando libre la misma cantidad > create partition efi size=1024 list partition Comentario: Nos aseguramos de que la partición EFI está disponible format quick fs=fat32 label="System" Comentario: Formateamos la partición ESP, y le asignamos la etiqueta System assign letter=B Comentario: Para poder acceder, le asignamos la letra B select partition 2 assign letter=C Comentario: Seleccionamos la partición de Windows, a la que le asignamos la letra C exit Comentario: salimos de DISKPART; no necesitamos hacer más cambios en la estructura del disco.

2. Crear la estructura de directorios y archivos necesarios en la partición ESP para el arranque.

Lo que en un esquema MBR es la partición de Sistema (/boot en GNU/Linux), en EFI es la partición ESP. Es decir, en dicha partición deben estar los archivos relacionados con el arranque, a saber:

  • EFI Boot Manager
  • Windows Boot Manager
  • Almacén BCD
# mkdir B:\EFI\Microsoft\Boot # xcopy /s C:\Windows\Boot\EFI\*.* B:\EFI\Microsoft\Boot Comentario: la opción /s copia directorios y subdirectorios

Ahora vamos a crear el almacén BCD.

# cd B:\EFI\Microsoft\Boot\ # bcdedit /createstore BCD Comentario: Creamos un almacén BCD vacío. # cd EFI\Microsoft\Boot # bcdedit /createstore BCD # bcdedit /store BCD /create {bootmgr} /d "Windows Boot Manager" # bcdedit /store BCD /create /d "Windows 7" /application osloader Esto devolverá un UUID de la entrada, a la que nos vamos a referir como {uuid} # bcdedit /store BCD /set {bootmgr} default {uuid} # bcdedit /store BCD /set {bootmgr} device partition=b: # bcdedit /store BCD /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi # bcdedit /store BCD /set {bootmgr} displayorder {uuid} Ahora vamos a trabajar solamente sobre la entrada osloader con su uuid. # bcdedit /store BCD /set {uuid} device partition=c: # bcdedit /store BCD /set {uuid} osdevice partition=c: # bcdedit /store BCD /set {uuid} path \Windows\System32\winload.efi # bcdedit /store BCD /set {uuid} systemroot \Windows exit

3. En caso de que la configuración anterior no sea correcta, por algún error, podemos acceder de nuevo a la consola de recuperación, y ejecutar el comando siguiente

# bootrec /rebuildbcd

Con esto, el sistema está ya listo para arrancar.