grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] fix booting xenlinux kerenl error not on a xen domain


From: Michael Chang
Subject: Re: [PATCH] fix booting xenlinux kerenl error not on a xen domain
Date: Tue, 23 Sep 2014 14:52:03 +0800
User-agent: Mutt/1.5.21 (2010-09-15)

On Sun, Sep 21, 2014 at 05:27:02PM +0200, Vladimir 'φ-coder/phcoder' Serbinenko 
wrote:
> On 18.09.2014 10:58, Michael Chang wrote:
> > There are two types of xen enabled kernel in linux, one is called
> > xenlinux which is older and can only boot on xen domain but not on any
> > real hardware without xen hypervisor. The other is called pvops which
> > can boot on xen domain as well as real hardware.
> > 
> > This patch is to prevent booting xenlinux kernel on real hardware by
> > filtering it out from boot menu. If not the error will show up when
> > attempting to boot it.
> > 
> > "Loading Linux xen ..."
> > error: invalid magic number
> > Loading initial ramdisk
> > error: you need to load the kernel first"
> > 
> > This patch achieves it by checking the host type, then disable xenlinux
> > kernel from booting on hosts that is not xen pv domU, and meanwhile
> > allow xen pvops kernel to boot.
> > ---
> >  util/grub.d/10_linux.in |   24 ++++++++++++++++++++++++
> >  1 files changed, 24 insertions(+), 0 deletions(-)
> > 
> > diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
> > index d2e2a8f..b055ccc 100644
> > --- a/util/grub.d/10_linux.in
> > +++ b/util/grub.d/10_linux.in
> > @@ -207,6 +207,30 @@ while [ "x$list" != "x" ] ; do
> >      fi
> >    done
> >  
> > +  # check if host is xen pv domU
> > +  if [ ! -e /proc/xen/xsd_port -a -e /proc/xen ]; then
> > +    dmi=/sys/class/dmi/id
> > +    if [ -r "${dmi}/product_name" -a -r "${dmi}/sys_vendor" ]; then
> > +      product_name=`cat ${dmi}/product_name`
> > +      sys_vendor=`cat ${dmi}/sys_vendor`
> > +      if test "${sys_vendor}" = "Xen" -a "${product_name}" = "HVM domU"; 
> > then
> > +   # host is xen HVM guest
> > +   xen_pv_domU=false
> > +      fi
> > +    fi
> > +  else
> > +    xen_pv_domU=false
> > +  fi
> > +
> Please don't determine system type at config file generation. Think of
> e.g. systems that can be bootable in either configuration. Use $grub_cpu
> and $grub_platofem runtime variables.

The question is the config could be loaded by pygrub. It's unclear to me
in this case whether $grub_platform runtime variable will be set or not. 

> > +  if test "$xen_pv_domU" = "false" ; then
> > +    # prevent xen kernel without pv_opt support from booting
> > +    if (grep -qx "CONFIG_XEN=y" "${config}" 2> /dev/null && ! grep -qx 
> > "CONFIG_PARAVIRT=y" "${config}" 2> /dev/null); then
> We're moving away from grepping in $config. Can you see if it can be
> integrated with grub_file?

Thanks for pointing me this, I'll try integrating the check into
grub-file utility.

regards,
Michael

> > +      echo "Skip xenlinux kernel $linux" >&2
> > +      list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
> > +      continue
> > +    fi
> > +  fi
> > +
> >    initramfs=
> >    if test -n "${config}" ; then
> >        initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | 
> > tr -d \"`
> > -- 1.7.3.4 _______________________________________________ Grub-devel
> > mailing list address@hidden
> > https://lists.gnu.org/mailman/listinfo/grub-devel
> > 
> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]