85271847 2011-08-19
操作系统虚拟化之KVM
KVM(Kernel-basedVirtualMachine)是一个全虚拟化的解决方案,它自2.6.20以后正式成为Linux内核的一部分,也就是说,它是Linux内核官方支持的一个虚拟化方案。KVM的硬件需求是CPU必须支持虚拟化,对于IntelCPU来说是IntelVT,AMDCPU则是AMD-V。如何确定你的CPU支持硬件虚拟化呢?
egrep'(vmx|svm)'/proc/cpuinfo
vmx是IntelCPU的,svm则是AMDCPU的。我的CPU返回如下:
flags:fpuvmedepsetscmsrpaemcecx8apicsepmtrrpgemcacmovpatpse36
clflushdtsacpimmxfxsrssesse2sshttmpbesyscallnxlmconstant_tscarch_perfmonpebs
btsrep_goodpnidtes64monitords_cplvmxsmxesttm2ssse3cx16xtprpdcmsse4_1
xsavelahf_lmidatpr_shadowvnmiflexpriority
flags:fpuvmedepsetscmsrpaemcecx8apicsepmtrrpgemcacmovpatpse36
clflushdtsacpimmxfxsrssesse2sshttmpbesyscallnxlmconstant_tscarch_perfmonpebs
btsrep_goodpnidtes64monitords_cplvmxsmxesttm2ssse3cx16xtprpdcmsse4_1
xsavelahf_lmidatpr_shadowvnmiflexpriority
在Ubuntu下面需要安装下面的软件:
sudoapt-getinstallkvmqemu-kvm
加入个人用户到kvm组,以保证个人用户可以读写/dev/kvm,否则,以个人用户无法运行kvm:
sudoadduser$USERkvm
如果想使用物理磁盘,则需要加个人用户到disk组:
sudoadduser$USERdisk
现在最好重启一下计算机!
下面开始安装操作系统,我安装了WindowsXP和Windows7,下面以WindowsXP为例开始安装。
先准备好一个磁盘文件,有2种常用的格式,一个是qemu的qcow2格式,一个是raw格式,前者是可以增长的文件格式,后者实际是磁盘上一个连续区域。
qcow2:
qemu-imgcreate-fqcow2winxp.img10G
Raw:
ddif=/dev/zeroof=winxp.imgbs=1024Kcount=10000
下面开始安装,准备好安装光盘文件winxp.iso,下面是安装的指令:
kvm-m1024-cdrom=winxp.isowinxp.img-bootd-localtime
XP安装很快,20分钟左右就可以安装好,Win7大约需要40分钟。下面开始以下后面的工作,会涉及更多的参数。
配置硬盘和网络的virtio模式,virtio是个半虚拟化的模式,速度比传统方式还要快些,根据Usingvirtio_netForTheGuestNIC一文的测试,virtio还是很有优势的。
在虚拟机里面下载virtiowindowsguest驱动:Storagedriver和Networkdriver,其中已经包含了xp、win7等的驱动。
根据bootfromvirtioblockdevice一文的介绍,用以下方式进行安装驱动。
建一个临时的磁盘文件:
qemu-imgcreate-fqcow2fake.img1G
启动虚拟机:
kvm-drivefile=winxp.img,if=ide,boot=on-drivefile=fake.img,if=virtio-m1024
-localtime-netnic,model=virtio-netuser-usb-usbdevicetablet
在启动的虚拟机里,会找到virtio设备,然后安装这两个驱动。安装完毕后,关机。以下面方式重新启动:
kvm-drivefile=winxp.img,if=virtio,boot=on-m1024-netnic,model=virtio-netuser
-usb-usbdevicetablet-soundhwes1370
下面配置远程桌面对Windows的访问,首先需要在虚拟机的Windows里面开启远程桌面,而且必须给用户加上密码,WindowsXP和Windows7需要是Professional以上版本。然后运行mmc继续配置远程桌面访问参数。
打开mmc后,“添加/删除管理单元“->“添加”->“组策略对象编辑器”->“本地计算机”。在里面配置:“计算机配置”->“管理模板”->“Windows组件”->“终端服务”->“限制最大颜色深度”,设置为24位,原来默认是16位。
关机,重新以可以以新的模式后台运行:
kvm-Mpc-drivefile=winxp.img,if=virtio,boot=on-localtime-m1024-soundhwes1370
-netnic,model=virtio-netuser-vnc127.0.0.1:0-daemonize-redirtcp:3389::3389
-nameWindowsXP-usb-usbdevicetablet
-vnc127.0.0.1:0表示以vnc模式运行,-daemonize表示kvm以后台运行,-redirtcp:3389::3389表示将虚拟机的3389端口映射为宿主机的3389端口上,这样rdesktop本机就可以进行远程桌面访问了。如果想实时查看状态,可以使用vncviewer或者vinagre查看。
现在可以rdesktop进行访问了,下面是rdesktop的参数:
rdesktoplocalhost-uusername-ppassword-f-D-z-P-rsound:local-clipboard
这里-z参数可以保证鼠标运行速度不缓迟,-f表示全屏。
虚拟机如何使用USB设备呢,首先要保证用户可以访问USB设备,qemu支持usb设备在虚拟机里面的拔插,在qemu界面里(或者vnc访问的界面里),Ctrl+Alt+2进入qemumonitor命令行控制模式,然后
usb_addhost:vid:pid
查看usb设备:
infousb
Windows7的运行和访问参数与WindowsXP类似。
下面是我的一些截屏:
WindowsXP:
Windows7:
rdesktop启用Windows7字体平滑功能
由何勃亮在星期五,2010-04-0209:36发表。
rdesktop连接上Windows7以后,一般是不开启字体平滑功能,因此,字体不是特别好看,可以通过加入下面的参数来连接,就启用字体平滑功能了,而且原来的Win7桌面也保留了,不像之前连接后出现的黑色桌面,还需要自己再设置下。
rdesktoplocalhost-x0x80-uusername-ppassword-f-D-z-P-rsound:local-clipboard
主要是加入-x0x80选项。
http://www.heboliang.cn/archive/kvm-windows.html