VMwareを使っている人は多いと思う。
一台のパソコンにこのソフトをインストールすると、そのパソコンの中に仮想的に新たなパソコンのハードウェアをソフトウェア的に作成出来るのだ。
その仮想パソコン(=仮想マシン Virtual Machine)に各種のオペレーティングシステムをインストールする事が出来るのだ。これらのOSはゲストOSと呼ばれる。
一方、元々のパソコンにインストールされているOSはホストOSと呼ばれる。
さて、ワテの場合にはVMwareの無料版
VMware(R) Workstation 12 Player
と言うのを長年使っている。
ワテは使った事は無いのだがVMwareには有料版もある。
でも、無料版でも十分な機能を持っている。
そんな便利なVMwareであるが、先日そのVMwareが突然使えなくなる問題に遭遇した。
具体的には、
- Windows10の再インストール
- Windows10の大型アップデート(Fall Creator Updateなど)
のタイミングでVMwareのゲストOSが起動出来なくなったのだ。
例えばこんな画面が出る(下図)。
図 「VMware PlayerとDevice/Credential Guardには互換性がありません。」の例
これは2018年5月10日にWindows10の大型アップデート1803をインストールした後に発生した例だ。このアップデートは、April 2018 Updateとも呼ばれる。
これではVMwareが使えない。
その解決方法を必死でネット検索して無事に解決したので、自分の備忘録としてこの記事をまとめておいた。
VMwareの用途(ワテの場合)
ワテの場合、VMwareをどう言う用途に使っているのかと言うと、以下の通り。
- フリーソフト、シェアウェア、お試し版ソフトなどの実験用
- 自作プログラムでレジストリなど操作する場合の実験用
- 自作プログラムの動作検証用(WinXP,Win7, Win8.1, Win10の32/64bitなど)
ネットからダウンロードしたフリーソフトなどは、完成度の低いものも多い。兎に角インストールして試してみない事には、使い勝手などの評価が出来ないが、いきなり本番環境のパソコンにインストールはしたくない。
インストールして使ってみて使い勝手が悪かったとして、プログラムの削除で消したとしても、レジストリにゴミが残るからだ。
なので、取り合えずテストする場合にはVMware環境の実験用Windowsにインストールして試してみる。
この用途が最も多いのだが、あとは、自作のプログラムでレジストリを操作するものなどの実験用にも使う。万一本番機でレジストリを破壊してしまったら、それはもう悲惨な状況になるからだ。
あとは、自作プログラムや自作WEBサイトを各種のWindows OSで実行したり、表示したりして、正しく実行できるかどうかの確認用にもよく使う。
と言う事でVMwareはプログラム開発やWEBページ作成などしている人には必須のプログラムと言っても良いだろう。
類似のソフトには、
- Hyper-V マイクロソフトが提供するハイパーバイザベースのx64向け仮想化システム
- Virtual Box 米国オラクルが開発するx86仮想化ソフトウェア・パッケージの一つ
- Parallels アメリカのソフトウェア会社ParallelsのOS仮想化ソフト。社名と同じ名前。
などがある。
Windows10を再インストールしたら、旧仮想マシンが読み込めなくなってしまった⁉
さて、前置きが長くなってしまったが、ワテの場合、先日ワテの本番機のWindows10を再インストールした。正確に言うと本番機にSSD(756GB)を新規追加してそのSSDにWindows10をインストールし直したのだ。理由は、Windows10を入れているSSD(256GB)の空き容量が無くなって来た事と、Visual Studioというプログラム開発ソフトの調子がおかしくなったからだ。
それで思い切ってSSD 756GBを買ってWindows10を再インストールしたのだ。そのあたりの詳細は他の記事にも書いているので参考にして頂きたい。
VMwareの仮想マシンの引っ越しは簡単
仮想マシンにはWindowsなどのOSがインストールされるが、それらのデータはホストOS上のファイルに保管される。
Win7 Pro x32.vmx
のように .vmx などの拡張子が付いている。
一つの巨大なファイル(数ギガバイト~)になっている場合や、複数のファイルに分割されて保管される場合もある。
もし別のパソコン(ホストOS)にそれらのファイルを持って行って、その新しい環境にもVMwareをインストールしてその .vmx ファイルを読み込めば今まで使っていた仮想マシンを新しいホストOSの環境に簡単に引っ越す事が可能だ。
ところが、先日再インストールしたWindows10の環境に、旧Windows10上で使っていた仮想マシンのファイル .vmx をインポートしようとしたところ、以下のメッセージが出て読み込めない。
VMware Player と Device/Credential Guard には互換性がありません。
図1. 旧Win10環境で作成した仮想マシンを新Win10で読み込んだ時のエラーメッセージ
こんなのが出る。
そのメッセージは以下の通り。
VMware Player と Device/Credential Guard には互換性がありません。
VMware Player は Device/Credential Guard を無効にした後で実行することができます。
詳細については、http://www.vmware.com/go/turnoff_CG_DG を参照してください。
う~ん、何のこっちゃサッパリ分からん。
まあ、詳細は上のURLの説明を見ろと言う事なので開いてみた。
それが下に示す画面キャプチャしたページだ。
図2. Device/Credential Guard のエラー対策方法
取り合えず開いてみたが、英文だ。
それに赤枠で囲ったように、やる事が多くて何かややこしそう。
その手順を以下に引用した。
Windows 10 host where Credential Guard or Device Guard is enabled fails when running Workstation (2146361)
Symptoms
Running Workstation on a Windows 10 host where Credential Guard or Device Guard is enabled fails with a blue diagnostic screen (BSOD).
Purpose
This article provides steps to disable Credential Guard or Device Guard for a Windows 10 Enterprise host.
Cause
This issue occurs because Device Guard or Credential Guard is incompatible with Workstation.
Resolution
To disable Device Guard or Credential Guard:
Disable the group policy setting that was used to enable Credential Guard.
- On the host operating system, click Start > Run, type gpedit.msc, and click Ok. The Local group Policy Editor opens.
- Go to Local Computer Policy > Computer Configuration > Administrative Templates > System > Device Guard > Turn on Virtualization Based Security.
- Select Disabled.
- Go to Control Panel > Uninstall a Program > Turn Windows features on or off to turn off Hyper-V.
- Select Do not restart.
- Delete the related EFI variables by launching a command prompt on the host machine using an Administrator account and run these commands: mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d “DebugTool” /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path “\EFI\Microsoft\Boot\SecConfig.efi”
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
mountvol X: /d
Note: Ensure X is an unused drive, else change to another drive.- Restart the host.
- Accept the prompt on the boot screen to disable Device Guard or Credential Guard.
If you have a machine with Legacy BIOS boot:
- Open the command prompt as Administrator on host.
- Run this command: bcdedit /set hypervisorlaunchtype off
- Reboot the host.
Note: To find EFI or BIOS type msinfo32.exe in the Run tab.
Request a Product Feature
To request a new product feature or to provide feedback on a VMware product, please visit the Request a Product Feature page.
補足
2015/5/11 追加
上で紹介した英文の手順をこの後実行する。
確かにその手順を実行したら無事にVMwareが起動できるようになった。
ところがWindows10の大型アップデートを実行すると、VMware起動時に再び冒頭で紹介したエラーが出て起動できない。
「VMware PlayerとDevice/Credential Guardには互換性がありません。」
が表示されるのだ。
実際、2018年5月10日にワテのWindows10パソコンに
大型アップデート1803 (April 2018 Update)
をインストールした直後にも同じエラーが出てVMwareが起動出来なくなった。
その場合も上で紹介した英文の手順を実行しても良いと思うが、もっと簡単に解決する方法もある。
つまり、以下のコマンドを実行するだけで良い。
HyperVをOFFにする(VMwareを使えるようになる)
# To disable write in command prompt this : bcdedit /set hypervisorlaunchtype off # to enable run this : # bcdedit /set hypervisorlaunchtype auto
ワテの場合はこのDOSのコマンドをバッチファイルにしてデスクトップに保管している。
"HyperV-OFF [VMware].bat"
こんなファイル名だ。ヘンテコだ。
今回、大型アップデート1803 (April 2018 Update)インストール後にVMwareが起動出来なくなった時には上のコマンドを実行すると解決した。
つまり、この後紹介する英文のコマンドを翻訳した手順を実行しなくても良かった。
なお、Hyper-Vを有効化したい場合もある。
HyperVをAUTOにする(VMwareは使えない)
ワテの場合は、Visual Studio Emulator for Androidを時々使う。
文字通り、Visual StudioでAndroidアプリを作成する場合にAndroid端末をエミュレーションするソフトだ。
それを使う場合にはHyper-Vが必要になる。
その為には以下のコマンドを実行する。
# To disable write in command prompt this : # bcdedit /set hypervisorlaunchtype off # to enable run this : bcdedit /set hypervisorlaunchtype auto
同じくこのコマンドもバッチファイルにしてデスクトップに保管している。
"HyperV-AUTO.bat"
こんなファイル名だ。
VMware公式サイトの英文の解決手順を実行する
う~ん、ややこしそう。でも、やらなしゃあない。
一行ずつ解読しながら実行したら、いちおう上手く行ったようだ。
以下、その手順。
なお、説明通りやってもエラーが出たのでワテ流に適当に修正してやったら上手く行ったようだ。
① Disable the group policy setting that was used to enable Credential Guard.
何や知らんが、現状はCredential Guardと言うのが有効化されているのでそれを無効化する。
その為には、
Startボタン > ファイル名を指定して実行
で gpedit.msc と入れて Okボタンをクリック。
ローカルグループポリシーエディタが開く(下図)
ローカルコンピュータポリシー > コンピュータの構成 > 管理用テンプレート > システム > Device Guard > 仮想化ベースのセキュリティを有効にする
を開く(下図)。
図3. ローカルグループポリシーエディタでDevice Guardの設定を開く
上図で現状では「仮想化ベースのセキュリティを有効にする」は未構成になっているので、ダブルクリックして変更メニュー画面を開く。
- 未構成
- 有効
- 無効
の三つから選択出来るので無効を選択する(下図)。
図4. ローカルグループポリシーエディタでDevice Guardの設定を無効化した
これで、ローカルグループポリシーエディタでの作業は完了。
次に、
② コントロールパネル > プログラムと機能 > Windowsの機能の有効化または無効化
を開く(下図)。
図5.インストールされているHyper-Vのチェックを外してOKをクリックする
上図は、Hyper-V関連機能のチェックを全部解除した状態だ。
元々は全部にチェックが入って有効化されている。
それを図のように全解除してからOKをクリックしてHyper-V関連ソフトを全部無効化する。
OKボタンをクリックすると、十秒くらい掛かってその処理が行われる。
Hyper-Vの無効化処理が完了すると下図が出る。
図6. デフォルトでは今すぐ再起動になっているが、ここでは再起動をしないを選択する
英文の指示でも
Select Do not restart.
となっているので、ここでは再起動をしない。
次に、DOSのコマンドプロンプトを管理者で起動する(右クリックメニューを開き管理者で実行する)。
ここからがややこしい。良く分からんDOSコマンドだ。
まあ、言われた通りやってみる。
注意(2017/12/26)
以下では、「mountvol X: /s」と言うコマンドでEFIパーティションを(未使用の)X:ドライブへと割り当てるコマンドを実行します。
もし既に皆さんのパソコンにXドライブが存在していて、何らかの別の用途に使われている場合には、最悪、データが破壊されたり、パソコンが起動しなくなるなどの危険性があります。
ですので、もしXドライブが既にある場合には、他の未使用のパーティションを作成して別のアルファベット文字を割り当てて(例えばY)下さい。
その後、以下の一連のコマンドに出て来るXをYに変えて実行して下さい。
詳細は、下のほうにある柊様から頂きました詳しいコメントを参照して下さい。
注意(2016/11/10)
本記事の末尾コメントに読者のToshi様から頂きました貴重な情報によりますと、管理者権限でコマンドプロンプトを開いておくと以下の作業でエラーせずに上手く行くとの事です。
追記(2017/10/19)管理者権限でもエラーした
本日、Windows 10向けの2017 Fall Creators Updateをインストールしたら、またしても
「VMware Player と Device/Credential Guard には互換性がありません。」
のエラーが出てゲストOSを起動出来ない問題が起こった。
それでこの記事の手順を実行したのだが、その時に下の記事中にある / s の件を管理者で実行して試してみた。
mountvol X: /s
ところが、残念ながら管理者で実行しても /s があるとエラーが出た。
なので、 /s 無しでやるとエラーは出ない。
mountvol X:
上のように /s 無しで実行して、その後のコマンドを実行した。
そのやり方でも無事に今回の問題を解決出来た。
さて、ここでDOSのコマンドプロンプト画面を出す。
念のために右クリックして管理者で開いた。
mountvol X: /s
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d “DebugTool” /application osloader
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path “\EFI\Microsoft\Boot\SecConfig.efi”
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
mountvol X: /d
図7. 良く分からんがこの数個のDOSコマンドを実行する必要がある
まず、上に示したコマンドは、8つのコマンドがまとめて書いてあるので、一個ずつ上から実行する。
一つ目
C:\>mountvol X: /s パラメーターが間違っています。 C:\>
あかん、エラーしよった。
どう言うこっちゃ?
ここはネット検索してみたら、どうやら /s が間違いのようだ。
それと、事前にXドライブを作成しておく必要があるのだ。
英文解説にも書いてあった。
Note: Ensure X is an unused drive, else change to another drive.
と言う事なので、念のためにXドライブを作成しておく事にした(下図)。
図8. 取り合えず空きディスクにX:と言う名前のドライブを作成した。
で、/s を取って実行してみた。
C:\> mountvol X:
特にエラーなどは出ないので成功したのかな? (1/8)
注意 本日2017/12/08にこの作業↑を再び行ったら今回はエラーは出なかったが、十数行に渡る出力が表示された。意味は未確認。まあエラーでは無さそうだったので次に進んだら上手くいった。
次に進む。
C:\> copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y 指定されたパスが見つかりません。 0 個のファイルをコピーしました。
もうエラー出まくり。
どうやらX:ドライブの中に事前に、
X:\EFI\Microsoft\Boot\
と言う名前のフォルダを作成しておく必要があるようだ。
なので手作業で作成した。
そして再び copy コマンドを実行した(下図)
C:\> copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y 1 個のファイルをコピーしました。
成功したようだ。(2/8)
ここからは、bcdedit と言う初めて見るコマンドなので、意味も全く分からないがそのまま実行する。
C:\> bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader エントリ {0cb3b571-2f2e-4343-a879-d86a476d7215} は正常に作成されました。
成功した。(3/8)
C:\>bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi" この操作を正しく終了しました。
成功した。(4/8)
C:\>bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215} この操作を正しく終了しました。
成功した。(5/8)
C:\>bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS この操作を正しく終了しました。
成功した。(6/8)
C:\>bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X: この操作を正しく終了しました。
成功した。(7/8)
C:\>mountvol X: /d C:\>
成功した。(8/8)
なお、この8番目のコマンドを実行すると、X:ドライブがアンマウント?されるようでドライブに割り当てていたX:が解除されてしまった。その結果X:ドライブが見えなくなる。
もし必要なら、そのパティションに再びX:を割り当てれば良い。あるいは作業用に作成したX:なのでパティションごと削除しても良いかも。
いずれにしても何のためにこのX:を使ったのかは未確認。
兎に角上手く行ったようだ。
ここで再起動する。
早速、旧Win10で作成していた仮想ファイルを読み込んでみる。
図9. 旧Win10で使っていた仮想マシンを読み込んでみた
いい感じで読み込んでいる。
この後、無事に仮想マシンが起動出来たので成功!!
まとめ
約1時間くらい掛かったが、古いWindows10で使っていた仮想マシンを無事に新Windows10のVMwareの環境へ引っ越す事が出来た。
当初は「VMware Player と Device/Credential Guard には互換性がありません。」と言う訳分からんメッセージが出たのでさっぱり分からなかったが、指示通りやったら無事に出来た。
ただし、
C:\> mountvol X: /s
ではなくて、
C:\> mountvol X:
とするのが良いみたい。
でも詳細は分かっていないので皆さん確認して下さい。
もし詳しい事が分かったら教えて頂けると嬉しいです。
しかしまあ、VMwareさんも、このあたりのトラブルに関して英文解説しか無いし、またその説明も間違っているとなると、利用者は混乱すると思う。
出来れば、コマンド一発で上記の一連の作業が一発で実行出来るようにするツールなど用意すれば良いのに…
仮想化関連
著者は日本仮想化技術株式会社らしい。一体全体どんなに仮想化が好きな会社なのか気になる。
有名な製品だ。でも使った事が無い。
こう言うのを付けると仮想現実の世界に行けるのか。
一度試してみたい。
コメント
失礼ながら一言
コマンドプロンプトを管理者で実行すると『mountvol X: /s』で正常に終わります。
また、『X:\EFI\Microsoft\Boot\』も作成する必要がありません。
Toshi様
この度は、大変貴重なご指摘を頂きましてありがとうございます。
世界的に有名なVMwareなので、その解説ページの説明が間違っているはずは無いとは思っていたのですが。
私の場合には、確かに普通にコマンドプロンプトを起動して作業を行ったのでそれがエラーの原因だったと言う事ですね。
なるほど。この手の作業は、まずは管理者でコマンドプロンプトを開くと言うのが重要ですね。
ありがとうございました。
当方もWindows10のFall Creators UpdateでVMwareが動かず、こちらにたどり着きました。
> 6. ここからがややこしい。良く分からんDOSコマンドだ。
ここからの作業ですが、OSのインストールがレガシーモードかUEFIモードかで変わってくるようです。
UEFIモードでインストールされている場合はEFIパーティションが存在するため、コマンドラインでの作業が必要となるようですが、レガシーモードでインストールされている場合はEFIパーティションが存在しないため、5までの手順(Hyper-Vの無効化)までで大丈夫なようです。
(当方はレガシーモードでインストールされていたため、そこまででVMwareの動作が確認ができています。絶対に大丈夫、という保証はできませんが…)
レガシーモードかUEFIモードかは「msinfo32」というコマンドで確認可能です。
「mountvol X: /s」はItaniumベースのPCでのみ実行可能という記述がMicrosoftのページにありますので、Fall Creators Updateから変更されたのでしょうかね?
上記作業6の簡単な解説ですが、「mountvol X: /s」はEFIパーティションを(未使用の)X:ドライブへと割り当てるコマンドです。
(そのため、Xドライブを既に使用している場合は別の空きのドライブレターを指定してくださいとあります)
それ以下のコマンド群は直接操作できないEFIパーティションを一時的にX:ドライブへと割り当てて、そちらで編集を行うための操作です。
そのため、新しくXパーティションを作成して、フォルダを作成してといった作業は無駄で、最悪システムが起動不能になる可能性があるため、訂正された方が安全な様に思います。
今回は新規に割り当てたパーティションに対して操作を行い、それの割り当てが解除されたため影響がでなかったのではないでしょうか。
当方にUEFIな環境が無いため確認はできないのですが、「mountvol X: /s」の代わりに「diskpart」を使用してEFIパーティションにドライブレターを割り当てれば、同様の作業が可能ではないかと推測しています。
ただ、こちらの方法も、失敗すれば最悪OSが起動できなくなるため、十分に知識をつけてから作業を行われた方が良い様に思います。
もっと言えば、VMware側の対応がヒドイのですけどね…
コマンドの内容をしっかりと精査・考える切っ掛けになりました。
ありがとうございます。
再起動したらさっきまで快適に(というかもうずっと)快適に動いてたVMWareが突然ヘソ曲げて青くなりましたが、こちらの解説のおかげで無事治せました。
ぼくはひっかかった点は
* power shellじゃダメみたいcmdでやろう
* 空きディスク無いけど… あ、USBメモリでいいのね
* うちのハードの設定ですが、USB優先で起動しちゃうのでブートを指定してやる
それにしてもめんどくさいですねぇ
バッチくらい配布してくれないかな(有料版ならあるのかな?)
ともあれ大変たすかりました。ありがとうございます。
柊様
この度は、コメント欄にて大変詳しい解説ありがとうございました。
体調不良で寝込んでいまして、お返事遅くなりました。
>(そのため、Xドライブを既に使用している場合は別の空きのドライブレターを指定してくださいとあります)
>最悪システムが起動不能になる可能性があるため、訂正された方が安全な様に思います。
Xドライブの件、了解しました。
私の場合、Xドライブは使っていなかったので新規に作成しました。
それで上手く行ったのですね。
確かに、もしXドライブが既に存在していて何らかのデータが入っている場合には危険ですね。
その点に関しては、本文中で注意書きしておきます。
重要なご指摘大変ありがとうございました。
よぴ様
この度は、有益な情報を提供して頂きましてありがとうございました。
体調不良で寝込んでいまして、お返事遅くなりました。
>power shellじゃダメみたいcmdでやろう
私の場合、DOSのcmdプロンプトの画面でしかやった事が無いのですが、power shellはダメなのですね。
参考にさせて頂きます。
>空きディスク無いけど… あ、USBメモリでいいのね
それはXドライブの作成場所でしょうか?
もしそうなら、XドライブをUSBメモリに作成してやれば安全に出来ますね。
>バッチくらい配布してくれないかな(有料版ならあるのかな?)
そうですね、私もそう思います。
>ともあれ大変たすかりました。ありがとうございます。
私の記事が少しでもお役に立てたようで安心しました。
>>あかん、エラーしよった。
エラーコマンドを載せた上、読みにくく
全く役に立たない記事です。