Qemu使用

2,159次阅读
没有评论

以前曾经想用 qemu 去模拟运行我们的手机环境,没有成功,感觉 qemu 又慢又难用,对它没有什么好感。没有什么别的办法了,只好试试,找了几篇文档看了看,发现其使用竟出奇的简单。

1. 安装 qemu 软件包。FC7 的安装盘里已经带有 qemu,使用 rpm 安装即可。

rpm -ivh qemu-0.9.0-2.fc7.x86_64.rpm

2. 创建虚拟硬盘。用 dd 创建一个数据文件即可。

dd if=/dev/zero of=linux.img bs=1024 count=8000000

3. 安装 Fedora 6。先把光盘放进光盘(直接在 -cdrom 后面指定 iso 文件也行)。-boot d 表示从光盘起动。接下来和正常安装没有什么差别。

qemu -hda /work/qemu/linux.img -cdrom /dev/cdrom -boot d

4. 运行虚拟机。记得这次要用 boot c,从硬盘起动。

qemu -hda linux.img -boot c -localtime -m 256 -usb

5. 配置网络。网络不需要特殊配置,在 GUEST 机上使用 DHCP 就 OK 了,它获得的 IP 地址是

serif”>10.0.2.15。

我发现 GUEST 机可以用 SSH 访问 HOST 机,GUEST 机也可以通过 HOST 机访问外网,但 HOST 机不能访问 GUEST 机,而且两者都 PING 不通对方。

6. 把 GUEST 的 GUI 定向到 HOST 机上。

资料来源: 学网 (www.xue5.com), 原文地址:http://www.xue5.com/itedu/200707/124137.html
GUEST 机是在虚拟机上运行的,速度有点慢,为了减轻它的负载,我决定把 GUI 显示到 HOST 上。本来这个很简单,通过 DISPLAY 环境变量就行了。不过,没有想的那样顺利。

我的 HOST 机有两块网卡,一个网卡接笔记电脑,IP 是 192.168.0.1,另外一个通过天威上外网,IP 是用 DHCP 获得的。

在 GUEST 机上:export DISPLAY=192.168.0.1:0

在 HOST 机上:xhost +10.0.2.15

但在 GUEST 上运行 gedit,总是报告打开显示设备失败,真是奇怪。欢迎光临学网, 点击这里查看更多文章教程 [1] [2] [3] [4]

后来用 ps 查看 Xorg 的运行参数,发现有 -nolisten tcp 一项,原来 X 不支持 TCP 连接。

修改 /usr/share/gdm/defaults.conf 中的 DisallowTCP 为 false,让其支持 TCP 连接。

reboot 之后重新再试,发现还是不行。打开 /var/log/Xorg.0.log,发现里面的错误信息竟是 rejected from IP 192.168.0.1。奇怪,IP 为什么是 HOST 的 IP 而不是 GUEST 的 IP 呢?先不管它,用 xhost 把 192.168.0.1 也加入进去吧。

在 HOST 机上:xhost +192.168.0.1

再运行 gedit,一切 OK 了,界面显示到 HOST 上。

一:介绍一下 QEMU

        相信不少朋友玩过虚拟机,比如 VMWARE,MS VPC。现在我给大家介绍一下基于 GPL 协议的开放源代码并且跨平台的虚拟机软件:QEMU。QEMU 的好处是不用安装庞大的虚拟机系统。并且介于它的免安装、绿色、小巧的特点,我们有理由选择它,当然它不能完全取代 VMWARE 之类的虚拟机软件(由于 QEMU 是完全虚拟了一个真实的 CPU,故 CPU 占用 率较高)。
        QEMU 适用于 Linux ,Windows, FreeBSD and MaxOS X 这几个平台,由于本人水平有限,仅仅介绍一下 WINDOWS 平台下的 QEMU。经我测试对有些系统支持的不够好,比如网友们自己定制出来的 WINDOWS 系统维护光盘不能够良好运行。不过瑕不掩瑜,QEMU 对 LINUX 支持的比较好,对于一些 LINUX 新手来说,如果不想破坏硬盘上已有的 Windows 系统,就可以用 QEMU 来试试。
        请到这里下载 QEMU FOR WINDOWS 的最新版本 http://free.oszoo.org/ftp/qemu/win32/daily/ 再下载 http://free.oszoo.org/ftp/qemu/win32/daily/QemuInstall-20051120.exe 完毕之后安装之。安装目录中 QEMU.exe 便是主程序了,它是基于命令行界面的 32 位程序,其余的诸如 bios.bin、vgabios.bin 之类看名称就知 道是虚拟机的主板 BIOS 程序还有显卡 BIOS 了。
        QEMU 并不提供 BIOS 设置的相关内容(好象是由于版权问题),作为一个小巧的虚拟机软件,它也没有必要对这方面提供支持。因为在后面看到 QEMU 里用强大的参数,照样可以实现 BIOS 启动选择的功能。具体就是从虚拟磁盘启动还是从可引导光盘镜像启动,当然也包括了软盘启动。

二:如何启动 QEMU
1 运行批处理文件
新建一文本文件,在其中输入如下语句
REM Start qemu on windows.
@ECHO OFF

START qemu.exe -L . -m 128 -hda linux.img -enable-audio -localtime

CLS
EXIT
并且另存为 *.bat 批处理文件。
        简单说明一下语句中的 linux.img 就是默认启动的 Linux 磁盘镜像,- L 设置的是 BIOS 目录,-hda 是设置硬盘硬盘镜像,磁盘镜像文件可以由 qemu-img.exe 生成,并且可以设置磁盘空间大小。
        例如要设置一个 10MB 的虚拟硬盘空间,在命令行中键入以下命令:qemu-img.exe create harddisk.img 10M, 这样就会在当前目录建立了一个 10MB 大小,名称为 harddisk.img 的虚拟磁盘。-enable-audio 参数表示开启了声音,- locoltime 则表示使用主机设置的时间。在运行虚拟机的时候,如果鼠标丢失(在虚拟机的运行窗口出不来时,只要同时按 CTRL 和 ALT 键就可以将鼠 标释放到主机,这点和 VMWARE 一样)
2 使用快捷方式启动
        建立一个指向 QEMU.exe 的快捷方式,在快捷方式的属性里设置 QEMU 相应的运行参数(参数如上述),然后双击这个快捷方式即可
3 运行安装目录中的 QEMUMenu.bat(推荐)
        这个是我最常用的运行 QEMU 的批处理了,可以在此完成大部分的操作,比如设置光盘镜像路径,生成虚拟磁盘文件等。
例如:
QEMU_BIOS_DIR= oolsurningOperatingSystemQEMUios
=== QEMU Menu (v20041121) ===
   QEMU Menu (C) 2004 Garth Dahlstrom (ironstorm@users.sf.net)
   QEMU (C) 2004 Fabrice Bellard

QEMU Settings:
Memory (256MB)   BIOS DIR (oolsurningOperatingSystemQEMUios)
ISO/CD (-cdrom “C:Documents and SettingsAdministrator 桌面 SUSE-10.0-LiveDVD.
iso” -boot d)
Network ()

Boot QEMU using image:
[1] harddisk

Settings/Toggles:
[C]reate image file   [M]emory   [I]SO/CD   [N]etwork   [Q]uit

Enter your choice now []:

        在光标处键入 C 即可创建磁盘镜像,键入 M 即可设置内存大小,键入 I 即可设置光盘镜像,键入 N 设置网卡,键入 Q 退出,很方便
4 用 GUI 来操作 QEMU(推荐)
        想必在图形界面下习惯了的用户都不太适应命令行界面了,这里推荐 QEMU MANAGER(也是 GNU 软件),个人认为这个是最好的 QEMU 前端工具了(可惜不支持 UNICODE,请设置路径和文件名为英文名称),其最新版下载 链接为:http://www.davereyn.co.uk/,它照顾了习惯使用 VMWARE 用户,其向导很不错。
三:如何测试光盘镜像
        最后简单介绍一下命令行测试光盘镜像的例子
在 README-en.txt 文件中我们看到了具体参数的使用方法:
以说明文件中自带的例子为例:
qemu.exe -L . -m 128 -boot a -fda floppy.img -hda harddisk.img -cdrom cdimage.iso
参数的定义如下
-L : BIOS 位置,上面的“.”表示当前目录
-m : 内存大小(单位:MB)
-boot : 引导设备 软盘启动为 (a), 虚拟硬盘启动为?, 虚拟光盘引导为 (d)
-fda : 软盘镜像
-hda : 硬盘镜像
-cdrom : 光盘镜像
现在我们开始测试一个 Linux LIVECD:Damn Small Linux,这是个小巧的 Linux 可引导光盘镜像,我们就拿它做试验。
将下载得到的 dsl.iso 镜像文件放到 QEMU 程序目录,编辑批处理文件如下:
REM Start qemu on windows.
@ECHO OFF

START qemu.exe -L . -m 128 -boot d -hda linux.img -cdrom dsl-0.9.2.iso -enable-audio -localtime

CLS
EXIT

        这里设置的是从光盘引导(字母 d 表示光盘引导,前面已有说明),并且这里所虚拟的是一台磁盘镜像为 linux.img,内存容量为 128MB 大小的虚拟机。
下面存盘退出,运行这个编辑好的批处理文件,如果编辑没错的话,就能看到系统已经正常启动了。

四:综述:
在使用 QEMU 有段时间之后,偶发现 QEMU 用来安装系统不太可取,因为其过程相当漫长,用 QEMU 来测试 LiveCD 对我来说是个不错的选择

=========================================================================================                                                                                    

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

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

除此以外,Qemu 还支持其它虚拟机格式, 如 Virtual PC,VMWare 的 vpc, vmdk 格式,支持 bochs 和 Mac OS X 上所使用的 dmg 格式,用户可以在其间随意进行选择或者转换,仅需要使用 qemu-img 即可。下面的用法在网上查找得到的非常有用:

1 $qemu-img create -f qcow disk.img 128M

2 $qemu -hda disk.img -cdrom /root/cflinux-1.0.iso -boot d –enable-audio
-boot d:从光驱引导 a(软盘引导) c(硬盘引导) d(光驱引导)
-cdrom : ISO 文件, 也可以直接使用光驱设备 (/dev/cdrom)… 别忘了插入光盘
-hda : 就是虚拟机里的硬盘啦,也就是刚才 qemu-img 创建出的东东。
-enable-audio : 声卡支持
其它参数:
-full-screen :Start in full screen.
-usb:Enable the USB driver (will be the default soon)
-kernel bzImage:Use bzImage as kernel image.
-append cmdline:Use cmdline as kernel command line
-initrd file:Use file as initial ram disk.

3 $qemu -hda disk.img

4 monitor 下有几个常用的命令:
savevm filename 将整个虚拟机当前状态保存起来
loadvm filename 恢复
sendkey keys 向 VM 中发送按键,就需要用 sendkey 了 sendkey ctrl-alt-f2,In the virtual consoles, you can use Ctrl-Up, Ctrl-Down, Ctrl-PageUp and Ctrl-PageDown to move in the back log.

5 虚拟机上网。
$qemu redhat.img -enable-audio -net nic -net user -m 64
-m 64 使用 64M 内存,缺省下使用 128M

6 ctrl-alt-f 全屏
ctrl-alt 主机 / 虚拟机鼠标切换
Ctrl-Alt-n Switch to virtual console’n’. Standard console mappings are:
           1   Target system display
           2   Monitor
           3   Serial port

7 宿主和客系统之间的文件共享
QEMU 为你配置了一个虚拟局域网和 DHCP 服务器.
首先在宿主上配置好 Samba, 然后这样启动 qemu(这里假设你有个 qemu_share 文件夹)
代码:
qemu -smb $HOME/qemu_share -m 384 -localtime windows.img
在客系统 Windows 下, 这样来访问共享文件
net use e: \10.0.2.2qemu_share
而且宿主机的 IP 地址永远是 10.0.2.2, 因此如果你在宿主 Ubuntu 上运行了服务器, 同样可以访问, 比如
ftp:\10.0.2.2, 等等.

8 qemu-img convert -f qcow <file_to_convert> -O raw <rawformat_filename>
将 qcow 格式的虚拟硬盘转换为 raw 格式。

9 export SDL_VIDEO_X11_DGAMOUSE=0
如果你遇到鼠标始终挂在右下角, 请在启动 QEMU 前运行。

10. qemu -hda redhat9_4G.img -boot c -net tap -net nic,model=rtl8139

 

正文完
 0
评论(没有评论)
验证码