Come probabilmente molti già sanno, è possibile eseguire Hyper-V (o Hyper-V Server) all’interno di una VM in funzione su versioni recenti dei prodotti di virtualizzazione di sistema di VMware (vSphere e Workstation) poiché questi forniscono anche una funzionalità per “emulare” le funzioni hardware (AMD-V o Intel-VT) richiede da hypervisor come Microsoft Hyper-V (ma anche, ad esempio, da Citix XenServer). In realtà se per Workstation è molto semplice (nelle ultime versioni c’è proprio guest Hyper-V), per vSphere vi sono comunque alcuni parametri da impostare.
Rimane decisamente più complicato, eseguire Hyper-V in una VM che giri su altri hypervisor, come ad esempio lo stesso Hyper-V (che non possiede, neppure per le VM Generation-2, la funzione di “emulazione” delle istruzioni hardware necessarie).
Il risultato è che, se provate ad aggiungere il ruolo Hyper-V tramite il Server Manager o tramite PowerShell, l’operazione fallirà con un messaggio di errore. Anche volendo la cmdlet in PowerShell non possiede una modalità in grado di forzare l’operazione ed ignorare il problema:
Install-WindowsFeature –Name Hyper-V -ComputerName <computer_name> -IncludeManagementTools -Restart
Questo perché viene riconosciuto l’hypervisor sottostante (o comunque la sua presenza).
La soluzioni, ma valida solo per ambienti di test, è fornita da questi post (in inglese):
- Installing Hyper-v Role inside VM in Hyper-v 2012 Server?
- Running nested Windows Server 2012 Hyper-V on Windows 8 Client Hyper-V & alternatives
- Nesting Windows 2012 Hyper-V VM in Windows 8 client hyper-v
Di fatto bisogna installare il Windows assessment and deployment kit per Windows 8 ed usarlo per aggiungere il ruolo in modalità off-line con i comandi:
- DISM /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V
- DISM /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V-Management-Clients
In questo modo sarà possibile testare molte delle funzionalità di Hyper-V, ma non sarà comunque possibile accendere alcuna VM.