Instalar openSUSE Linux 12.3 en un equipo con windows 8 y tener dual boot con UEFI

El tema es que he tenido que instalar opensuse 13.2 en un hp pavillion g6 con windows8 preinstalado... esto supone que se usa el UEFI de las narices y se complica bastante el tema del arranque. Todo esto manteniendo el sistema operativo original y las opciones de restauración.

Os cuento paso a paso como lo he hecho y sobre todo al final como he conseguido hacer el arranque doble.
Agradezco desde ya sugerencias, mejoras, pruebas y otras "alternativas" a lo que planteo que no deja de ser un "apaño bastante cutre" jeje

1 INSTALACIÓN DE OPENSUSE 12.3:
Tras la primera metedura de pata de intentar instalar la versión para 32 bits, que no arrancaba directamente el DVD, la instalación de la versión 64 bits (que es la única que va a reconocer sin usar el modo legacy de la BIOS) se efectúa sin problemas... redimensiona el espacio, instala opensuse a la primera y arrega el arranque el el UEFI.
Por cierto la detección de hardware perfecta todo funciona como debería (quien nos lo diría hace unas décadas jaja), además gnome shell va de lujo

AHORA COMO ACCEDO A MI OPENSUSE 12.3
Una vez instalado descubro que por defecto arranca windows 8 y no hay ni rastro del grub de toda la vida.
Después de mucho leer me entero que con el sistema uefi para acceder a mi sistema operativo preferido tengo que pulsar F9 durante el arranque (depende de cada equipo la tecla que sea) y luego elegir opensuse y se carga en ese momento el grub.

Obviamente funcionar funciona pero es de todo menos cómodo y estaba muy lejos de lo que esperaba.....

Y aquí es donde viene el meollo de este manual...

Como conseguir que arrancar el equipo se pueda elegir entre los sistemas operativos den el equipo sin tener que usar el rollo del F9 y además que arranque por defecto opensuse.

Existirían sobre el papel tres formas de acceder a los sistemas operativos instalados en mi equipo:

a) pulsando F9 durante el arranque y elegiendo opensuse, si no se hace nada arranca windows 8... justamente lo contrario a lo que quería.

b) usando el gestor de arranque que incluye windows 8 que permitiría acceder a otros sistemas operativos. He probado todo lo habido y por haber y no he sido capaz de hacerlo funcionar.

c) usar el grub2 de opensuse (el de toda la vida) como el gestor que nos permita elegir entre sistemas operativos.

Esta es la opción que he conseguido implementar en mi equipo no sin antes romperme la cabeza con varias pruebas hasta que lo he logrado.
En resumen en cuanto arranco mi equipo aparece el menú grub y desde allí elijo si arrancar opensuse o windows 8.

En principio lo más rápido sería "cambiar el orden en que se lanzan las opciones el uefi" y poner de primera opensuse en lugar de windows8 como está ahora. Esto se hace con el comando efibootmgr y la opción de ordenar (existe mucho material en la red sobre el tema.).
Si este método hubiese funcionado, y ese es tu caso, has terminado el manual, ya tendrás el arranque directo desde el grub2... pero en mi equipo y en otros modelos, parece ser que existe un método de seguridad que reescribe el orden en cada arranque con lo que siempre sigue arrancando en windows.

Finalmente la única forma que he encontrado de lograr lo que quería es haciendo un pequeño "apaño" y agradecería cualquier otra forma que diese los mismos resultados sin hacer lo que planteo.

Antes de empezar ya aviso que vamos a tocar archivos de arranque y cambiar archivos importantes en el arranque por lo que si no se hace con cuidado se puede quedar uno sin arranque y teniendo que restaurar en el peor de los casos.

Si ya se tiene claro el aviso vamos por partes:

Lo que vamos a hacer es "confundir" el sistema de arranque haciéndole creer que está arrancando windows cuando realmente está arrancado el grub2.. de modo que no lo cambie.

1) en la BIOS he tenido que desactivar el "arranque seguro" y en yast de opensuse indico que grub no se active como modo seguro. Necesitarmos acceder como root para manejar ciertos archivos con lo que CUIDADO con lo que se toca y hace.

2) Localizamos en el directorio /boot/efi/EFI/ en su interior veremos una carpeta llamada microsoft y otra opensuse...

3) Para entendernos, cuando el sistema de arranque se lanza en mi equipo, y como no me deja cambiar el orden, lo que hace es buscar en la capeta microsoft/boot el archivo bootmgfw.efi.

4) si navegamos en la carpeta opensuse de la misma ruta veremos el archivo grubx64.efi, que es el que queremos que nos lance en lugar de el de microsoft...

5) Antes de nada NO BORRES NINGÚN ARCHIVO, y quédate con una copia de los dos que te comento, por si algo sale mal y necesitas volver a tenerlos como estaba.

6) La solución de "andar por casa" que he encontrado es renombrar el archivo bootmgfw.efi a bootmgfw_w8.efi (por un lado para tener una copia de seguridad por si algo va mal, y por otro porque lo necesitaremos en el futuro.)

7) Copiamos el archivo grubx64.efi que antes comentaba a la carpeta donde estaba el archivo "efi" de microsoft que hemos renombrado, y lo pegamos en dicha carpeta... y lo renombramos con el nombre original del que renombramos en su momento bootmgfw.efi.

8) En este momento si reiniciamos nuestro equipo debería lanzarse automáticamente el grub2 ... Si no es así (que me sucedió a mi la primera vez) revisa que en la BIOS tengas desmarcado el arranque seguro y verifica que has renombrado correctamente los archivos y lo has copiado donde debes.

9) Todo irá bien, pero observaremos que si pulsamos la opción de windows 8 nos va a devolver al grub en vez de arrancarlo, la razón es que al "engañarlo con el archivo de arranque de opensuse camuflado con el nombre del del windows 8, está lanzando el archivo que el conoce como el único que debe lanzar, ya que así es como se llama por defecto.
Como arreglaremos esto... diciéndole que el archivo para lanzar windows8 ya no se llama bootmgfw.efi sino bootmgfw_w8.efi. (que si recordais es el archivo original que renombramos en su momento).

10) Para cambiar la referencia en el grub2 para windows 8 y cambiar el nombre de archivo por el que hemos renombrado, tendremos que editar el archivo /boot/grub2/grub.cfg (recomiendo hacer una copia de seguridad primero por si tocamos algo) y buscar la línea “chainloader /EFI/Microsoft...." (en mi caso la 173) donde reemplazaremos bootmgfw.efi por bootmgfw_w8.efi. Reiniciamos y veremos como ya podemos acceder sin problemas a ambos sistemas operativos.

9) Recuerda que puedes acceder a opensuse en cualquier momento usando la tecla F9 (o la que sea en tu equipo) para lanzar el menu de uefi para reparar o si falla el menú (por ejemplo para restaurar la copia que hicimos en su momento).

Debemos tener en cuenta que si en algún momento se actualiza el grub2 por una nueva versión o vía Yast se vuelve a generar necesitaremos volver a cambiar el parámetro indicado en el paso anterior. Obviamente después de alguna restauración de windows 8 si cambia los archivos de arranque obviamente habría que repetir el proceso completo

Espero que esto ayude a alguien y nuevamente repito que agradecería sugerencias u otras alternativas menos "cutres" como la que planteo.

Actualización a windows 8.1 :
Después de actualizar windows 8 a windows 8.1 arrancaba directamente en windows así que he tenido que acceder a opensuse vía F9 y repetir el proceso de copiado de archivos y demás... Eso si aparece un aviso en windows 8.1 avisando que el arranque seguro está mal configurado (obviamente está desactivado en la BIOS), esto se soluciona con este parche oficial de Microsoft
http://support.microsoft.com/kb/2902864

 

Fuente:http://www.forosuse.org/forosuse/showthread.php?t=30074