前言##
是时候聊一下虚拟机了,因为我们后面即将聊的 Linux 玩法,包括硬盘分区以及在同一块硬盘上安装多个 Linux 发行版、在 X86 的实模式下运行 16 位的程序、探索 Grub 和 Linux 纯字符模式等等,要截图和录像的话,必须借助于虚拟机。
说起虚拟机,大家都不陌生。需要使用虚拟机的场景也非常的多,对于有志于写操作系统的同志,往往需要一个虚拟机来运行和调试他写的系统;对于喜欢研究网络体系结构的朋友,往往需要在自己的电脑上虚拟出 N 个系统组成各种各样的网络。(这个需要电脑的配置够强大才行,幸好本人的电脑够。)还有些朋友用着 Windows 却想玩 Linux,用着 Linux 却想玩 Windows,这样用虚拟机玩起来也比较方便;最后对于在 Linux 环境下解决起来比较困难的一些需求,如迅雷、QQ、网银、支付宝等,使用虚拟机安装一个 Windows 系统,也可以非常轻松地搞定。我自己也经常在 Windows 中用 VMWare,感觉它功能强大、使用方便,运行效率也非常高。我的博客中有不少内容都是在虚拟机中折腾出来的。在 Linux 系统下,我也用虚拟机,这一篇随笔就向大家展示一下 Linux 中的几种常见的虚拟机软件。
虚拟机的分类很复杂。什么全虚拟、半虚拟什么的搞得人头晕。而且桌面用户和企业级用户对虚拟机的期望值是不一样的。比如说,我可能期望这样一个虚拟机:
1.它能模拟出一台完整的个人电脑,我可以给它安装任何我想安装的操作系统;
2.它要有比较好用的图形界面,模拟出的电脑也要能无障碍运行 Windows 或 Gnome 这样的图形系统,能打游戏最好;
3.客户操作系统所用的硬盘就是宿主操作系统中的一个镜像文件,随时可复制粘贴,随时可打包带走;
4.最好能模拟出一些本身不存在的硬件,像多个网卡什么的。
很显然,VMWare Workstation 就是这样一个可以完美满足我要求的桌面用户最满意的虚拟机。我经常使用它来折腾各个 Linux 发行版,而且运行流畅。当然,在 Linux 这个开源的世界我们是不该去使用破解版这样的东西的。不过不用担心,在 Linux 江湖中,还有 VirtualBox、QEMU 这样的虚拟机软件可用。
而企业级用户呢,他们期望的虚拟机可能是这样的:
1.它不一定能模拟出一台完整的电脑,重点是 CPU、内存、磁盘和网卡,重点是能当服务器使用;
2.它的性能一定要好,虚拟的 CPU 性能一定要接近物理 CPU,一定要充分利用物理 CPU 的所有特性,为了性能,甚至只能安装经过修改过内核的操作系统;(所谓的半虚拟化技术。)
3.它隔离性一定要好,它的目的是把一台机器分成 N 台机器用,而管理这 N 台虚拟机的宿主机要越不占用资源越好,客户机是主,宿主机是次;(正如 Xen 这样。)
4.由于企业级用户对性能的追求,所以客户机所用的硬盘可能真是一个独立的物理硬盘、磁盘阵列、网络文件系统什么的,而不仅仅只是宿主机上的一个镜像文件;
5.它不一定需要有图形界面,因为使用命令行更容易管理,像自动化啊、远程化啊、批量化啊什么的;
6.更多的企业级高可用性需求,像什么热备份啊、动态迁移啊等等。
从上面这些期望值可以看出,虚拟机领域水很深,市场前景也很广阔。各个虚拟机厂家把自家产品吹得天花乱坠那也是很常见的,因为每一个用户期望的点都可以大做文章嘛。所谓临渊羡鱼,不如退而结网,各种虚拟机看得再过瘾,也不如自己尝试一下。
能模拟不同硬件架构的虚拟机 —— QEMU##
还是老规矩,先给出参考资料,它的学习资料还在这里: QEMU 的官方文档 。
或者,在自己的系统中输入如下命令查看手册页:
man qemu-system-i386
man qemu-img
等等...
QEMU 本身是一个非常强大的虚拟机,甚至在 Xen、KVM 这些虚拟机产品中都少不了 QEMU 的身影。在 QEMU 的官方文档中也提到,QEMU 可以利用 Xen、KVM 等技术来加速。为什么需要加速呢,那是因为如果单纯使用 QEMU 的时候,它里面的 CPU 等硬件都是模拟出来的,也就是全虚拟化,所以运行速度是肯定赶不上物理硬件的。它甚至可以模拟不同架构的硬件,比如说在使用 Intel X86 的 CPU 的电脑中模拟出一个 ARM 体系的电脑或 MIPS 体系的电脑,这样模拟出的 CPU,运行速度更加不可能赶上物理 CPU。使用加速以后呢,可以把客户操作系统的 CPU 指令直接转发到物理 CPU,自然运行效率大增。
QEMU 同时也是一个非常简单的虚拟机,给它一个硬盘镜像就可以启动一个虚拟机,如果想定制这个虚拟机的配置,用什么样的 CPU 啊、什么样的显卡啊、什么样的网络配置啊,只需要指定相应的命令行参数就可以了。它支持许多格式的磁盘镜像,包括 VirtualBox 创建的磁盘镜像文件。它同时也提供一个创建和管理磁盘镜像的工具 qemu-img。QEMU 及其工具所使用的命令行参数,直接查看其文档即可。
下面开始体验。先看看 Ubuntu 软件源中和 QEMU 有关的包有哪些:
我的电脑是 Intel 的 CPU,而我想虚拟的也是个人电脑,所以我安装的自然是 qemu-system-x86,另外一个有用的是 qemu-utils。
查看 QEMU 软件包中的工具及文档:
使用 qemu-img 创建磁盘映像文件,使用 qemu-system-i386 启动虚拟机,并安装操作系统:
WinXP 估计是目前全网络上最好下载的操作系统了。运行以上命令后,弹出熟悉的系统安装界面。安装过程我就不啰嗦了。下图是安装完 WinXP 操作系统之后的效果。可以给 qemu-system-i386 指定更多的参数,在再一次启动 WinXP 的时候,我除了给它分配了 2G 内存,我还使用 -smp 2 参数为它分配了两个 CPU,还使用 -vga vmware 为它指定和 VMWare 虚拟显卡一样的显卡。虽然指定两个 CPU,但是性能仍较差。随便拖动一下