Mailinglist Archive: opensuse (769 mails)

< Previous Next >
Re: [opensuse] System is booting up. See pam_nologin(8)
On Tue, May 17, 2016 at 12:29 PM, Per Jessen <per@xxxxxxxxxxxx> wrote:
Andrei Borzenkov wrote:

On Tue, May 17, 2016 at 11:09 AM, Per Jessen <per@xxxxxxxxxxxx> wrote:
Andrei Borzenkov wrote:

On Tue, May 17, 2016 at 10:47 AM, Per Jessen <per@xxxxxxxxxxxx>
wrote:

Try at least removing "quiet" from kernel command line, can
you still reproduce it?

I rarely use "quiet", so yes, always reproducable without.


Can you make available full "journalctl -b" after boot with this
problem? Without "quiet" logs should contain at least timing of
services start.

Yep, this is the most recent one:
http://files.jessen.ch/temp78-journal-system-is-booting-up.txt


Well ...

May 17 10:04:20 temp78 systemd[1]: Starting Create Volatile Files and
Directories...
May 17 10:04:20 temp78 systemd[1]: Started Permit User Sessions.
May 17 10:04:20 temp78 systemd[1]: Started Permit User Sessions.
May 17 10:04:20 temp78 systemd[1]: Started Create Volatile Files and
Directories.

So they are started basically at the same time. Whoever wins.

Now something is extremely wrong. "Create Volatile Files and
Directories" should run BEFORE sysinit.target, which means before any
other service including "Permit User Sessions". I am sure you have
some loop in service dependencies. Could you please start once more
with log_level.debug and this time provide full output of "journalctl
-b", not just the lines you think are relevant.

Okay:

http://files.jessen.ch/temp78-journal-with-systemd-loglevel-debug.txt


Well ... that's actually upstream bug and I'm immensely surprised it
was not hit more often.

Here is what happens. Normally systemd is started first in initrd;
before switching root it saves its state (which includes information
about units that are active) on "disk" (tmpfs actually) and reloads
its state after it is started second time from real root.

When systemd is started in initrd, it goes via sequence very close to
real-root initialization, that includes also sysinit.target and
basic.target (standard targets for low level system initialization).
These targets are expected to be stopped before switching root, but in
your case root is switched too fast, so systemd records sysinit.target
and basic.target states as Started. It means that all other services
that normally would wait for basic.target are started immediately,
causing great confusion.

Note that your logs show

Cannot add dependency job for unit initrd-udevadm-cleanup-db.service,
ignoring: Unit initrd-udevadm-cleanup-db.service failed to load: No
such file or directory.

Root switch is ordered after initrd-udevadm-cleanup-db.service, and it
is the *ONLY* service that would add some delay to root switching. It
is possible that some bug was introduced that made this unit
unavailable, thus exposing this race condition.

But adding initrd-udevadm-cleanup-db.service is not real fix, it just
hides fundamental issue.

So it's bugzilla time.
--
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse+owner@xxxxxxxxxxxx

< Previous Next >
Follow Ups