作者:全程解密_785 | 来源:互联网 | 2014-05-27 21:13
折腾了整整一个星期了,终于把KVM装上了,在KVM下装了个XP试试。虽然还有点小问题,但基本功能都可以实现。先记录下来,免得以后忘记了。首先介绍以下软硬件的配置:硬件:CPU:Inteli3-2120RAM:4GDDR3HD:SATA500G软件:Debian6.0.5amd64neti
折腾了整整一个星期了,终于把KVM装上了,在KVM下装了个XP试试。虽然还有点小问题,但基本功能都可以实现。先记录下来,免得以后忘记了。
首先介绍以下软硬件的配置:
硬件:
CPU:Intel i3-2120
RAM:4G DDR3
HD: SATA 500G
软件:
Debian 6.0.5 amd64 netinst
GMONE 2.30.2 (装GUI是为了直接在这台电脑上面测试安装XP,有两台电脑测试的就不要装GUI了)
1.检查系统能否支持KVM
首先要确定CPU要支持虚拟化,不然白费功夫。
[root@kvm-server ~]# egrep '^flags.*(vmx|svm)' /proc/cpuinfo
要看到有vmx或svm的标示才行
2.安装KVM
[root@kvm-server ~]#
apt-get install qemu-kvm qemu uml-utilities
libvirt-bin libvirt-dev
据说现在的版本都是自动加载内核模块,如果实在不行,试下手动加载:
[root@kvm-server ~]# modprobe kvm_intel #or kvm_amd
KVM就这样装完了,困难的还在后头
如果你安装了图形界面,可以安装virt-manage,其它操作基本都可以在里面完成了。不过感觉比vmware
workstation的功能还要少。
在后面都是以命令行方式完成。
3.建立虚拟磁盘(建立和运行虚拟机都可以在非root用户下进行)
[test@kvm-server ~]$ kvm-img create -f qcow2 xp.img 30G
#-f 指定虚拟磁盘的格式。
#qcow2是不立即分配空间,随着使用而动态增长空间的格式。这里还可以使用vmware的vmdk格式啊。
4.启动虚拟机
kvm -m 2048 -smp 2 -drive file=~/vm-images/xp.img -cdrom
~/ghost-xp.iso -boot d
#-m 指定内存大小,单位Mb
#-smp 指定CPU个数
#-driver 虚拟磁盘路径,这里可用-hda,-hdb,。。。等代替,表示第一个第二个硬盘
#-cdrom 光驱路径,可指定/dev/cdrom使用物理光驱
#-boot 指定默认启动驱动器
用上面的命令很容易就可以启动虚拟机了,但实际上如果只使用上面的参数启动并安装XP,你会觉得非常痛苦!因为实在是太慢了。GHOST的速度只有45Mb/min,单GHOST就花了几个小时。开始我还以为kvm不支持ghost,换直接安装,还是很慢。查了一下资料发现kvm还可以用虚拟驱动(virtio)提高磁盘和网络的速度。虚拟驱动(virtio)的说明就不在这里班门弄斧了,baidu
google一下就一大堆。下面的命令使用了virtio驱动和writeback模式,速度比什么都不用快10倍以上。
kvm -localtime -m 2048 -smp 2 -vga std -drive
file=~/vm-images/xp.img,cache=writeback,if=virtio,boot=on -cdrom
~/iso/GHOST_winxpsp3.iso -boot d -fda
~/Downloads/viostor-31-03-2010-floppy.img -enable-kvm -net
nic,model=virtio -net user -usbdevice tablet -daemonize -vnc
127.0.0.1:0 -redir tcp:3389::3389
#cache=writeback必须放在if=virtio前面,我没试过反过来放会怎样,是看网上资料说的,有时间试一试
#if=virtio,boot=on好像要一起用的
#-fda 这是指定一个软盘文件,这是virtio for win的驱动,在安装或ghost时会用到
#-enable-kvm 还没查到什么意思,后补吧
#-net nic,model=virtio -net user
设置网卡,这里比较复杂,资料是有,但还不明白,有经验的大大请传授一下
#-usbdevice tablet 鼠标整合,自动捕获鼠标
#-usb 设置usb
#-daemonize 后台运行,不出现图形界面
#-vnc 127.0.0.1:0 设置vnc端口
#-redir 这个是可以用win的远程桌面连接的参数(我还没测试过)
#使用了-daemonize 或 -vnc
后都不会出现图形界面的,初学的如果安装了图形界面还是暂时不要用这两个选项,可控性比vnc好一点,速度稍慢一点
说一下我用virtio和writeback的感受,刚开始什么参数都不用,Ghost速度是45Mb/min,使用了virtio,没有用writeback时,速度居然还是只有45Mb/min,同时用virtio和writeback时,初始速度可以达到1000Mb/min,然后慢慢降下来,稳定在750~850Mb/min左右。这是ISO文件在网络服务器上,我的台式机和服务器之间跑100Mb局域网。还没测试过单用writeback时的速度。
使用virtio设备,就必须安装virtio驱动,不然一定蓝屏的。上面的-fda就是把驱动挂到软驱上。如果是进入winpe再ghost的话就在winpe启动的时候按F6->按S->选择系统版本->按回车
如果是安装版的,按以下链接做吧
http://www.linux-kvm.org/page/WindowsGuestDrivers/viostor/installation
Ghost完xp后第一次启动,如果你不关了虚拟机改变设置,多半会蓝屏的,呵呵。因为刚才装的virtio驱动是为winpe安装的,你ghost出来的xp还没加载这个驱动。所以Ghost完后第一次启动,先关了虚拟机,把上面的if=virtio,boot=on去掉,完成第一次启动,安装结束再说。
5. 安装virtio驱动
完成xp的安装后,再用非virtio的驱动当然不爽啦,要在xp中安装了virtio驱动,再把硬盘改成virtio模式才行。先用
kvm-img create -f qcow2 temp.img 1G
创建一个临时硬盘文件,大小随意,反正是临时的。启动xp时把原来的硬盘和这个临时硬盘都挂上(xp.img用普通模式,temp.img用virtio模式),还继续挂载那个virtio驱动到软驱上。这样当启动xp后,就会自动找到有新硬件,再用软驱中的驱动安装好就可以了。具体命令如下:
kvm -localtime -m 2048 -smp 2 -vga std -drive
file=~/vm-images/xp.img,cache=writeback,boot=on -drive
file=~/vm-images/temp.img,if=virtio -cdrom
~/iso/NetKVM_and_viostor.iso -boot c -fda
~/Downloads/viostor-31-03-2010-floppy.img -enable-kvm -net
nic,model=virtio -net user -usbdevice tablet -daemonize -vnc :0
#留意这里换成-boot c,由C盘启动了
#光盘文件也改成了virtio网卡驱动
启动xp后就在光盘上找驱动就可以了。光盘中包含了网卡和virtio硬盘的驱动。但没包含显卡驱动。虽说kvm对图形显示不太好,装了驱动也比不上vmware,但总看着个黄色的叹号就是不爽。去下载了vbempg.zip,里面就包含了显卡的驱动程序。
(在写这篇文章的时候重装了一次xp,发现原来光盘iso文件里就包含了软驱文件里的驱动,那就不需要加载软驱了)
装完所有驱动后,关机,把上面挂载软驱和temp.img的参数去掉,再启动,个人觉得启动速度飞快啊,哈哈!
6.配置桥接网络
(1)$apt-get install bridge-utils
sudo /usr/local/kvm/bin/qemu-system-x86_64 -m 512 -hda
/home/lm/kvm/winxp.img -localtime -net
nic,vlan=0,macaddr=52-54-00-12-34-01 -net
tap,vlan=0,df=h,ifname=tap0,script=no -boot d -cdrom
/home/lm/iso/winxp.iso -smp 2 -clock rtc -soundhw es1370
(2) 如果在本机上,则sudo invoke-rc.d networking stop
如果是远程登录,则一定要跳过本步
(3) 创建网桥:
$ sudo vim /etc/network/interfaces
(i)如果主机是指定IP的,修改配置文件为:(以192.168.1.10为IP的)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.1.10
network 192.168.0.0
netmask 255.255.0.0
broadcast 192.168.255.255
gateway 192.168.1.254
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
(ii)如果主机是dhcp的,则修改为类似于这种:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
(4) 启动网络并检查:
$sudo /etc/init.d/networking restart
检查:
$sudo brctl show
(有br0出现)
或者检查:
ifconfig
(有br0使用正常IP)
至此KVM基本上已经测试可以工作了,XP也装好了,要再深入管理,命令行好像用virsh,我再学习学习,以后有机会再写写吧。
7.还存在的问题
1)到现在还没查到虚拟机启动后怎么换光驱里挂载的iso(可能启动后按ctrl+alt+2切换到qemu控制台再用命令去做,但如果用vnc连接的话应该没这东东吧?)
2)用了-vnc或-daemonize后,只能用vnc连接,qemu不知道还能管理不?这样要是进不了系统,我就不会关机了。尝试kill了进程,再开虚拟机就每次都蓝屏了,感觉有点脆弱。也不知道是xp的脆弱还是kvm的问题。