Talk:Xen Full Virtualization Example

From openSUSE

On my Kubuntu distro, the install script (xen binary install) put the example file in /etc/xen/xmexample.hvm instead of /etc/xen/examples/xmexample.hvm. Is /etc/xen/examples/xmexample.hvm correct on Suse ?

Is it possible to boot windows not from a disk image but from a hard disk partition ?

Workaround for the machine hanging

If the entire machine hangs when starting a fully virtualized guest (or if it fails to come up at all), it is most likely due to issues with the domain0 auto-ballooning and/or shadow paging code. As a result, the problems can be avoided by manually reducing the amount of memory allocated to domain0. This can be done by issueing the xm mem-set command or by adding dom0_mem parameter to the xen.gz line in the /boot/grub/menu.lst file. For example, the to reduce dom0 memory to 512 MB for the current boot only, type "xm mem-set 0 512" at the dom0 command line. To make that change permanent for all subsequent boots, add "dom0_mem=512M" at the end of the "kernel /boot/xen.gz" line in the Xen section of /boot/grub/menu.lst.

Error: (2, 'No such file or directory')

I followed the instructions but after I type xm create myfile.hvm I get this error:

Error: (2, 'No such file or directory')

Do you have any idea what would the problem be? A search on google didn't help much. I checked my HVM files and they seem fine to me.

Update: A simple reboot solved the problem, but now I have the following error:

Error: (111, 'Connection refused')

which I guess is due to the fact that xend is not up. If I try to run xend I get the following error:

 ERROR: Could not obtain handle on privileged command interface (2 = No such file or directory)
 Traceback (most recent call last):
   File "/usr/sbin/xend", line 33, in ?
     from xen.xend.server import SrvDaemon
   File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvDaemon.py", line 21, in ?
     import relocate
   File "/usr/lib/python2.4/site-packages/xen/xend/server/relocate.py", line 26, in ?
     from xen.xend import XendDomain
   File "/usr/lib/python2.4/site-packages/xen/xend/XendDomain.py", line 33, in ?
     import XendDomainInfo
   File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 37, in ?
     import image
   File "/usr/lib/python2.4/site-packages/xen/xend/image.py", line 32, in ?
     xc = xen.lowlevel.xc.xc()
 RuntimeError: (2, 'No such file or directory')

Question: Do I need to boot with Xen kernel before running Xen? I can't try it, as if I do boot with Xen kernel, X gives errors on graphic card driver.

Full description of an hvm file=

#  -*- 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.
memory = 384

# A name for your domain. All domains must have different names.
name = "WindowsXP"

#-----------------------------------------------------------------------------
# the number of cpus guest platform has, default=1
#vcpus=1

# enable/disable HVM guest PAE, default=0 (disabled)
#pae=0

# enable/disable HVM guest ACPI, default=0 (disabled)
#acpi=0

# enable/disable HVM guest APIC, default=0 (disabled)
#apic=0

# 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" # run on cpus 0,2,3,5

# 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' ]
# type=ioemu specify the NIC is an ioemu device not netfront
vif = [ 'type=ioemu, bridge=xenbr0' ]

#----------------------------------------------------------------------------
# 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:/var/lib/xen/images/windisk.img,ioemu:hda,w' ]

#----------------------------------------------------------------------------
# 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.
#
# The default is
#
#   on_poweroff = 'destroy'
#   on_reboot   = 'destroy'
#   on_crash    = 'destroy'
#
# 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   = 'destroy'
on_crash    = 'destroy'

#============================================================================

# New stuff
device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm'

#-----------------------------------------------------------------------------
# Disk image for 
cdrom='/dev/sr0'

#-----------------------------------------------------------------------------
# boot on floppy (a), hard disk (c) or CD-ROM (d) 
boot='d'
#-----------------------------------------------------------------------------
#  write to temporary files instead of disk image files
#snapshot=1

#----------------------------------------------------------------------------
# enable SDL library for graphics, default = 0
sdl=1

#----------------------------------------------------------------------------
# enable VNC library for graphics, default = 1
vnc=0

#----------------------------------------------------------------------------
# enable spawning vncviewer(only valid when vnc=1), default = 1
vncviewer=0

#----------------------------------------------------------------------------
# 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'

#----------------------------------------------------------------------------
# enable ne2000, default = 0(use pcnet)
ne2000=0


#-----------------------------------------------------------------------------
#   enable audio support
#audio=1


#-----------------------------------------------------------------------------
#    set the real time clock to local time [default=0 i.e. set to utc]
#localtime=1


#-----------------------------------------------------------------------------
#    start in full screen
#full-screen=1

hope this works...