在xen下建立一個windows虛擬機器

來源:互聯網
上載者:User

1.申請磁碟空間

dd if=/dev/zero of=./Win7.img bs=1M count=20480

dd if=/dev/zero of=./Windisk.img bs=1M count=10240

具體要幾個硬碟根據需要建立。

2.上傳ISO鏡像,上傳windows的安裝鏡像到伺服器。

請確保上傳的鏡像是有效地,一開始我上傳了一個鏡像,一直不能成功安裝虛擬機器,後來重新製作了一個iso(物理光碟片是一樣的),就可以了。

3.建立虛擬機器

virt-install -n win7 --file=Win7.img --file=Windisk.img --vnc -v -c /share/nfs02/309www/win7.iso
 -r 1024 --vcpus=1

virt-install 建立虛擬機器的命令
-n 虛擬機器的命名
--file 虛擬機器的磁碟檔案
--vnc 使用VNC終端串連方式
-r 虛擬機器的記憶體容量
--vcpus 虛擬機器的CPU數量
-v 可視
-c 安裝鏡像的路徑

 

4.編寫設定檔


1)拷貝一個系統的設定檔範本 #cp /etc/xen/xmexmple.hvm ./windows.hvm
2)修改windows.hvm檔案以下相關項目:
name = “ win7"      #自己取個名字
vif = [  'type=ioemu, bridge=br1' ]

disk = [ 'file:/share/nfs02/309www/Win7.img,ioemu:hda,w'

,'file:/share/nfs02/309www/Windisk.img,ioemu:hdb,w'#具體需要幾個硬碟根據需要掛載。

, 'file:/share/nfs02/309www/win7.iso,hdc:cdrom,r']      
#前面一個是虛擬硬碟的位置,後面一個是iso安裝檔案所在位置,根據實際位置修改

3)boot=cd                #設定預設系統啟動位置 CD-ROM(d)  hard-disk(c)
4)vncconsole=1       #類似xm cr -c 中的-c功能,使系統啟動之後自動通過vnc串連到虛擬機器視窗
5)usbdevice='tablet'   #據說是可以去除跟隨滑鼠的那個悲劇的點的,不過有的時候有效,有的時候沒 - -

5.啟動 xm create windows.hvm


如果沒有設定vncconsole=1這個項,我們也可以通過vncviewer 127.0.0.1:5900來串連我們啟動的虛擬機器視窗(5900是一個連接埠號碼,可能會變,可以通過xm list -l domid |
grep location 擷取連接埠號碼)

 也可以通過  xm vncviewer 


6.安裝windows.也可以在建立鏡像是完成。

7.修改啟動項,從硬碟啟動。


安裝完後,每次啟動都要到光碟片項,很麻煩,修改設定檔windows.hvm,將disk項改為disk = [ 'file:/home/wq/image/pv/hvm/vmdisk.img,ioemu:hda,w' ],boot=c

    可以通過xm

    xm vncviewer win7 啟動vnc到指定虛擬機器。"win7"是虛擬機器的名字。

     

    ps:這是我的設定檔

#  -*- mode: python; -*-#============================================================================# Python configuration setup for 'xm create'.# This script sets the parameters used when a domain is created using 'xm create'.# You use a separate script for each domain you want to create, or # you can set the parameters for the domain on the xm command line.#============================================================================import os, rearch = os.uname()[4]if re.search('64', arch):    arch_libdir = 'lib64'else:    arch_libdir = 'lib'#----------------------------------------------------------------------------# Kernel image file.kernel = "/usr/lib/xen/boot/hvmloader"# The domain build function. HVM domain uses 'hvm'.builder='hvm'# Initial memory allocation (in megabytes) for the new domain.## WARNING: Creating a domain with insufficient memory may cause out of#          memory errors. The domain needs enough memory to boot kernel#          and modules. Allocating less than 32MBs is not recommended.memory = 1024# Shadow pagetable memory for the domain, in MB.# If not explicictly set, xend will pick an appropriate value.  # Should be at least 2KB per MB of domain memory, plus a few MB per vcpu.# shadow_memory = 8# A name for your domain. All domains must have different names.name = "win7"# 128-bit UUID for the domain.  The default behavior is to generate a new UUID# on each call to 'xm create'.#uuid = "06ed00fe-1162-4fc4-b5d8-11993ee4a8b9"#-----------------------------------------------------------------------------# The number of cpus guest platform has, default=1#vcpus=1# Enable/disable HVM guest PAE, default=1 (enabled)#pae=1# Enable/disable HVM guest ACPI, default=1 (enabled)#acpi=1# Enable/disable HVM APIC mode, default=1 (enabled)# Note that this option is ignored if vcpus > 1#apic=1# List of which CPUS this domain is allowed to use, default Xen picks#cpus = ""         # leave to Xen to pick#cpus = "0"        # all vcpus run on CPU0#cpus = "0-3,5,^1" # all vcpus run on cpus 0,2,3,5#cpus = ["2", "3"] # VCPU0 runs on CPU2, VCPU1 runs on CPU3# Optionally define mac and/or bridge for the network interfaces.# Random MACs are assigned if not given.#vif = [ 'type=ioemu, mac=00:16:3e:00:00:11, bridge=xenbr0, model=ne2k_pci' ]# type=ioemu specify the NIC is an ioemu device not netfrontvif = [ 'type=ioemu,mac=00:16:3e:3f:45:8f, bridge=br0' ]#----------------------------------------------------------------------------# Define the disk devices you want the domain to have access to, and# what you want them accessible as.# Each disk entry is of the form phy:UNAME,DEV,MODE# where UNAME is the device, DEV is the device name the domain will see,# and MODE is r for read-only, w for read-write.#disk = [ 'phy:hda1,hda1,r' ]disk = [ 'file:/share/nfs02/309www/Win7.img,hda,w',     'file:/share/nfs02/309www/Windisk.img,hdb,w',     'file:/share/nfs02/309www/win7.iso,hdc:cdrom,r' ]#----------------------------------------------------------------------------# Configure the behaviour when a domain exits.  There are three 'reasons'# for a domain to stop: poweroff, reboot, and crash.  For each of these you# may specify:##   "destroy",        meaning that the domain is cleaned up as normal;#   "restart",        meaning that a new domain is started in place of the old#                     one;#   "preserve",       meaning that no clean-up is done until the domain is#                     manually destroyed (using xm destroy, for example); or#   "rename-restart", meaning that the old domain is not cleaned up, but is#                     renamed and a new domain started in its place.## In the event a domain stops due to a crash, you have the additional options:##   "coredump-destroy", meaning dump the crashed domain's core and then destroy;#   "coredump-restart', meaning dump the crashed domain's core and the restart.## The default is##   on_poweroff = 'destroy'#   on_reboot   = 'restart'#   on_crash    = 'restart'## For backwards compatibility we also support the deprecated option restart## restart = 'onreboot' means on_poweroff = 'destroy'#                            on_reboot   = 'restart'#                            on_crash    = 'destroy'## restart = 'always'   means on_poweroff = 'restart'#                            on_reboot   = 'restart'#                            on_crash    = 'restart'## restart = 'never'    means on_poweroff = 'destroy'#                            on_reboot   = 'destroy'#                            on_crash    = 'destroy'#on_poweroff = 'destroy'#on_reboot   = 'restart'#on_crash    = 'restart'#============================================================================# Device Model to be useddevice_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm'#-----------------------------------------------------------------------------# boot on floppy (a), hard disk (c), Network (n) or CD-ROM (d) # default: hard disk, cd-rom, floppy#boot="cda"boot="dc"#-----------------------------------------------------------------------------#  write to temporary files instead of disk image files#snapshot=1#----------------------------------------------------------------------------# enable SDL library for graphics, default = 0sdl=0#----------------------------------------------------------------------------# enable OpenGL for texture rendering inside the SDL window, default = 1# valid only if sdl is enabled.opengl=1#----------------------------------------------------------------------------# enable VNC library for graphics, default = 1vnc=1#----------------------------------------------------------------------------# address that should be listened on for the VNC server if vnc is set.# default is to use 'vnc-listen' setting from /etc/xen/xend-config.sxp#vnclisten="127.0.0.1"#----------------------------------------------------------------------------# set VNC display number, default = domid#vncdisplay=1#----------------------------------------------------------------------------# try to find an unused port for the VNC server, default = 1#vncunused=1#----------------------------------------------------------------------------# set password for domain's VNC console# default is depents on vncpasswd in xend-config.sxpvncpasswd=''#----------------------------------------------------------------------------# no graphics, use serial port#nographic=0#----------------------------------------------------------------------------# enable stdvga, default = 0 (use cirrus logic device model)stdvga=0#-----------------------------------------------------------------------------#   serial port re-direct to pty deivce, /dev/pts/n #   then xm console or minicom can connectserial='pty'#-----------------------------------------------------------------------------#   Qemu Monitor, default is disable#   Use ctrl-alt-2 to connect#monitor=1#-----------------------------------------------------------------------------#   enable sound card support, [sb16|es1370|all|..,..], default none#soundhw='sb16'#-----------------------------------------------------------------------------#    set the real time clock to local time [default=0 i.e. set to utc]#localtime=1#-----------------------------------------------------------------------------#    set the real time clock offset in seconds [default=0 i.e. same as dom0]#rtc_timeoffset=3600#-----------------------------------------------------------------------------#    start in full screen#full-screen=1   #-----------------------------------------------------------------------------#   Enable USB support (specific devices specified at runtime through the#monitor window)#usb=1#   Enable USB mouse support (only enable one of the following, `mouse' for#      PS/2 protocol relative mouse, `tablet' for#      absolute mouse)#usbdevice='mouse'#usbdevice='tablet'#-----------------------------------------------------------------------------#   Set keyboard layout, default is en-us keyboard. #keymap='ja'#-----------------------------------------------------------------------------#   Configure guest CPUID responses:##cpuid=[ '1:ecx=xxxxxxxxxxx00xxxxxxxxxxxxxxxxxxx,#           eax=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' ]# - Unset the SSE4 features (CPUID.1[ECX][20-19])# - Default behaviour for all other bits in ECX And EAX registers.# # Each successive character represent a lesser-significant bit:#  '1' -> force the corresponding bit to 1#  '0' -> force to 0#  'x' -> Get a safe value (pass through and mask with the default policy)#  'k' -> pass through the host bit value#  's' -> as 'k' but preserve across save/restore and migration# #   Expose to the guest multi-core cpu instead of multiple processors# Example for intel, expose a 8-core processor :#cpuid=['1:edx=xxx1xxxxxxxxxxxxxxxxxxxxxxxxxxxx,#          ebx=xxxxxxxx00010000xxxxxxxxxxxxxxxx',#     '4,0:eax=001111xxxxxxxxxxxxxxxxxxxxxxxxxx']#  - CPUID.1[EDX][HT] : Enable HT#  - CPUID.1[EBX] : Number of vcpus * 2#  - CPUID.4,0[EAX] : Number of vcpus * 2 - 1#vcpus=8## Example for amd, expose a 5-core processor :# cpuid = ['1:ebx=xxxxxxxx00001010xxxxxxxxxxxxxxxx,#             edx=xxx1xxxxxxxxxxxxxxxxxxxxxxxxxxxx',# '0x80000001:ecx=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1x',# '0x80000008:ecx=xxxxxxxxxxxxxxxxxxxxxxxxxx001001']#   - CPUID.1[EBX] : Threads per Core * Cores per Socket (2 * #vcpus)#   - CPUID.1[EDX][HT] : Enable HT#   - CPUID.0x80000001[CmpLegacy] : Use legacy method#   - CPUID.0x80000008[ECX] : #vcpus * 2 - 1#vcpus=5##  Downgrade the cpuid to make a better compatibility for migration :# Look like a generic 686 :# cpuid = [ '0:eax=0x3,ebx=0x0,ecx=0x0,edx=0x0',#           '1:eax=0x06b1,#              ecx=xxxxxxxxxx0000xx00xxx0000000xx0,#              edx=xx00000xxxxxxx0xxxxxxxxx0xxxxxx',#           '4:eax=0x3,ebx=0x0,ecx=0x0,edx=0x0',#  '0x80000000:eax=0x3,ebx=0x0,ecx=0x0,edx=0x0']#  with the highest leaf#  - CPUID.0[EAX] : Set the highest leaf#  - CPUID.1[EAX] : 686 #  - CPUID.1[ECX] : Mask some features#  - CPUID.1[EDX] : Mask some features#  - CPUID.4 : Reply like the highest leaf, in our case CPUID.3#  - CPUID.0x80000000 : No extension we are on a Pentium III, reply like the#  highest leaf (CPUID.3).##   Configure host CPUID consistency checks, which must be satisfied for this#   VM to be allowed to run on this host's processor type:#cpuid_check=[ '1:ecx=xxxxxxxxxxxxxxxxxxxxxxxxxx1xxxxx' ]# - Host must have VMX feature flag set## The format is similar to the above for 'cpuid':#  '1' -> the bit must be '1'#  '0' -> the bit must be '0'#  'x' -> we don't care (do not check)#  's' -> the bit must be the same as on the host that started this VM#-----------------------------------------------------------------------------#   Configure PVSCSI devices:##vscsi=[ 'PDEV, VDEV' ]##   PDEV   gives physical SCSI device to be attached to specified guest#          domain by one of the following identifier format.#          - XX:XX:XX:XX (4-tuples with decimal notation which shows#                          "host:channel:target:lun")#          - /dev/sdxx or sdx#          - /dev/stxx or stx#          - /dev/sgxx or sgx#          - result of 'scsi_id -gu -s'.#            ex. # scsi_id -gu -s /block/sdb#                  36000b5d0006a0000006a0257004c0000##   VDEV   gives virtual SCSI device by 4-tuples (XX:XX:XX:XX) as #          which the specified guest domain recognize.##vscsi = [ '/dev/sdx, 0:0:0:0' ]

參考文獻:

http://tomhibolu.iteye.com/blog/1215838

http://apps.hi.baidu.com/share/detail/23999906

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.