现在的位置: 首页 > 操作系统 > 正文

SPICE在ubuntu上,Guest机的配置。

2017年09月04日 操作系统 ⁄ 共 4058字 ⁄ 字号 评论关闭

系统配置: 
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 

2. 鼠标设置
默认的qemu在窗口模式下会发现鼠标很慢,但是如果调整成全屏模式就没有这个问题,鼠标移动很平滑,很顺畅。如果是VNC的模式会发现 
总是有两个鼠标,而且移动很慢,这个时候只要我们在qemu启动的时候加上-usbdevice tablet就可以解决VNC下的问题了。 

3. 声卡设置
如果需要声音,只要在启动的时候加上参数:-soundhw all就可以,也可以用qemu -soundhw ?列出所支持的声卡硬件,用-soundhw <sound card> 
选用指定的硬件。 

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跑服务器的话,该驱动 
就更应该安装了。 

 

网卡驱动安装方法二:

1、下载最新的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安装时候加驱动用的(软盘镜像),后者是装好了再加驱动(光盘镜像)
本文主要叙述安装时候加载驱动的办法。(硬盘驱动在安装时候加载,网卡可以装好了再加载

2、安装网卡驱动

安装好XP,能正常启动以后,我们添加如下启动参数,将网卡改为virtio,同时加载那张驱动光盘。

[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设备。 

抱歉!评论已关闭.