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

[Xen-devel] Re: [PATCH] Fix bootloader handling when empty string is being output



On Tue, 2010-08-31 at 11:18 +0100, Michal Novotny wrote:
> On 08/31/2010 12:10 PM, Ian Campbell wrote:
> > On Tue, 2010-08-31 at 11:00 +0100, Michal Novotny wrote:
> >    
> >> I don't know how it's
> >> working with upstream version since I found out that syntax like `xm
> >> create -c PVguest` with default settings (pyGrub bootloader) doesn't
> >> show the pyGrub at all so I don't know what's wrong with my setup. I'm
> >> using 2.6.32.15-xen kernel/hypervisor version with latest unstable
> >> user-space tools.
> >>
> >> Any hint how this should be working Ian?
> >>      
> > It should be working as you expect, e.g. "xm create -c xxx" should show
> > you the pygrub output, unless you have used something like "--entry=x"
> > or "-q" which disable interactive mode in your bootloader_args.
> >
> > I'm afraid I don't know what is broken, I'm reasonably sure it was
> > working for me when I developed libxl_bootloader.c since I was comparing
> > the two.
> >
> > Ian.
> >
> >    
> No Ian, it's not working. The config file is having:
> ...
> bootloader = "/usr/bin/pygrub"
> ...
> So it should show the pyGrub ncurses screen, right?

Correct.

>  But it doesn't show 
> anything on version cloned from git yesterday.

xen-unstable or xen-4.0-testing or something else?

It looks like this was broken in xen-unstable with 21994:2e08ec0028e4.
The patch below should fix it.

Ian.

Subject: libxl+xend: use correct paths for PV console when running bootloader

Makes "{xl,xm} create -c GUEST" work again with pygrub in interactive
mode which was broken by 21994:2e08ec0028e4

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
diff -r f77e54fadc18 tools/libxl/libxl_bootloader.c
--- a/tools/libxl/libxl_bootloader.c    Tue Aug 31 09:54:18 2010 +0100
+++ b/tools/libxl/libxl_bootloader.c    Tue Aug 31 11:34:20 2010 +0100
@@ -383,7 +383,7 @@ int libxl_run_bootloader(libxl_ctx *ctx,
         goto out_close;
     }
 
-    dom_console_xs_path = libxl_sprintf(&gc, "%s/serial/0/tty", 
libxl_xs_get_dompath(&gc, domid));
+    dom_console_xs_path = libxl_sprintf(&gc, "%s/console/tty", 
libxl_xs_get_dompath(&gc, domid));
     libxl_xs_write(&gc, XBT_NULL, dom_console_xs_path, "%s", 
dom_console_slave_tty_path);
 
     pid = fork_exec_bootloader(&bootloader_fd, (char *)info->u.pv.bootloader, 
args);
diff -r f77e54fadc18 tools/python/xen/util/diagnose.py
--- a/tools/python/xen/util/diagnose.py Tue Aug 31 09:54:18 2010 +0100
+++ b/tools/python/xen/util/diagnose.py Tue Aug 31 11:34:20 2010 +0100
@@ -77,7 +77,7 @@ def diagnose_console():
 def diagnose_console():
     port    = xstransact.Read(dompath + '/console/port')
     ringref = xstransact.Read(dompath + '/console/ring-ref')
-    tty     = xstransact.Read(dompath + '/serial/0/tty')
+    tty     = xstransact.Read(dompath + '/console/tty')
 
     if not port:
         print "Console port is missing; Xend has failed."
diff -r f77e54fadc18 tools/python/xen/xend/XendBootloader.py
--- a/tools/python/xen/xend/XendBootloader.py   Tue Aug 31 09:54:18 2010 +0100
+++ b/tools/python/xen/xend/XendBootloader.py   Tue Aug 31 11:34:20 2010 +0100
@@ -85,7 +85,7 @@ def bootloader(blexec, disk, dom, quiet 
     fcntl.fcntl(m1, fcntl.F_SETFL, os.O_NDELAY)
 
     slavename = ptsname.ptsname(m1)
-    dom.storeDom("serial/0/tty", slavename)
+    dom.storeDom("console/tty", slavename)
 
     # Release the domain lock here, because we definitely don't want 
     # a stuck bootloader to deny service to other xend clients.



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


 


Rackspace

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