本文讲如何制作openstack可用的windows server 2008r2镜像,在前面讲过windows2012的制作方法,参考我的博文《使用virt-manager制作Openstack Windows server 2012R2镜像》,但win2012没有讲C盘自动扩容和attach a volume做D盘的方法,在本文对这两个操作的方法进行补充。

准备

  • windows_server_2008_r2_standard_enterprise
  • cloudbase-init
  • virtio-win

简单介绍下cloudbase-init这个工具,是windows系统云初始化工具,对应linux中使用的是cloud-init,可以用来初始化ip,hostname,自动扩盘等等。

安装镜像

1、安装前,挂载windows iso和virtio驱动:

openstack server add_openstack

openstack server add_右键_02

网卡设置成virtio模式:

openstack server add_系统启动_03

2、开始安装,注意以下几点:

没有讲到的地方默认next,分区默认分一个区,后面详细讲原因

(1)选择自定义安装

openstack server add_右键_04

(2)手动加载驱动,选择virtio-win磁盘中violator/w7/amd64

openstack server add_初始化_05

openstack server add_右键_06

openstack server add_openstack_07

3、首次登陆设置密码:

openstack server add_右键_08

4、更新网卡驱动:

进入系统后,设备管理器->其它设备->以太网控制器,右键属性

openstack server add_系统启动_09

自定义安装,选择virtio-win盘NetKVM/w7/amd64

openstack server add_右键_10

5、开启远程桌面:

openstack server add_系统启动_11

6、打开防火墙可ping:

openstack server add_初始化_12

安装配置cloudbase-init

在系统外,virt-manager配置页面中重新挂载cloudbase-init磁盘,进入到系统读盘,安装前,首先运行:

C:\powershell
C:\Set-ExecutionPolicy Unrestricted

windows默认不允许任何脚本运行,所以在安装cloudbase-init前打开权限,这样cloudbase-init在系统启动时可以运行脚本。

openstack server add_系统启动_13

openstack server add_openstack_14

openstack server add_openstack_15

安装成功后,会自动关机,然后修改启动方式为VirtIO Disk,开机,修改配置
C:\ProgramFiles\CloudbaseSolutions\Cloudbase-Init\conf\cloudbase-init
文件,使镜像支持自动扩展分区。在安装时,我只分了一个区(即C盘),原因是如果分两个区,cloudbase-init在系统启动时会将C盘和D盘合为一个C盘,解决这个问题的办法就是分区时只分一个区,如果想增加分区,attach volume即可。

由于cloudbase-init会自动注入随机数密码,在这里也需要取消,以便使用最开始设置的密码:

openstack server add_初始化_16

重启生效,即可上传qcow2文件到openstack来使用。

参见 cloudbase config

attach volume to windows vm方法

1、首先创建空的volume,然后attach到windows vm上

2、进入vm,打开磁盘管理器,可以看到分好的volume,右键联机初始化磁盘:

openstack server add_系统启动_17

再次右键新建卷,然后一路next即可:

openstack server add_image_18

openstack server add_openstack_19

这样一个完整的windows2008r2的vm就创建完毕了。win2012可以用同样的方法进行自动扩盘。