unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: bug-grub@gnu.org
Cc: 35283@debbugs.gnu.org
Subject: bug#35283: [PATCH] grub-mkrescue: Allow users to specify a FAT serial number
Date: Sun, 21 Apr 2019 18:32:21 +0200	[thread overview]
Message-ID: <871s1v720a.fsf_-___3693.3582670585$1555864401$gmane$org@gnu.org> (raw)
In-Reply-To: <11201672983044432889@scdbackup.webframe.org> (Thomas Schmitt's message of "Fri, 19 Apr 2019 14:46:48 +0200")

[-- Attachment #1: Type: text/plain, Size: 694 bytes --]

Hello,

While investigating reproducible ISO images for Guix¹, I found that
‘grub-mkrescue’ would invoke ’mformat’ without the ‘-N’ option.
Consequently, ‘mformat’ would pick a random serial number, thereby
making the ‘efi.img’ build process non-deterministic.

I came up with the gross hack attached: the ‘grub-mkrescue’ caller can
set the ‘GRUB_FAT_SERIAL_NUMBER’ environment variable, which
‘grub-mkrescue’ translates into a ‘-N’ flag for ‘mformat’.

We could perhaps achieve the same result differently, for instance by
adding an option to ‘grub-mkrescue’.

WDYT?

Thanks,
Ludo’.

¹ https://issues.guix.info/issue/35283


[-- Attachment #2: the patch --]
[-- Type: text/x-patch, Size: 1262 bytes --]

Change 'grub-mkrescue' to honor the 'GRUB_FAT_SERIAL_NUMBER'
environment variable.  That way, the caller can specify a fixed
serial number (instead of the randomly chosen one) to create EFI
images (the 'efi.img' file) that are reproducible bit-for-bit.

Patch by Ludovic Courtès <ludo@gnu.org>.

--- grub-2.02/util/grub-mkrescue.c	2019-04-20 19:15:26.180242812 +0200
+++ grub-2.02/util/grub-mkrescue.c	2019-04-20 21:56:34.672370849 +0200
@@ -788,8 +788,15 @@ main (int argc, char *argv[])
 
       efiimgfat = grub_util_path_concat (2, iso9660_dir, "efi.img");
       int rv;
-      rv = grub_util_exec ((const char * []) { "mformat", "-C", "-f", "2880", "-L", "16", "-i",
-	    efiimgfat, "::", NULL });
+
+      const char *fat_serial_number = getenv ("GRUB_FAT_SERIAL_NUMBER");
+      const char *mformat_args[] =
+	{ "mformat", "-C", "-f", "2880", "-L", "16",
+	  fat_serial_number != NULL ? "-N" : "-C",
+	  fat_serial_number != NULL ? fat_serial_number : "-C",
+	  "-i", efiimgfat, "::", NULL };
+
+      rv = grub_util_exec (mformat_args);
       if (rv != 0)
 	grub_util_error ("`%s` invocation failed\n", "mformat");
       rv = grub_util_exec ((const char * []) { "mcopy", "-s", "-i", efiimgfat, efidir_efi, "::/", NULL });

  parent reply	other threads:[~2019-04-21 16:33 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-06  0:02 bug#33639: ISO installer image is broken on i686 Ludovic Courtès
2018-12-06  7:19 ` Ludovic Courtès
2018-12-06 10:34   ` Ludovic Courtès
2018-12-06 14:08     ` Thomas Schmitt
2018-12-06 15:34       ` Ludovic Courtès
2018-12-06 16:59         ` Thomas Schmitt
2018-12-15 18:40         ` Thomas Schmitt
2018-12-15 19:24           ` Thomas Schmitt
2018-12-16 15:52           ` Ludovic Courtès
2018-12-16 16:52             ` Thomas Schmitt
2018-12-18 11:16               ` Ludovic Courtès
2018-12-18 21:45                 ` Thomas Schmitt
2018-12-19 14:05                   ` Ludovic Courtès
2018-12-19 14:51                     ` Thomas Schmitt
2018-12-20 13:38                       ` Thomas Schmitt
2018-12-21 20:44                         ` Ludovic Courtès
2018-12-21 21:42                           ` Thomas Schmitt
2019-04-07 20:18                             ` pelzflorian (Florian Pelz)
2019-04-07 21:35                               ` Thomas Schmitt
2019-04-08  8:50                                 ` Ludovic Courtès
2019-04-09 22:13                                   ` pelzflorian (Florian Pelz)
2019-04-10 11:17                                     ` Thomas Schmitt
2019-04-10 21:23                                       ` pelzflorian (Florian Pelz)
2019-04-12 21:26                                       ` Ludovic Courtès
2019-04-13  6:37                                         ` Thomas Schmitt
2019-04-13 13:46                                         ` pelzflorian (Florian Pelz)
2019-04-13 16:20                                           ` Thomas Schmitt
2019-04-14 21:43                                             ` Ludovic Courtès
2019-04-15  6:07                                               ` pelzflorian (Florian Pelz)
2019-04-15  8:16                                               ` Thomas Schmitt
2019-04-15  8:35                                                 ` Thomas Schmitt
2019-04-19 11:40                                             ` bug#35283: ISO images are not reproducible Ludovic Courtès
2019-04-19 12:46                                               ` Thomas Schmitt
2019-04-20 22:57                                                 ` Ludovic Courtès
2019-04-21  8:17                                                   ` Thomas Schmitt
2019-04-21 16:42                                                     ` Ludovic Courtès
2019-04-21 18:44                                                       ` Thomas Schmitt
2019-04-20 23:03                                                 ` bug#35283: [PATCH] mformat: initialize boot sector before writing it Ludovic Courtès
2019-04-21 16:32                                                 ` Ludovic Courtès [this message]
2019-04-14 15:47                                           ` bug#33639: ISO installer image is broken on i686 Ludovic Courtès
2019-04-15 16:54                                           ` pelzflorian (Florian Pelz)
2019-04-15 17:55                                             ` Thomas Schmitt
2019-04-16  9:57                                               ` Gábor Boskovits
2019-04-16 21:01                                             ` Ludovic Courtès
2019-04-17  9:03                                               ` pelzflorian (Florian Pelz)
2018-12-06 16:28       ` Ludovic Courtès
2018-12-06 17:29         ` Thomas Schmitt
2018-12-07 22:51           ` Ludovic Courtès
2018-12-08 12:42             ` Thomas Schmitt
2018-12-06  9:35 ` swedebugia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='871s1v720a.fsf_-___3693.3582670585$1555864401$gmane$org@gnu.org' \
    --to=ludo@gnu.org \
    --cc=35283@debbugs.gnu.org \
    --cc=bug-grub@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).