- インストールパッケージのbin/validate_virtualization_enabled.ps1スクリプトの3行目あたりを下記のように書き換えておく
# Detect if BIOS is setup to enable virtualization #$is_vm_enabled = Get-CimInstance -ClassName win32_processor | select-object -expand VirtualizationFirmwareEnabled $is_vm_enabled = $TRUE if ($is_vm_enabled) { "Virtualization is enabled" $host.SetShouldExit(0) exit } else { # if hyper-v is enabled windows will report that virtualization is disabled # check whether hyper-v is enabled $hyperv_enabled = (Get-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Hypervisor").State -eq "Enabled" if ($hyperv_enabled) { "Hyper-V is enabled, please disable before installing." $host.SetShouldExit(2) exit } else { "Virtualization is not enabled in BIOS, please enable before installing." $host.SetShouldExit(2) exit } }
BIOS/UEFI上でvirtualizationはenableにしているし、Windowsのtask managerでも仮想化=有効となっている。実際、DockerもWSLも使えている。なのに、XilinxのISEインストーラはVirtualization機能が有効になっていないと言って、インストールが進められなかった。
原因は、PCのWin32_ProcessorクラスにあるVirtualizationFirmwareEnabledが何故かFalseを返していたせい。別のPCで確認しても(もちろん、そのPCも仮想化には対応していて、BIOS/タスクマネージャは有効を示しており、Docker&WSLも使えている)、同様にこの値はFalseを返していた。
ネットで調べると、こういう機種は多く、仮想化機能の有効化をチェックする方法としてVirtualizationFirmwareEnableをチェックする方法は不適切&不確実らしい。このせいで、世界中の多くのISEユーザーは苦しんでいるに違いない。
なので、自己判断で仮想化はちゃんと使えるはず!と思うならば、上記のvalidate_virtualization_enabled.ps1スクリプトファイルを書き換えてしまおう。幸いにも、読めばすぐに理解できるスクリプトファイルで判定しているようなので、書き換えは容易だった。もし、コンパイル済みのバイナリ実行コード中でこのような確認処理が行われていたなら、見つけられなかっただろう。