今までHyper-V Server 2012という無償で利用可能なHyper-V専用OSを利用していたThinkPad T61で新たにHyper-V Server 2019をインストールしたところ、Hyper-Vは動作しない、というご報告です。
古いPCは、こうして徐々に役目を終えていく、という話。
ThinkPad T61でHyper-V
Linuxのテスト環境として常時起動じゃないけど複数のLinuxを動作させるために、メインPCとしては使わなくなったThinkPad T61で、無償提供されているHyper-V ServerというOSをインストールして使っていました。
Hyper-V ServerはHyper-Vだけを使うためにMicrosoftが無償提供しているWindows Server Core環境で、Windows Server OS製品のリリース後に提供されていました。最新のWindows Server 2022では提供されなくなってしまいましたが、Windows Server 2019と同等のHyper-V Server 2019まで提供されており、軽くHyper-Vを使う環境には重宝しています。
今回使っていたHyper-V Server 2012のサポート終了が来年10月に迫ってきていたので、次のバージョンにホストOSの入替をやってみたときに気づきました。
Hyper-V Serverのサポート期限
ちょっと閑話休題。
Hyper-V Serverのサポート期限(終了日)を記載しておきます。
- Hyper-V Server 2012:2023年10月10日(※R2も同一)
- Hyper-V Server 2016:2027年1月12日
- Hyper-V Server 2019:2029年1月9日
基本的にベースとなるWindows Serverと同じサポート期限が設定されています。
エラー
Hyper-V Server 2021のEOLが近づいたことでバージョンアップを検討し、Hyper-V Server 2019をクリーンインストールしました。
OSインストール後にいくつか初期設定やアプリを用意して(Core環境なのでGUIに頼れない)してから、ゲストOSを新規作成していざ起動、となったタイミングで、エラーが表示されました。
そのエラーは…
--------------------------------------------------------------
エラー詳細
--------------------------------------------------------------
[Window Title]
Hyper-V マネージャー
[Main Instruction]
選択した仮想マシンの起動中にエラーが発生しました。
[Content]
'testLinux' は起動できませんでした。
ハイパーバイザーが実行されていないため、仮想マシン 'testLinux' を起動できませんでした。
[Expanded Information]
'testLinux' は起動できませんでした。(仮想マシン ID 00000000-0000-0000-0000-000000000000)
ハイパーバイザーが実行されていないため、仮想マシン 'testLinux' を起動できませんでした (仮想マシン ID 00000000-0000-0000-0000-000000000000)。
次のアクションが問題の解決に役立つ可能性があります:
1) 物理コンピューターのプロセッサに、サポートされているバージョンのハードウェア対応仮想化が存在することを確認します。
2) ハードウェア対応仮想化およびハードウェア対応データ実行保護が、物理コンピューターの BIOS で有効になっていることを確認します (BIOS を編集してどちらかの設定を有効にする場合、物理コンピューターの電源をオフにして、もう一度オンにする必要があります。物理コンピューターをリセットするだけでは不十分です)。
3) ブート構成データ ストアに対して変更を加えた場合は、これらの変更点を見直して、ハイパーバイザーが自動的に起動するように構成されていることを確認してください。
[^] 詳細の非表示(D) [閉じる(C)]
--------------------------------------------------------------
起動しない?
調べる
Hyper-V Server動いていたんだけどな…、と思いながらちょっとづつ調べることにしました。
■Windows Server にインストールされた Hyper-v のシステム要件
https://learn.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/system-requirements-for-hyper-v-on-windows
ここの、「一般的な要件」に記載のある箇所がHyper-Vの用件になります。
ひとまず、「HYPER-V の要件を確認する方法」に記載があるように、
Systeminfo.exe
を実行して動作要件と照らし合わせることにしました。
ん?「第 2 レベルのアドレス変換: いいえ」と記載が見て取れます。試しにmsinfo32でも確認してみたら、
同じように「Hyper-V - 第 2 レベル アドレス変換拡張機能 いいえ」という表示が見て取れました。
SLATが必要
前述の「Windows Server にインストールされた Hyper-v のシステム要件」には、Hyper-Vの動作要件に64ビットプロセッサでかつ「第2レベルのアドレス変換(SLAT)」という機能のサポートが要求されています。この「第2レベルのアドレス変換」の別名をSLATといいます。ただし書きとしてHyper-Vマネージャ(のような管理ツール操作画面だけ)であればSLAT可否は問わない、という記載がありますが、ハイパーバイザを動作させるためには必須です。
必須な機能であるSLAT、調べてみたら(前述のSysteminfoやmsinfo32で表示されているように)このThinkPad T61ではサポート対象外のようです。msinfo32とかコマンドsysteminfoで確認したところでは、このように「第2レベルのアドレス変換:いいえ」と表示されており、必須要件である機能がサポートされていないことが分かりました。
2012まではこのSLATは必須ではなかったらしいのですが、Windows 8のクライアントHyper-VからSLATは動作要件として必須になった模様。(そういえば2012はWindows8より先のリリースでした。)
「Hyper-V - ファームウェアで仮想化が有効」(たぶんIntel VT)とか「Hyper-V - データ実行防止」(たぶんハードウェアDEP)は対応しているので、Windows Server 2012世代までのHyper-Vは動作していたのだが、第2レベルアドレス変換拡張機能=SLATには非対応なので、2012以降のHyper-Vホストとしては利用できない、ということだと。
Windows8(8.1)とWindows Server 2012(R2)は同世代という認識だったので、このHyper-Vの動作の違いは頭から抜けていました。
結論:
古いCore 2 Duo世代でSLAT非対応プロセッサのPCでは、Hyper-V Server 2012(Windows Server 2012)までのHyper-Vホストは可能だが、Windows 8以降のHyper-Vホストとして動作させることは不可能。
Hyper-V Server 2012のEoLまで、現状のまま利用していく、という結論に達しました。残念。