Subject: Re: bug#32313: Failed to boot after reconfiguring with a btrfs drive.

From: Danny Milosavljevic <[email-masked]>
Date: Tue, 31 Jul 2018 22:40:05 +0200

Hi,

On Tue, 31 Jul 2018 12:04:54 +1000
Brendan Tildesley <[email-masked]> wrote:

> On 07/31/18 02:55, Danny Milosavljevic wrote:
> > Hi,
> >
> > hmm, where's the "file-systems" form in your system config?
> >
> > The first important part is whether your file-system entry is needed-for-boot? or not.
> >  
> Sorry, I forgot to un-kill it before copying the whole definition. It's here
> 
> (file-systems
>    (cons*
>     (file-system
>       (device (file-system-label "1tb"))
>       (mount-point "/mnt/1tb/")
>       (type "btrfs"))
>     (file-system
>       ;;(device
> "/dev/disk/by-id/ata-Samsung_SSD_850_EVO_1TB_S2PWNX0J204086P-part1")
>       (device (file-system-label "1ssd"))
>       (mount-point "/")
>       (type "ext4"))
>     %base-file-systems))

So it defaults to needed-for-boot? #f.

I think this is a real bug.

There is code in Guix to create an initrd.  It will also create a correct
modules.devname and also create a linux-boot module which will run on
system boot and set up some files in /dev (reading from modules.devname),
among those btrfs-control, IF THERE'S A btrfs FILESYSTEM WITH
needed-for-boot? #t .

Here there isn't.  So the initrd won't create /dev/btrfs-control .

But when needed-for-boot? is #f that means the file system will be mounted
somewhen later (not in the initrd) when the root fs and store is already there.

That means there should be a shepherd service or activation part that
parses linux-libre*/modules.devname and creates the still-missing /dev entries.

Where is that part?  It should be either a dependency of the part that mounts
the filesystem or just be right before it.  So we need a backtrace...