From: http://mzli.iteye.com/blog/1094823
系统配置:
1.显示配置:
qemu使用SDI接口来显示客户系统,这里咱们有两个选择,一个是qemu自己来显示,二是经过VNC来显示。默认状况下是由qemu本身显示,要使用vnc的话咱们须要加上-vnc :1参数,所以kvm运行命令就变成:
sudo qemu-system-x86_64 -hda winxp.img -boot d -m 384 -no-acpi -vnc :1
你也能够-vnc :2用过vnc的人就知道那个数字是什么意思,也就是一个标识,这样的话kvm运行时就没有任何的输出了,咱们直接用vncviewer :1来链接kvm里的vncserver进行显示。
进入XP系统后,显卡是默认的显卡只支持1024*768大小的显示,若是咱们想调整到更大,启动时加上参数-std-vga就能够了,进入XP后能够调整显卡到更高的屏幕参数。若是客户机是linux,还能够支持opengl,详细的设置可参考官方的说明:http://kvm.qumranet.com/kvmwiki/HOWTO_VMGL linux
2. 鼠标设置:
默认的qemu在窗口模式下会发现鼠标很慢,可是若是调整成全屏模式就没有这个问题,鼠标移动很平滑,很顺畅。若是是VNC的模式会发现老是有两个鼠标,并且移动很慢,这个时候只要咱们在qemu启动的时候加上-usbdevice tablet就能够解决VNC下的问题了。 shell
3. 声卡设置:
若是须要声音,只要在启动的时候加上参数:-soundhw all就能够,也能够用qemu -soundhw ?列出所支持的声卡硬件,用-soundhw <sound card>
选用指定的硬件。 ubuntu
4. 网络设置
首先在kvm的sourceforge下载页面: http://sourceforge.net/project/showfile ... _id=180599能够看到除了kvm还有kvm-guest-drivers-windows的驱动,下载此驱动,而后想办法放到虚拟机中(经过共享,或者直接在虚拟机下载)在kvm启动参数中增长-net nic,model=virtio参数,而后从新启动xp,进入xp后就会提示你有新设备须要安装,弹出驱动安装窗口,从下载的kvm-guest-driver中选择合适的驱动程序进行安装便可。这样安装的网卡速度上更快,几乎能够接近物理网卡的速度,具体我也没有测试先后差异有多大,不过网上应该能找到,反正使用起来感受还不错,特别是用KVM跑服务器的话,该驱动就更应该安装了。 windows
网卡驱动安装方法二: bash
一、下载最新的virto for win驱动 服务器
http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/ 网络
有两个:
virtio-win-1.1.11-0.vfd
virtio-win-1.1.11-0.iso
前者是windows安装时候加驱动用的(软盘镜像),后者是装好了再加驱动(光盘镜像)
本文主要叙述安装时候加载驱动的办法。(硬盘驱动在安装时候加载,网卡能够装好了再加载 dom
二、安装网卡驱动 测试
安装好XP,能正常启动之后,咱们添加以下启动参数,将网卡改成virtio,同时加载那张驱动光盘。 .net
[shell]
sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -drive file=pathX/winxp.img,cache=writeback,if=virtio,boot=on -net nic,model=virtio -cdrom pathX/virtio-win-1.1.11-0.iso
[/shell]
启动完毕会提示新驱动,在光盘中找就OK了!
qemu的网络配置有3种,更VMware所支持的同样:nat, host-only, bridge.
1)nat方式:
这是最简单的一种,直接在启动参数中加上-net user便可,主机打开DHCP功能,客户机经过DHCP获取IP,该置下客户机能够上网,但不能跟主机通信。
2)host-only:
使用tap/tun虚拟出一个网卡,须要内核支持tap/tun模块(通常都支持),还须要配置iptables转发,由于tap网卡上的ip不能和主机上ip在同一个网段。客户使用该网卡能够跟主机通信也能够上网,但局域网内的其余机器不能直接访问客户机,须要主机经过端口转发或者其余方式来访问。具体配置能够参见:
http://cisco7200-dynamips-dynagen-pemu. ... p?tid=1544
个人简单配置(内核须要支持tap/tun):
(1)修改/etc/sysctrl.conf, 将net.ipv4.ip_forward=1打开,也就是ip转发功能打开,修改完后须要reboot机器。
(2)创建一个脚本kvm-ifup.sh,内容很简单:
#!/bin/bash
sudo ifconfig $1 172.0.100.1 netmask 255.255.255.0 up
该脚本就是配置tap虚拟网卡设备的ip。$1一般会是tap0,根据你在qemu启动参数中给定的名字而定。
(3)在qemu启动参数中给定相关的虚拟网卡设备名,和相关的设备初始化脚本,也就是上面的这个脚本:
sudo qemu-system-x86_64 -hda /virtualOS/winxp.img -m 1024 -no-frame -localtime -no-acpi -usb -net nic,model=virtio -net tap,ifname=tap0,script=/home/chao/kvm-ifup.sh -usb -usbdevice tablet -std-vga
(4)在客户机中,手动的配置ip,网关和DNS,跟tap虚拟网卡的ip同一网段,而网关就是虚拟网卡的ip,好比个人xp配置:
IP: 172.0.100.101
MASK: 255.255.255.0
GATEWAY:172.0.100.1
(5)配置iptables的NAT:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
我是放在一个启动脚本里,每次启动kvm会执行一下,也能够在主机系统启动的时候就添加这条规则。
3)桥接模式:
这种应该是功能最全的一种,虚拟客户机的ip和主机处在同一个网段,客户机就如局域网中的一台主机同样,既能够和主机通信也能够上网,同时网路中的其余主机也能够访问客户机而不须要主机转发,不过若是在无线网卡上作桥接会遇到必定的问题,极可能就不成功,反正我尝试的结果就是失败,客户机能够ping主机但就是不能ping其余的地址,网上查了一下跟无线网卡驱动有必定的关系(见http://www.linuxfoundation.org/en/Net:Bridge),最后只有放弃了,但以太网卡上我测试是没有问题的。具体配置能够参照: http://linux.chinaunix.net/bbs/viewthre ... tid=788174
5. USB设备
KVM是经过qemu来支持USB设备的,能够在启动的时候就指定须要链接的USB设备,也能够系统启动后动态的添加删除.经过qemu的help可知,使用qemu的usb_add host:xxx:xxx来添加usb设备,那么如何知道对应的host:xxx:xxx呢,有2种方法:
1)在host主机ubuntu中执行lsusb获得这些信息
好比在我机器上ipod的信息以下:
Bus 006 Device 002: ID 05ac:1204 Apple Computer, Inc. iPod [Photo]
Bus 006 Device 001: ID 1d6b:0002
Bus 001 Device 001: ID 1d6b:0002
....
05ac:1204就是咱们须要的了。
2)进入虚拟机后,经过ctrl+alt+2调出qemu控制台,输入info usb来列出相关的信息,在个人机器上:
Device 4.2, speed 12 Mb/s
Class e0: USB device 044e:300d, UGX
Device 2.11, speed 480 Mb/s
Class 00: USB device 05ac:1204, iPod
...
颇有可能你在执行上述命令的时候会遇到这样的错误:
Could not open /dev/bus/usb/devices
能够参考:https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/156085去解决,主要就是把 /etc/init.d/mountdevsubfs.sh脚本中的如下几行打开(默认被注释掉了) # # Magic to make /proc/bus/usb work # mkdir -p /dev/bus/usb/.usbfs domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644 ln -s .usbfs/devices /dev/bus/usb/devices mount --rbind /dev/bus/usb /proc/bus/usb 而后手工执行: $ sudo /etc/init.d/mountdevsubfs.sh start 或者重启机器就ok了。 取得了上述USB设备的信息后,能够在kvm启动的时候就链接指定的USB设备,经过启动参数-usbdevice host:xxx:xxx 来添加相应设备。也能够在kvm的客户系统启动后添加,在客户系统中按ctrl+alt+2(ctrl+alt+1回到客户系统)调出qemu控制台,经过usb_add host:xxx:xxx来添加设备,经过info usb能够查看已经添加的usb设备信息,经过usb_del来删除链接的usb设备。