解决win10 home edition升级17074后virtualbox蓝屏(绿屏)无法运行的问题

 
  
第一次写博客,以前看到很多大牛的博客,真是收益匪浅啊。最近的面试,发现troubleshooting能力真的好重要。刚好我遇到了一个问题,写一下我的troubleshooting过程。问题如下:

因为学习docker和kubernetes,在virtualbox里安装了ubuntu,有童鞋会问为毛不用win10自带的ubuntu,那只是个shell啊,文件系统并不全面,有些程序是看不到的。那么为毛不用hyper-v?i am so sorry,我用的是win10 home edition,电脑买来自带的,懒得折腾系统了,升级pro还得激活-。- 说了半天你问题是啥,额,跑偏了,回来 ~ 原来系统版本是17049,vb跑的好好的,升级17074.1002后,运行虚机,直接蓝屏(请原谅17074换成绿屏了哦)。。。我还准备用这个虚机去测试面试被问到的问题呢。当然,这时候就体现你的troubleshooting的能力了。


不由分说,先看吧。蓝屏了,肯定先看蓝屏代码的,关于如何看蓝屏代码,各位童鞋可以搜索windbg相关的信息,这里省去。去打开MEMORY.DMP一看,驱动问题。 vboxdrv.sys加载符号相关,赶紧找这个文件,嗯,人家好好的,怎么办?难道是我升级了vb驱动没升级?赶紧卸载vb重装,问题依旧。后面事件查看器啊,错误信息仍然还是驱动问题。


打开打开万能的搜索引擎吧,一看,这问题挺常见嘛,赶紧打开几篇看看,哇,千篇一律,原来是hyper-v造成的,把它关掉就好了。赶紧找hyper-v在哪,打开“启用和关闭windows功能”,OMG,在哪,哪里有hyper-v?ps:当时不知道hyper-v在home版里是没有的。此处省略100字。


接下来,重点来了,既然问题不是hyper-v造成的,是不是别的程序占用了虚拟化?根据这个思路,打开win10自带的ubuntu,输入egrep "vmx|svm" /proc/cpuinfo,空的。果然,之前是有内容的。打开任务管理器>性能>CPU,明明显示的是虚拟化已启用,那么为什么ubuntu子系统找不到?那么唯一的可能就是win10自己因为某种原因劫持了虚拟化吧。那么继续,重点登场了,我们打开msinfo32.exe,神器啊,可以看到系统加载了哪些服务。结果,打开一看,真相在眼前了,基于虚拟化的安全性,状态:已启用。这个家伙肯定就是罪魁祸首了。问题是怎么禁用?接着百度,结果,可想而知,没有任何和这个相关的东东。这时候,万能的English就可以登场了,我们把这句话翻译一下,virtualization based security,赶紧去google或者bing国际版。结果发现了这篇文章:


https://docs.microsoft.com/en-us/windows/device-security/device-guard/deploy-device-guard-enable-virtualization-based-security。


微软官方的讲解这个东东的,当然讲的是如何enable,那么不由分说,赶紧disable。打开注册表,添加如下键值:


计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard -- EnableVirtualizationBasedSecurity,DWORD: 0, RequirePlatformSecurityFeatures, DWORD: 0

计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity, -- Enabled, DWORD:0 重启

再次打开msinfo32.exe,哈哈,基于虚拟化的安全性变成“未启用”了。打开vb运行虚机,完美。这里具体我就不讲了,有兴趣的看官可以参考微软的这篇文章,欢迎留言。

你可能感兴趣的:(troubleshooting)