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


既然 Domain 0 也是一个虚拟机 , 也是被管理的对象 , 所以可以给它分配很少的资源 , 然后将其余的资源公平地分配到其它的 Domain 。但是很奇怪的是 , 所有的虚拟机管理软件其实都是运行在这个 Domain 0 中的 。同时 , 如果要连接到其它 Guest System 的控制台 , 而又不是使用远程桌面(VNC)的话 , 这些控制台也是显示在 Domian 0 中的 。所以说 , 这是一个奇异的架构 , 是一个让人很不容易理解的架构 。
这种架构桌面用户不喜欢 , 因为 Host System 变成了 Domain 0 , 本来应该掌控所有资源的主操作系统变成了一个受管理的虚拟机 , 本来用来打游戏、编程、聊天的主战场受到限制了 , 可能不能完全发挥硬件的性能了 , 还有可能运行不稳定了 , 自然会心里不爽 。(Domain 0确实不能安装专用显卡驱动 , 确实会运行不稳定 , 这个后面会讲 。)但是企业级用户喜欢 , 因为所有的 Domain 都是虚拟机 , 所以可以更加公平地分配资源 , 而且由于 Domain U 不再是运行于 Domian 0 里面的软件 , 而是和 Domain 0 平级的系统 , 这样即使 Domain 0 崩溃了 , 也不会影响到正在运行的 Domain U 。(真的不会有丝毫影响吗?我表示怀疑 。)
下面开始在 Ubuntu 系统中体验 Xen 。使用如下命令可以在 Ubuntu 的软件源中搜索和 Xen 相关的软件包以及安装 Xen Hypervisor:
sudo aptitude search xensudo aptitude install xen-hypervisor-4.4-amd64传说在旧版本的 Xen Hypervisor 上只能运行经过修改过的 Linux 内核 。但是在目前的版本中不存在该问题 。我机器上的 Ubuntu 14.10 系统不经任何修改 , 就可以当成 Domain 0 中的系统运行 。至于是否让该系统运行于 Xen Hypervisor 上 , 在启动时可以选择 , 如下图:
通过查看 Grub 的配置文件 , 可以看到通过 Xen 虚拟机启动 Ubuntu 系统时 , Grub 先启动的是 /boot/xen-4.4-amd64.gz , 然后才把 Linux 内核以及 initrd 文件作为模块载入内存 。也就是说 , Grub 启动 Xen Hypervisor , 然后 Xen Hypervisor 运行 Domian 0 。
前面提到 Host System 一下子变成了 Domain 0 中的操作系统是让桌面用户比较不爽的事 , 这里详细论述 。虽然说目前的 Xen 同时支持全虚拟化和半虚拟化 , 支持操作系统不经任何修改就运行于 Xen 虚拟机上(全虚拟) , 但是系统是否稳定还是和内核有很大关系的 。比如说我在 Ubuntu 14.04 刚推出的那段时间 , 在 Ubuntu 14.04 中使用 Xen 是没有什么问题的 , 但是经过几次系统升级后 , Xen 就出问题了 , 没办法成功进入 Domain 0 中的 Ubuntu 14.04 。现在我用的是 Ubuntu 14.10 , 已经升过好几次级了 , 目前使用Xen还是很稳定的 。其次就是显卡驱动的问题 , 我的 Ubuntu 当主系统用时 , 使用的是 NVIDIA 的显卡驱动 , 但是当 Ubuntu 运行于 Domain 0 中时 , 就不能使用 NVIDIA 的显卡驱动了 , 否则无法进入图形界面 。
下面来测试一下 Xen 虚拟机的运行效果 。通过前文的探讨 , 可以看出一个虚拟机的运行需要两个要素:一是一套虚拟的硬件系统 , 二是一个包含了操作系统的磁盘镜像 。QEMU 虚拟机关于硬件的配置全由命令行指定 , VirtualBox 虚拟机的硬件配置存在于配置文件中 , 而 Xen 呢 , 它也存在于配置文件中 , 这个配置文件要我们自己写 。至于磁盘镜像 , 还是复用我之前创建的那个 WinXP.img 吧 , 记住 , 它是 qcow2 格式的 。
先进入我主目录的 virtual-os 目录 , ls 看一下 , 里面有我之前创建的 WinXP.img 。然后 , 我们创建一个 WinXP_Xen.hvm 配置文件 , 其内容如下:
builder = "hvm"name = "WinXP_Xen.hvm"memory = 2048vcpus = 2disk = [ '/home/youxia/virtual-os/WinXP.img, qcow2, hda, rw' ]sdl = 1

推荐阅读