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:\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.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 ###添加此項

11、開啟遠程桌面、關閉防火牆

 
本文參考鏈接:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM