热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Debian6系统下安装配置KVM虚拟机的方法

折腾了整整一个星期了,终于把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的问题。


推荐阅读
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 本文介绍了如何在Ubuntu 16.04系统上配置Nginx服务器,以便能够通过网络访问存储在服务器上的图片资源。这解决了在网页开发中需要使用自定义在线图标的需求。 ... [详细]
  • Linux环境下配置Subclipse访问SVN+SSH仓库的方法
    本文详细介绍如何在Linux操作系统中配置Subclipse,以便通过SSH协议安全访问SVN仓库。不同于常见的Windows配置指南,本文提供了针对Linux用户的详细步骤。 ... [详细]
  • 本文探讨了Unix和Linux操作系统的起源和发展历程。从20世纪60年代计算机技术的初期阶段,到Unix的诞生及后续Linux的崛起,文章详细介绍了这些操作系统如何逐步成为现代计算不可或缺的一部分。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 在Ubuntu 14.04 (Desktop AMD64) 上安装与配置ROS Indigo
    本文档详细介绍了如何在Ubuntu 14.04 (Desktop AMD64) 系统上安装和配置ROS Indigo。包括设置软件源、安装ROS核心组件、初始化rosdep以及创建ROS工作空间等步骤。 ... [详细]
author-avatar
全程解密_785
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有