Bug#755256: [PATCH] grub-install: Include all decompressor modules in pvxen core image.

Ian Campbell ijc at hellion.org.uk
Fri Nov 28 17:25:55 UTC 2014


On Fri, 2014-11-28 at 20:09 +0300, Andrei Borzenkov wrote:
> В Fri, 28 Nov 2014 08:33:34 +0000
> Ian Campbell <ijc at hellion.org.uk> пишет:
> 
> > From: Ian Campbell <ijc at debian.org>
> > 
> > This avoids needing to update all the native update-grub stanzas to also probe
> > for and arrange to load the relevant decompressor, which would be wasteful on
> > native boots.
> > 
> 
> Could you give some more details why you need it?

In order to boot a Linux kernel under Xen grub needs to extract the ELF
file from the bzImage payload, which is compressed.

The compression algo is a kernel compile time option, gz and xz are the
most probably ones today.

> > +push_all_decompressor_modules(void)
> > +{
> > +  grub_install_push_module ("gzio");
> > +  grub_install_push_module ("xzio");
> > +  grub_install_push_module ("lzopio");
> > +}
> > +
> 
> It is not enough. Some of them need another modules that are autoloaded
> by normal.

autoloading should work, I think.

But if not -- how can one determine which modules are required and/or
arrange for them to be added automatically?

> 
> > +static void
> >  probe_mods (grub_disk_t disk)
> >  {
> >    grub_partition_t part;
> > @@ -1228,6 +1236,23 @@ main (int argc, char *argv[])
> >  	}
> >      }
> >  
> > +
> > +  switch (platform)
> > +    {
> > +    case GRUB_INSTALL_PLATFORM_I386_XEN:
> > +    case GRUB_INSTALL_PLATFORM_X86_64_XEN:
> > +      /* When booting a Xen PV kernel grub may need to decompress the
> > +       * kernel which may use a variety of algorithmns. Since we try
> > +       * to reuse the native grub.cfg files rather than trying to
> > +       * insmod the relevant decompressors on the fly we build them
> > +       * into the core image. This means we avoid needlessly loading
> > +       * modules on native. */
> > +      push_all_decompressor_modules();
> > +      break;
> > +    default:
> > +      break;
> > +    }
> > +
> >    grub_install_copy_files (grub_install_source_directory,
> >  			   grubdir, platform);
> >  
> 
> 



More information about the Pkg-grub-devel mailing list