フラミナル

1日1記事を目標にITのことについて書くブログ

【VirtualBox】vagrantを利用してVirtual Box起動しようとしたら VBoxManage.exe: error で起動しなかったので解消策

f:id:lirlia:20171010104500p:plain

問題

以下のエラーが発生しました。

c:\vagrant\centos7>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "fcfc5681-400e-405d-92cf-3a79f22f06ec", "--type", "headless"]

Stderr: VBoxManage.exe: error: The virtual machine 'centos7_default_150759569248
9_41362' has terminated unexpectedly during startup with exit code -1073741819 (
0xc0000005).  More details may be available in 'C:\Users\xxx\VirtualBox VMs
\centos7_default_1507595692489_41362\Logs\VBoxHardening.log'
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MachineWrap,
 interface IMachine

環境

  • Win7 64bit
  • vagrant 1.9.6
  • centos 7.2
  • virtualbox バージョン 5.1.28 r117968 (Qt5.6.2)

結論

MacTypeという製品を入れていたのが問題でした。

下記のサイトの手順を実施したら解消しました。

問題解決までの流れ

  • VBoxManage.exe のメッセージなので問題はvirtualboxで発生したものと判断する
  • C:\Users\xxx\VirtualBox VMs\centos7_default_1507595692489_41362\Logs\VBoxHardening.logにログが吐き出されているので確認する
  • ログを確認し、関係ありそうなところを抜粋
  • Hardened = 拒否 という文言がそれっぽいので抜き出す
…
246c.299c: Log file opened: 5.1.28r117968 g_hStartupLog=0000000000000004 g_uNtVerCombined=0x611db100
246c.299c: supR3HardenedVmProcessInit: uNtDllAddr=0000000077130000 g_uNtVerCombined=0x611db100
246c.299c: ntdll.dll: timestamp 0x598d5074 (rc=VINF_SUCCESS)
246c.299c: New simple heap: #1 0000000000280000 LB 0x400000 (for 1744896 allocation)
2950.2960: supR3HardNtEnableThreadCreation: 
246c.299c: supR3HardenedWinInitAppBin(0x0): '\Device\HarddiskVolume3\Program Files\Oracle\VirtualBox'
246c.299c: System32:  \Device\HarddiskVolume3\Windows\System32
246c.299c: WinSxS:    \Device\HarddiskVolume3\Windows\winsxs
246c.299c: KnownDllPath: C:\Windows\system32
246c.299c: supR3HardenedVmProcessInit: Opening vboxdrv stub...
246c.299c: supR3HardenedVmProcessInit: Restoring LdrInitializeThunk...
246c.299c: supR3HardenedVmProcessInit: Returning to LdrInitializeThunk...
246c.299c: Registered Dll notification callback with NTDLL.
246c.299c: supHardenedWinVerifyImageByHandle: -> 22900 (\Device\HarddiskVolume3\Windows\System32\kernel32.dll)
246c.299c: supR3HardenedWinVerifyCacheInsert: \Device\HarddiskVolume3\Windows\System32\kernel32.dll
246c.299c: supR3HardenedMonitor_LdrLoadDll: pName=C:\Windows\system32\kernel32.dll (Input=kernel32.dll, rcNtResolve=0xc0150008) *pfFlags=0xffffffff pwszSearchPath=0000000000000000:<flags> [calling]
246c.299c: supR3HardenedScreenImage/NtCreateSection: cache hit (Unknown Status 22900 (0x5974)) on \Device\HarddiskVolume3\Windows\System32\kernel32.dll [lacks WinVerifyTrust]
246c.299c: supR3HardenedDllNotificationCallback: load   0000000077010000 LB 0x0011f000 C:\Windows\system32\kernel32.dll [fFlags=0x0]
246c.299c: supR3HardenedScreenImage/LdrLoadDll: cache hit (Unknown Status 22900 (0x5974)) on \Device\HarddiskVolume3\Windows\System32\kernel32.dll [lacks WinVerifyTrust]
246c.299c: supR3HardenedDllNotificationCallback: load   000007fefcfb0000 LB 0x0006a000 C:\Windows\system32\KERNELBASE.dll [fFlags=0x0]
246c.299c: supHardenedWinVerifyImageByHandle: -> 22900 (\Device\HarddiskVolume3\Windows\System32\KernelBase.dll)
246c.299c: supR3HardenedWinVerifyCacheInsert: \Device\HarddiskVolume3\Windows\System32\KernelBase.dll
246c.299c: supR3HardenedMonitor_LdrLoadDll: returns rcNt=0x0 hMod=0000000077010000 'C:\Windows\system32\kernel32.dll'
2950.2960: supR3HardNtChildWaitFor[1]: Quitting: ExitCode=0xc0000005 (rcNtWait=0x0, rcNt1=0x0, rcNt2=0x103, rcNt3=0x103, 57 ms, CloseEvents);
  • ↑のログだけだと特定できないので+でログを見る
2950.2960: '\Device\HarddiskVolume3\Program Files\Oracle\VirtualBox\VBoxHeadless.exe' has no imports
2950.2960: '\Device\HarddiskVolume3\Windows\System32\apisetschema.dll' has no imports
2950.2960: '\Device\HarddiskVolume3\Windows\System32\ntdll.dll' has no imports
  • VBoxHeadless.exe' has no importsという気になるメッセージを見つける
  • VMwareのvmware toolsみたいなやつが必要なのか? と当たりをつける
  • VBoxHeadless.exe' has no importsを検索
  • https://www.virtualbox.org/ticket virtualboxのissue管理サイトをみつける
    • Hardenedは hard+denyの過去形かと思ったけどHardenedで一つの単語と知った… 意味は焼入れらしい… 関係なかった…
  • 調べてもあまりでてこないので2950.2960: supR3HardNtChildWaitFor[1]: Quitting: ExitCode=0xc0000005 (rcNtWait=0x0, rcNt1=0x0, rcNt2=0x103, rcNt3=0x103, 57 ms, CloseEvents);を調べる
  • ウイルス対策ソフトと一緒に使うと起動しなくなったりするという情報をゲット。
  • ウイルスバスターをつかっているのでウイルスバスター virtualboxで検索→有力な情報はなし
  • virtualboxからGUIで起動してみる↓以下のメッセージ
The virtual machine 'centos7_default_1507595692489_41362' has terminated unexpectedly during startup with exit code -1073741819 (0xc0000005). More details may be available in 'C:\Users\xxx\VirtualBox VMs\centos7_default_1507595692489_41362\Logs\VBoxHardening.log'.

。Windows Vista Services Hardening (図 1 参照) は、信頼できるコンピューティング イニシアチブの既定設定による安全性確保の原則を具体的に実装したものであり、現存する悪意のあるソフトウェアの多くが実行する不適切なサービス動作を防ぐ重要な新機能です。Service Hardening により、マイクロソフトは Windows サービスの既定の動作とセキュリティ プロファイルを変更する点において大きな進歩を遂げました。

Error 0xC0000005 is what's known as an general protection fault or memory access error: the application tried to access an invalid memory address or jump to code which doesn't exist. Hence this is most likely a consequence of RULE2: a bad DLL got unloaded, but some other DLL is still trying to use it. You can often narrow the cause if you look at which DLL faulted. Quite often you find that the bad memory access came from a graphics related DLL, which implies that the graphics provider omitted to sign one of their DLLs. You should check for updates for your graphics card drivers.

1 If you find that the VM will not start in normal mode, but will start when run in headless mode, then that makes it pretty much certain that your problem is the graphics drivers.


エラー0xC0000005は、一般保護違反またはメモリアクセスエラーと呼ばれるものです。アプリケーションが無効なメモリアドレスにアクセスしようとしたか、存在しないコードにジャンプしようとしました。 したがって、これはRULE2の結果である可能性が最も高いです:悪いDLLがアンロードされましたが、他のDLLはまだそれを使用しようとしています。 フォールトが発生したDLLを調べると、原因を絞り込むことができます。 非常に頻繁に、グラフィックス関連のDLLからのメモリアクセスが不良であることがわかりました。これは、グラフィックスプロバイダがDLLの1つに署名するのを省略したことを意味します。 あなたのグラフィックスカードドライバのアップデートを確認する必要があります。 

1 VMが通常モードで起動せず、ヘッドレスモードで起動すると、VMがグラフィックスドライバであることがわかります。

RULE2 はこちら。

(RULE2) VirtualBox no longer "errors out" when an unsigned DLL is found. Instead the rule is that VirtualBox now merely discards the errant DLL and continues.

(RULE2)署名されていないDLLが見つかると、VirtualBoxはもはや「エラー出力」されなくなりました。代わりに、VirtualBoxは単に不当なDLLを破棄して処理を続けるというルールがあります。
  • ログを遡ってみる
    • apisetschema.dll
    • ntdll.dll がunsignedらしいです
2aa0.2024: '\Device\HarddiskVolume3\Windows\System32\apisetschema.dll' has no imports
2aa0.2024: '\Device\HarddiskVolume3\Windows\System32\ntdll.dll' has no imports
  • このDLLで検索してみるとこちらのサイトがヒット

  • ここでMacTypeというWindowsの画面をMacのようなきれいなフォントにするためのフリーソフトが悪さをしているという情報をゲットする

  • いれてないよなあ と思いながら自分のパソコンみたら「入ってたーーー」

起動した!!!!!