diff options
author | Harald Hoyer <harald@redhat.com> | 2012-05-16 14:22:44 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-05-21 18:51:05 +0200 |
commit | c3ba62509efe274c2bf6482056044e6fab65fec0 (patch) | |
tree | d26b952a26449e9e800ab366023c7caeb69d24a8 | |
parent | e148ac5a6cccd1c9c23bf7b3085b50fdb1cd1cf9 (diff) | |
download | systemd-c3ba62509efe274c2bf6482056044e6fab65fec0.tar.gz |
core/main.c: handle the initrd timestamp differently, if in the initrd
If systemd is in the initrd/initramfs, set the initrd timestamp and do
not try to read it from the RD_TIMESTAMP environment variable.
-rw-r--r-- | src/core/main.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/core/main.c b/src/core/main.c index d7143edae2..878eaf353f 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1310,6 +1310,19 @@ int main(int argc, char *argv[]) { log_set_max_level(LOG_INFO); if (getpid() == 1) { + if (in_initrd()) { + char *rd_timestamp = NULL; + + dual_timestamp_get(&initrd_timestamp); + asprintf(&rd_timestamp, "%llu %llu", + (unsigned long long) initrd_timestamp.realtime, + (unsigned long long) initrd_timestamp.monotonic); + if (rd_timestamp) { + setenv("RD_TIMESTAMP", rd_timestamp, 1); + free(rd_timestamp); + } + } + arg_running_as = MANAGER_SYSTEM; log_set_target(detect_container(NULL) > 0 ? LOG_TARGET_JOURNAL : LOG_TARGET_JOURNAL_OR_KMSG); @@ -1437,7 +1450,8 @@ int main(int argc, char *argv[]) { /* Parse the data passed to us. We leave this * variables set, but the manager later on will not * pass them on to our children. */ - parse_initrd_timestamp(&initrd_timestamp); + if(!in_initrd()) + parse_initrd_timestamp(&initrd_timestamp); /* Unset some environment variables passed in from the * kernel that don't really make sense for us. */ |