Subject: bug#25917: [PATCH] services: Don't check filesystem even if #:check? if not #:needed-for-boot.

From: [email-masked] (Ludovic Courtès)
Date: Tue, 14 Mar 2017 09:41:32 +0100

Danny Milosavljevic <[email-masked]> skribis:

>> One thing I don’t get is that, if the file system is not
>> needed-for-boot?, then it doesn’t get a Shepherd service in the first
>> place.
>
> But what is supposed to happen to filesystems where mount? but not needed-for-boot? if Shepherd doesn't mount it?  Does some other part mount it ?  Is it just put into fstab or something ?

Yes, it’s just put in fstab.  The use case for this is that then you can
type just “mount /mnt/foo” and ‘mount’ looks it up in /etc/fstab and
does the right thing.

>> In your original message, you wrote that the problem is that “the initrd
>> doesn't contain the fsck tool”, so it’s a problem in linux-initrd.scm,
>> no?
>
> I don't know where we should fix it.  If you want to reproduce it, I tested it with this config
>
>   (file-systems (cons* ...
>                        (file-system
>                         (device "NO NAME")
>                         (title 'label)
>                         (mount-point "/mnt/tmp")
>                         (type "vfat")
>                         (needed-for-boot? #f)
>                         (mount? #t)
>                         (check? #t))
>                        %base-file-systems))
>
> and an USB flash memory stick with name "NO NAME" (the default of the stick :) ).
>
> The effect is if not needed-for-boot? but check? , the boot breaks because it can't find fsck.vfat .

Ooh, I think that’s another problem, then.  :-)

‘file-system-shepherd-service’ is bogus: it only handles ext2:

                             (setenv "PATH"
                                     (string-append
                                      #$e2fsprogs "/sbin:"
                                      "/run/current-system/profile/sbin:"
                                      $PATH)))

We should fix that to handle vfat, btrfs, etc., just like ‘base-initrd’
does.  In fact, we should extract the ‘helper-packages’ thing from
there and factorize it between linux-initrd.scm and services/base.scm.

How does that sound?

Thanks,
Ludo’.