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

From: Josselin Poiret <[email-masked]>
Date: Wed, 21 Jun 2023 09:45:30 +0200

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.

> 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.

> 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,
-- 
Josselin Poiret