[虚拟机_2]-Hyper-V 与 VMware/VirtualBox 不能共存

##################################################

目录

虚拟机 Hyper-V 与 VMware 虚拟机和 VirtualBox 虚拟机不兼容

莫名其妙的错误

Hyper-V 与其她的虚拟机不能共存

在服务中将 Hyper-V 服务停用以及设置成手动不能解决虚拟机冲突问题

最狠的解决办法 —— 卸载 Hyper-V

最硬核的办法 —— 一个 Windows 系统变成两个用

Windows 启动带 Hyper-V

Windows 启动不带 Hyper-V

其她解决办法 —— 升级系统和软件 !!!

深入虚拟机架构

虚拟机分为两种架构类型

寄居架构

原生架构/裸金属架构

Hypervisor 与 Typer 1/Typer 2


##################################################

虚拟机 Hyper-V 与 VMware 虚拟机和 VirtualBox 虚拟机不兼容

——————————

莫名其妙的错误

        今天想在 Linux 下测试一下 ADB

        然后发现 VirtualBox 打不开了:

VirtualBox 报错

        以管理员权限运行打开是倒是打开了

        但是不能运行虚拟机:

无法运行虚拟机

        这莫名其妙的报错???

不能为虚拟电脑打开一个新任务.
不能为虚拟电脑打开一个新任务.
不能为虚拟电脑 FreeBSD 13 打开一个新任务.

The native API dll was not found (C:\Windows\system32\WinHvPlatform.dll) (VERR_NEM_NOT_AVAILABLE).

VT-x is not available (VERR_VMX_NO_VMX).

返回 代码: E_FAIL (0x80004005)
组件: ConsoleWrap
界面: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

        还以为是莫名其妙更新了导致扩展包不匹配 重新安装对应的扩展包之后仍然如此

        无奈 只好转到 VMware 下

        然后发现 VMware 也不能启动了!!!

VMware 无法启动

        好家伙 我终于意识到问题有多严重!!!

        思来想去 越发觉得跟微软的 Hyper-V 虚拟机脱不了干系

——————————

Hyper-V 与其她的虚拟机不能共存

        最后终于找到了原因

微软的 Hyper-V 虚拟机在启用的时候 宿主机也被虚拟化了!
以至于在宿主机上直接访问 CPU 的其她虚拟技术会失效!
即使 VT-X 在 BIOS 里面开了 Intel 的 CPU 检测工具也会报告 CPU 不支持 VT-X
可以在管理员命令行下运行 bcdedit /set hypervisorlaunchtype off 之后重启来关闭 Hyper-V

Hyper-V 是一个 type 1 hypervisor
当在 Windows 中启用 Hyper-V 时 Windows 系统在硬件底层与 Windows 应用层之间插入了一层薄薄的 Hyper-V
而原来的 Windows 系统应用层则变成了一个运行在 Hyper-V 上的虚拟机!
而 VMWare 和 VBox 虚拟机使用一种被称为虚拟机监视器 Virtual Machine Monitor/VMM 的机制
是直接访问 CPU 内建的虚拟化功能,因此,她们本身不能在虚拟机环境中运行
换句话说,不支持嵌套虚拟化 nested virtualization
当 Windows 启用 Hyper-V 时 原来的 Windows 变成了虚拟机环境
偏偏 VMWare Workstation 与 VirtualBox 不能在虚拟机环境中运行
因此,运行 VMWare Workstation 与 VirtualBox 时会报错

        甚至还有其她错误

安装 Visual Studio 以后可能会导致与 VirtualBox/VMware 产生冲突
这是因为安装了 Windows Phone SDK

        冲突表现为打开 VirtualBox、VMware 创建 64 位虚拟机时,出现了如下错误:

VT-x/AMD-V hardware acceleration has been enabled, but is not operational. Your 64-bit guest will fail to detect a 64-bit CPU and will not be able to boot.
Please ensure that you have enabled VT-x/AMD-V properly in the BIOS of your host computer.

        这也是因为 Windows Phone SDK 在安装时打开了 Hyper-V 导致的

Windows Phone SDK 中的手机模拟器需要用 Hyper-V 来实现虚拟化
Hyper-V 是微软的虚拟化软件,类似 VirtualBox/VMware 可以用来创建虚拟机
她们被称为 Hypervisor 或 Virtual Machine Monitor/虚拟机监视器
由于 Hyper-V 与 VirtualBox/VMware不能共存
因此当 Hyper-V 打开时 VirtualBox/VMware 就不能正常工作了
上面错误提示中提到的 VT-x/AMD-V 是处理器的硬件虚拟化支持
已经在 BIOS 中打开了但是 Hyper-V 使用了她
于是 VirtualBox/VMware 就抱怨说 无法使用/not operational 了……

——————————

在服务中将 Hyper-V 服务停用以及设置成手动不能解决虚拟机冲突问题

        VMware 公司的 Workstation 肯定是很多人一直使用至今的
        但毕竟这是属于寄居架构的虚拟化 而原生架构的才是企业虚拟化的不二选择

        但微软的 Hyper-V 也逐渐展露头角

        在我们学习的过渡期,我们通常会希望可以同时使用 VMware Workstation 和 Hyper-V
        但似乎这两款应用充满了排斥,有时我们安装成功 可使用了 Hyper-V 服务之后,我们会发现 VMware Workstation 打不开了

        在网上看到一个方法:

既然都可以安装,只是无法一起运行,那么我们可以通过关掉 Hyper-V 的服务
就能在系统上跑 VMware Workstation 了

        于是亲自一试 cmd 命令中运行

services.msc

        以打开服务窗口:

services.msc

        找到 Hyper-V 服务

Hyper-V 服务

        发现这些服务对应的服务名在任务管理器中也能关掉:

服务

        将以下服务设置成手动:

服务名    显示名    描述        文件路径
vmms    Hyper-V 虚拟机管理    Hyper-V 的管理服务提供运行多个虚拟机的服务。    C:\Windows\system32\vmms.exe

        应用后确定

手动

        重新启动即可!

        重启之后这些服务一个没开:

服务没有启动

        看到是关闭的:

关闭

        仍然不行:

仍然不行

        这证明当前系统还是运行在虚拟机上?!!!

        以后启动 Hyper-V 虚拟机需要手动开启服务:

Hyper-V

        点击开始:

vmms

        之后可以成功运行 Hyper-V

Hyper-V

        真是偷鸡不成蚀把米 还是把服务改回自动吧:

自动

        对应的关闭命令如下

        使用管理员权限运行 CMD 输入以下命令:

bcdedit /set hypervisorlaunchtype off

    对应打开 Hyper-V 如下:
bcdedit /set hypervisorlaunchtype auto

bcdedit /set hypervisorlaunchtype off

        重启:

shutdown -r -t 0

shutdown -r -t 0

——————————

最狠的解决办法 —— 卸载 Hyper-V

        一山不容三只老虎!

        命令行 OptionalFeatures 进 启用或关闭 Windows 功能取消勾选 Hyper-V

Hyper-V

        怎么安装的就怎么卸载 完毕之后重启系统其她虚拟机就正常了!

——————————

最硬核的办法 —— 一个 Windows 系统变成两个用

%%%%%

        把一个 Windows 系统变成两个系统使用
        一个加载 Hyper-V 的驱动服务 而另个一个不加载
        但实际上系统还是一个 只是在我们启动系统时会看到两个启动菜单
        一个可以使用默认启动 Hyper-V 一个默认不启动 Hyper-V

%%%%%

Windows 启动带 Hyper-V

        创建带 Hyper-V 虚拟机的 Windows 启动项:

bcdedit /copy {current} /d "Windows 10 AND Hyper-V"

        一定要记录下返回值:

bcdedit /copy {current} /d "Windows 10 AND Hyper-V"

         此时指定这个启动项启动系统时自动启动 Hyper-V 虚拟机:

bcdedit /set {22f2bdca-a1a2-11ec-a045-e9cef8b60f00} hypervisorlaunchtype auto

bcdedit /set {22f2bdca-a1a2-11ec-a045-e9cef8b60f00} hypervisorlaunchtype auto

        如下:

Microsoft Windows [版本 6.3.9600]
(c) 2013 Microsoft Corporation。保留所有权利。

C:\Windows\system32>bcdedit /copy {current} /d "Windows 10 AND Hyper-V"
已将该项成功复制到 {22f2bdca-a1a2-11ec-a045-e9cef8b60f00}。

C:\Windows\system32>bcdedit /set {22f2bdca-a1a2-11ec-a045-e9cef8b60f00} hypervis
orlaunchtype auto
操作成功完成。

C:\Windows\system32>

%%%%%

Windows 启动不带 Hyper-V

        创建一个单纯启动 Windows 系统的启动项:

>bcdedit /copy {current} /d "Windows 10 NO Hyper-V"
已将该项成功复制到 {22f2bdcb-a1a2-11ec-a045-e9cef8b60f00}。

>

        返回值就是启动项编号 一定要记录下来

        然后在这个启动项中加入命令 开机关闭 Hyper-V 虚拟机:

>bcdedit /set {22f2bdcb-a1a2-11ec-a045-e9cef8b60f00} hypervisorlaunchtype off
操作成功完成。

>

        可以看到 WIndows 8.1 的启动编号为

22f2bdc?-a1a2-11ec-a045-e9cef8b60f00

%%%%%

        Windows r 调出运行窗口 打开系统配置:

msconfig

msconfig

        我的系统配置:

我的

        可以看到我们设置的启动项在这里了:

启动项

        设置超时 10 秒

        将 Windows 启动不带 Hyper-V 虚拟机设置为默认启动系统

        点击应用点击确定:

确认

        点击确认重启:

确认重启

%%%%%

        之后重启系统选择不带 Hyper-V 虚拟机的启动项就能启动其她虚拟机啦!!!

        虽然开机之后你看着还是在启动 vvms 服务:

服务还在

服务还在

        虽然还是有报错问题:

报错

        但是虚拟机确实能用了:

成功启动 VBox

        启动 VMware 的话必须管理员权限了 不然会报错:

没有权限

        以管理员运行 VMware 虚拟机可以启动:

VMware

——————————

其她解决办法 —— 升级系统和软件 !!!

        不过从 VMWare Workstation/Player 15.5.5 版本开始 VMWare 公司重构了 VMM 机制

        将 VMM 机制调整为在用户级别运行,不再直接访问硬件

        而是通过利用微软的 Windows Hypervisor Platform /WHP 的 API 来运行

        从而彻底解决了 VMWare Workstation/Player 与 Hyper-V 的冲突问题

        如果你对如上的解决办法没有兴趣那么推荐你:

将 Windows 版本升级到 Windows 10 20H1 或更高版本
将 VMWare Workstation/Player 升级到 15.5.5 或更高版本

        只是安装时需要注意勾选 WMP :

WMP

        如果报错 VMware 在此主机上不支持嵌套虚拟化 模块 MonitorMode 启动失败 未能启动虚拟机
        打开虚拟机的设置选项 找到 处理器 取消勾选虚拟化引擎里面的三个虚拟机选项后确定即可

##################################################

深入虚拟机架构

——————————

虚拟机分为两种架构类型


        寄居架构 和 原生架构/裸金属架构 是虚拟机软件常采用的两种技术模式
        其中裸金属模式虚拟机又分为微内核和单内核两种技术架构
        与单内核架构相比 微内核具有更高的安全性
        Hyper-V 采用的便是微内核架构

——————————

寄居架构

        寄居架构主要是便宜 主要是自主学习使用 例如实验环境或测试环境

此架构下虚拟机作为应用软件安装在操作系统上 可以在此应用软件上安装多个操作系统
直接安装在硬件上的系统被称为宿主机

        架构类型:

                        虚拟机_1  虚拟机_2
                      ————————————————————
     应用程序  应用程序   虚拟机监视器
————————————————————————————————————————
              宿主机器
————————————————————————————————————————
                硬件

        宿主机能上网则虚拟机就能上网

        病毒木马都可以拖到虚拟机运行,与真机脱离,非常安全!

        虚拟机监视器模拟出来的操作系统跟真实系统使用一模一样

        真机怎么玩,虚拟机里也怎么玩

        在虚拟机中模拟出来的生态系统跟真机一样,但是要注意:

虚拟机监视器也要占内存

        所以电脑内存不够的话,虚拟机开的数量也有限制

        但是真机一旦崩了,虚拟机当然也崩了……所以实际生产环境用的是原生架构

——————————

原生架构/裸金属架构

        原生架构 费用昂贵 此时虚拟机按照 CPU 收费!
        所以这是生产环境中使用 即企业中实际使用的服务器

此时虚拟机软件直接安装在计算机硬件上
虚拟机本身就是一个操作系统
在这个虚拟机中可以同时运行多个操作系统

        原生架构:

  应用程序   应用程序   应用程序
——————————————————————————————
  原操作系统 虚拟机_1  虚拟机_2
——————————————————————————————
        虚拟机监视器
——————————————————————————————
            硬件

——————————

Hypervisor 与 Typer 1/Typer 2

%%%%%

        Hypervisor 是一种系统软件

        她充当计算机硬件和虚拟机之间的中介

        负责有效地分配和利用由各个虚拟机使用的硬件资源

        这些虚拟机在物理主机上单独工作

        因此 Hypervisor 也称为虚拟机管理器

%%%%%

Typer 1 Hypervisor

        原生/裸机 Hypervisors
直接和硬件进行交互 她不需要任何操作系统
可以直接把她安装在硬件上面,让她作为一个被宿主机
Typer 1 Hypervisor 也被叫做 Bare Metal/Embedded/Native Hypervisor

更高的性能
降低资源使用率
固件位置更安全
运行虚拟化生产环境
需要主动管理

%%%%%

Type 2 Hypervisor

        Type 2 Hypervisor 往往安装在某个系统之上
        她也被叫做 Hosted Hypervisors
        她的操作当然也要依靠她寄托的操作系统
        Type 2 的主要优势就是她有更广泛的硬件支持

        Type 2 主机执行软件虚拟化
        她们在主机操作系统上作为软件应用程序运行
        与基于硬件的 Type 1相比 她们更像是已经安装的应用程序
        大多数 Type 2 用户利用这个更简单的 Hypervisors 在单台计算机上运行虚拟机
        而不像 Type 1 的部署和管理那样复杂

设置更简单
易于管理
基于软件的虚拟化与各种硬件兼容
不需要专门的管理员
在 Windows/OS X/Linux 环境中测试多个系统
类型 1 可能仅仅支持一些驱动程序 但是类型 2 可以完全访问 Windows 或 Linux 驱动程序

“could not load the qt platform plugin "windows" in ""即使已找到” 意思是尽管找到了Qt平台插件“windows”,但无法加载它。 这个问题通常是由于Qt运行时库的一些问题引起的。解决这个问题的方法可以是: 1. 确保你的Qt版本与你的应用程序兼容。如果你的应用程序是用较新的Qt版本编译的,但你当前的系统中只安装了较旧的Qt版本,那么可能会导致找不到Qt平台插件的问题。尝试下载并安装与你的应用程序相匹配的Qt版本。 2. 检查你的环境变量设置。确保系统的环境变量中包含了正确的Qt路径。你可以在系统的环境变量中添加Qt的安装路径,以确保应用程序可以找到所需的Qt库和插件。 3. 查看你的应用程序的文件结构。确保你的应用程序目录中包含了所有的Qt运行时库和插件文件,特别是名为“platforms”的文件夹,其中应该包含名为“qwindows.dll”的文件。如果缺少这些文件,你可以从Qt的安装目录中复制它们到你的应用程序目录中。 4. 尝试重新安装Qt。如果以上方法都无法解决问题,你可以尝试重新安装Qt。首先,卸载当前的Qt版本,然后重新下载并安装一个新的版本。在安装过程中,请确保选择正确的平台插件,例如选择“windows”插件。 总结起来,无法加载Qt平台插件“windows”的问题可能是由于Qt版本不兼容、环境变量设置错误、缺少必要的库和插件文件等原因引起的。通过确保Qt的正确安装和正确设置环境变量,可以解决这个问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃吹

呜呜呜没钱钱吃饭了……

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值