• Crear manualmente una partición EFI para Windows 7

    Tanto si se te ha roto la partición UEFI de arranque de windows 7 como si no tenías ninguna pero quieres crear una para pasar una máquina virtual de ProxmoxVE de legacy BIOS a UEFI (OVMF) con el objetivo de pasarle una tarjeta gráfica por PCI Passthrough, este pequeño minitutorial te ayudará a despejar las dudas sobre como hacerlo.

    Lo primero es arrancar cualquier distribución de Ubuntu Live hasta llegar al escritorio y una vez allí abrir la aplicación gparted. Una vez abierta, en el desplegable de arriba a la derecha elegimos el disco correcto donde crearemos la partición EFI (debe estar particionado con un mapa de particiones GPT/GUID) en el espacio libre del mismo creamos una nueva partición primaria de 200MB FAT32. Aplicamos los cambios y luego le asignamos la etiqueta boot (haciendo click derecho sobre la partición y eligiendo set flag), lo que nos asignará automáticamente la etiqueta esp también.

    Lo siguiente meter dentro de esa partición los archivos necesarios para que la BIOS UEFI la reconozca como una partición de arranque. Para ello crea en esa partición el siguiente árbol de directorios:

    PARTICIÓN 200MB:
                   |_ EFI
                     |_ Microsoft
                       |_ Boot
    

    Copia los siguientes archivos de un Windows 7 que ya tengas instalados:

    c:\Windows\Boot\EFI\*.*

    … dentro de la carpeta

    /EFI/Microsoft/Boot

    …de la partición de 200MB.

    Ahora hay que iniciar, en el ordenador con el disco donde tienes la partición EFI que acabas de crear, un DVD de instalación de Windows 10 64bits. Cuando llegamos a la pantalla de instalación elegimos elegimos «Reparar equipo» y luego «Consola del sistema».

    Una vez en la consola vamos a montar la partición EFI en la letra v: (que no se monta automáticamente porque está oculta). Lo hacemos con

    mountvol v: /s

    Una vez ejecutado el comando anterior vamos a proceder a crear el resto de archivos que nos faltan. Para ello ejecutamos:

    bcdboot c:\Windows /l es-ES /f UEFI /s v:

    Ese comando nos habrá creado el directorio:

    v:\EFI\Boot

    … con algunos archivos que nos hacían falta. Pero aún nos falta el almacén BCD. Para ello vamos a crear uno manualmente con los cambios necesarios para lanzar Windows 7. Ejecutamos:

    bcdedit /createstore v:\EFI\Microsoft\Boot\BCD
    bcdedit /store v:\EFI\Microsoft\Boot\BCD /create {bootmgr}
    bcdedit /store v:\EFI\Microsoft\Boot\BCD /set {bootmgr} description "Cargador de arranque de Windows"
    bcdedit /store v:\EFI\Microsoft\Boot\BCD /create /d "Microsoft Windows" /application osloader

    La ejecución de la última línea de arriba nos habrá mostrado un GUID entre llaves parecido a este:

    {c0dfc4fa-cb21-11dc-81bf-005056c00008}

    Tomamos nota de él porque luego habrá que meterlo entre llaves en en la siguiente línea:

    bcdedit /store v:\EFI\Microsoft\Boot\BCD /set {bootmgr} default {GuidDelQueTomamosNota}

    Si el comando se ejecutó correctamente entonces procedemos a la ejecución de las líneas restantes.

    bcdedit /store v:\EFI\Microsoft\Boot\BCD /set {bootmgr} path \EFI\Microsoft\Boot\bootmgfw.efi
    bcdedit /store v:\EFI\Microsoft\Boot\BCD /set {bootmgr} displayorder {default}
    bcdedit /store v:\EFI\Microsoft\Boot\BCD /set {default} device partition=c:
    bcdedit /store v:\EFI\Microsoft\Boot\BCD /set {default} osdevice partition=c:
    bcdedit /store v:\EFI\Microsoft\Boot\BCD /set {default} path \Windows\System32\winload.efi
    bcdedit /store v:\EFI\Microsoft\Boot\BCD /set {default} systemroot \Windows
    bcdedit /store v:\EFI\Microsoft\Boot\BCD /timeout 1