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: Andrei Borzenkov
Subject: Re: [PATCH v3 2/3] mkrescue: add argument --fixed-time to get reproducible uuids
Date: Tue, 15 Dec 2015 18:46:03 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0

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.

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
> 


Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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