From: Harald Hoyer Date: Wed, 16 May 2012 12:22:44 +0000 (+0200) Subject: core/main.c: handle the initrd timestamp differently, if in the initrd X-Git-Tag: v183~65 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c3ba62509efe274c2bf6482056044e6fab65fec0;p=systemd 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. --- diff --git a/src/core/main.c b/src/core/main.c index d7143eda..878eaf35 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. */