使用的原因:
1. 不想用 VMWare。
2. Xen 中不能用 VMWare。
3. VMWare 太大,而且网络设置的网桥设置很不爽,其他的方式也不喜欢。
4. VMWare-tools 太麻烦了。
5. 偶是 BT,天才 DBT。
安装中,我选用 TAP 网卡模式,如果是 user net 的话,可以忽略所有的网卡设置,包括 Bridge 等。
QEMU 支持USB(不完全支持),支持声卡。很方便。
说明一下我的配置环境:
系统:CLFS x86 32Bit
内核:Kernel 2.6.16.5
防火墙:关闭。(避免受到影响)
软件下载:
qemu-snapshot-2006-04-14_23:
http://qemu.dad-answers.com/download/qemu/
kqemu-1.3pre5:
http://fabrice.bellard.free.fr/qemu/download.html
1. 安装。
安装 qemu-
# 去掉HTML格式的帮助文件的安装。因为我没有需要的 texi2html。不过仍然可以 man qemu。
PHP 代码:
sed -i -e '/texi2html/s:.*:\techo &:g'
-e '/install -m 644 qemu-doc.html/s:.*:\techo &:g' Makefile
要指定 gcc 编译。因为我的 gcc 默认是 4.1.0,QEMU 不能正确得编译。
PHP 代码:
./configure --prefix=/usr --enable-alsa --enable-system --enable-user --cc=i686-pc-linux-gnu-gcc-3.3.6 --host-cc=i686-pc-linux-gnu-gcc-3.3.6
make
make install
安装内核加速器 kqemu,这里不需要指定gcc,gcc 要和你编译内核的版本一样。加入加速器支持。这样可以明显加快处理速度。
PHP 代码:
./configure && make && make install
2. 配置。
PHP 代码:
内核:
要选上 TUN/TAP 和 Bridge,以及VLAN。
CONFIG_TUN=y
CONFIG_BRIDGE=y
VLAN_8021Q=y
配置加速器的设备文件:
LFS 的:
PHP 代码:
/etc/sysconfig/create 加入
/dev/kqemu dev 0666 root users char 250 0
/etc/sysconfig/modules 加入
kqemu
其他的想办法每次启动运行以下命令:
PHP 代码:
modprobe kqemu
mknod -m 666 /dev/kqemu c 250 0
sudo 设置,这个是一个非常低的安全设置,自己调整!:
允许用户创建 tapX,visudo 后加入:
PHP 代码:
Cmnd_Alias QEMU=/sbin/ifconfig, /sbin/modprobe, /sbin/brctl
ALL ALL=NOPASSWD:QEMU
Bridge 的创建:
这里推荐使用 6 楼 Lolita 给出的脚本,更方便。加入那个脚本后,就可以开始 Windows 安装了。
要先创建一个 bridge,并且设置 IP。(暂时手动进行。)
PHP 代码:
#!/bin/bash
MYBR="emu0"
MYBR_IP="192.168.0.2"
brctl addbr $MYBR
brctl stp $MYBR off
ifconfig $MYBR "${MYBR_IP}" netmask 255.255.255.0
ifconfig $MYBR up
创建 /etc/qemu-ifup,供 qemu 程序使用:
PHP 代码:
#!/bin/bash
#$1 is the ethernet(usually tapX)
MYBR="emu0"
MYBR_IP="192.168.0.2"
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to $MYBR..."
sudo /usr/sbin/brctl addif $MYBR $1
sleep 1
记得执行 chmod +x /etc/qemu-ifup
2. 安装 Windows。
# 创建一个 16G 大小的硬盘,sparse的,不占用多余的硬盘空间。
qemu-img create -f raw ~/VM_Image/qemu_Win2K 16G
安装 Windows的时候:
如果是 Win2K ,不要开加速器,不然黑屏;记得加上 -win2k-hack,XP 和 2003 都不需要这个。
如果是 WinXP,第一次重启后可以用加速器
如果是 Win2003,全程可以用加速器
如果是 Win2003,那么请用 -net nic,model=rtl8139 代替 -net nic。(感谢Lolita 提供)
如果是 XP 或者 2003,那么请用 -soundhw es1370 代替 -soundhw all。(感谢 Lolita 提供)
我的机器很奇怪,如果用256,就会死机。所以我用 -m 128。另外,64/128/192/512 等也没此问题。
如果用的是实际的 CD 安装,那么用 -cdrom /dev/hdX 就可以了。很方便。ISO 文件的话,用 -cdrom /xxx/abc.iso。
# 加速器选择参数:-no-kqemu 或者 -kernel-kqemu。
安装 Windows,用这个命令:
PHP 代码:
qemu -no-kqemu -localtime -m 128 -k en-gb -soundhw all -usb -net nic -net tap -cdrom /winiso/Win2000_SP4.iso -win2k-hack -boot d -hda ~/VM_Image/qemu_Win2K
# 第一次重启后,改变启动顺序。如果是Win2K,可以去掉 -win2k-hack了。
PHP 代码:
qemu -kernel-kqemu -localtime -m 256 -k en-gb -soundhw all -usb -net nic -net tap -cdrom /winiso/Win2000_SP4.iso -boot c -hda ~/VM_Image/qemu_Win2K
3. 运行 Windows。
#使用加速器:
PHP 代码:
qemu -localtime -m 64 -k en-gb -soundhw all -usb -kernel-kqemu -net nic -net tap -boot c -hda VM_Image/qemu_Win2K
#不用加速器:
PHP 代码:
qemu -no-kqemu -localtime -m 128 -k en-gb -soundhw all -usb -net nic -net tap -boot c -hda qemu_Win2K
使用加速器后,速度快如飞!安装Win2K3,一个小时搞定。
注意事项:
1. 因使用了TAP,guest 可以很方便的使用主机上各种服务,比如 Samba / FTP / Web 代理 等。
2. 如果只有一块网卡的话,那么 Bridge 的时候有点麻烦,会断开网络的。这个要根据实际情况决定如何解决。
这里我给出一个简单的方法,虽然不一定是最好的。用 dummy 网卡模拟一个虚拟网卡,用来和主机通讯。
可以考虑把这些加入脚本,每次启动都运行。
1. 在 /etc/modprobe.conf 里边加入 alias dummy0 dummy
2. 加载模块,运行:modprobe dummy0
3. 运行 ifconfig dummy0 看看是否成功加载。
4. 把 dummy0 加入 bridge。
PHP 代码:
ifconfig dummy0 0.0.0.0 promisc arp up
brctl addif emu0 dummy0
这样的话,guest 就可以跟客户机通讯了。
LFS 的用户,可以用这个方法来修改你的网络配置,请看:
http://wiki.linuxfromscratch.org/blf...rkingUtilities
是我写的,测试通过。
3. 如果客户机需要上网,主机作 NAT 用 MASQUARADE 比较方便。也可以开代理。最简单的方法(记得把eth0 换成连接Internet 的接口):
PHP 代码:
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
4. 如果2个实例一起开启的话,MAC 地址是一样的。启动参数中要定义 -net nic,macaddr=addr。比如:
PHP 代码:
qemu -localtime -m 192 -k en-gb -soundhw all -usb -kernel-kqemu -net nic,macaddr=52:54:00:12:34:01,model=rtl8139 -net tap -boot c -hda VM_Image/qemu_Win2003
5. 内核版本有改动的时候 (如升级),一定要重新编译 kqemu,而且记得是要运行configure命令,不然一启动QEMU就死机。我的系统死了N次才发现:(。
PHP 代码:
make clean && ./configure && make && make install && depmod -ae
rmmod kqemu && modprobe kqemu
6. Udev 的设置。
如果你的系统是用 udev 来建立程序的,那么需要设置一下tun 和 kqemu的权限。
创建 /etc/udev/rules.d/98-qemu.rules 并且加入:
PHP 代码:
KERNEL=="tun", NAME="net/%k", GROUP="users", MODE="0660"
KERNEL=="kqemu", NAME="%k", GROUP="users", MODE="0660"
/etc/modprobe.conf 中加入
PHP 代码:
options kqemu major=0
然后运行 depmod -ae && rmmod qemu && modprobe qemu,看看 /dev/kqemu 文件的权限是否正确。
Changelog:
2006-04-18
--加入 2003 的声卡支持。
--加入防火墙说明。
--加入内核变动说明。
2006-04-19
--加入 udev 配置说明。
--进行整理,加强可读性。
--加入 CDROM 的访问方法。
--加入 XP 安装窍门。
2006-04-20
--改善 /etc/qemu-ifup 脚本。由 Lolita 提供,在此感谢。
--进行整理,加强可读性。
2006-04-23
--加入软件版本说明以及下载地址。感谢 utstart 指出。
--加入上网设置。用 iptables 的 MASQUARADE 方式。
转贴请保持完整。
By 终极幻想@LinuxSir.Org
[转帖] QEMU 的安装以及使用
- Einhorn
- 帖子: 114
- 注册时间: 2006-04-29 10:24
-
- 帖子: 309
- 注册时间: 2006-01-04 19:26