赵小黑 发表于 2015-10-10 09:56:37

使用KVM/QEMU命令安装虚拟机

环境准备
     两台主机,一台用作kvm客户端,一台用户kvm服务端,kvm服务端用来创建和管理镜像,kvm客户端使用VNC远程连接kvm服务端的镜像,客户端使用ubuntu14.0桌面版,服务端使用ubuntu14.0 server版,客户端的用户名这边我是kvmclient,服务端的用户名为kvmserver



Kvm Server端配置

安装kvm和qemu-kvm
  

Apt-get install kvm qemu-kvm    效果如下  
  
      安装完成后测试模块加载是否正常
  

安装网络配置工具tunctl和brctl一个用来虚拟网卡一个用来设置网桥

Apt-get install uml-utilities
Apt-get install bridge-utils


安装vnc服务


  

Apt-get install vnc4server
#如果提示出现依赖包xbase-client没安装,先apt-get update下再执行上面的指令  
      安装完成后设置vnc服务密码(输入vnc后使用tab键可以看到所有vnc开头的指令)

  
      启动vncserver服务(标示在本地启动一个1号监视器)
  


  
      关闭服务,修改配置文件
  
  
  


      配置文件如下

  


      修改后如下


Kvm Client端配置

安装xvnc4viewer
  
  

  
  
      给服务器添加网络配置脚本,在kvmserver的home目录下新建一个scripts目录,然后添加如下脚本(脚本里面的kvmserver根据自己的实际用户名修改)
  

#!/bin/sh
DEL_IPADDR=`ip addr show eth0|grep 'global eth0'|awk '{print $2}'`
IP_ADDR=`ifconfig eth0|grep 'inet addr'|cut -d ':' -f 2|cut -d ' ' -f 1`
NET_MASK=`ifconfig eth0|grep 'inet addr'|cut -d ':' -f 4|cut -d ' ' -f 1`
DEV_ETH="eth0"
TAP_NAME="tap1"
if [ -z "$DEL_IPADDR" ]; then
echo "${DEV_ETH}'s IP is not exist.\n"
exit
fi
#Create rollback.sh
echo "#!/bin/sh\n"\
"tunctl -d $TAP_NAME\n"\
"ifconfig br0 down\n"\
"brctl delbr br0\n"\
"ifconfig eth0 $DEL_IPADDR netmask $NET_MASK up">rollback.sh
#Create tap device
MSG=`ifconfig $TAP_NAME|grep "Device not found"`
if [ -z "$MSG" ]; then
#echo "1\n"
tunctl -t $TAP_NAME -u kvmserver
fi
#Create network bridge with br0,added eth0 to br0
#Delete current eth0 IP address
ip addr del $DEL_IPADDR dev $DEV_ETH
MSG=`brctl show|grep "^br0"`
if [ -z "$MSG" ]; then
#echo "2\n"
brctl addbr br0
fi
MSG=`brctl show|grep $DEV_ETH`
if [ -z "$MSG" ]; then
#echo "3\n"
brctl addif br0 $DEV_ETH
fi
#Give the br0 a IP address,then up that
ifconfig br0 down
ifconfig br0 $IP_ADDR netmask $NET_MASK up
ifconfig $TAP_NAME down
ifconfig $TAP_NAME up
MSG=`brctl show|grep $TAP_NAME`
if [ -z "$MSG" ]; then
#echo "4\n"
brctl addif br0 $TAP_NAME
fi

    或者在client下写好然后上传到server上  
  
     能看懂上面脚本的童鞋也可以直接修改配置文件,脚本运行的每次虚拟机重启后都要执行一遍。然后用root用户给脚本附加可执行权限,然后以root权限执行
  
      如果发生错误可以使用rollback.sh脚本回退,这个脚本在switch_br0.sh执行时会自动生成,当然也要用root附加可执行权限,如果switch_br0.sh执行成功会有如下提示
  
      用ifconfig和brctl查询网络信息
  
  

第二步
      创建虚拟磁盘
  

qemu-img create –f qcow2 winxp.img 10g  
      先将xp的镜像光盘插入VMware的server虚拟机的光驱中

      在虚拟磁盘上安装操作系统,并启用qemu控制台管理虚拟机,使用VNC作为远程桌面,(这个命令好像不能写在脚本里面执行,否则会出现安装操作系统的时候提示只有1M大小磁盘空间)
  

qemu-system-x86_64 –hda ~/img/win_xp.img –m 512 –boot d –cdrom /dev/cdrom –net nic,vlan=0 –net tap,ifname=tap1,script=no –vnc :1 -usbdevice tablet -monitor stdio    在client侧使用VNC远程连接  
  

vncviewer 192.168.101.137:1  
      然后在vnc:qemu窗口中完成操作系统的安装,安装完成后,可以在client的VNC图形界面里关闭guest,或者在server的qemu命令提示行出输入system_powerdown来关闭guest

   重新引导磁盘镜像(如果发现鼠标同步性太差,添加上-usbdevice tablet)



qemu-system-x86_64 –drive file=~/img/winxp.img,cache=writeback –localtime–m 512 –boot c –net nic,vlan=0 –net tap,ifname=tap1,script=no –vnc :1 -usbdevice tablet –monitor stdio

  
      在客户端使用vncviewer链接


参考资料
  http://www.doc88.com/p-893241644418.html
  http://www.chenyudong.com/
  http://www.linux-kvm.org/page/Main_Page


  

版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: 使用KVM/QEMU命令安装虚拟机