Sony VAIO with Insyde H2O EFI bios Windows 8 / Linux GRUB2 Dual boot

Recientemente he adquirido un Sony Vaio Duo 11 con una sorpresa envenenada dentro: Una BIOS Insyde H2O bloqueada para sólo arrancar Windows.

Para poder arrancar Linux se ha de sobreescriibir un archivo EFI de Windows, pero cada vez que arrancas Windows restaura el original.

Por fin he encontrado una solución para evitar ésto, y este método es válido para Windows VISTA, Windows 7 y Windows 8


0. Desactivamos Secure Boot de la BIOS.

1. Instalamos nuestro Sistema Linux habitualmente.

2. Configuramos la partición EFI si no está ya. En el caso de este VAIO es raro, y usa dos particiones EFI, sda1 y sda3. Si tu caso es el mismo, se ha de configurar sda3 como partición EFI. En fstab:
/dev/sda3        /boot/EFI    vfat        noatime        0 1
3. Reiniciamos el PC con Linux, para que esté todo correcto.

4. Configuramos grub2 para añadirle el arranque de Windows 8 en el archivo de 'custom' de GRUB2, /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Windows 8" {
#    search --fs-uuid --no-floppy --set=root 8eca6905-3be1-4d44-a710-09dd7f0ee521 # Used physical partitions instead UUID
    set root='hd0,gpt3'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi.bak
}

5. Aquí está el truco: InsydeH2O sólo carga Windows, y Windows restaura su arranque cada vez que se inicia. Entonces hemos de falsear el archivo de Windows y hacer que Windows no lo restaure. Para ello hemos de cambiar el EFI y la copia que hay en Windows:

Rehacemos toda la configuración para que esté incluido Windows:
VAIO ~ # grub2-mkconfig -o /boot/grub2/grub.cfg
VAIO ~ # grub2-install --efi-directory /boot/EFI/

Falseamos el archivo EFI de arranque de Microsoft guardando una copia para poder arrancar Windows 8
VAIO ~ # cd /boot/EFI/
VAIO EFI # cp EFI/Microsoft/Boot/bootmgfw.efi EFI/Microsoft/Boot/bootmgfw.efi.bak
VAIO EFI # cp EFI/gentoo*/grubx64.efi EFI/Microsoft/Boot/bootmgfw.efi
* Cambia la carpeta gentoo por la ruta donde tu distribución guarde el gestor de arranque.

Y falseamos la copia que tiene Windows, para que al reiniciar sean iguales:
VAIO EFI # cp EFI/Microsoft/Boot/bootmgfw.efi /mnt/windows/Windows/Boot/EFI/bootmgfw.efi
VAIO EFI # cp EFI/Microsoft/Boot/bootmgfw.efi.bak /mnt/windows/Windows/Boot/EFI/bootmgfw.efi.bak


Con ésto tenemos GRUB2 instalado y podemos arrancar cualquiera de los dos OSs sin que Windows nos lo estropee








I recently purchased a Sony Vaio Duo 11 with a poisoned surprise inside: A Insyde H2O BIOS locked to only boot Windows.

To boot Linux have to overwrite EFI Windows file, but every time you boot Windows restores the original one.

I finally found a solution to prevent this, and this method is valid for Windows VISTA, Windows 7 and Windows 8


0. Disable Secure Boot on BIOS.

1. Install Linux in our system as usual.

2. Configure the EFI partition if not already. The case of this VAIO is rare, and EFI uses two partitions, sda1 and sda3. If your case is the same, sda3 has to be configured as EFI partition. In fstab:

/dev/sda3        /boot/EFI    vfat        noatime        0 1


3. Restart the PC with Linux, so that everything is correct.

4. We configure grub2 to add the Windows 8 boot file 'custom' of GRUB2, /etc/grub.d/40_custom


#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "Windows 8" {
#    search --fs-uuid --no-floppy --set=root 8eca6905-3be1-4d44-a710-09dd7f0ee521 # Used physical partitions instead UUID
    set root='hd0,gpt3'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi.bak
}


5. Here's the trick: InsydeH2O only loads Windows, and Windows restores your boot each time you start. Then we have to distort the Windows file and make Windows not restored. To do this we must change the EFI and the copy on Windows:

Remake the entire configuration for Windows is included:

VAIO ~ # grub2-mkconfig -o /boot/grub2/grub.cfg
VAIO ~ # grub2-install --efi-directory /boot/EFI/

Falsify EFI boot file of Microsoft keeping a copy in order to boot Windows 8

VAIO ~ # cd /boot/EFI/
VAIO EFI # cp EFI/Microsoft/Boot/bootmgfw.efi EFI/Microsoft/Boot/bootmgfw.efi.bak
VAIO EFI # cp EFI/gentoo*/grubx64.efi EFI/Microsoft/Boot/bootmgfw.efi
* Change gentoo folder with the path where your distribution save the bootloader.

And falsify the copy you have Windows, so that when you restart are the same:
VAIO EFI # cp EFI/Microsoft/Boot/bootmgfw.efi /mnt/windows/Windows/Boot/EFI/bootmgfw.efi
VAIO EFI # cp EFI/Microsoft/Boot/bootmgfw.efi.bak /mnt/windows/Windows/Boot/EFI/bootmgfw.efi.bak


With this we have GRUB2 installed and we can start either OS without spoiling us.