80后的细娃儿

Qemu使用

以前曾经想用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 ([email protected])
   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

 

点赞