如何制作Openstack Windows镜像

在上一篇文章如何制作Openstack Linux镜像中我们以CentOS7.1为例,介绍了手动制作Openstack Linux镜像的详细步骤,本文我们将继续以制作Windows Server 2008 R2镜像为例,介绍手动制作Openstack Windows镜像的详细步骤。

手动制作Openstack Windows镜像


下载镜像

访问官网镜像下载地址,进入后点击“操作系统”,选择Windows Server 2008 R2,选择需要的相应的语言和版本进行下载并上传到/tvm下。

下载virtio驱动

访问virtio官方下载地址,下载virtio驱动

创建虚拟机

首先创建一个raw格式镜像文件,用于虚拟机的根磁盘,大小30G就够了。(镜像文件大小可根据实际情况自行调整,此处以30G为例)

1
2
cd /tvm/
qemu-img create -f raw Windows2008_R2.raw 30G

修改/tvm/templates.xml,将图中红色方框处改成虚拟机镜像文件所在绝对路径,并指定相应ISO文件绝对路径,同时新增一个cdrom设备,将virtio驱动的iso镜像挂载到虚拟机中。

启动虚拟机

1
2
cd /tvm/
virsh create templates.xml

启动完成后,使用vnc client连接到虚拟机控制台。

安装OS

进入虚拟机控制台可以看到虚拟机正在加载文件,加载完成后选择语言,点击“下一步”,点击“现在安装”

待安装程序启动后,选择要安装的操作系统,此处选择安装的是“Windows Server 2008 R2 Enterprise (完全安装)”,然后点击“下一步”

勾选“我接受许可条款(A)”,点击“下一步”

选择“自定义(高级)(C)”

此时会看到提示说“未找到任何驱动器”。因为KVM下windows虚拟机默认disk使用的是Qemu IDE硬盘,默认网卡是100M网卡,为了使KVM主机在相同的配置下有更好的效率,我们在xml文件中设置了bus=’virtio’,使硬盘工作在SCSI模式,但因缺少virtio驱动,识别不到硬盘,所以我们需要用刚挂载的virtio驱动的ISO文件安装相应的virtio驱动。

点击“加载驱动程序(L)”

点击“浏览”

选择virtio所在驱动器的viostor/2k8R2/amd64目录,点击“确定”。(2k8R2代表Windows Server 2008 R2,若安装的为其他操作系统版本,记得自行更换到对应的目录)

在找到相应的SCSI驱动后,点击“下一步”

进行磁盘分区,此处将所有空间划分到C盘,然后点击“下一步”,等待操作系统安装完成

配置OS

注:系统安装完成后首次登陆要求修改administrator密码

  • 安装网卡驱动

打开“服务器管理器”,点击“诊断”,点击“设备管理器”,看到以太网控制器处显示有一个黄色感叹号,右单击,选择”更新驱动程序软件(O)…”

选择”浏览计算机以查找驱动程序软件(R)”

点击“浏览”

选择virtio所在的驱动器,点击“确定”

点击“下一步”

勾选“始终信任来自”Red Hat,Inc.”的软件(A)”,点击“安装”

点击“关闭”,完成网卡驱动安装。若有多张网卡,需重复上述步骤安装网卡驱动。

  • 开启远程桌面服务

启动任务管理器,打开“服务”,找到“Remote Desktop Services”,点击“启动”。

右单击“Remote Desktop Services”服务,选择“属性”,将启动类型改成“自动”,并点击“确定”

点击“开始”菜单,对“计算机”右单击,选择“属性”,点击“远程设置”,选择“允许运行任意版本远程桌面的计算机连接(较不安全)(L)”,点击“确定”

  • 关闭防火墙

点击“开始”菜单,打开“控制面板”,点击“系统和安全”

点击“Windows防火墙”

点击“打开或关闭Windows防火墙”

勾选“家庭或工作(专用)网络位置设置”和“公用网络位置设置”的“关闭Windows防火墙(不推荐)”选项,点击“确定”

  • 关闭自动更新

点击“开始”菜单,打开“控制面板”,点击“系统和安全”

点击“Windows Update”

点击“更改设置”

选择“从不检查更新(不推荐)”,点击“确定”

  • 安装Ec2Config

Ec2Config下载链接:https://share.weiyun.com/5HDPp6h 密码:i7d3cj

下载完成后通过远程桌面将Ec2Config安装包上传到虚拟机中,并以管理员身份运行

注:若出现“当前系统没有安装Microsoft .NET Framework 3.5,要转到它的下载页面吗?”的提示,点击“否(N)”,然后按照此教程安装.NET Framework 3.5

点击“下一步”

勾选”启动服务”,点击“下一步”

安装路径默认即可,点击“安装”

不勾选“运行Ec2Config服务配置(R)”,点击“完成”

删除Ec2Config安装包,并清空回收站

  • 配置镜像administrator用户默认密码

用记事本打开C:\Program Files\Bingosoft\Ec2Config\Scripts\SysPrepInit.cmd,将
ScramblePassword.exe -u Administrator这行改为net user administrator xxxxxx (xxxxxx为你要设置的密码),将sc config Ec2Config start= auto这行改为sc config Ec2Config start= disabled,然后保存退出

1
2
3
4
5
6
7
8
9
10
11
原文件内容如下:
@echo off
ScramblePassword.exe -u Administrator
net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
sc config Ec2Config start= auto

修改后的内容如下:
@echo off
net user administrator 123456
net user Administrator /ACTIVE:YES /LOGONPASSWORDCHG:NO /EXPIRES:NEVER /PASSWORDREQ:YES
sc config Ec2Config start= disabled
  • 清理系统日志

打开“服务器管理器”,点击“诊断”,打开“事件查看器”

双击”Windows日志”,对“应用程序”右单击,点击“清除日志(C)…”,点击“清除(C)”

重复上述步骤清除“安全”、“Setup”、“系统”、“转发事件”中的日志

  • 运行sysprep封装镜像

点击“开始”菜单,打开“Ec2ConfigService Settings”

确认“Set Password”的两个选项均未勾选,然后切换到“Bundle”选项卡

点击“Run Sysprep and Shutdown Now”

点击“是”

点击“是”

以上为几个常用的配置,其他的配置可以根据情况进行进行设置。

转换镜像格式

将raw格式镜像文件转换成qcow2格式镜像文件,压缩空间便于传输。

1
qemu-img convert -f raw Windows2008_R2.raw -O qcow2 Windows2008_R2.qcow2

上传镜像


Openstack Wndows镜像制作完成后,需要将最终生成的qcow2镜像文件上传到Openstack控制节点,并通过glance命令将镜像上传到glance服务中才可以正常使用。命令如下:

1
glance image-create --name "Windows2008_R2" --file /tvm/Windows2008_R2.qcow2 --disk-format qcow2 --container-format bare  --is-public True --progress
  • EOF

本文作者:Koen