sudo apt-get install kvm qemu 之所以要把qemu也装上,是因为KVM没有包含建立虚拟磁盘的工具….无语. 接下来,要使用KVM,你肯定要有运行它的权限啦. 将你加入KVM组吧. sudo adduser yourusername kvm 另外,如果要让虚拟机能访问你的物理磁盘,你得将你加入多一个组: sudo adduser yourusername disk 接下来..ctrl+alt+backspace吧~ 重新登录之后呢,就可以创建磁盘啦.

便于管理,我们要先在用户目录下建一个kvm目录,进入之.

第一步:创建一个虚拟机的硬盘,将来来存放虚拟操作系统的.这个虚拟硬盘是利用文件系统来进行模拟的

qemu-img create -f qcow2 WindowsXP.img 8G

参数说明:

    * -f qcow2 :磁盘的格式

    * WindowsXP.img :磁盘名字..

    * 8G :摆明是大小设定..

这样就可以了.其他参数可以自己敲”qemu-img”+enter,慢慢看啦.“

安装XP登场!

第二步:安装是很快的..准备好iso之后..

kvm -M pc -m 256 -soundhw es1370 -hda /home/leewings/kvm/WindowsXP.img -localtime -net nic,vlan=0 -net user,vlan=0 -cdrom /media/ACER/MY\ SKY/Download/ISO/Windows/DeepinXP-V5.9f.iso -boot d -no-acpi

举例:

qemu-system-x86_64 -enable-kvm -m 512 -smp 1 -boot order=dc -hda /opt/vdisk.img -cdrom /home/d/Downloads/CentOS-6.4-x86_64-minimal.iso

-enable-kvm 是使用kvm内核,不用qemu的内核,开启虚拟机加速, 

-m 2048 是给客户机分配512MB内存,

-smp 1 是给客户机分配1个CPU,

-boot order=dc 是指定系统的启动顺序为光驱(d: CD-ROM)、硬盘(c: hard Disk),-hda ** 是分配给客户机的IDE硬盘(即前面准备的镜像文件),-cdrom ** 是分配客户机的光驱。默认情况下,QEMU会启动一个VNC server端口(如上面的::1:5900),可以用vncviwer工具来连接到QEMU的VNC端口查看客户机

windows xp的安装界面.~~

可以看出,KVM的”界面”真简洁啊..

安装是快速流畅的….真强悍.

先说几个关于安装的关键参数,还有一些常用的,下面会说滴~

    * -m 256 虚拟机内存大小

    * -soundhw es1370 声卡支持

    * -hda /home/leewings/kvm/WindowsXP.img 刚刚建立的虚拟磁盘C盘

    * -cdrom /media/ACER/MY\ SKY/Download/ISO/Windows/DeepinXP-V5.9f.iso 安装光盘的位置D盘(好吧,我的路径很深..)

    * -boot d 从光驱启动

    * -no-adpi 官方推荐使用这个参数,原因是qemu/kvm不太兼容,可能造成cpu的占用偏高.不过,有的人用不了这个参数….那就不用吧…..我成功使用,嘿嘿

安装好之后,可以先随便乱用一下..那速度..VBOX和VMware根本无法比拟….真棒!!

有点不爽诶..USB不能用?!鼠标很卡??!好吧..

先说关于鼠标卡,我们换种方式来使用吧~~

记得很久以前我说过的rdesktop么?我们又要用它啦~

首先要在XP里作如下设定:

    * 给你的用户加个密码..我的是123456.嘿嘿….多好

    * 打开你的远程桌面支持..

    * 控制面版->用户帐户->更改用户登录或注销的方式,“使用欢迎屏幕”和“使用快速用户切换”都勾上

    * 关机然后你会看到一个神奇的画面….这个,是N年前的电脑才出现过的..

      呃..我的截图没有窗口的….其实,它是有窗口的~

      不如..我们直接按叉叉呀.~

      其实,可以在终端->”CTRL+C”

      然后别急..我们来解决USB的问题.

   1. 「系统」→「系统管理」→「用户和组」→「管理组」新增群组「usbusers」,并将允许使用KVM的使用者都勾选起来。

   2. 打开终端,

      sudo gedit /etc/udev/rules.d/40-permissions.rules

   3. 在打开的文件中寻找:

      SUBSYSTEM=="usb_device"

      将其补充成:

      SUBSYSTEM=="usb_device", GROUP="usbusers", MODE="0664"

   4. 由于 ubuntu中预设关闭usbfs的支援,so..

      sudo gedit /etc/init.d/mountdevsubfs.sh

   5. 开启后,寻找:

            

      # 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

      将最后四行的#去掉,如下所示:

             

      # 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

      搞定!!!!!!!

还是别急..我们再来解决网卡桥接的问题..

      下面是我在Ubuntu8.04下设定kvm(适用于所有虚拟机)中桥接模式的过程,桥接模式可以使Host OS 和Guest OS在区域网路中处于平行地位。

      安装所需工具

uml-utilities,bridge-utils (已有)

      sudo apt-get install uml-utilities

   1. 为Host OS建立桥接界面(Bridge)和虚拟网卡设备(tap device)这样作的原故,是使将来取得IP是由桥接界面(bridge),而不是由ethx(真实的有线网卡)或tapx(虚拟网卡)来取得IP将下面的文本保存成文件,有需要按自己的情况修改一两个地方。

      另存为在/etc/init.d/virtualbridgedrun

      sudo gedit /etc/init.d/virtualbridgedrun

             

     # Virtual Bridging

       

      # Create a tap device with permission for the user running kvm

      # 建立一个使用者(user)有权限的设备tap0,user为自己用户名

      tunctl -t tap0 -u user

      chmod 0666 /dev/net/tun

       

      # Bring up ethX and tapX in promiscuous mode

      # 将ethx和tapx网卡界面设为混杂模式(Promiscuous)

      ifconfig eth0 0.0.0.0 promisc

      ifconfig tap0 0.0.0.0 promisc

       

      # Create a new bridge and add the interfaces to the bridge.

      # 建立新的桥接界面(bridge),並把 eth0, tap0加入bridge

      brctl addbr br0

      brctl addif br0 eth0

      brctl addif br0 tap0

       

      # 下面是两种获取IP的方式,可以自由选择,把不需要的注释掉就好了。

      # 将bridge设成静态IP。XXX都分别对应IP、子网掩码、网关。

      # 注意,以下设定不能与eth0的相同,不然都不能上网....

      # 唠叨多一句,自动获取IP的方式我从来没成功过..都会和eth0冲突,两边都不能上网了....

      #ifconfig br0 XXX.XXX.XXX.XXX netmask XXX.XXX.XXX.XXX up

      #route add default gw XXX.XXX.XXX.XXX

      # 将bridge设成动态DHCP分配IP。

      # dhclient br0

   2. 给上面的文件加上可执行权限

      sudo chmod +x /etc/init.d/virtualbridgedrun

   3. 再建立一个可执行文件

      sudo gedit /etc/init.d/virtualbridge

      添加如下内容:

      /etc/init.d/virtualbridgedrun &

      给它加上可执行权限

      sudo chmod +x /etc/init.d/virtualbridge

   4. 在/etc/rc2.d目录下做一个指向/etc/init.d/virtualbridge的链接

      cd /etc/rc2.d/

      sudo ln -sf ../init.d/virtualbridge S999virtualbridge

       #取名S999开头是为了让它最后启动

      重新启动电脑之后,就完成KVM桥接网路模式的设定了.

      输入ifconfig看看吧,多了个tap0噢~

      马上启动Guest吧 !Guest的网路设定和Host是独立平行的。 

好吧,搞定所有前奏了.

终于需要启动你的虚拟机了,..

kvm -M pc -m 256 -hda /home/leewings/kvm/WindowsXP.img -hdb /dev/sda -net nic -net tap,ifname=tap0,script=no -usb -localtime -redir tcp:3389::3389

P.S.:普通联网方式:

kvm -M pc -m 256 -hda /home/leewings/kvm/WindowsXP.img -hdb /dev/sda -net nic -net user -usb -localtime -redir tcp:3389::3389

稍等..其实就是等到登录界面………

然后,再起一个终端

rdesktop localhost:3389 -u administrator -p 123456 -g 1280x800 -D -r sound:local

windows..它出现啦!鼠标很平滑..~嘿嘿

好了,现在解释一下参数吧.

下面是KVM的参数.

    * -hda /home/leewings/kvm/WindowsXP.img 之前创建并安装了XP的虚拟磁盘

    * -hdb /dev/sda 让kvm加载我的系统分区.这个命令加载的是全部的分区..可以根据自己的情况调节的.

    * -net nic -net user 使用简单网络访问,可以让虚拟机上网.

    * -usb 使能 USB 支持.

    * -localtime 时间同步,你该不会希望你的虚拟机是另外的时间吧?!

    * -redir tcp:3389::3389 把虚拟机的远程桌面服务器端口映射到宿主机的端口,这个等同windows的远程桌面.

下面是rdesktop的参数

    * localhost:3389 虚拟机的网络IP(如果是普通方式,直接就是”localhost”;如果是桥接,第一次要到guest里面查看IP地址..):端口

    * -u administrator 用户名,像我这种直接安装精简版ISO的,一般都是administrator啦..

    * -p 123456 密码..我刚设定的123456

    * -g 1280×800 显示分辨率,根据需要来调整咯

    * -D 消除远程终端窗口的边框

    * -r sound:local 启用声音.注意:不能与KVM参数中的”-soundhw es1370″共用!

这种方式,可以享受KVM的所有效率,它真的快到不行啊..,

同时,鼠标是不是很快了?另外,几乎可以避免所有的键盘冲突.多好,嘿嘿~

不过,我们知道,用rdesktop连接,只能断开不能关机..

那如果加入了”-nographic(不启动图形界面)”参数,我要关机怎么办?那我们要去查看虚拟机的界面.

方法有2:

    * 使用远程桌面工具,地址 localhost 端口 5900.

    * 使用远程终端,地址 localhost 端口 3389.

使用上了,肯定就把我常用的软件给弄上啦~

对于VBOX和VMware的无缝模式,我还是恋恋不舍….怎么办?!

      只需要一个小改动^^看我的~

   1. 在XP,下载SeamlessRDP,并解压到C盘根目录下,C:\seamlessrdp,然后就登出吧

   2. ubuntu,通过rdesktop,用seamlessrdpshell.exe这个东西调用虚拟机上的软件,只把软件界面搞到本地来用.在我这里打开IE的命令如下:

      rdesktop -A -s "C:\seamlessrdp\seamlessrdpshell.exe C:\Program Files\Internet Explorer\IEPLORER.EXE" guestip:3389 -u administrator -p 123456  -r sound:local

            创建了4个启动器

          * 桥接模式的windows xp

            kvm -M pc -m 256 -hda /home/leewings/kvm/WindowsXP.img -hdb /dev/sda -net nic -net tap,ifname=tap0,script=no -usb -localtime -redir tcp:3389::3389

          * 使用SeamlessRDP的rdesktop

            kvm -M pc -m 256 -hda /home/leewings/kvm/WindowsXP.img -hdb /dev/sda -net nic -net user -usb -localtime -redir tcp:3389::3389

          * 普通联网模式的windows xp

            rdesktop guestip:3389 -A -s "C:\seamlessrdp\seamlessrdpshell.exe C:\Program Files\Internet Explorer\IEPLORER.EXE" -u administrator -p 123456  -r sound:local

          * 普通的rdesktop

            rdesktop localhost:3389 -u administrator -p 123456 -g 1280x800 -D -r sound:local

tips:不知道为什么,KVM使用SeamlessRDP的rdesktop不是很稳定..很容易就退出………..以前在vbox中是不会出现的..囧

这样一来,我的虚拟机就配置好了..花了一个星期时间….主要是因为上课/写作业等事情,要断断续续的来做..

…累..

呼..搞定了!

真爽!!这速度,以后使用就好舒坦了..

本来想附上自己翻译的KVM和rdesktop参数表..

但是,目前对于我来说..水平有限….只能当草稿存起来了..

同志们就自己敲KVM或rdesktop自己看E文的参数表吧..~

就这样吧,我要休息了..

PS.来自xjx的补充:

如果出现 open /dev/kvm: No such file or directory, 可能有人的内核还没有加入kvm支持, 增加一个加入 kvm 到内核的命令, 这个是在 

http://forum.ubuntu.org.cn/vie

…..0ee2315c7a 看到的.

命令:

modprobe kvm_intel 或者kvm_amd