]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/initrd-util.c
1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
6 #include "errno-util.h"
7 #include "initrd-util.h"
8 #include "parse-util.h"
10 #include "string-util.h"
12 static int saved_in_initrd
= -1;
14 bool in_initrd(void) {
17 if (saved_in_initrd
>= 0)
18 return saved_in_initrd
;
20 /* If /etc/initrd-release exists, we're in an initrd.
21 * This can be overridden by setting SYSTEMD_IN_INITRD=0|1.
24 r
= getenv_bool_secure("SYSTEMD_IN_INITRD");
25 if (r
< 0 && r
!= -ENXIO
)
26 log_debug_errno(r
, "Failed to parse $SYSTEMD_IN_INITRD, ignoring: %m");
29 saved_in_initrd
= r
> 0;
31 r
= RET_NERRNO(access("/etc/initrd-release", F_OK
));
32 if (r
< 0 && r
!= -ENOENT
)
33 log_debug_errno(r
, "Failed to check if /etc/initrd-release exists, assuming it does not: %m");
34 saved_in_initrd
= r
>= 0;
37 return saved_in_initrd
;
40 void in_initrd_force(bool value
) {
41 saved_in_initrd
= value
;