IMPORTANTE: a partir de Windows 10 de abril/mayo de 2019 es posible tener Hyper-V con VirtualBox (y otros hipervisores de nivel 2) funcionando a la vez en Windows sin problema, y lo explicado en este post ya no es necesario. Los detalles aquí.

Cuando descubrí la virtualización hace más de 15 años me pareció la tecnología más maravillosa del mundo. Prácticamente magia. Por aquel entonces (año 2001) escribía todos los meses varios artículos para la revista PC World, cuando aún se publicaba en papel, y debía probar mucho software (a veces en beta) que machacaba mi computadora de trabajo. Gracias a las máquinas virtuales podía montar un sistema aparte, virtualizado, y no afectar en absoluto a mi sistema operativo. Desde entonces no he dejado de usarla. Al principio usaba VMWare, luego Virtual PC... y he ido pasando poco a poco por casi todas las tecnología existentes. Desde hace ya unos cuantos años, para mi entorno personal mi elección para virtualizar es VirtualBox. Se trata de un producto gratuito, multi-plataforma y Open Source que lo único malo que tiene es que lo compró Oracle hace unos años (junto a Sun Microsystems).

El problema de utilizar VirtualBox (o cualquier otra solución similar) viene cuando tienes que hacer ciertos tipos de desarrollos bajo Windows. Y es que, por ejemplo, si vas a usar Xamarin con Visual Studio para crear aplicaciones móviles, o si estás trabajando con Docker sobre Windows, necesitas instalar obligatoriamente1 Hyper-V, el sistema de virtualización de Microsoft. De hecho Hyper-V viene incluido con Windows 10, pero por defecto está desactivado (yo por lo menos lo desactivo).

Nota1: en el caso de Docker para Windows puedes optar por utilizar Docker Toolbox en lugar de la instalación "normal" del producto. Con esta herramienta puedes instalar Docker basándolo en VirtualBox. Pero tienes la pega de que no ejecutará contenedores nativos de Windows, solamente podrás usar los de Linux.

El hipervisor de Microsoft no permite que lo utilices simultáneamente con otros hipervisores (como VirtualBox), por lo que al activarlo por ejemplo debido alguno de los motivos descritos, tu VirtualBox dejará de funcionar.

No existe manera alguna de hacerlos funcionar al mismo tiempo en la misma máquina, pero lo que sí es posible es reiniciar el equipo y que te pregunte cuál de los dos quieres usar antes de iniciar el sistema:

Menú de inicio de mi equipo con Windows 10

En la foto anterior, de mi equipo de trabajo habitual, cuando lo arranco me permite si quiero arrancar Windows 10 con Hyper-V, de la manera normal, o bien arrancarlo sin Hyper-V de modo que pueda usar otro sistema de virtualización.

Es un poco tedioso porque hay que reiniciar, pero con un buen disco duro SSD (que deberías tener sí o sí, si te dedicas a programar), un reinicio lleva 20 segundos, así que no es demasiado problema.

Vamos a ver cómo montar se menú...

Utilizando BCDEdit para crear el menú de arranque

Para poder lograr el objetivo debemos utilizar la herramienta del sistema denominada Bcdedit.exe. Se trata de una utilidad para línea de comandos que permite consultar y gestionar la configuración de arranque del sistema operativo.

Antiguamente, en máquinas basadas en BIOS, estas opciones se almacenaban en un archivo llamado boot.ini en la raíz del sistema, pero en los sistemas modernos basados en EFI (Extensible Firmware Interface, también conocido como UEFI, por Unificado) esta información se almacena en ciertas partes de memoria no volátiles, no accesibles fácilmente, de ahí la necesidad de esta utilidad.

1.- consultar y copiar la configuración actual

Antes de hacer nada, y solo por si acaso, lo suyo es que hagamos una copia de seguridad de la actual configuración de arranque, de modo que podamos restaurarla en cualquier momento si lo necesitamos.

Abre una línea de comandos como administrador, vete a una carpeta en la que quieras almacenar la información, y escribe:

bcdedit /export bootmaganer.bak

De este modo guardarás un archivo con la configuración, como copia de seguridad:

Hacer copia de seguridad

Si más adelante quieres restaurar la configuración original solo tienes que hacer:

bcdedit /import bootmanager.bak

desde la misma carpeta, y listo.

Puedes ver la configuración de arranque actual escribiendo simplemente el nombre del comando, sin parámetros:

Configuración actual de arranque

En este caso vemos la mía original, y nos fijamos en un parámetro concreto que he resaltado en la captura, que se llama hypervisorlaunchtype y que está establecido como auto.

Este es el parámetro que debemos cambiar en la configuración alternativa. Sus dos valores posibles son Auto, para que funcione Hyper-V, y Off, que desactivará el hipervisor de Microsoft al arrancar.

Vamos a modificarlo. Para ello antes debemos hacer una copia de la configuración de arranque actual:

bcdedit /copy {current} /d "Windows 10 sin Hyper-V"

Copiado de la configuración actual

Es decir, copiamos la configuración actual ({current}) y le damos un nombre a dicha copia. En mi caso le he llamado "Windows 10 sin Hyper-V" porque voy a dejar que la opción de arranque por defecto si no digo nada sea la que tiene Hper-V activado. Si quisieses que fuese al revés, le podrías llamar a la copia "Windows 10 con Hyper-V", por ejemplo.

2.- Cambiar la configuración de Hyper-V

Vale, una vez creada la copia lo que tenemos que hacer es modificar una de las dos, la actual o la nueva, para que no tenga Hyper-V activado. Por ejemplo, vamos a modificar esta nueva copia con esta opción.

Copia el identificador de la nueva configuración (el GUID entre llaves que te muestra al terminar la operación anterior), y en la misma línea de comandos administrativa escribe:

bcdedit /set {El_GUID_apropiado} hypervisorlaunchtype off

cambio de parámetro de Hyper-V

Listo. Con esto habrás cambiado la configuración apropiadamente. Puedes comprobarlo viendo de nuevo la configuración con bcdedit:

Listado de las configuraciones de arranque existentes

A partir de ahora cuando arranques te saldrán las opciones que veíamos en la primera captura de pantalla del post y podrás elegir si usar o no Hyper-V.

3.- Parámetros extra para configuración

El menú de elegir las opciones aparece por defecto durante 30 segundos. Para mi es mucho tiempo. Con 5 segundos es más que suficiente. Puedes modificar el tiempo en el que está disponible antes de elegir la opción por defecto tocando el parámetro timeout de la configuración de arranque (en la figura anterior puedes ver que el mío está en 5 segundos), usando este comando:

bcdedit /timeout 5

Si una vez hechos los cambios quieres que la segunda opción (sin Hyper-V en nuestro ejemplo) sea la opción por defecto, puedes hacerlo con el parámetro default, que también se ve en la figura anterior. Puedes escribir:

bcdedit /default {GUID}

indicando el GUID de la opción que quieras que sea la que va por defecto.

También puedes cambiar el orden en el que se muestran usando la opción displayorder, así:

bcdedit /displayorder {GUID_1} {GUID_2} .... {GUID_N}

Fíjate en que la opción original es la que tiene por identificador {current}, que es el que debieras usar para identificarla en la lista.

El comando tiene muchas opciones que puedes consultar, y que pueden resultar muy útiles para cosas concretas. Ten cuidado al utilizarlo para no cargarte nada, y haz siempre una copia de seguridad como hemos visto.

¡Espero que te resulte útil!

Escrito por un humano, no por una IA