RE: [Xen-users] Install XP on sata XEN

Dustin Henning
2008-09-03T12:53:09Z

This is your problem:

disk = [ ''phy:/dev/sdb,sda,w'',
''phy:/dev/cdrom,hda:cdrom,r'']

The virtual BIOS provided for Xen HVM guests does not support booting from
SCSI (sda Is SCSI on Xen HVM guests even when it is SATA on Linux, and it
actually means SCSI on Linux, this is similar to the way an add-on IDE or
SATA controller is always installed as a SCSI controller in Windows).

You will need to change the above line to this:

disk = [ ''phy:/dev/sdb,hda,w'',
''phy:/dev/cdrom,hdc:cdrom,r'']

You will likely have to re-install since Windows likely used some native
SCSI driver and probably won''t boot after that change (at the least
you''ll
have to edit boot.ini, but it all depends if Windows has a driver to boot
the new HD on the new controller [vs the one it was installed on that the
BIOS won''t boot]).  You may not want to use multiple VCPUs when it is
said
and done either.  In some cases, adding them may cause performance problems
instead of making performance better (I believe this is specific to Windows,
and may no longer be true, so you can certainly give it a shot, which means
start out with multiple VCPUs so a multiprocessor ACPI kernel is installed,
then remove them to compare performance).

                Regarding your desire to use sda, I was of this mindset too,
as I have experienced speed limitations by using SATA in IDE mode on
physical machines.  I believe these speed limitations were caused by the
BIOS, though, and not Windows (they happened in Linux as well).  In a Xen
virtual environment, you shouldn''t truly be limited by the IDE drivers
or
the 100 Mb NIC, or at least that''s what I have read over and over
again.
Incidentally, there is definitely some performance loss in HVM, so
you''re
not likely to go fast enough to reach those theoretical limits, much less
surpass them.  This can be overcome in many distros with built-in Xen PV
drivers.  In Windows, it can be overcome to some degree with James
Harper''s
GPLPV drivers, but they are not really ready for production use (though I
suspect many people use them that way in spite of the warnings), and you
will likely have some trouble getting them working and/or upgrading them in
the future (Backup early and often).  I would definitely do a lot of
reviewing of past threads about them in this list before messing with them.

Also, regarding installing Windows on SATA in real life, it is possible, but
you need at least SP2 (maybe 1, but I think 2) included on the install disc,
and it has to be standard SATA (or SATAII configured a certain way in the
BIOS, but I don''t remember which way, as I always use a driver disk).

Dustin



From: xen-users-bounces@lists.xensource.com
[mailto:xen-users-bounces@lists.xensource.com] On Behalf Of Mike Power
Sent: Wednesday, September 03, 2008 00:51
Cc: xen-users@lists.xensource.com
Subject: Re: [Xen-users] Install XP on sata XEN





Todd Deshane wrote:

Hi,



For example right now my domU won''t boot off the hard disk.  I
experimented
by removing the hard drive from the disk line.  The result was the same.  So
now I do not know if the bios can''t see my hard drive or it just
can''t boot
my hard drive.  A simple list of detected sata drives would save me loads of
time.



For HVM guests, there is quite a bit of information logged to
/var/log/xen/qemu* logs.

Do you see anything there that might help?

Also, could you post your domU config file, and as suggested by Jerry
Amundson:
log file entries, stdout messages, etc? These really do help in
debugging the situation.

Also, you didn''t mention your version of Xen, how it was installed,
your kernel versions etc.

A quick comment on your general comments on Xen: Xen already has a lot
of attention from
a lot of people. The distros, and other big third parties have taken
Xen under their wing and
there are a lot of really professional software on and around Xen.

I would recommend taking a look at the xen.org site, which is
currently under re-design, but
will still give you a better sense of where Xen is and, where it has
been, and where it is going.

Hope that helps,
Cheers,
Todd



Hey thanks for the response.  I was sending the information but this is the
first email that seems to have hit the list.  Such goes the way of things,
none the less I''ll compile all the information.

mpower@dodtsair:/$ uname -a
Linux dodtsair 2.6.24-19-xen #1 SMP Wed Aug 20 21:08:51 UTC 2008 x86_64
GNU/Linux

mpower@dodtsair:/$ dpkg -S /usr/sbin/xm
xen-utils-3.2: /usr/sbin/xm

mpower@dodtsair:/$ cat /etc/issue
Ubuntu 8.04.1 \n \l

mpower@dodtsair:/$ cat /etc/xen/windows
#  -*- 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/" + arch_libdir + "/xen/boot/hvmloader"
#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 = 2048

# 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 = "Windows"

# 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=3

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

#---------------------------------------------------------------------------
-
# 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 = [ ''phy:/dev/sdb,hda,w'',
''file:/home/mpower/windowsXP.iso,hdc:cdrom,r
<file:///\\home\mpower\windowsXP.iso,hdc:cdrom,r> '',
''file:/home/mpower/windows98.iso,hde:cdrom,r
<file:///\\home\mpower\windows98.iso,hde:cdrom,r> '']
#disk = [ ''phy:/dev/sdb,hda,w'',
''phy:/dev/loop1,hdc:cdrom,r'',
''phy:/dev/loop0,hde:cdrom,r'']
#disk = [ ''phy:/dev/sdb,sda,w'',
''phy:/dev/cdrom,hdc:cdrom,r'']
#disk = [ ''phy:/dev/sdb,sda,w'',
''phy:/dev/cdrom,hdc:cdrom,r'',
''phy:/dev/scd0,hde:cdrom,r'']
#disk = [ ''phy:/dev/loop0,sda,w'',
''phy:/dev/cdrom,hdc:cdrom,r'',
''phy:/dev/scd0,hde:cdrom,r'']
#disk = [ ''phy:/dev/sda,sda,w'',
''phy:/dev/loop0,hdc:cdrom,r'']
#disk = [ ''phy:/dev/sdb,sda,w'',
''phy:/dev/cdrom,hdc:cdrom,r'',
''phy:/dev/cdrom2,hde:cdrom,r'']
#disk = [ ''phy:/dev/sdb,sda,w'',
''phy:/dev/cdrom,hdc:cdrom,r'']
#disk = [ ''phy:/dev/sdb,sda,w'',
''phy:/dev/cdrom,hda:cdrom,r'',
''phy:/dev/cdrom2,hdb:cdrom,r'']
#disk = [ ''phy:/dev/sdb,sda,w'']
#disk = [ ''phy:/dev/sdb,sdb,w'']
#disk = [ ''phy:/dev/cdrom,hda:cdrom,r'']
disk = [ ''phy:/dev/sdb,sda,w'',
''phy:/dev/cdrom,hda: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.
#
# 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 = ''preserve''
#on_reboot   = ''restart''
#on_crash    = ''restart''

#==========================================================================
# New stuff
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="c"

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

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

#---------------------------------------------------------------------------
-
# enable spawning vncviewer for domain''s console
# (only valid when vnc=1), default = 0
#vncconsole=0

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

mpower@dodtsair:/$ cat /var/log/xen/qemu-dm-7.log
Watching /local/domain/0/device-model/7/logdirty/next-active
Watching /local/domain/0/device-model/7/command
char device redirected to /dev/pts/1
qemu_map_cache_init nr_buckets = 10000 size 3145728
shared page at pfn 7ffff
buffered io page at pfn 7fffd
Time offset set 0
Register xen platform.
Done register platform.
raw_read(7:/dev/cdrom, 0, 0x7fff633ad6c0, 512) [8388604] read failed -1 : 5
= Input/output error
raw_read(7:/dev/cdrom, 0, 0x7fff633ad6c0, 512) [8388604] retry read failed
-1 : 5 = Input/output error
I/O request not ready: 0, ptr: 0, port: 0, data: 0, count: 0, size: 0
I/O request not ready: 0, ptr: 0, port: 0, data: 0, count: 0, size: 0
I/O request not ready: 0, ptr: 0, port: 0, data: 0, count: 0, size: 0


mpower@dodtsair:/$ sudo xm create windows
Using config file "/etc/xen/windows".
Started domain Windows
mpower@dodtsair:/$ sudo xm destroy 9

Mike Power
P.S. I do not see it talking to the hard drive in the logs.