Como hacer funcionar VeraCrypt en un dualboot con Debian y Windows 10 en UEFI

Saludos a toda la gente que (aún) lee este blog cuando se me ocurre escribir algo o cuando he pasado por un trip en stack overflow gracias a un software con bugs. En este caso VeraCrypt.

La historia (omite este pedazo si vienes solo por el procedimiento)

Hace poco me compré una computadora gracias a que en la universidad necesitaba correr el visual studio y un emulador de mac OSX (#guacala), y como virtualizar ya se me estaba haciendo problemático en mi antigua pc por la edad (maquina de gama baja de hace 10 años). Durante el curso tuve que lidiar con bitlocker el cual desactive a la primera oportunidad, por que es un windows home y no tiene herramientas para modificar el comportamiento de bitlocker y para instalar debian tenía que desactivar secure boot, lo que me condenaba a recuperar el bootloader cada ves que iniciaba windows. Cuando ya tuve listo mi debian con LUKS era hora de encriptar la partición de windows.. pero bitlocker no es una opción en esta computadora por lo que  investigando encontré veracrypt, solo que tenía un problema: Cuando se tiene  un setup dualboot en una pc con UEFI se desactiva la opción de “sistema multiboot”, ¿para que sirve esa opción me diran? sirve para ajustar los bootloader de todos los sistemas operativos instalados en la computadora para poder bootear en orden y armonía (aka poder usar la pc normalmente).

Procedimiento

Paso 1:  Encripta tu partición linux primero.

Si ya hiciste este paso omitelo, igual si no quieres encriptar la partición de Linux por cualquier razón.

Es recomendable hacer este paso primero y durante la instalación del sistema operativo por que LUKS requiere hacer un wipe de las particiones a encriptar (creo que se puede omitir pero es menos seguro), asi que es mejor tener ya listo el cifrado en las particiones linux (recuerden dejar /boot sin encryptar).

Paso 2: Encriptar la partición de sistema en windows con VeraCrypt

Realicen este paso con la opción “Single OS” o “sistema operativo único” el cual realiza la encripción de windows pero no toca el orden de los bootloader, si tienen otras particiones windows además de la partición del sistema encriptenlas a parte con veracrypt (volume encryption).

Todo bien, pero cuando reinicien no aparecerá GRUB sino solamente el bootloader de VeraCrypt y windows.

Paso 3: Cambiar el orden de los bootloaders desde Windows con EasyUEFI

Si, es software privativo (si conocen un editor libre de entradas de UEFI me las dejan en los comentarios), solo coloquen la entrada “debian” al principio (si tienen otro OS que no es debian debe estar identificado igualmente).

Al reiniciar aparecerá GRUB como siempre, pero cuando quieran iniciar windows aparecerán errores alarmantes de boot y el sistema intentará recuperarse fallando horriblemente cada ves. Esto ocurre por que GRUB intenta iniciar windows desde su bootloader normal, que es inaccesible ya que está encriptado. En lugar de eso debemos hacer que GRUB inicie el bootloader de VeraCrypt.

Paso 4: Agregar el bootloader de VeraCrypt a GRUB

En la entrada de Lanky Cyril se nos recomienda editar /boot/grub/grub.cfg y cambiar solamente la línea del chainloader de Windows para que en lugar de ser: \EFI\Microsoft\Boot\bootmgfw.efi  Sea: \EFI\VeraCrypt\DcsBoot.efi

Esto funciona, pero nos da otro problema, grub.cfg es un archivo autogenerado, que toma su contenido derivado de las opciones de /etc/default/grub y los scripts que se encuentran en /etc/grub.d/ entonces cada ves que se actualice el sistema y grub o el kernel linux o initramfs necesiten cambios el sistema va a borrar el cambio generado en /boot/grub/grub.cfg y regresará la línea de Windows a su forma original, la cual es inutil ahora.

En lugar de  cambiar la línea de Microsoft en grub debemos crear una entrada de menú nueva para VeraCrypt, la  forma fácil es abrir /boot/grub/grub.cfg y copiar completa la menuentry de  windows, en mi caso es así:


### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (en /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-0E95-88F2' {
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 0E95-88F2
else
search --no-floppy --fs-uuid --set=root 0E95-88F2
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

 

Y lo pegamos en el final del script /etc/grub.d/#40_custom el cual está diseñado para agregar entradas manuales del menú a grub. Luego de pegarlo editamos el chainloader de esta entrada y le cambiamos nombre (en mi caso CryptLoader) para no confundirlo con la entrada normal de Windows.

Así quedó en mi caso:


#!/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 'CryptLoader for Windows (en /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-0E95-88F2' {
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 0E95-88F2
else
search --no-floppy --fs-uuid --set=root 0E95-88F2
fi
chainloader /EFI/VeraCrypt/DcsBoot.efi
}

Luego de hacer este cambio hacemos un update-grub y podemos iniciar ya con la nueva entrada la cual nos pedirá la contraseña elegida para la partición windows y nos dejará bootear con normalidad.

Anuncios

Autor: tuxwarrior

Escriptero, intento de programador, no tan intento de sysadmin y brujo segun el maitro de la avena quaker.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s