QEMU 与 Bochs


QEMU 和bochs严格意义上说不是虚拟机,是“模拟机”,他们把guest os执行的指令由软件来解析执行(软CPU),而xen一类的虚拟机是把指令交给CPU(真正的CPU)来执行。模拟比虚拟慢,但更灵活,在单cpu的机 器上可以模拟多CPU的环境,这是xen做不到的。


05年的时候我就试用过bochs,觉得还不错。但这次用它来装rhel as4 超级慢,配置网络也费了半天劲。于是改用QEMU,发觉确实比bochs好:


1. 速度比bochs快

2. 不用配置文件,命令行很方便

3. 配置网络更方便

4. 自带vncserver,远程访问方便

5. 更妙的是,QEMU可以直接使用bochs生成的虚拟硬盘文件,平滑迁移

6. 最近还听说kvm和QEMU配合威力巨大,不过资源有限,没来得及尝试


只用一行就启动了一个64位、4CPU的模拟机器,还启动了vnc和ne2000的模拟网卡:

qemu-system-x86_64 -smp 4 -m 1G -hda rhel4_x86.img -vnc localhost:0 -net nic,model=ne2k_pci -net user


Xen是通过修改内核代码实现的,所以很多在xen上测试通过的驱动换到真实机器上却不能工作了。

对于驱动开发,还是QEMU搭个虚拟机比较好。


=== 2010.3.25 ===

QEMU从0.12系列开始就不再支持kqemu,我估计自己做了优化,因为我看0.12的速度还行。

装了KVM以后,QEMU不再只是单进程单CPU,而是可以用上多个CPU,速度当然更快,但是配了KVM后也有副作用:不再是模拟,而是虚拟,虚拟机的问题会影响到主机。

我在KVM+QEMU的虚拟机上跑了个错误的驱动,最后不仅这台虚拟机,连主机都挂了。


=== 2010.4.20 ===

发现QEMU有个缺陷:我装完了虚拟系统,想加一块虚拟硬盘,于是qemu-img create了一个5G的文件,然后 -hdb 设为第二块硬盘,但是进入虚拟系统以后,不管我怎么fdisk,它就是认为这块新硬盘只有1G (我的虚拟系统是rhel5,不应该是OS的问题)。



相关文章

分类

5 Comments

omycle said:

Xen里面的设备模型还是用QEMU的。对于QEMU,如果是X86的话,最好安装QEMU的加速器Kqemu,这样会接近native速度。

DongHao Author Profile Page said:

QEMU从0.12系列开始就不再支持kqemu了,我估计已经做了优化。

omycle said:

噢,真的吗?
可是,kqemu是针对x86的啊,而QEMU则可以支持很多平台。所以,如果QEMU自身做优化,也优化不到哪里。
KQEMU的局限性是,客户机和宿主机都需要是X86平台。优化的主要原理是,当模拟的客户机与宿主的都是X86的时候,指令在翻译的时候,有很多可以直接在宿主机上运行,而不再经过二进制翻译。
KQEMU应该还是存在的。
对于ARM,MIPS,sparc等。单单QEMU是不可能做到接近native速度的。

DongHao Author Profile Page said:

你说的应该是对的。
0.12版的QEMU可能内置了kqemu的功能,我在x86的服务器上模拟x86平台跑得很快。当然,如果模拟别的平台就未必了,这个我没试。

在linux上用kvm带的改动过的QEMU跑得就更快了,还能用上多个CPU。

ppg said:

还没有玩过QEMU,正在入门virtualbox,学习linux中

留言:

关于文章

This page contains a single entry by DongHao published on 03 22, 2010 5:45 PM.

[linux-kernel] 进程退出时能做些什么? was the previous entry in this blog.

Intel软件技术大会(2010)归来 is the next entry in this blog.

Find recent content on the main index or look in the 存档 to find all content.