OpenStack创建Windows镜像

关于OpenStack的镜像创建官方已经提供了非常详细的说明,这里主要是记录一下如何使用KVM创建Windows系列镜像的基本过程;本文以创建Window7为例,其他版本类似,不同之处会在案例中进行说明;

1,准备基础环境

2,安装相关软件包

1
apt-get install vncviewer kvm qemu-kvm

注意:由于使用到KVM需要打开主机的Intel VT-x/EPT支持,否则无法使用kvm模块

3,创建windows7镜像

这里默认建立具有20G存储空间的镜像,在实际使用中假如没有提供Cinder存储服务,虚拟机的磁盘空间往往不能满足使用需求

1
qemu-img create -f qcow windows7.qcow2 20G

使用kvm创建虚拟机

1
kvm -m 2048 -no-reboot -boot order=d -drive file=windows7.qcow2,if=virtio,boot=off -drive file=windows7.iso,media=cdrom,boot=on -drive file=virtio-win-0.1-94.iso,media=cdrom,boot=off -net nic,model=virtio -nographic -vnc :1

ubuntu examples:

1
2
3
kvm -m 1024 -cdrom ubuntu-14.04.1-desktop-amd64.iso -drive file=ubuntu-14.04-desktop-amd64.qcow2 -boot d -nographic -vnc :2
# restart
kvm -m 1024 -drive file=ubuntu-14.04-desktop-amd64.qcow2 -boot d -nographic -vnc :2

之后可以通过vnc客户端连接到虚拟机

1
vncviewer # localhost:1

进入之后实际上就和我们安装操作系统的流程一致,安装windows7操作系统即可。

  • 安装中的第一个问题就是提示找不到任何磁盘安装操作系统,这里就是virtio发挥作用的地方之一

点击加载驱动程序,确认

按理来说应该是选择WIN7目录下的AMD64,不过似乎window2008和这个兼容也没出什么问题。

这里实际上需要根据你当前的操作系统类型和架构进行选择即可

加载完成驱动之后,就可以开始继续我们的windows操作系统的安装


4,安装网卡驱动程序

当完成系统安装之后,你会惊喜的发现windows系统找不到本地网络驱动设备,也就是说这个镜像依然无法在opensatck中正常使用。

这是virtio发挥作用的第二个地方,安装网卡驱动。 你只需要进入windows的设备管理器,你会发现网卡设备上的一个黄色感叹号,点击安装驱动程序即可。

当然驱动程序你可以在CDROM下面找到自己相应版本的操作系统驱动程序即可。 这里就不截图了(mei de jie)。

5,开放windows部分防火墙

由于OpenStack使用到安装组(Securiyu Group进行安装管理),所以对于windows的操作系统镜像需要至少打开TCP3389和ICMP。

6,加载文件内容

在完成基础的镜像制作之后(操作系统安装,网卡驱动安装),我们往往需要对虚拟机镜像进行一些其他操作诸如:激活操作系统,安装软件等定制化。 这时候需要我们能上传文件到虚拟机内部。

此时采取的策略与加载virto驱动相识,我们实现创建好一个iso文件,并包含我们必要的文件内容。 在使用kvm启动虚拟机时以CDROM的方式加载ISO文件即可

6.1,创建临时文件目录

1
mkdir /tmp/directory

将需要的文件保存到/tmp/directory目录下,建议按照不同操作系统分目录如:


  • window7
    |– amd64
    |– x86
  • window8
    |– amd64
    |– x86

6.2,将目录保存为iso文件,如/tmp/cd.iso

1
mkisofs -o /tmp/cd.iso  /tmp/directory

6.3,将cd.iso作为CDROM加载到虚拟机

1
kvm -m 2048 -no-reboot -boot order=d -drive file=windows7.qcow2,if=virtio,boot=off -drive file=virtio-win-0.1-94.iso,media=cdrom -drive file=cd.iso,media=cdrom -net nic,model=virtio -nographic -vnc :1

7,导入

接下来你就可以使用glance的cli命令上传镜像到OpenStack并且进行测试了。

1
glance image-create --name "windows7-x86_64" --disk-format qcow2 --container-format bare --is-public True --progress < windows7.qcow2

对于不同类型版本的windows操作系统,只需要选择相应的驱动程序即可。 Enjoy Your OpenStack;

8,其他

For Linux 安装官方文档制作Linux虚拟机时,文档提供的shell脚本有部分错误,修改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
if [ ! -d /root/.ssh ]; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
ATTEMPTS=30
FAILED=0
while [ ! -f /root/.ssh/authorized_keys ]; do
curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/metadata-key 2>/dev/null
if [ \$? -eq 0 ]; then
cat /tmp/metadata-key >> /root/.ssh/authorized_keys
chmod 0600 /root/.ssh/authorized_keys
restorecon /root/.ssh/authorized_keys
rm -f /tmp/metadata-key
echo "Successfully retrieved public key from instance metadata"
echo "*****************"
echo "AUTHORIZED KEYS"
echo "*****************"
cat /root/.ssh/authorized_keys
echo "*****************"
fi
done

touch /var/loc/subsys/local

/sbin/black_box.sh >> /var/log/bbox.log 2>&1 &