zoukankan      html  css  js  c++  java
  • openstack windows2012r2 glance镜像制作

    镜像实现:

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

    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:viostor2k8R2amd64viostor.inf
    添加选中文件,点击【下一步】进行安装
     
    注意:我们也可以在此步骤安装其他驱动,但是不推荐,
    因为有些驱动系统检测不到,会被隐藏,需要去掉【隐藏与系统硬件不匹配的驱动】的对勾,
    才能看到相应的.inf文件进行安装
     

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

    开机设置密码:windows2012
    
    

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

    以管理员权限开启powershell,在命令行中安装virtio-win提供的各个驱动:
    PCI简易通信控制器-安装vioserial驱动
    内存控制器-安装Balloon驱动
    网络适配器-安装NetKVM驱动
    存储控制器-安装vioscsi驱动
    #各个驱动安装操作一致,
    #以netkvm为例: cd C:WindowsSystem32 pnputil -i -a D:NetKVM2k12r2amd64 etkvm.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.9版本,暂时没有
    config_drive_raw_hhd=true
    config_drive_cdrom=true
    bsdtar_path=C:Program Files (x86)Cloudbase SolutionsCloudbase-Initinsdtar.exe
    verbose=true
    debug=true
    logdir=C:Program Files (x86)Cloudbase SolutionsCloudbase-Initlog
    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 SolutionsCloudbase-InitLocalScripts
    metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService ###此项待验证
    allow_reboot=false ###需要添加此项,禁止开机重启
    stop_service_on_exit=false ###添加此项

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

     
    本文参考链接:

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

  • 相关阅读:
    批处理文件入门
    批处理入门学习地址
    react资料
    React 学习参考资料链接
    Spring boot + jdbc学习笔记
    iOS-升级Https证书报错
    Java-006-循环结构和控制语句详解(while, dowhile ,for ,switch)
    Java-005-运算符详解
    Java-004-变量类型和修饰符详解
    Java-001简介和基础语法[类方法、实例方法、public class 与 class 区别](第一个Java程序)
  • 原文地址:https://www.cnblogs.com/nineep/p/9055410.html
Copyright © 2011-2022 走看看