mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-10 01:17:44 +03:00
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.
This commit is contained in:
parent
e148ac5a6c
commit
c3ba62509e
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user