[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-users] Unable to create guest


  • To: xen-users@xxxxxxxxxxxxxxxxxxx
  • From: Dermot <paikkos@xxxxxxxxx>
  • Date: Fri, 5 Nov 2010 15:19:28 +0000
  • Delivery-date: Fri, 05 Nov 2010 08:20:46 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=eBC7/SAg8xmPBazbdKcFOPYGhUGpQjbEmhryq5fXGX2sYK21q5GaFETV2K7E1LLzvY aKDxvqt/+g3F+zr9j3Tq080zaXeGzhWAENrFJynpHN35dSUxk2yYiDOszTJBNpRFsidd 7xXMLMXs/KhFEJRhia4MWPxBp9vMCDYLYcrHI=
  • List-id: Xen user discussion <xen-users.lists.xensource.com>

Hi,

(Apoloises for earlier false send)

Host: CentOS 5.5
Guest: Ubuntu - maverick on LVM Volume
With Debian Installer specific variables

I am having a horrid time trying to create a guest on my host. I have
tried several method but they all fail for one reason or another. I
have had the most success with `xm create` but the problem I have with
`xm create` is that once the installation process is over and I am
asked to reboot, the dom no longer apepars in `xm list`.

Here is how I have created the guest, the config file is below:

xm create -c myconf.cfg install=true
install-mirror=http://mirror.bytemark.co.uk/ubuntu/
install-suite=maverick


While the guest OS is being installed, I can see it:
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0    21880    24 r-----   2485.6
test-03                                       8    10240     1 -b----    498.0

When the OS install is complete, I get the message: "Installation is
complete, so it is time to boot into your new system.". I press
continue, the OS shutdown but rather than staying in the xm list as
Shutdown, it does not appear on the list.

If I try `xm create myconf.cfg -c`, I get:
 xm create -c myconf.cfg
Using config file "/etc/xen/myconf.cfg".
Error: Bootloader isn't executable

I move past this error by editing my config and making giving the path
to pygrub (bootloader = '/usr/bin/pygrub')

But then I get this traceback:

[root@vega ~]# xm create -c myconf.cfg
Using config file "/etc/xen/myconf".
Traceback (most recent call last):
  File "/usr/bin/pygrub", line 682, in ?
    chosencfg = run_grub(file, entry, fs)
  File "/usr/bin/pygrub", line 536, in run_grub
    g = Grub(file, fs)
  File "/usr/bin/pygrub", line 203, in __init__
    self.read_config(file, fs)
  File "/usr/bin/pygrub", line 397, in read_config
    raise RuntimeError, "couldn't find bootloader config file in the
image provided."
RuntimeError: couldn't find bootloader config file in the image provided.
No handlers could be found for logger "xend"
Error: Boot loader didn't return any data!

I then run pygrub directly on the VM
#pygrub /dev/mapper/VM-live--03--disk
Traceback (most recent call last):
  File "/usr/bin/pygrub", line 682, in ?
    chosencfg = run_grub(file, entry, fs)
  File "/usr/bin/pygrub", line 536, in run_grub
    g = Grub(file, fs)
  File "/usr/bin/pygrub", line 203, in __init__
    self.read_config(file, fs)
  File "/usr/bin/pygrub", line 397, in read_config
    raise RuntimeError, "couldn't find bootloader config file in the
image provided."
RuntimeError: couldn't find bootloader config file in the image provided.

Can anyone offer any advice on why the the dom is not visible after
the VM has been created or how I can get past this (py)grub problem?
Thanks in advance,
Dp.


==== myconf.cfg =====

#
# Configuration file for the Xen instance spl-live-03, created
# by xen-tools 4.2 on Fri Nov  5 11:04:33 2010.
#
#  Kernel + memory size
#

#bootloader = '/usr/bin/pygrub'

vcpus       = '1'
memory      = '10240'

#  Disk device(s).
#
root        = '/dev/xvda1 ro'
disk        = [
                  'phy:/dev/VM/spl-live-03-disk,xvda,w',
              ]

#
#  Physical volumes
#


#
#  Hostname
#
name        = 'spl-live-03'

#
#  Networking
#
dhcp        = 'dhcp'
vif         = [ 'mac=00:16:3E:1E:65:85' ]

#
#  Behaviour
#
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

# Debian Installer specific variables

def check_bool(name, value):
    value = str(value).lower()
    if value in ('t', 'tr', 'tru', 'true'):
        return True
    return False

global var_check_with_default
def var_check_with_default(default, var, val):
    if val:
        return val
    return default

xm_vars.var('install', use='Install Debian, default: false', check=check_bool)
xm_vars.var("install-method",
            use='Installation method to use "cdrom" or "network"
(default: network)',
            check=lambda var, val: var_check_with_default('network', var, val))

# install-method == "network"
xm_vars.var("install-mirror",
            use='Debian mirror to install from (default:
http://archive.ubuntu.com/ubuntu)',
            check=lambda var, val:
var_check_with_default('http://archive.ubuntu.com/ubuntu', var, val))
xm_vars.var("install-suite",
            use='Debian suite to install (default: maverick)',
            check=lambda var, val: var_check_with_default('maverick', var, val))

# install-method == "cdrom"
xm_vars.var("install-media",
            use='Installation media to use (default: None)',
            check=lambda var, val: var_check_with_default(None, var, val))
xm_vars.var("install-cdrom-device",
            use='Installation media to use (default: xvdd)',
            check=lambda var, val: var_check_with_default('xvdd', var, val))

# Common options
xm_vars.var("install-arch",
            use='Debian mirror to install from (default: amd64)',
            check=lambda var, val: var_check_with_default('amd64', var, val))
xm_vars.var("install-extra",
            use='Extra command line options (default: None)',
            check=lambda var, val: var_check_with_default(None, var, val))
xm_vars.var("install-installer",
            use='Debian installer to use (default: network uses
install-mirror; cdrom uses /install.ARCH)',
            check=lambda var, val: var_check_with_default(None, var, val))
xm_vars.var("install-kernel",
            use='Debian installer kernel to use (default: uses
install-installer)',
            check=lambda var, val: var_check_with_default(None, var, val))
xm_vars.var("install-ramdisk",
            use='Debian installer ramdisk to use (default: uses
install-installer)',
            check=lambda var, val: var_check_with_default(None, var, val))

xm_vars.check()

if not xm_vars.env.get('install'):
    bootloader="pygrub"
elif xm_vars.env['install-method'] == "network":
    import os.path
    print "Install Mirror: %s" % xm_vars.env['install-mirror']
    print "Install Suite: %s" % xm_vars.env['install-suite']
    if xm_vars.env['install-installer']:
        installer = xm_vars.env['install-installer']
    else:
        installer =
xm_vars.env['install-mirror']+"/dists/"+xm_vars.env['install-suite'] +
\

"/main/installer-"+xm_vars.env['install-arch']+"/current/images"
    print "Installer: %s" % installer

    print
    print "WARNING: Installer kernel and ramdisk are not authenticated."
    print

    if xm_vars.env.get('install-kernel'):
        kernelurl = xm_vars.env['install-kernel']
    else:
        kernelurl = installer + "/netboot/xen/vmlinuz"

    if xm_vars.env.get('install-ramdisk'):
        ramdiskurl = xm_vars.env['install-ramdisk']
    else:
        ramdiskurl = installer + "/netboot/xen/initrd.gz"

    import urllib
    class MyUrlOpener(urllib.FancyURLopener):
        def http_error_default(self, req, fp, code, msg, hdrs):
            raise IOError("%s %s" % (code, msg))
    urlopener = MyUrlOpener()

    try:
        print "Fetching %s" % kernelurl
        kernel, _ = urlopener.retrieve(kernelurl)
        print "Fetching %s" % ramdiskurl
        ramdisk, _ = urlopener.retrieve(ramdiskurl)
    except IOError, _:
        raise

elif xm_vars.env['install-method'] == "cdrom":
    arch_path = { 'i386': "/install.386",
                  'amd64': "/install.amd" }

    if xm_vars.env['install-media']:
        print "Install Media: %s" % xm_vars.env['install-media']
    else:
        raise OptionError("No installation media given.")

    if xm_vars.env['install-installer']:
        installer = xm_vars.env['install-installer']
    else:
        installer = arch_path[xm_vars.env['install-arch']]

    print "Installer: %s" % installer

    if xm_vars.env.get('install-kernel'):
        kernelpath = xm_vars.env['install-kernel']
    else:
        kernelpath = installer + "/xen/vmlinuz"

    if xm_vars.env.get('install-ramdisk'):
        ramdiskpath = xm_vars.env['install-ramdisk']
    else:
        ramdiskpath = installer + "/xen/initrd.gz"

    disk.insert(0, 'file:%s,%s:cdrom,r' % (xm_vars.env['install-media'],
                                           xm_vars.env['install-cdrom-device']))

    bootloader="/usr/bin/pygrub"
    bootargs="--kernel=%s --ramdisk=%s" % (kernelpath, ramdiskpath)
    print "From CD"
else:
    print "WARNING: Unknown install-method: %s." % xm_vars.env['install-method']

if xm_vars.env.get('install'):
    # Figure out command line
    if xm_vars.env['install-extra']:
        extras=[xm_vars.env['install-extra']]
    else:
        extras=[]

    # Reboot will just restart the installer since this file is not
    # reparsed, so halt and restart that way.
    extras.append("debian-installer/exit/always_halt=true")
    extras.append("--")
    extras.append("quiet")

    console="hvc0"
    try:
        if len(vfb) >= 1:
            console="tty0"
    except NameError, e:
        pass

    extras.append("console="+ console)

    extra = str.join(" ", extras)
    print "command line is \"%s\"" % extra

======================

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.