Hyper-V Role is not supported in Windows 10 Home, make sure you're on a Server or at least Windows 10 Pro
Installing Hyper-V Role on Windows 10 Pro will set the default scheduler to 0x4 (Root Scheduler). This means the VM resources will be handled by Windows automatically and cannot be altered by the user.
Before changing the scheduler, let's return the current setting:
Get-WinEvent -FilterHashTable @{ProviderName="Microsoft-Windows-Hyper-V-Hypervisor"; ID=2} -MaxEvents 1
After verifying that the scheduler is set to 0x4, we can now set it to 0x3 (Core scheduler). This allows for user-defined settings.
bcdedit /set hypervisorschedulertype core
Some Linux file systems may consume significant amounts of real disk space even when the file system is mostly empty. To reduce the amount of real disk space consumed, we can use the following command to create a tuned VHDX in PowerShell:
New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
If you already have a VHDX created and want to convert to 1MB BlockSizeBytes, use this command in powershell:
Convert-VHD -Path C:\Path\To\.vhdx -DestinationPath \Path\To\Output\.vhdx -BlockSizeBytes 1MB
DDA is often utilized for GPU passthroughs, but it can also be used for any PCI-e expansion card such as USB, Audio, NVMe / Sata, AI Accelerator.
These commands are specifically used for passing through a PCI-e USB expansion card to a HAOS VM to utilize a Zigbee dongle.
Firstly, let's list all USB type devices:
get-pnpdevice | ? {$_.class -eq “USB”} | sort-object friendlyname
Ignore generic devices such as "USB Root Hub" or "USB Composite Device". A PCI-e USB card often have unique names.
Once the specific device is found, navigate to 'Device Manager' > '{PCIe_USB_Device}' > 'Properties' > 'Details' > 'Location Paths'. The address should look something similar to 'PCIROOT(0)#PCI(1400)'
The specific PCI device now needs to be dismounted before assigned to a VM:
Dismount-VMHostAssignableDevice -LocationPath “{PCI_PATH}” -force
Finally, assign the PCI device to a VM:
Add-VMAssignableDevice -LocationPath “{PCI_PATH}” -VMName {VM_NAME}