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

Re: [libvirt] [PATCH] libxl: do not use hardcoded pygrub path

Hi Jim,

thanks four your time. Some replies inline, but before let me clarify
some things:

- I am running libvirt + xen in Debian and Ubuntu hosts.

- /usr/bin/pygrub does not exist in Debian and Ubuntu, it is located
  in /usr/lib/xen-<version>/bin/pygrub instead.

- We have been running our guests without including a bootloader element
  in the XML files until we have migrated to libxl.

On Tue 19 Aug 2014 (23:15), Jim Fehlig wrote:
> On 08/19/2014 10:33 AM, Álvaro López García wrote:
> >On Tue 19 Aug 2014 (14:32), Daniel P. Berrange wrote:
> >>On Tue, Aug 19, 2014 at 01:54:12PM +0200, Alvaro Lopez Garcia wrote:
> >>>According to the Xen documentation the full path was only needed
> >>>for versions prior to 4.1: "Note: For older versions of Xen Project
> >>>software (4.1 or earlier) you need to know where in the filesystem
> >>>pygrub lies. (...) Newer versions of the toolstack know how to look
> >>>for the path themselves." [1]
> >>Regardless of whether they know how to find the path, it is expected
> >>that the libvirt XML is including/requiring the full path. So I'm
> >>not really considering this a bug that needs fixing
> >- Is it required that all the libvirt XML files needing a bootloader
> >   specify one? or
> No.  But if you don't specify one, you get /usr/bin/pygrub, which is similar
> to xend's behavior.

AFAIK if the bootloader is not set, or if it is set to just "pygrub", 
xend searchs for it [1] in several locations [2]. If it is set to a
full path, it does not search for anything and uses that path. In our
case we didn't set a bootloader and xend finds it in LIBEXEC (that in
Debian/Ubuntu using Xen 4.4 points to /usr/lib/xen-4.4/bin/).

[1] http://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=tools/python/xen/xend/XendDomainInfo.py;h=8d4ff5c749f294c9c6509d84bb2b6a898acfc965;hb=stable-4.4#l3245
[2] http://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=tools/python/xen/util/auxbin.py;h=a690ad94d16583b5e9d0b3e180e653305f7fb210;hb=stable-4.4#l35

libvirt using libxl is setting the bootloader to /usr/bin/pygrub if it
is not set in the XML file. This produces the following warning in the
libvirt logs (coming from libxl [3]):

  libxl: warning: libxl_bootloader.c:413:bootloader_disk_attached_cb:
  bootloader='/usr/bin/pygrub' is deprecated; use bootloader='pygrub'

The boot process finally ends up failing since it cannot find

  libxl: cannot execute /usr/bin/pygrub: No such file or directory

Therefore I assume that when libxl sets the bootloader because it is
missing in the XML file it should set it just to "pygrub" not
"/usr/bin/pygrub", hence my patch, but maybe I am mistaken.

[3] http://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=tools/libxl/libxl_bootloader.c;h=3287bf77da9a64327736e6bf923608e0c2bb3a52;hb=stable-4.4#l411

> >- If the bootloader is specified, then it has to be a full path?
> No.

Thanks for the clarification.

> >If it is the former case, we have been running libvirt with xend without
> >specifying a bootloader in the XML files for a long time.
> If not specified, xend sets bootloader to 'usr/bin/pygrub'.

See my comments above, if not specified or if it is only "pygrub" xend 
searchs for it in any of the expected paths.

> >  We only have
> >found issues when we switched our hypervisors from xend to libxl.
> What issues?  AFAIK, only a warning in the log.

Actually just one issue apart from the warning in the log: After the
migration from xend to libxl I am not able to boot anymore one of the
previously running guests. I have to set manually in each of the guests'
configuration the bootloader, pointing to the correct location.

Kind regards,
Álvaro López García                              aloga ifca unican es
Instituto de Física de Cantabria         http://alvarolopez.github.io
Ed. Juan Jordá, Campus UC                      tel: (+34) 942 200 969
Avda. de los Castros s/n
39005 Santander (SPAIN)

Attachment: signature.asc
Description: Digital signature

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