镜像实现:

  • 密码注入
  • 修改密码
  • 根分区扩展

1、下载windows iso镜像

例如:cn_windows_server_2012_r2_vl_with_update_x64_dvd_4051059.iso
 
ISO镜像名解析:
Service Pack:直译是服务包,比较大的而且重要的升级补丁,修补系统、大型软件中的安全漏洞。
VL Build和Retail Build区别
1、主要在于销售方式和授权方式不同
  • VL Build:批量许可版本,同VL版,一般情况下是发布给企业集团的版本。
  • Retail Build:零售版本,一般情况下是面向个人零售市场。
2、安装方面:VL安装过程无需密码,零售版无密钥无法完成安装。
3、激活方面:VL版的可以用零售版的密钥激活,但是反过来不可以,所以通常是下载VL版的,减少一些不必要的麻烦。激活后,Retail Build与VL Build没有无区别获较少区别。

2、获取virtio-win.iso(包含一些硬件驱动和qemu-ga服务)、cloudbase-init

下载地址:
virtio-win.iso:  https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
cloudbase-init  https://github.com/openstack/cloudbase-init
关于virtio:
kvm因为使用了硬件虚拟化,所以其cpu方面的运行效率是很高的。不过,kvm在I/O虚拟化方面,传统的方式是利用QEMU纯软件的方式来模拟I/O设备,
这样每次虚机发起I/O请求的时候,KVM内核模块会捕获这次请求,然后处理后将其放入I/O共享页,并通知用户空间中运行的QEMU程序。
QEMU获得I/O操作,交由硬件模拟代码(Emulation)来模拟出本次I/O操作之后,将结果放回I/O共享页,同时通知KVM内核模块读取I/O共享页的操作结果,把结果返回给虚机。
由于这种方式每次I/O操作经过的路径很复杂,其效率很低。所以就提出了virtio这种方案,virtio其实就是一个运行于Hypervisor之上的api接口,
让客户机知道自己运行于虚拟化环境中,进行I/O操作的时候通过virtio与Hypervisor通信,从而是虚机有更好的性能。

3、创建镜像


创建一个qcow2格式的虚拟机磁盘文件
qemu-img create -f qcow2 windows2012.qcow2 20G

4、安装镜像

使用virt-install安装镜像

virt-install --connect qemu:///system \
--name windows2012 --ram 2048 --vcpus 2 \
--network network=default,model=virtio \
--disk path=windows2012.qcow2,format=qcow2,device=disk,bus=virtio \
--cdrom cn_windows_server_2012_r2_vl_with_update_x64_dvd_4051059.iso \
--disk path=/home/windows-image/virtio-win-0.1.126.iso,device=cdrom \
--vnc --os-type windows --os-variant win2k12r2
注意:
在物理机使用 osinfo-query os 命令查看对应版本的--os-variant值。

镜像创建的虚拟机启动不了,磁盘启动顺序出现问题,加载顺序错误,导致加载不了。
 
例如:可能是虚拟机的.xml文件中cn_windows_server_2012_r2_vl_with_update_x64_dvd_4051059.iso 标记为hdb,
而/home/windows-image/virtio-win-0.1.126.iso 标记为hda,
 
修改.xml文件,或者在virt-manager修改启动顺序

5、加载VirtIO Driver,安装磁盘驱动

默认情况下Windows检测不到可用的安装磁盘,我们需要先安装磁盘驱动。 
安装Win2k12R2时,选择【手动加载磁盘驱动】
浏览D:\viostor\2k8R2\amd64\viostor.inf
添加选中文件,点击【下一步】进行安装
 
注意:我们也可以在此步骤安装其他驱动,但是不推荐,
因为有些驱动系统检测不到,会被隐藏,需要去掉【隐藏与系统硬件不匹配的驱动】的对勾,
才能看到相应的.inf文件进行安装
 

6、系统安装、并重启几次(可能需要手动重启)

开机设置密码:windows2012

7、装其他virtio驱动、启动balloon服务

以管理员权限开启powershell,在命令行中安装virtio-win提供的各个驱动:
PCI简易通信控制器-安装vioserial驱动
内存控制器-安装Balloon驱动
网络适配器-安装NetKVM驱动
存储控制器-安装vioscsi驱动
#各个驱动安装操作一致,
#以netkvm为例:
cd C:\Windows\System32
pnputil -i -a D:\NetKVM\2k12r2\amd64\netkvm.inf

关于PnPUtil:https://technet.microsoft.com/zh-cn/library/ff550419

安装完后进设备管理器查看下驱动:

驱动装完之后需要启动balloon服务(ceilometer采集虚拟机内存监控信息所用),
将virtio中的 balloon文件夹放到, c:\Program Files下(和qemu-ga安装目录位置相同即可),在命令行或者图形界面运行次程序,
确保服务启动和开机自启动

8、安装qemu-ga

在powershell安装qemu-ga:

或者在gui使用鼠标安装:进入驱动D:\guest-agent\ ,双击安装64bit的qemu-ga即可。
 
启动qemu-ga的2个服务:

9、安装cloudbase-init

 
为了cloudbase-init在实例启动时可以运行脚本,设置powershell执行策略为不受限制
C:\powershell
C:\Set-ExecutionPolicy Unrestricted

下载地址:https://cloudbase.it/downloads/CloudbaseInitSetup_0_9_9_x64.msi

C:\Invoke-WebRequest -UseBasicParsing https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi -OutFile cloudbaseinit.msi
C:\.\cloudbaseinit.msi

安装参考:https://cloudbase.it/cloudbase-init/ 链接下的installation板块

安装过程中的几个需要配置的地方:

Username: Administrator
Network adapter to configure: Red Hat VirtIO Ethernet Adapter
Serial port for logging: COM1
 
注意:安装完成后,在最后的安装设置窗口选
run sysprep   和  Shutdown check boxes 
最后click Finish, 等待关机 

10、配置Cloudbase-init

cloud-init的一些功能设置可参考:
http://www.cloudbase.it/cloud-init-for-windows-instances/
配置文件参考:
[DEFAULT]
username=Administrator
groups=Administrators
inject_user_password=true
####network_adapter=Red Hat VirtIO Ethernet Adapter ####此项0..9版本,暂时没有
config_drive_raw_hhd=true
config_drive_cdrom=true
bsdtar_path=C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\bin\bsdtar.exe
verbose=true
debug=true
logdir=C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\log\
logfile=cloudbase-init.log
logging_serial_port_settings=COM1,,N,
mtu_use_dhcp_config=false
ntp_use_dhcp_config=false
local_scripts_path=C:\Program Files (x86)\Cloudbase Solutions\Cloudbase-Init\LocalScripts\
metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService ###此项待验证
allow_reboot=false ###需要添加此项,禁止开机重启
stop_service_on_exit=false ###添加此项

11、开启远程桌面、关闭防火墙

 
本文参考链接:

Documentation: http://cloudbase-init.readthedocs.org/en/latest/

openstack windows2012r2 glance镜像制作的更多相关文章

  1. openstack windows 2008镜像 制作

    openstack windows 2008镜像 制作 openstack centos6 centos7 kvm 镜像制作 http://www.cnblogs.com/elvi/p/7922421 ...

  2. openstack核心组件——glance— 镜像服务(6)

    云计算openstack核心组件——glance— 镜像服务(6)   一.glance介绍:              Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像 ...

  3. Openstack window 10 镜像制作

    Windows 10 Openstack 镜像制作 //************************************************************************ ...

  4. OpenStack核心组件-glance镜像服务

    1. glance介绍 Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata ...

  5. Openstack kvm win7镜像制作

    本文地址http://www.cnblogs.com/tcicy/p/7790956.html 网上找了很多为openstack制作win7镜像的文章,总是不成功 自己写一下,以便大家查看. 我使用c ...

  6. openstack核心组件--glance镜像(2)

    一.glance介绍:              Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚 ...

  7. OpenStack组件——Glance镜像服务

    1.glance介绍 Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚拟机镜像的metadata及 ...

  8. 云计算openstack核心组件——glance— 镜像服务(6)

    一.glance介绍:              Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查询虚 ...

  9. OpenStack (glance 镜像服务)

    glance介绍 glance 提供云虚拟机上的服务镜像(Image)功能,该模块可看成车间里的模具生产部门,其功能包括虚拟机镜像的查找.注册和检索等.该模具最基本的使用方式就是在为云虚拟机实例提供安 ...

随机推荐

  1. 【WIP_S3】链表

    创建: 2017/12/26 完成: 2018/01/14   [TODO]     S4, S5, S14来处理动态数组   CAF8A81B790F [github 地址]传送门  链表的定义   ...

  2. Python基础 — Pandas

    Pandas -- 简介 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.        Pandas ...

  3. Swift5.1 语言指南(二十九)高级运算符

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. [LOJ#10064]黑暗城堡

    Description 在顺利攻破 Lord lsp 的防线之后,lqr 一行人来到了 Lord lsp 的城堡下方.Lord lsp 黑化之后虽然拥有了强大的超能力,能够用意念力制造建筑物,但是智商 ...

  5. SuperSocket学习笔记(一)-一个完整的例子

    一.什么是SuperSocket 以下是作者的介绍 执行以下命令,获取SuperSocket项目 $ git clone https://github.com/kerryjiang/SuperSock ...

  6. microPython 的逗比报错的问题

    今天搞了一天,发现了各种问题,首先最终的解决办法就是重现刷固件!!!! 重刷固件就需要清除flash! cd C:\Users\sansong\AppData\Local\Programs\Pytho ...

  7. 可以在一个html的文件当中读取另一个html文件的内容

    1.IFrame引入,看看下面的代码 <IFRAME NAME="content_frame" width=100% height=30 marginwidth=0 marg ...

  8. Linux 学习(二)

    Linux相关命令 命令 说明 startx 当前用户界面切换至图形界面 init5 切换至另一用户的图形化界面 init3 从图形界面切换回文本界面 pwd 显示当前用户路径 logout 注销 s ...

  9. dutacm.club_1089_A Water Problem_(dp)

    题意:要获得刚好后n个'k'的字符串,有两种操作,1.花费x秒,增加或删除1个'k'; 2.花费y秒,使个数翻倍.问最少需要多少时间获得这个字符串. 思路:i为偶数个'k',dp[i]=min(dp[ ...

  10. 使用vs2010打开vs2015的项目

    本来在单位项目一直使用vs2010写,五一放假拿回家 ,用vs2015捣鼓了一下 当然向下兼容打开毫无问题,结果回来悲催了,用vs2010打不开了 ,打不开. 记得以前有个转换向导,可是这次没看见,一 ...