相关文章推荐
侠义非凡的闹钟  ·  SAS岩论 | ...·  1 年前    · 
纯真的皮带  ·  command ...·  1 年前    · 
善良的芹菜  ·  Mockito不能mock ...·  1 年前    · 
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

今天不小心 点到自己的脚本,然后自动关机了。那时正在运行虚拟机软件 就这样我的虚拟机在没有 正常退出的情况下产生以下问题!然后通过自己的百度+分析,终于把问题解决了。乌拉拉!

====================================原因分析===================================

(1)在已经运行虚拟机的S系统情况下,再点击一个新的虚拟机同样载入S系统。这个时候的特征是在任务管理会发现两个vmware.exe(图一),然后产生的警告如图二,错误提示如下(图三)。

ps: vmware.exe和vmware-vmx.exe 两个重要的进程。其中vmware-vmx.exe是主程序,虚拟机在这个进程下运行;VMware.exe是外壳程序,负责显示vmware-vmx.exe中运行的虚拟系统并解释传送各种命令和操作,是我们最常用的 VMware用户界面,该程序可重入即同时打开多个。

因为VMware Workstation是可重入的,为了避免同一个虚拟系统同时被多个VMware.exe打开操作,造成错误,所以每个VMware打开相应的虚拟机选项卡时都会先检查该虚拟机根目录下是否有*.vmx.lck的文件夹并验证其中的文件,如果该文果没有相应的合法文件,就会在该虚拟机根目录下生成*.vmx.lck文件夹,并在该文件夹下生成一个包含uuid的*.lck文件,打开虚拟机选项卡,并从主程序接收显示信息。

这个*.lck文件可以用记事本编辑。里面是uuid={一串字母数字},uuid是通用唯一识别码 (Universally Unique Identifier),它的特点就是唯一性。为的是同时只有一个vmware.exe能接受主程序的显示,并对虚拟机操作。lck是lock的缩写,即对请求资源的锁定。

VMware 虚拟机在运行时会在相应的虚拟机目录下生成三个文件 *.vmx.lck,*.vmdk.lck,*.vmem.lck 文件夹,里面包含以*.lck命名的文件。 其中的*.vmx.lck是伴随vmware.exe中选项卡的打开时生成的;另外两个是关于虚拟磁盘和内存的使用的,它们伴随着虚拟系统的运行而产生。如果关闭VMware.exe让虚拟机在后台运行, *.vmx.lck 文件夹会消失另外两个则不会。

文件中包含合法生成的uuid(通用唯一识别码)

那么将无法打开该虚拟机的选项卡(图二)。假如我们点击"Take Ownership"之后会出现以下提示(图三):

===================================解决方案===========================================

这个时候你打开子系统所在的目录,你会发现一些后缀名为lck的文件夹(图四)。删除 %虚拟机名字%.vmx.lck 文件夹或者其中的文件即可。

注意 :%虚拟机名字%为你的虚拟机名称,比如在图四则应该删除Windows XP Professional.vmx.lck即可,之后再启动虚拟机就行了。

(2) Unable to open kernel device "\\.\Global\vmx86": 系统找不到指定的文件. Did you reboot after installing VMware Workstation

错误提示:如图五,但是图五这种情况得细分。

[1]不能找到我们虚拟机主进程vmware-vmx.exe(图六),导致我们无法使用虚拟机。

这个的特征很容易判断:我们可以尝试启动一下其他的子系统,假如都无法正常启动!则可以确定使我们的虚拟机出问题了。并且在系统进程你将无法看见我们的虚拟机的主进程vmware-vmx.exe(图七)。而正常的应该是图八,可以看见vmware-vmx.exe和vmware.exe。

===================================解决方案========================================

这时候不需要重新安装我们的虚拟机,只需要我们找到我们安装虚拟机的安装包。双击进入图九,然后选择图九中的修复(repair)即可。修复成功后如图十,图十一是成功后的载入界面。

[2]其他情况的解决,

解决方法一:
对虚拟机相对应的.vmx文件进行编辑修改。(图十二)
找到这一行: vmci0.present = "TRUE"(图十三)
将 TRUE 改为 FALSE
或者 直接将这行删除。
保存此虚拟机的.vmx文件。

重新运行虚拟机。OK。

解决方法二:(不过话说这个我肿么找不到呢?英文版没有么?)
在vm软件界面上,编辑虚拟机设置。
在 虚拟机设置 -> 选项 -> 客户机隔离 ->VM通信接口(VMCI)
把启用VMCI的钩去掉。
点击确定保存。
重新运行虚拟机。OK。
解决方法三:
在命令行处输入命令“net start vmci”,执行。
重新运行虚拟机。OK。
执行成功后VM可以启动,但是虚拟机回报错“vmnet0:系统找不到指定的文件”。
解决方案为:
一(已试成功)
命令行执行“NET START VMNETUSERIF”,“NET START VMNETBRIDGE”。
二(待试)
安全模式下修改[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\intelppm]
将"Start"=dword:00000001 改成"Start"=dword:00000004
在出现 Unable to open kernel device "\\.\Global\vmx86 "后关闭VMWARE

运行 net start vmx86