He intentado probar todo desde una máquina virtual inmutable para tener siempre el mismo estado inicial pero tenía problemas para virtualizar dispositivos con Genymotion (que es lo que me da problemas). Así que al final he desinstalado VirtualBox y Genymotion de mi sistema anfitrión y he hecho todas las pruebas en este último.
Durante todo el proceso he ido mirando los registros del Visor de eventos pero no daban mucha información ni en la parte de detalles así que al final he sacado más información de los logs de cada programa (que no significa que la haya entendido toda
).
La instalación de VirtualBox ha ido todo bien. La he realizado generando también los logs de instalación y no he visto nada raro. Se crea un adaptador host-only network (como es normal).
Sin embargo, al instalar Genymotion es cuando empiezan a crearse adaptadores nuevos. He revisado los logs de Genymotion también y las siguientes líneas son las que me resultan extrañas:
//...
[Genymotion:5412] [debug] [VBox] get "" from host.only.interface
[Genymotion:5412] [debug] [VBox] [findHostOnlyInterface] Looking for compatible host-only interface
[Genymotion:5412] [debug] [VBox] Call: ("list", "hostonlyifs")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] [getSavedHostOnlyInterface] Checking "VirtualBox Host-Only Ethernet Adapter" interface status ( QHostAddress("192.168.56.1") )
[Genymotion:5412] [debug] [VBox] Empty interface name
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] Creating new host-only interface
[Genymotion:5412] [debug] [VBox] Call: ("hostonlyif", "create")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] Interface "VirtualBox Host-Only Ethernet Adapter #2" created with success
[Genymotion:5412] [debug] [VBox] Call: ("list", "hostonlyifs")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] Call: ("hostonlyif", "ipconfig", "VirtualBox Host-Only Ethernet Adapter #2", "--ip", "192.168.225.1", "--netmask", "255.255.255.0")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] Call: ("hostonlyif", "ipconfig", "VirtualBox Host-Only Ethernet Adapter #2", "--ip", "192.168.225.2", "--netmask", "255.255.255.0")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] Call: ("dhcpserver", "remove", "--ifname", "VirtualBox Host-Only Ethernet Adapter #2")
[Genymotion:5412] [critical] [VBox] Return code: 1
[Genymotion:5412] [critical] [VBox] Output command: "VBoxManage.exe: error: Failed to find DHCP server for host-only interface 'VirtualBox Host-Only Ethernet Adapter #2' (network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #2')"
[Genymotion:5412] [warning] [VBox] 1 "VBoxManage.exe: error: Failed to find DHCP server for host-only interface 'VirtualBox Host-Only Ethernet Adapter #2' (network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #2')\r\n" ""
[Genymotion:5412] [debug] [VBox] Call: ("dhcpserver", "add", "--ifname", "VirtualBox Host-Only Ethernet Adapter #2", "--ip", "192.168.225.100", "--netmask", "255.255.255.0", "--lowerip", "192.168.225.101", "--upperip", "192.168.225.254", "--enable")
[Genymotion:5412] [debug] [VBox] Return code: 0
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] DHCP server created with success
[Genymotion:5412] [debug] [VBox] set "VirtualBox Host-Only Ethernet Adapter #2" to host.only.interface
[Genymotion:5412] [debug] [VBox] [createHostOnlyInterface] "VirtualBox Host-Only Ethernet Adapter #2" host-only interface is ready to use
[Genymotion:5412] [debug] [VBox] Restart adapter "VirtualBox Host-Only Ethernet Adapter #2"
[Genymotion:5412] [debug] [VBox] Execute "powershell" ("-WindowStyle", "Hidden", "-command", "start-process -verb RunAs -filepath wmic -argumentlist 'path', 'win32_networkadapter', 'where name=\"VirtualBox Host-Only Ethernet Adapter #2\"', 'call', 'Disable'")
No sé muy bien a qué hace referencia el host.only.interface de la primera línea del log pero parece que no obtiene ningún adaptador de ahí y por eso aparecen varias ventanas de control de cuentas de usuarios para permitir la ejecución de VirtualBoxInterface (que es lo que crea el nuevo adaptador). Aparecen 3 ventanas seguidas de VirtualBoxInterface y después una de WMI (última línea del log anterior) y si das permiso a esta última vuelven a aparecer otras 3 ventanas de VirtualBoxInterface.
Después de muchas pruebas he descubierto que para que funcione tengo que permitir la ejecución de las ventanas de VirtualBoxInterface y cuando aparece la de WMI cancelar esta última (porque vi que estaba deshabilitando el adaptador). Así ya no aparecen más ventanas de permisos de ejecución y el dispositivo virtual se inicia correctamente.
Logs generados en una ejecución correcta:
[Genymotion Player:8316] [debug] [VBox] get "VirtualBox Host-Only Ethernet Adapter #3" from host.only.interface
[Genymotion Player:8316] [debug] [VBox] [findHostOnlyInterface] Looking for compatible host-only interface
[Genymotion Player:8316] [debug] [VBox] Call: ("list", "hostonlyifs")
[Genymotion Player:8316] [debug] [VBox] Return code: 0
[Genymotion Player:8316] [debug] [VBox] [getSavedHostOnlyInterface] Checking "VirtualBox Host-Only Ethernet Adapter #3" interface status ( QHostAddress("192.168.157.2") )
[Genymotion Player:8316] [debug] [VBox] [getSavedHostOnlyInterface] "VirtualBox Host-Only Ethernet Adapter #3" Interface seems compatible
[Genymotion Player:8316] [debug] [VBox] Call: ("list", "dhcpservers")
[Genymotion Player:8316] [debug] [VBox] Return code: 0
[Genymotion Player:8316] [debug] [VBox] [checkIfInterfaceHasValidDhcp] "HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #3" DHCP server is associated with "VirtualBox Host-Only Ethernet Adapter #3" interface
[Genymotion Player:8316] [debug] [VBox] [checkIfInterfaceHasValidDhcp] "VirtualBox Host-Only Ethernet Adapter #3" interface is compatible
Como se puede ver en este caso, la primera entrada obtiene el adaptador #3 de host.only.interface y entonces ya no tiene que crear más adaptadores y funciona todo bien.
Al momento de hacer las pruebas, noté que el adaptador #3 no aparecía en los adaptadores como Host-Only Network #3 (Host-Only Adapter #3) sino como Ethernet #3 (Host-Only Adapter #3). Pero ahora sí aparece como Host-Only Network #3.
He borrado todos los adaptadores de VirtualBox que se me habían ido creando durante las pruebas y he dejado únicamente el primero que se crea al instalar VirtualBox y este (el #3) que es el que funciona.
No entiendo por qué con el primer adaptador falla y con este funciona bien. He comprobado que el adaptador 1 estuviese habilitado y con el DHCP habilitado (resumiendo: misma configuración que el #3).