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:
Lennart Poettering
2012-05-21 20:00:58 +02:00
parent 2660882b52
commit 8f33b5b8b3
2 changed files with 4 additions and 12 deletions
-2
View File
@@ -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
View File
@@ -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;
}