util: rework in_initrd() logic
Checking the device major/minor is not a good idea. Let's replace this with an explicit flag file, which we model after /etc/os-release and call /etc/initrd-release.
This commit is contained in:
@@ -53,8 +53,6 @@ Features:
|
||||
|
||||
* actually queue the new default unit after switch-root
|
||||
|
||||
* remove old root in switch-root logic
|
||||
|
||||
* improve !/proc/*/loginuid situation: make /proc/*/loginuid less dependent on CONFIG_AUDIT,
|
||||
or use the users cgroup information when /proc/*/loginuid is not available.
|
||||
|
||||
|
||||
+4
-10
@@ -5654,16 +5654,10 @@ bool is_valid_documentation_url(const char *url) {
|
||||
}
|
||||
|
||||
bool in_initrd(void) {
|
||||
static bool checked=false;
|
||||
static bool is_in_initrd=false;
|
||||
static int saved = -1;
|
||||
|
||||
if (!checked) {
|
||||
struct stat sb;
|
||||
if (stat("/", &sb) == 0) {
|
||||
is_in_initrd = (sb.st_dev == 1);
|
||||
checked = true;
|
||||
}
|
||||
}
|
||||
if (saved < 0)
|
||||
saved = access("/etc/initrd-release", F_OK) >= 0;
|
||||
|
||||
return is_in_initrd;
|
||||
return saved;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user