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.编写配置文件
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, re
- arch = 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 netfront
- vif = [ '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 used
- device_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 = 0
- sdl=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 = 1
- vnc=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.sxp
- vncpasswd=''
- #----------------------------------------------------------------------------
- # 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 connect
- serial='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' ]