首页 > 代码库 > Windows image 制作

Windows image 制作

本版本制作的windows 支持 feather: 1. Disk Bus=SCSI   2.Tunnel网络环境下自动配置MTU  3.动态修改密码

准备环境

      1.windows iso :         http://10.110.176.250:8080/os/iso/windows/cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_vl_build_x64_dvd_617396.iso

      2.virtio driver for windows:    https://fedoraproject.org/wiki/Windows_Virtio_Drivers

      3.cloudbase-init for X64:       https://www.cloudbase.it/downloads/CloudbaseInitSetup_Beta_x64.msi

      4.qemu-guest-agent for windows:       https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-qemu-ga/

      5.cloudbase-init patch for set mtu:      https://review.openstack.org/#/c/389559/

安装过程

      1.使用Libvirt 创建windows虚机,启动虚机的 XML 如下:

技术分享
 1 <domain type=kvm>
 2   <name>win2012</name>
 3   <uuid>6828e3f8-b517-4612-bad9-c6050d936e85</uuid>
 4   <memory unit=KiB>2097152</memory>
 5   <currentMemory unit=KiB>2097152</currentMemory>
 6   <vcpu placement=static cpuset=1-3>2</vcpu>
 7   <cputune>
 8     <shares>1024</shares>
 9   </cputune>
10   <sysinfo type=smbios>
11     <system>
12       <entry name=manufacturer>Fedora Project</entry>
13       <entry name=product>OpenStack Nova</entry>
14       <entry name=version>13.0.0-1.el7</entry>
15       <entry name=serial>65fbc0c9-3e85-43c8-abf2-e6f3a26e2ffb</entry>
16       <entry name=family>Virtual Machine</entry>
17     </system>
18   </sysinfo>
19   <os>
20     <type arch=x86_64 machine=pc-i440fx-rhel7.0.0>hvm</type>
21     <boot dev=cdrom/>
22     <boot dev=hd/>
23     <smbios mode=sysinfo/>
24   </os>
25   <features>
26     <acpi/>
27     <apic/>
28   </features>
29   <cpu mode=host-model>
30     <model fallback=allow/>
31     <topology sockets=1 cores=2 threads=1/>
32   </cpu>
33   <clock offset=utc>
34     <timer name=pit tickpolicy=delay/>
35     <timer name=rtc tickpolicy=catchup/>
36     <timer name=hpet present=no/>
37   </clock>
38   <on_poweroff>destroy</on_poweroff>
39   <on_reboot>restart</on_reboot>
40   <on_crash>destroy</on_crash>
41   <devices>
42     <emulator>/usr/libexec/qemu-kvm</emulator>
43     <disk type=file device=disk>
44       <driver name=qemu type=qcow2/>
45       <source file=/home/stack/images/win2012.qcow2/>
46       <target dev=sda bus=scsi/>
47       <address type=drive controller=0 bus=0 target=0 unit=0/>
48     </disk>
49     <disk type=file device=cdrom>
50       <driver name=qemu type=raw/>
51       <source file=/home/stack/windows/cn_windows_server_2012_r2_x64_dvd_2707961.iso/>
52       <target dev=hda bus=ide/>
53       <readonly/>
54       <address type=drive controller=0 bus=0 target=0 unit=0/>
55     </disk>
56     <disk type=file device=cdrom>
57       <driver name=qemu type=raw/>
58       <source file=/home/stack/windows/virtio-win.iso/>
59       <target dev=hdd bus=ide/>
60       <readonly/>
61       <address type=drive controller=0 bus=1 target=0 unit=0/>
62     </disk>
63     <interface type=network>
64       <mac address=52:54:00:f4:71:33/>
65       <source network=default/>
66       <model type=e1000/>
67       <address type=pci domain=0x0000 bus=0x00 slot=0x03 function=0x0/>
68     </interface>
69     <serial type=pty>
70       <target port=0/>
71     </serial>
72     <console type=pty>
73       <target type=serial port=0/>
74     </console>
75     <input type=tablet bus=usb/>
76     <input type=mouse bus=ps2/>
77     <input type=keyboard bus=ps2/>
78     <graphics type=vnc port=-1 autoport=yes listen=0.0.0.0 keymap=en-us>
79       <listen type=address address=0.0.0.0/>
80     </graphics>
81     <video>
82       <model type=qxl ram=65536 vram=65536 vgamem=16384 heads=1/>
83       <address type=pci domain=0x0000 bus=0x00 slot=0x02 function=0x0/>
84     </video>
85     <memballoon model=virtio>
86       <stats period=10/>
87       <address type=pci domain=0x0000 bus=0x00 slot=0x05 function=0x0/>
88     </memballoon>
89   </devices>
90 </domain>
View Code

    注意:1.多个CPU  2.Disk bus SCSI

    2.创建 leuser账户,禁用Administrator

    3.安装qemu-guest-agent, 用户支持动态修改密码

    4.安装Virtio driver,参见: https://goo.gl/ckgdWN       

   注意.qemu-guest-agent 的driver需重机关、编辑XML、重启,XML修改如下:

1 <channel type=unix>
2     <source mode=bind path=/var/lib/libvirt/qemu/win7x86.agent/>
3     <target type=virtio name=org.qemu.guest_agent.0/>
4     <address type=virtio-serial controller=0 bus=0 port=1/>
5  </channel>

     5.内存监控

       在 Windows 2008r2 and Windows 2012/Win8 :

 

             Copy and rename as Administrator the WIN7AMD64 directory from the virtio.iso to “c:/Program files/Balloon”

             Open a CMD as Administrator and cd into “c:/Program Files/Balloon”

             Install the BLNSVR with “BLNSVR.exe -i”

 

      在 Windows 2003 / Windows Xp :

             Download the “devcon” software on microsoft website kb311272

             devcon install BALLOON.inf “PCIVEN_1AF4&DEV_1002&SUBSYS_00051AF4&REV_00”

    6.安装cloudbase-init

          1).修改cloudbase-init.conf的参数metadata_services和plugins 

               参数配置如下:

1 metadata_services=cloudbaseinit.metadata.services.configdrive.ConfigDriveService,cloudbaseinit.metadata.services.httpservice.HttpService,cloudbaseinit.metadata.services.ec2service.EC2Service,cloudbaseinit.metadata.services.maasservice.MaaSHttpService
2 plugins=cloudbaseinit.plugins.windows.mtu.MTUPlugin,cloudbaseinit.plugins.windows.ntpclient.NTPClientPlugin,cloudbaseinit.plugins.windows.createuser.CreateUserPlugin,cloudbaseinit.plugins.windows.networkconfig.NetworkConfigPlugin,cloudbaseinit.plugins.windows.sshpublickeys.SetUserSSHPublicKeysPlugin,cloudbaseinit.plugins.windows.userdata.UserDataPlugin,cloudbaseinit.plugins.windows.setuserpassword.SetUserPasswordPlugin,cloudbaseinit.plugins.windows.localscripts.LocalScriptsPlugin

          2).替换cloudbase-init文件,支持设置configDriver配置MTU,具体参见commit:  https://review.openstack.org/#/c/389559/    修改的文件如下:

1 cloudbaseinit/metadata/services/base.py
2 cloudbaseinit/metadata/services/opennebulaservice.py
3 cloudbaseinit/plugins/common/networkconfig.py
4 cloudbaseinit/tests/metadata/fake_json_response.py
5 cloudbaseinit/tests/metadata/services/test_baseopenstackservice.py
6 cloudbaseinit/tests/metadata/services/test_opennebulaservice.py
7 cloudbaseinit/tests/plugins/common/test_networkconfig.py
8 cloudbaseinit/tests/utils/test_debiface.py
9 cloudbaseinit/utils/debiface.py

 

上传镜像

命令行:

1 glance image-create --name "win2K8_r2_x64" --disk-format qcow2 --container-format bare  --progress < /home/stack/win2012.qcow2
2  
3 glance image-update  --property hw_disk_bus=scsi --property hw_cpu_sockets=2  --property  hw_qemu_guest_agent=yes --property  os_admin_user=leuser  win2K8_r2_x64

创建虚机

命令行如下:

技术分享
1 nova boot --config-drive=true --image win2K8_r2_x64  --key-name controller --flavor  windowsc2m1024d20 --nic net-id=4c85a0e2-7fd8-40e1-8746-95c03ad7aecb instance-001
View Code

 

注:管理 windows 的MTU

1.netsh interface ip show interface

2.netsh interface ip set subinterface "本地连接 2" mtu=1450 store=persistent

 

参考文档:

    http://wiki.letv.cn/display/pla/2014.09.22+-+2014.09.26 

    http://docs.openstack.org/image-guide/windows-image.html

    https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/form-Virtualization_Host_Configuration_and_Guest_Installation_Guide-Para_virtualized_drivers-Mounting_the_image_with_virt_manager.html

    https://pve.proxmox.com/wiki/Qemu-guest-agent

    https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Administration_Guide/sect-QEMU_Guest_Agent-Running_the_QEMU_guest_agent_on_a_Windows_guest.html

    http://wiki.stoney-cloud.org/wiki/Qemu_Guest_Agent_Integration

    https://niusmallnan.github.io/_build/html/_templates/openstack/libvirt_memory_usage.html

 

 

 

Windows image 制作