Subject: Re: [bug#38871] Add a check before activating modprobe
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Mon, 06 Jan 2020 16:32:36 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

[email-masked] skribis:

> Currently an activation service unconditionally tries to set up a modprobe wrapper by writing to /proc/sys/kernel/modprobe. This breaks if the kernel is built without loadable module support, Shepherd completely aborts. I believe there is no reason for it to be so. Just add a simple check for the existence of this /proc node.
>
> ---
>  gnu/build/activation.scm | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
> index c6c7e7fd3b..f7a5e53e79 100644
> --- a/gnu/build/activation.scm
> +++ b/gnu/build/activation.scm
> @@ -269,9 +269,10 @@ second element is the name it should appear at, such as:
>  
>  (define (activate-modprobe modprobe)
>    "Tell the kernel to use MODPROBE to load modules."
> -  (call-with-output-file "/proc/sys/kernel/modprobe"
> -    (lambda (port)
> -      (display modprobe port))))
> +  (if (file-exists? "/proc/sys/kernel/modprobe")
> +    (call-with-output-file "/proc/sys/kernel/modprobe"

Applied with minor tweaks.

However, I suspect other issues will come up if you try to use a kernel
without loadable module support.  For instance, you’ll have to set:

  (initrd-modules '())

in your OS config file.

Thanks,
Ludo’.