安卓手机上最好的虚拟机 手机虚拟机哪个好用( 三 )


其中 KVM 就是这种加速模式的典型代表 。在社区中 , 大家常把 KVM 和 Xen 相提并论 , 但是它们其实完全不一样 。从上图可以看出 , 使用内核模块加速这种模式 , 主操作系统仍然占主导地位 , 内核模块只是在主操作系统中开一个洞 , 用来连接虚拟机和物理硬件 , 给虚拟机加速 , 但是虚拟机中的客户操作系统仍然受到很大的限制 。这种模式比较适合桌面用户使用 , 主操作系统仍然是他们的主战场 , 不管是办公还是打游戏 , 都通过主操作系统完成 , 客户操作系统只是按需使用 。至于 Xen , 则完全使用不同的理念 , 比较适合企业级用户使用 , 桌面用户就不要轻易去碰了 , 具体内容我后面再讲 。
其实 VirtualBox 也是采取的这种内核模块加速的模式 。我之所以这么说 , 是因为在安装 VirtualBox 时 , 它会要求安装 DKMS 。如下图:
熟悉 Linux 的人知道 , DKMS 就是为了方便用户管理内核模块而存在的 , 不熟悉 DKMS 的人 Google 一下也可以了解个大概 。关于 VirtualBox 的具体使用方面的内容 , 我下一节再讲 。这一篇主要讲 KVM 。
KVM 和 QEMU 是相辅相成的 , QEMU 可以使用 KVM 内核模块加速 , 而 KVM 需要使用 QEMU 运行虚拟机 。从上图可以看到 , 如果要使用 Ubuntu 的包管理软件安装 KVM , 其实安装的就是 qemu-kvm 。而 qemu-kvm 并不是一个什么很复杂的软件包 , 它只包含很少量几个文件 , 如下图:
用 man 命令查看一下它的文档 , 发现 qemu-kvm 包不仅包含的文件很少 , 而且它的可执行文件 kvm 也只是对 qemu-system-x86_64 命令的一个简单包装 , 如下图:
那么问题来了 , kvm 内核模块究竟是由哪个包提供的呢?其实 , 自从 Linux 2.6 开始 , kvm 就已经被加入内核了 。如果非要找出 kvm 内核模块 kvm.ko 是由哪个包提供的 , 可以用如下命令考察一下:
写到这里 , 已经可以看出 KVM 的使用是很简单的了 。下面 , 我使用 KVM 运行一下上一篇中安装的 WinXP 操作系统 , 体验一下 QEMU 经过 KVM 加速后的运行效率 。使用如下命令运行使用 KVM 加速的 QEMU:
可以看出 , 使用 KVM 加速后 , 虚拟机中的 WinXP 运行速度提升了不少 , 开机只用了 34 秒 。我将分辨率调整为 1366*768 , 图形界面运行也很流畅 , 不管是打开 IE 浏览器还是 Office 办公软件都没有问题 , 再也没有出现 CPU 使用率飙升到 100% 的情况 。如果用 ps -ef | grep qemu 命令查看一下 , 发现 kvm 命令运行的还是 qemu-system-x86_64 程序 , 只不过加上了 -enable-kvm 参数 , 如下图:
另外 , 对于桌面用户来说 , 有一个好用的图形化界面也是很重要的 。虽然 QEMU 和 KVM 自身不带图形界面的虚拟机管理器 , 但是我们可以使用第 3 方软件 , 比如 virt-manager 。只需要使用 sudo apt-get install virt-manager 即可安装该软件 。该软件依赖于 libvirt , 在安装过程中也会自动安装 。运行 virt-manager 的效果如下图 , 注意必须使用 sudo 运行 , 因为该软件需要超级用户权限:
该软件可自动识别系统中的虚拟机环境是 QEMU KVM 还是 Xen 。新建一个虚拟机 , 由于之前安装过一个 WinXP 系统 , 所以选择导入现有硬盘镜像 。点下一步后 , 出现如下界面:
这一步没什么好说的 , 再点下一步 , 如下图:
这里可以设置网络选项 。如果勾选“在安装前自定义配置”的话 , 还可以对硬件进行进一步的自定义 , 如下图:
在上图中 , 我们可以看到虚拟机支持的所有虚拟显卡的类型 , 在这里 , 我当然选择的是 VMVGA , 因为我以前经常用 VMWare , 知道这些操作系统在 VMWare 的虚拟显卡设置下运行得都没有问题 。当然 , 其它的选项都可以试一下 , 不过在虚拟的操作系统中需要安装相应的驱动程序 。

推荐阅读