Cooking with Linux - 仍在寻找终极 Linux 发行版吗?

作者:Marcel Gagné

弗朗索瓦,你今天加载的是什么发行版?MCNLive?非常好,而且也很紧凑。有机会你应该把它复制到你的 U 盘里。那样,你就可以随时携带一个 live Linux 发行版了。Quoi? 你不确定这是否是the 最好的?我明白了。昨天,你还在运行 OpenSUSE 10.2,前天早上你安装了 Debian Etch,下午又安装了 Kubuntu Feisty。上周,你搞定了 Fedora Core 7、CentOS 5、Mandriva Corporate Desktop 4.0、Slackware Linux 12 和其他六个发行版。你是不是在寻找你喜欢的东西时遇到了麻烦?你都喜欢,但就是无法选择,是吗?

好吧,mon ami,我不愿意打断你的发现之旅,但我需要几天前我发给你的酒单。什么?你说你没有?它在你安装发行版的机器上,你擦除了磁盘?你知道吗,弗朗索瓦,有更好的方法来试用所有这些发行版。现在,放下你正在做的事情,下到酒窖去。我看到我们的客人们正在走向餐厅,他们马上就要到了。把东翼的乔治·杜·博夫“圣瓦伦丁”特酿拿来。就在你去年带来的那套旧盔甲旁边有三箱。Vite!

欢迎各位来到Chez Marcel,这里是美酒与伟大的 Linux 和开源软件的交汇之处。请坐下,放松一下。我已经派我忠实的侍者去寻找今晚菜单的完美葡萄酒。在我们等待的时候,我将向大家介绍一系列令人印象深刻的 Linux 发行版,这要归功于系统虚拟化。最棒的是,你可以在运行当前系统的同时,把这些其他的系统拿出来试用一下。

啊,很高兴你回来了,弗朗索瓦。请为我们的客人倒酒,同时我来介绍今晚菜单上的第一道菜。

Fabrice Bellard 的 QEMU 是一个免费、开源的机器模拟器和虚拟化器。区分这两者的原因是 QEMU 可以模拟不同的机器类型和硬件,但是性能虽然还不错,但可以大大提高。虚拟化是通过使用内核模块来实现的,该模块在你的系统处理器上执行代码,而不是模拟处理器。区分这两者的另一个重要原因是 QEMU 还可以模拟不同的处理器架构。例如,如果你想在你的 Intel 处理器上运行 SPARC 或 PowerPC 机器,你可以做到。Fabrice 的网站上有一个不错的表格,显示了可以模拟的各种处理器。还有一些不同操作系统的预构建 QEMU 镜像可以下载——如果你喜欢,甚至可以下载 FREEDOS 和 Minix。不过,我们要做的是安装 Linux,大量的 Linux 发行版。

大多数现代 Linux 发行版都带有 QEMU,但是最新的源代码总是可以从 fabrice.bellard.free.fr 获取。然而,虚拟化内核模块通常需要你从网站下载并自行构建。虽然你不是特别需要它,但性能的提升是显著的,而且非常值得付出努力。因为这是一个内核模块,所以你用modprobe kqemu命令加载它。

让我们来看看 QEMU 是如何工作的。对于第一个演示,我将从 Puppy Linux 网站下载的 ISO 镜像安装 Puppy Linux。因为 Puppy 是一个可爱的小发行版,空间需求极小,所以我为它创建了一个相对较小的磁盘镜像(虚拟硬盘)。这是通过qemu-img命令完成的

qemu-img create puppy216.img 256M

上面的命令默认创建 raw 格式的磁盘镜像。有几种不同的镜像格式,最值得注意的是 qcow2,它是一种更便携的镜像格式,如果你想安装另一个操作系统——你知道的,就是 Redmond 那个——会很有用。我们的下一步是将 Linux 安装到这个磁盘镜像中,我使用这个命令来完成

qemu -cdrom ../isos/puppy-2.16.1-seamonkey-fulldrivers.iso \
   -hda ./puppy216.img -m 256 -boot d 

这里发生了一些有趣的事情,我将简要地描述每一件事。首先,-cdrom 参数实际上是你正在安装的发行版的 CD-ROM 镜像的路径。如果你使用的是物理 CD-ROM,那么路径很可能是 /dev/cdrom。下一个参数 -hda 定义了我们刚刚创建的磁盘镜像的路径。接下来是 -m 开关,在本例中,它为正在运行的会话分配了 256MB 的 RAM。最后,我们有 -boot,它标识了启动驱动器(我们的 CD 镜像),也就是所谓的 D 盘。一旦我按下回车键,Puppy Linux 的安装就开始了(图 1)。

Cooking with Linux - Still Searching for the Ultimate Linux Distro?

图 1. QEMU 启动 Puppy!

从这里开始,你只需按照 Puppy Linux 安装步骤(或你正在安装的任何发行版的步骤)进行操作即可。在展示结果之前,我想再和你分享一个参数——-std-vga 参数。这告诉 QEMU 模拟一个带有 Bochs 扩展的标准 VGA 卡。你也可以使用 -localtime 参数来告诉 QEMU 使用本地机器时间运行你的会话,而不是默认的 UTC。还记得内核加速吗?尝试使用 -kernel-kqemu。这只是一个小小的例子。还有网络参数、USB 参数、文件共享参数 (SMB)、设备参数等等。我在这里只介绍一些基本知识,所以请务必查看 qemu 命令的 man 手册。还要记住,我的这个例子的设置意味着一个非常小的 footprint 发行版。要运行稍微大一点的东西,比如 MCNLive(一个基于 Mandriva 的很棒的 live 发行版),我会创建一个更大的磁盘镜像(图 2 显示了 MCNLive 的运行效果)。

Cooking with Linux - Still Searching for the Ultimate Linux Distro?

图 2. 由 MCNLive 和 QEMU 提供的精美图形桌面

当你第一次开始在 QEMU 会话中工作时,你可能会发现自己想知道为什么鼠标无法移出会话。这是你将学到的关于 QEMU 键盘操作的第一个也是最重要的教训。一旦你点击 QEMU 会话,它就会控制你的鼠标。按下 Ctrl-Alt 可以释放控制,这样你就可以在你的主系统上工作。要返回 QEMU 会话,只需单击窗口上的任何位置即可。第二个最重要的键盘命令是 Ctrl-Alt-F,它可以切换到全屏模式和从全屏模式切换回来。

现在,Puppy Linux 和 MCNLive 都是 live 发行版,但两者都在桌面上提供了安装图标。一旦发行版安装完成,启动会话就会稍微不同,主要是因为你不会从 CD-ROM ISO 镜像启动。在本例中,我只是为 QEMU 标识我的硬盘镜像,并选择我想使用的 RAM 量

qemu -hda ./mcnlive.img -m 384

所有这些命令行工作都很容易,但是 qemu 命令参数有很多,更不用说大量的可能选项或这些选项的组合了。这就是为什么我们要看看一些用于 QEMU 的优秀图形工具,首先是 Erik Meitner 和 Linas Zvirblis 的 Qemu Launcher。

Qemu Launcher 为 QEMU 命令套件的基本和高级功能提供了一个前端。有三个标签:Configurations(配置)、Launcher Settings(启动器设置)和 About(关于)。大多数操作都发生在第一个标签下。首先,你可以通过简单地输入配置名称、硬盘的文件位置(由 qemu-img 创建的镜像)和定义你想分配的内存来基于现有的 QEMU 镜像创建一组配置。点击 Save(保存)按钮,你就准备好通过点击 Qemu Launcher 界面右下角的 Launch(启动)按钮来启动你的虚拟机了。在图 3 中,我已经添加了一个用于启动 Debian Etch 4.0 的配置文件,分配了 384MB 的 RAM。

Cooking with Linux - Still Searching for the Ultimate Linux Distro?

图 3. 在 Qemu Launcher 下添加现有的 QEMU 镜像非常容易。

我输入了 Debian Etch 镜像的路径,但我也可以点击 Hard disk 0(硬盘 0)标签旁边的 New(新建)按钮,并使用弹出对话框创建一个镜像。我的下一步是点击 Use CD-ROM(使用 CD-ROM)复选框,从 Boot disk(启动盘)下拉列表中选择 CD-ROM,然后像往常一样继续操作。正如你所看到的,Configurations(配置)标签也是一个多标签的界面,允许你访问其他 QEMU 设置。在 Linux boot(Linux 启动)下,你可以指定一个备用内核镜像或传递内核参数。Network(网络)标签提供了对你的网卡的控制(默认是使用直通到你的主系统),并提供了对 Samba 共享的访问——如果你想运行 Windows,这将非常有用。从 Hardware(硬件)标签中,你可以选择一个备用视频设备,设置时钟,定义你的硬件或打开系统声音,仅举几个例子。最后,Emulator(模拟器)标签让你控制 QEMU 会话本身。

顺便说一下,QEMU 最近的一个替代品是 KVM (Kernel Virtual Machine),它通过利用基于处理器的硬件虚拟化技术来工作。在 Intel 平台上,这被称为 VT,而 AMD 处理器称其硬件虚拟化为 Pacifica。这意味着你可以利用 Linux KVM 以比纯软件虚拟化更高的性能运行你的虚拟机。正如你可能预料到的,问题在于并非所有机器都支持硬件虚拟化。要 выяснить 你的系统是否符合条件,请从终端窗口或 shell 执行这段小代码

grep -E '^flags.*(vmx|svm)' /proc/cpuinfo

如果你看到字符串vmxsvm返回,你的处理器就准备好了。如果不是,你将不得不坚持使用 QEMU 提供的基于软件的虚拟化。KVM 命令与 QEMU 的命令几乎可以互换,安装和操作系统镜像也是如此。事实上,KVM 是基于 QEMU 的。

今晚菜单上的下一道菜没有那么复杂或灵活(你不能创建镜像),但是那些对 Ruby 有偏爱的人可能想看看 Mathieu Mast 的 Qemu Supervisor,这是一个基于 Ruby 编程语言的前端,你猜对了。除了 Ruby 本身,你还需要安装 Ruby GTK2 绑定、libgtk2-ruby 包及其依赖项。一旦满足了这些先决条件,就只需解压 Qemu Supervisor 源代码并运行make install从源代码目录中。要运行该程序,请执行命令qemu-supervisor。从出现的界面(图 4)中,你可以选择添加 QEMU 镜像以启动。

Cooking with Linux - Still Searching for the Ultimate Linux Distro?

图 4. 现在你可以用 Qemu Supervisor 来 Ruby-up 你的 QEMU 会话了。

今晚菜单上的最后一道菜,Rainer Haage 的 Qemulator,是你寻找终极 QEMU 前端来管理你所有终极 Linux(虚拟)盒子的必经之地。这个令人印象深刻且功能丰富的应用程序涵盖了 QEMU 操作的几乎所有方面,包括创建磁盘镜像(图 5)、安装发行版、监控正在运行的实例等等。

Cooking with Linux - Still Searching for the Ultimate Linux Distro?

图 5. Qemulator 通过用于镜像创建等的工具使 QEMU 变得容易。

与这里介绍的其他程序一样,Qemulator 提供了对现有 QEMU 镜像的轻松访问。点击主窗口顶部的加号,输入基本信息并保存。要运行虚拟机,只需点击右上角的运行箭头。主窗口在 My Machines(我的机器)标签下列出了现有镜像。这些机器中的每一台都可以通过点击主窗口底部的 Show Settings(显示设置)按钮进行配置或更改(图 6)。选项卡式视图提供了对镜像设置、磁盘和其他硬件、网络设置等的访问。多台机器可以同时运行(如果有足够的资源),并且可以在 Running Jobs(正在运行的任务)标签下访问每台机器。

Cooking with Linux - Still Searching for the Ultimate Linux Distro?

图 6. 只需点击一下鼠标即可轻松访问所有 QEMU 设置。

还有一些不错的、有点隐藏的功能。例如,右键单击 My Machines(我的机器)列表中的一台机器,会出现一个小弹出菜单。从该菜单中,你可以选择 Show command line(显示命令行)——对于那些好奇想知道在所有这些设置被调整后 qemu 命令到底在做什么的人来说,这是完美的。从同一个菜单中,你可以获取关于镜像本身的信息、更改设置等等。

为了使功能更加完善,Qemulator 甚至提供了一个安装向导,引导你完成加载另一个发行版的步骤。只需点击菜单栏上的 System(系统),然后选择 Install system(安装系统)。

环顾餐厅,我看到你们中的许多人已经发现运行所有这些虚拟机的缺点了。虚拟与否,你运行的每个 Linux(或其他任何东西)实例都需要处理器时间和系统内存。你选择运行的虚拟机越多,你将使用的资源就越多。我在我的双核笔记本电脑上愉快地运行着第二个发行版,但是第三个发行版对于这台机器来说几乎是不可能的。你能提供的资源越多,你的虚拟机运行得就越快,你能运行的虚拟机也就越多。

啊,如果我们能找到某种方法来运行我们屡获殊荣的酒窖的多个实例就好了。但是那样的话,弗朗索瓦和我可能就没有机会与你们分享我们的酒窖了,mes amis。现在,可悲的是,时间到了,我们必须回到我们非虚拟的家了。然而,我们在Chez Marcel 永远不会梦想在没有最后一杯葡萄酒的情况下送你们离开。弗朗索瓦,请花一点时间为我们的客人最后一次倒满酒杯。举起你们的酒杯,mes amis,让我们为彼此的健康干杯。A votre santé! Bon appétit!

Marcel Gagné 是一位获奖作家,居住在安大略省滑铁卢市。他是全新著作 Moving to Free Software 的作者,这是他在 Addison-Wesley 出版的第六本书。他还定期在电视节目 Call for Help 中以 Linux 专家的身份亮相。Marcel 还是一名飞行员,一位曾是 Top-40 的唱片骑师,撰写科幻和奇幻小说,并且擅长折叠霸王龙的折纸。可以通过电子邮件 mggagne@salmar.com 与他联系。你可以从他的网站 www.marcelgagne.com 发现许多其他东西(包括很棒的葡萄酒链接)。

加载 Disqus 评论