Subject: bug#27735: closed (Re: bug#27735: Unbootable images with GuixSD on... "GuixSD")

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 17 Jul 2017 18:37:03 +0000

Your bug report

#27735: Unbootable images with GuixSD on... "GuixSD"

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
27735: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=27735
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#27735: Unbootable images with GuixSD on... "GuixSD"
From: Tobias Geerinckx-Rice <[email-masked]>
To: [email-masked]
Date: Mon, 17 Jul 2017 20:37:37 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Done with commit 0862b95433cacf91e44248097caa09119fc532a6.

Kind regards,

T G-R

Subject: Unbootable images with GuixSD on... "GuixSD"
From: Tobias Geerinckx-Rice <[email-masked]>
To: [email-masked]
Date: Mon, 17 Jul 2017 16:40:56 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Guix,

[I lost most hours of sleep to this. I might ramble more than usual.]

The default label for images was recently changed[1] to "GuixSD".
While I think it's a fine label, that's also a problem: I've been using
it for years for my root partitions. And when one broke last night, I
couldn't use the GuixSD installer to rescue it.

The installer's now expects exactly one "GuixSD" partition when booting
— at least on UEFI. If the GRUB finds two, the GRUB will randomly
choose. In my case, the GRUB chose a frozen system.

(With a black screen that made debugging hell, but that's probably an
unrelated effect of the roughness of our UEFI support.)

The real problem here is that we're using a label as a UUID.
From gnu/build/vm.scm:

        ;; Create a tiny configuration file telling the embedded grub
        ;; where to load the real thing.
        (call-with-output-file grub-config
          (lambda (port)
            (format port
                    "insmod part_msdos~@
                    search --set=root --label GuixSD~@
                    configfile /boot/grub/grub.cfg~%")))

I'm not the first to think so, as noted in gnu/system/vm.scm:

  (define root-label
    ;; Volume name of the root file system.  Since we don't know which
device
    ;; will hold it, we use the volume name to find it (using the UUID would
    ;; be even better, but somewhat less convenient.)
    (normalize-label "GuixSD"))

I like that understatement. I'm not sure how to go about creating a
reproducible almost-UUID based on the store hash and passing it to all
the right places in a reasonably non-horrible manner either, random
hacker. And it would mean even more work and testing after all the
heroic effort on the new installer image + UEFI support by Danny,
Marius, and others.

Until it does happen, I suggest we change the name to "GuixSD-image"[2].
Still fragile, but not the PR fail that ‘don't call your GuixSD file
system GuixSD or it will break GuixSD’ would be.

Zzz,

T G-R

[1]:
https://git.savannah.gnu.org/cgit/guix.git/commit/?id=651de2bdb5fd451c50933dcf8d647d470d826261
[2]: Or whatever. I remember someone (Danny?) calling "-image" an
implementation detail. I think it's a description of the end result.