X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fmain.c;h=4da8ecb86453d8336e998f1c400b34dc3ab74f54;hp=e094efeb3c5efb4f9a74587b75cb199a3c75061b;hb=19e65613563dd9c14cf1ce58aa6e151de8fb90c2;hpb=b80f194eea3e2757966118cadf218354b11bf5da;ds=sidebyside diff --git a/src/core/main.c b/src/core/main.c index e094efeb3..4da8ecb86 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1350,8 +1350,15 @@ int main(int argc, char *argv[]) { log_error("Failed to apply local time delta, ignoring: %s", strerror(-r)); else log_info("RTC configured in localtime, applying delta of %i minutes to system time.", min); - } else { - /* Do dummy first-time call to seal the kernel's time warp magic */ + } else if (!in_initrd()) { + /* + * Do dummy first-time call to seal the kernel's time warp magic + * + * Do not call this this from inside the initrd. The initrd might not + * carry /etc/adjtime with LOCAL, but the real system could be set up + * that way. In such case, we need to delay the time-warp or the sealing + * until we reach the real system. + */ hwclock_reset_timezone(); /* Tell the kernel our time zone */