安装准备

  1. KVM虚拟化配套工具集合(含图形界面更好)
  2. Windows2008R2安装光盘
  3. 本文中出现的文件都放在mnt目录下

注意事项

  1. 硬盘接口类型使用virtio, 网卡接口类型使用virtio.

  2. 添加第二个cdrom设备用来连接驱动文件,即虚拟机拥有磁盘、cdrom1、cdrom2.

  3. 制作驱动程序iso文件

1
2
3
[root@localhost]# wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
[root@localhost]# yum install virtio-win
[root@localhost]# mkisofs -o /mnt/virtiowin.iso /usr/share/virtio-win/drivers
  1. 提取qemu-guest-agent
1
[root@localhost]# cp /usr/share/virtio-win/guest-agent/qemu-ga-x64.msi /mnt/
  1. 下载cloud-init程序
1
[root@localhost]# wget https://www.cloudbase.it/downloads/CloudbaseInitSetup_Beta_x64.msi /mnt/CloudbaseInitSetup_Beta_x64.msi

##制作KVM镜像

创建一个20G大小镜像文件

1
[root@localhost mnt]# qemu-img create -f qcow2 windows.img 20G

使用virt-manager安装虚拟机

在选择磁盘时会提示无法找到磁盘,选择加载驱动后进入挂在的virtiowin.iso中寻找磁盘驱动进行加载后正常安装系统

安装完成后进入系统安装其他驱动,打开设备管理器,文件仍然在virtiowin.iso里

  1. 安装网卡驱动
  2. 安装pci驱动
  3. 安装ballon内存管理驱动
  4. 打开远程桌面
  5. 保持网卡dhcp
  6. 关闭防火墙

上传qemu-ga-x64.msiCloudbaseInitSetup_Beta_x64.msi 到windows中

  1. 安装qemu-ga-x64.msi

  2. 安装CloudbaseInitSetup_Beta_x64.msi

    用户名 Administrator

    用户组 Administrators

    串口勾选com1

    勾选 sys prep(不要勾选关机)

  3. 修改cloudinit配置文件C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf

    增加 first_logon_behaviour=no

    增加cloudbaseinit.plugins.common.setuserpassword.SetUserPasswordPlugin

    关机

上传Windows镜像

对虚拟磁盘进行压缩处理,qemu-img的qcow2具有高效压缩功能

1
qemu-img convert -c -O qcow2 /mnt/windows.img /mnt/windows.qcow2

等待压缩完毕,基本上容量可以压缩到一半

把windows.qcow2 复制到openstack controler节点上,创建glance镜像

1
glance image-create --name “windows2k8” --disk-format qcow2 --container-format bare --is-public True --progress < windows.qcow2

在KVM中运行windows镜像,实例操作系统时间默认是UTC时间,必须设置系统类型,让镜像使用localtime设置
1
2
imageID=`glance image-list | awk '/windows2k8/{print $1}'`
glance image-update $imageID --property os_type='windows'

现在可以使用这个自定义的镜像来创建实例