Subject: bug#29312: GRUB with multiple partitions with identical bzImage

From: Vagrant Cascadian <[email-masked]>
Date: Thu, 16 Nov 2017 08:13:05 -0800

On 2017-11-16, Ludovic Courtès wrote:
> Vagrant Cascadian <[email-masked]> skribis:
> Indeed.  You can force GuixSD to use a file system label or a UUID by
> declaring your file system with a label/UUID.  So you would write:
>
>   (file-system
>     ;; …
>     (mount-point "/")
>     (title 'uuid)
>     (device (uuid "f549617a-07b0-430a-9723-36c43b98c748")))

Yes, this fixed it for me!

> or:
>
>   (file-system
>     ;; …
>     (mount-point "/")
>     (title 'label)
>     (device "my-root"))
>
> When you do that, the generated grub.cfg searches the file system by
> label/UUID, which should be more reliable as you write.
>
> Would that work for you?

Using UUID worked; didn't test using a label, but I imagine it would
also resolve the issue.

>> A quick workaround might be to also add a search line for the initrd
>> after loading the kernel:
...
> The assumption is that there’s only one /gnu/store that matters and that
> it contains both the kernel and the initrd.  So I think the real
> solution is for the first ‘search’ command to be appropriate.

Agreed.

For the record, spelling it out, apparently the issue wasn't searching
in each menu entry, but:

  # Set 'root' to the partition that contains /gnu/store.
  search --file --set /gnu/store/0lwyzz8ayixwvdm1b3xhh26mlh0jz36b-grub-2.02/share/grub/unicode.pf2

Where it set the initial root.

After updating to mount by UUID, the corresponding search line became:

  search --fs-uuid --set 1234ab-cdef-...1234ab

So it then only loaded files from the appropriate filesystem.

Since this is an issue caused by configuration, perhaps the
documentation could clarify the importance of using UUID or filesystem
labels rather than raw devices:

  https://www.gnu.org/software/guix/manual/html_node/Proceeding-with-the-Installation.html#Proceeding-with-the-Installation

I guess all of the install examples use labels:

  http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/system/examples/

And I'm not sure how many people have multiple GuixSD installs on their
systems, so perhaps it's just me putting myself into a corner case. :)

> Thanks for your report!

Thanks for the prompt response and solution!

live well,
  vagrant