grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v3 2/3] mkrescue: add argument --fixed-time to get reproducib


From: Vladimir 'phcoder' Serbinenko
Subject: Re: [PATCH v3 2/3] mkrescue: add argument --fixed-time to get reproducible uuids
Date: Tue, 15 Dec 2015 17:02:36 +0100


Le 15 déc. 2015 4:46 PM, "Andrei Borzenkov" <address@hidden> a écrit :

>

> 14.12.2015 18:22, Vladimir 'φ-coder/phcoder' Serbinenko пишет:

> > On 04.12.2015 19:32, Alexander Couzens wrote:

> >> The uuid generation is based on the time.

> >> ---

> >>  util/grub-mkrescue.c | 16 +++++++++++++++-

> >>  1 file changed, 15 insertions(+), 1 deletion(-)

> >>

> > This breaks uniqueness assumptions for UUID and we use UUID to find the

> > right disk, as it's not possible to rely on passed boot disk on some

> > platforms (I've just documented it in grub.texi and pushed it). Also for

> > mkrescue we always use UUID. We need to find a way to reliably find boot

> > disk without depending on current time.

>

> Well, UUID of isofs used by GRUB is not unique in any sense, so it is

> not really much worse than it was before.

>

> Having reliable way to identify boot device imply some unique property

> of boot device which automatically conflict with idea of identical images.

>

It's not mutually exclusive. We could e.g. feed all files with full names in ISO into sha512sum, then stuff it into the ISO somehow

> But I am not sure we should stretch reproducible builds that far. ISO

> image created by grub-mkrescue is not binary. It even does not have well

> defined content, user is free to change modules list and other files

> that are part of ISO.

>

> >> diff --git a/util/grub-mkrescue.c b/util/grub-mkrescue.c

> >> index 4511826..1af1da2 100644

> >> --- a/util/grub-mkrescue.c

> >> +++ b/util/grub-mkrescue.c

> >> @@ -52,6 +52,7 @@ static int xorriso_arg_alloc;

> >>  static char **xorriso_argv;

> >>  static char *iso_uuid;

> >>  static char *iso9660_dir;

> >> +static time_t fixed_time;

> >>

> >>  static void

> >>  xorriso_push (const char *val)

> >> @@ -110,6 +111,7 @@ static struct argp_option options[] = {

> >>    {"product-version", OPTION_PRODUCT_VERSION, N_("STRING"), 0, N_("use STRING as product version"), 2},

> >>    {"sparc-boot", OPTION_SPARC_BOOT, 0, 0, N_("enable sparc boot. Disables HFS+, APM, ARCS and boot as disk image for i386-pc"), 2},

> >>    {"arcs-boot", OPTION_ARCS_BOOT, 0, 0, N_("enable ARCS (big-endian mips machines, mostly SGI) boot. Disables HFS+, APM, sparc64 and boot as disk image for i386-pc"), 2},

> >> +  {"fixed-time", 0, N_("TIMEEPOCH"), 0, N_("use a fixed timestamp for uuid generation"), 2},

> >>    {0, 0, 0, 0, 0, 0}

> >>  };

> >>

> >> @@ -153,6 +155,8 @@ enum {

> >>  static error_t

> >>  argp_parser (int key, char *arg, struct argp_state *state)

> >>  {

> >> +  char *b;

> >> +

> >>    if (grub_install_parse (key, arg))

> >>      return 0;

> >>    switch (key)

> >> @@ -212,6 +216,15 @@ argp_parser (int key, char *arg, struct argp_state *state)

> >>        xorriso = xstrdup (arg);

> >>        return 0;

> >>

> >> +    case 't':

> >> +      fixed_time = strtoll (arg, &b, 10);

> >> +      if (*b !='\0') {

> >> +        printf (_("invalid fixed time number: %s\n"), arg);

> >> +        argp_usage (state);

> >> +        exit (1);

> >> +      }

> >> +      return 0;

> >> +

> >>      default:

> >>        return ARGP_ERR_UNKNOWN;

> >>      }

> >> @@ -431,6 +444,7 @@ main (int argc, char *argv[])

> >>

> >>    pkgdatadir = grub_util_get_pkgdatadir ();

> >>

> >> +  fixed_time = -1;

> >>    product_name = xstrdup (PACKAGE_NAME);

> >>    product_version = xstrdup (PACKAGE_VERSION);

> >>    xorriso = xstrdup ("xorriso");

> >> @@ -541,7 +555,7 @@ main (int argc, char *argv[])

> >>    {

> >>      time_t tim;

> >>      struct tm *tmm;

> >> -    tim = time (NULL);

> >> +    tim = fixed_time != -1 ? fixed_time : time (NULL);

> >>      tmm = gmtime (&tim);

> >>      iso_uuid = xmalloc (55);

> >>      grub_snprintf (iso_uuid, 50,

> >>

> >

> >

> >

> >

> > _______________________________________________

> > Grub-devel mailing list

> > address@hidden

> > https://lists.gnu.org/mailman/listinfo/grub-devel

> >

>

>

>

> _______________________________________________

> 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]