Subject: Re: bug#64196: Can't boot due to discrepancy between reconfigure and init

From: Csepp <[email-masked]>
Date: Thu, 22 Jun 2023 00:08:36 +0200

Josselin Poiret <[email-masked]> writes:

> [[PGP Signed Part:Undecided]]
> Hi Csepp,
>
> Csepp <[email-masked]> writes:
>
>> I'm trying to move my installation from /dev/sda to /dev/sdb, I created
>> the file system and changed the bootloader config in my operating-system
>> definition to point to /dev/sdb and the file-system to use the correct
>> UUID (previously it was using a label).
>> First I tried to simply reconfigure my running system and then taking a
>> BTRFS snapshot and copying that over the /dev/sdb1, but that failed.
>
> Any reason you didn't try in the reverse order?  This seems prone to error.

Since reconfigure overwrites /dev/sdb, I don't see how reversing the
order would fix things??
Maybe copying the file system over and *then* running init would make
sense.

>> The exact error was GRUB not being able to find a file system with a
>> given UUID, which matched the UUID of /dev/sda1.  This error happened
>> before GRUB loaded any of its modules, so I was dropped into a rescue
>> shell.
>> I thought this might be related to subvolumes, maybe I originally used
>> the wrong config and the updated config was written to a different
>> subvolume and GRUB doesn't recognize the default subvolume ID option on
>> the BTRFS partition.
>> I think this is a fairly critical error.
>
> This is too fuzzy to be actionable, but if you manage to reproduce
> reliably then I would gladly take a look at it.

I tried reproducing it, it seems to happen every time, but I can try to
create a more minimal test case.

>> The error doesn't manifest when I run guix system init with the same
>> config, so there is some (possibly un(der)documented) difference between
>> guix system reconfigure and guix system init that makes the former rely
>> on the state of the running system in a way that doesn't take into
>> account the new configuration.
>
> I don't think there is, the biggest difference is that `guix system
> init` will copy stuff into the target store and initialize the basic
> directories for Guix, whereas reconfigure will just build everything in
> the current store.
>
> Best,

I mean, that's the theory, but either Guix or GRUB seems to get the
incorrect UUID from *somewhere*.