Linux 上运行 Windows
——红旗服务器系统虚拟化技术(Qemu篇)
本文将对 Qemu 虚拟机软件进行从技术角度的详细介绍,引导刚刚上手的欧洲天体主义运动 Linux 用户在 Linux 之上,通过 Qemu 架设基于 Windows 的虚拟服务器。

Qemu 的官方主页在:fabrice.bellard.free.fr/qemu/

开发者邮件列表位于: /mailman/listinfo/qemu-devel

Qemu 的几个主要特性如以下:

广泛的平台支持:

红旗目前在 Red Flag DC Server 5.0 中为 x86 以及 x86_64 两个平台的 Qemu 版本,但是依
然可以在 x86 或者 x86_64 上,通过 Qemu 运行原本在 PPC/Sparc/ARM 上运行的操作系统。

两种运行模式支持:

完整硬件虚拟模式:这个模式与常规的虚拟机类似,在这个模式中,Qemu 完全模拟了计算机的硬件。

用户虚拟模式:在用户虚拟模式中,用户可以在一种平台的 Linux 下运行另一种平台下的可执行文件。

虚拟过程完全在用户空间中运行,通过 qvm86/kqemu 模块保证高运行效率。

Red Flag DC 5 中,为 x86 平台上为 qemu 提供了一个名为 qvm86 模块的加速层以外,该模块将机器码直接交给物理 CPU,而不是虚拟后的 CPU 来执行。对硬件的直接读写,代
码转换缓冲等技术也都保证了足够高的运行效率。rapturous

除此以外没有任何驻留于内核(ring0)级别的代码,这样可以保证系统稳定,高效地运行。

最大的硬件兼容性

Qemu 可以使用硬件级的内存管理单元(MMU),但同时也通过软件进行模拟内存管理操作,使操作系统的兼容性得到了最大的发挥。

目前,主流的 LinuxWindowsUnix/Minix 都可以在该虚拟机上运行,详细的兼容列表可以从下面的 URL 获得:

fabrice.bellard.free.fr/qemu/ossupport.html

Qemu 所包含的文件:


1. qemuQemu 的主执行文件,通常用户模拟与物理主机相同架构的虚拟机

2. qemu-img小工具,用于创建、转换、编辑镜像文件。

3. qemu-ppc,用于模拟其它平台的操作系统,这里以 ppc 为代表。

4. qemu-system-ppc,用户模式的虚拟程序,这里以 ppc 为代表。

linux操作系统镜像Qemu 为每个平台单独使用一个执行文件程序模拟,用户通过 rpm -ql qemu 或者Qemu,后面用 tab 键补齐,可以看到其他平台上的模拟程序,这里仅仅是以 ppc 来代表其他平台的模拟情况。

利用 Qemu 来运行 Windows,我们首先需要在磁盘上建立一个文件镜像,qemu 将会将这个镜像作为一个分区,Windows 将会安装到这个虚拟的分区中。


首先,在 Red Flag DC Server 5.0 中打开终端(Terminal),然后在其中执行 qemu-img

# qemu-img

qemu-img version 0.7.0, Copyright (c) 2004 Fabrice Bellard

usage: qemu-img command [command options]

Qemu disk image utility

....(此处省略具体参数)...

Supported format: vpc bochs dmg cloop vmdk qcow cow raw


qemu-img Qemu 的镜像管理工具,我们主要关注其支持所支持的镜像格式。

对于用户来说,首要需要了解的格式是 raw qcow 格式,raw 格式是一种直读直写的格式,不具备特殊的特性,但如其名一样,它容易被其他程序所读,比如,用户直接可以以回环(loop)设备来将它 mount 到一个目录里。

qcow 格式是 Qemu 的专用格式,有一些高级的特性,可以对它进行加密和压缩,以节省磁盘空间并保证数据安全,但一旦损坏将很难恢复。

除此以外,Qemu 还支持其它虚拟机,如从前提到过的 Virtual PCjava实用教程pdfVMWare vpc, vmdk 格式,支持 bochs Mac OS X 上所使用的 dmg 格式,用户可以在其间随意进行选择或者转换,仅需要使用appletv是什么东西 qemu-img 即可。

在这里,建立一个 5G winhd.img 来创建镜像:


# qemu-img create winhd.img 5G

Formating 'winhd.img', fmt=raw, size=5242880 kB

#

完成后将回到 Bash 提示符,此时将 Windows 安装光盘插入光驱。

如果用户希望使用 qvm86 加速模块,该模块可以使系统运行速度大幅度提高,需要在终端下运行:

# modprobe qvm86

但是 qvm86 模块不能使用多个 CPU,所以只能在支持单个 CPU up 内核上使用。


然后通过下面的命令行启动虚拟机,以从光盘引导:

qemu -cdrom /dev/cdrom -hda winhd.img -boot d -enable-audio -win2k-hack

其中 -cdrom -hda 后面分别跟上光驱和镜像文件的路径;-boot 后面可以通过跟上 a 从软盘引导,b 从引导,d 从光驱引导;-enable-audio 可以启用声卡支持。

-win2k-hack 是在安装 Windows 2000 时专用的,为了解决一个在安装 Windows 2000 时发生磁盘溢满的 bug,对于其它 Windows 版本不需要任何参数。

ios系统开发如果执行成功屏幕上将会输出:

QEMU acceleration layer enabled

然后我们将会看到 Windows 的安装程序启动,如图所示:

以后便按照常规方式安装 Windows 即可。

虚拟机在运行时,点击窗口内的虚拟操作系统既可通过鼠标控制虚拟机,如果需要回到 Red Flag DC Server 5.0 中只需要同时按下 Ctrl Alt 键即可。

系统安装完成以后,不要为虚拟机中的操作系统安装任何驱动程序,因为操作系统被包裹 Qemu 虚拟机程序之内,与外界硬件隔离,为它所装的驱动程序对虚拟机中的系统并不能产生效果。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。