Subject: bug#44717: ISO grub config points to nonexistent drive UUID.

From: Jesse Gibbons <[email-masked]>
Date: Wed, 18 Nov 2020 08:22:44 -0700

On 11/18/20 3:31 AM, Ludovic Courtès wrote:
> Hi,
>
> Jesse Gibbons <[email-masked]> skribis:
>
>> I generated the iso with the command
>> `guix system disk-image -t iso9660
>> --root=installer.BaNl/install-x86.iso --system=i686-linux
>> gnu/system/install.scm`
>> and flash the sd card with the command
>> `sudo bash -c "echo success" && time sudo dd if=install-x86.iso of=/dev/sdc`
>>
>> When I inspect the GRUB menu, I see the option
>> --root=31393730-3031-3031-3139-333534353239
>> but in the gnome disk utility on my main laptop I do not see the above
>> UUID in any of the partitions on the SD card I'm using, still with the
>> freshly built install iso flashed onto it. Instead I see the UUIDs
>> 1970-01-01-19-49-46-83 for partition 1 and 3495-32E0 for partition 2.
> The option in the GRUB menu uses the “DCE” format for the UUID, but if
> you convert it to an ISO-9660 UUID, it looks almost the same:
>
> --8<---------------cut here---------------start------------->8---
> scheme@(guile-user)> ,use(gnu system uuid)
> scheme@(guile-user)> (string->uuid "31393730-3031-3031-3139-333534353239")
> $60 = #vu8(49 57 55 48 48 49 48 49 49 57 51 53 52 53 50 57)
> scheme@(guile-user)> (bytevector->uuid $60 'iso9660)
> $61 = #<<uuid> type: iso9660 bv: #vu8(49 57 55 48 48 49 48 49 49 57 51 53 52 53 50 57)>
> scheme@(guile-user)> (uuid->string $61)
> $62 = "1970-01-01-19-35-45-29"
> --8<---------------cut here---------------end--------------->8---
>
> The ISO UUID is computed in a deterministic fashion.  Are you sure
> you’re looking at the same ISO?
>
> For example, if you pick
> <https://alpha.gnu.org/gnu/guix/guix-system-install-1.2.0rc1.x86_64-linux.iso.xz>,
> it boots just fine.  In the GRUB menu entry (type ‘e’ in the menu), you
> can see both the DCE UUID for ‘--root’ and the ISO UUID for ‘search.fs’,
> which are actually the same.
>
> HTH!
>
> Ludo’.

When I posted this initial bug report, I reported what happened when I 
flashed the built iso to an SD card and tried it on another laptop. Just 
to be sure, I remade the image (in the same directory as my guix checkout)

guix system disk-image -t iso9660 --root=$(mktemp -p /tmp -d 
install.XXX)/install-x86.iso --system=i686-linux gnu/system/install.scm

and I mounted the ISO itself and took a look at it. The grub.conf 
specifies both UUIDs as you described.

When I try it on a VM, it opens a repl with a completely different error 
which I'm too lazy to type out by hand. See attached screenshot.

When I download the iso you linked and run it on a vm, it works just 
fine. Just to see if it has anything to do with the architecture, I also 
decided to try a vm with the i686-linux counterpart. It also works fine.

I do not have access to any of those old laptops right now, so I can't 
experiment further.