镜像实现:
- 密码注入
- 修改密码
- 根分区扩展
一、下载windows iso镜像
例如:cn_windows_server_2012_r2_vl_with_update_x64_dvd_4051059.iso
ISO镜像名解析:
Service Pack:直译是服务包,比较大的并且重要的升级补丁,修补系统、大型软件中的安全漏洞。
VL Build和Retail Build区别
一、主要在于销售方式和受权方式不一样
- VL Build:批量许可版本,同VL版,通常状况下是发布给企业集团的版本。
- Retail Build:零售版本,通常状况下是面向我的零售市场。
二、安装方面:VL安装过程无需密码,零售版无密钥没法完成安装。
三、激活方面:VL版的能够用零售版的密钥激活,可是反过来不能够,因此一般是下载VL版的,减小一些没必要要的麻烦。激活后,Retail Build与VL Build没有无区别获较少区别。
二、获取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通讯,从而是虚机有更好的性能。
三、建立镜像
建立一个qcow2格式的虚拟机磁盘文件
qemu-img create -f qcow2 windows2012.qcow2 20G
四、安装镜像
使用virt-install安装镜像html
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修改启动顺序
五、加载VirtIO Driver,安装磁盘驱动
默认状况下Windows检测不到可用的安装磁盘,咱们须要先安装磁盘驱动。
安装Win2k12R2时,选择【手动加载磁盘驱动】
浏览D:\viostor\2k8R2\amd64\viostor.inf
添加选中文件,点击【下一步】进行安装
注意:咱们也能够在此步骤安装其余驱动,可是不推荐,
由于有些驱动系统检测不到,会被隐藏,须要去掉【隐藏与系统硬件不匹配的驱动】的对勾,
才能看到相应的.inf文件进行安装
六、系统安装、并重启几回(可能须要手动重启)
开机设置密码:windows2012
七、装其余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/ff550419ios
安装完后进设备管理器查看下驱动:

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

八、安装qemu-ga
在powershell安装qemu-ga:

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

九、安装cloudbase-init
为了cloudbase-init在实例启动时能够运行脚本,设置powershell执行策略为不受限制
C:\powershell C:\Set-ExecutionPolicy Unrestricted
下载地址:https://cloudbase.it/downloads/CloudbaseInitSetup_0_9_9_x64.msi git
C:\Invoke-WebRequest -UseBasicParsing https://cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi -OutFile cloudbaseinit.msi C:\.\cloudbaseinit.msi
安装参考:https://cloudbase.it/cloudbase-init/ 连接下的installation板块github
安装过程当中的几个须要配置的地方:shell
Username: Administrator
Network adapter to configure: Red Hat VirtIO Ethernet Adapter
Serial port
for
logging: COM1
注意:安装完成后,在最后的安装设置窗口选
run
sysprep
和 Shutdown check boxes
最后click Finish, 等待关机
十、配置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.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,115200,N,8 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 ###添加此项
十一、开启远程桌面、关闭防火墙
略windows
本文参考连接:
Documentation: http://cloudbase-init.readthedocs.org/en/latest/api