grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 2/2] Add emdedded-config hidden option to grub-install.


From: Glenn Washburn
Subject: Re: [PATCH 2/2] Add emdedded-config hidden option to grub-install.
Date: Tue, 27 May 2014 01:32:22 -0500

On Thu, 22 May 2014 09:33:05 +0200
Vladimir 'φ-coder/phcoder' Serbinenko <address@hidden> wrote:

> On 19.05.2014 09:03, Glenn Washburn wrote:
> > One thing to note with this patch is that the supplied embedded
> > config file is appended to the normally generated one.  I did this
> > to allow the default root and prefix to be generated and
> > subsequently overridden if desired.
> > 
> embed config isn't meant to hold user-supplied command. Normal config
> is for this. If you want to change root/prefix, why not just install
> to the location where the desired prefix is?

This is currently needed to set the root to (memdisk) when supplying a
memdisk.  But I generally like the flexibility it offers.  I've made
this a hidden command, so that the average user isn't confused by it,
but available if the user really wants to use it.  It also give
grub-install a capability that it previously had, when it was a shell
script.

> > ---
> >  util/grub-install.c | 20 +++++++++++++++++++-
> >  1 file changed, 19 insertions(+), 1 deletion(-)
> > 
> > diff --git a/util/grub-install.c b/util/grub-install.c
> > index d66030f..85dd3a1 100644
> > --- a/util/grub-install.c
> > +++ b/util/grub-install.c
> > @@ -74,6 +74,7 @@ static char *memdisk = NULL;
> >  static int have_load_cfg = 0;
> >  static FILE * load_cfg_f = NULL;
> >  static char *load_cfg;
> > +static char *embed_cfg = NULL;
> >  static int install_bootsector = 1;
> >  static char *label_font;
> >  static char *label_color;
> > @@ -100,6 +101,7 @@ enum
> >      OPTION_BOOTLOADER_ID, 
> >      OPTION_EFI_DIRECTORY,
> >      OPTION_MEMDISK,
> > +    OPTION_EMBED_CFG,
> >      OPTION_FONT,
> >      OPTION_DEBUG,
> >      OPTION_DEBUG_IMAGE,
> > @@ -188,6 +190,11 @@ argp_parser (int key, char *arg, struct
> > argp_state *state) memdisk = xstrdup (arg);
> >        return 0;
> >  
> > +    case OPTION_EMBED_CFG:
> > +      free (embed_cfg);
> > +      embed_cfg = xstrdup (arg);
> > +      return 0;
> > +
> >      case OPTION_DISK_MODULE:
> >        free (disk_module);
> >        disk_module = xstrdup (arg);
> > @@ -264,6 +271,7 @@ static struct argp_option options[] = {
> >     /* TRANSLATORS: "TARGET" as in "target platform".  */
> >     0, N_("install GRUB for TARGET platform [default=%s]; available
> > targets: %s"), 2}, {"memdisk", OPTION_MEMDISK, N_("FILE"),
> > OPTION_HIDDEN, 0, 2},
> > +  {"embedded-config", OPTION_EMBED_CFG, N_("FILE"), OPTION_HIDDEN,
> > 0, 2}, {"grub-setup", OPTION_SETUP, "FILE", OPTION_HIDDEN, 0, 2},
> >    {"grub-mkrelpath", OPTION_MKRELPATH, "FILE", OPTION_HIDDEN, 0,
> > 2}, {"grub-mkdevicemap", OPTION_MKDEVICEMAP, "FILE", OPTION_HIDDEN,
> > 0, 2}, @@ -1586,7 +1594,17 @@ main (int argc, char *argv[])
> >      grub_util_error ("%s", _("You've found a bug"));
> >  
> >    if (load_cfg_f)
> > -    fclose (load_cfg_f);
> > +    {
> > +      if (embed_cfg)
> > +        {
> > +          size_t size = grub_util_get_image_size(embed_cfg);
> > +          char *embed_cfg_data = grub_util_read_image(embed_cfg);
> > +          grub_util_write_image(embed_cfg_data, size, load_cfg_f,
> > load_cfg);
> > +          free(embed_cfg_data);
> > +        }
> > +      
> > +      fclose (load_cfg_f);
> > +    }
> >  
> >    char *imgfile = grub_util_path_concat (2, platdir,
> >                                    core_name);
> > 
> 
> 

Attachment: signature.asc
Description: PGP signature


reply via email to

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