Why is upstart a childprocess of systemd

systemdsysvinitupstart

? pstree -h

systemd─┬─ModemManager─┬─{gdbus}
        │              └─{gmain}
        ├─NetworkManager─┬─dhclient
        │                ├─dnsmasq
        │                ├─{gdbus}
        │                └─{gmain}
        ├─accounts-daemon─┬─{gdbus}
        │                 └─{gmain}
        ├─acpid
        ├─agetty
        ├─avahi-daemon───avahi-daemon
        ├─cron
        ├─cups-browsed─┬─{gdbus}
        │              └─{gmain}
        ├─dbus-daemon
        ├─gnome-keyring-d─┬─{gdbus}
        │                 ├─{gmain}
        │                 └─{timer}
        ├─irqbalance
        ├─lightdm─┬─Xorg
        │         ├─lightdm─┬─upstart─┬─Thunar─┬─chrome─┬─2*[cat]
        │         │         │         │        │        ├─chrome─┬─chrome─┬─chr+
        │         │         │         │        │        │        │        ├─chr+
        │         │         │         │  

I read, that there are several process management systems

  • systemVinit, the traditional UNIX one
  • upstart, the one, which came with Ubuntu
  • systemd, another new one, which is controversial for its
    complexity

On PCs using systemVinit the process of all process, the very first one at the top is called init,
on PCs using systemd the first one is called systemd

Now, when I run

pstree

I noticed that systemd, as expected for a systemd process management system, is the first process, but what made me confused is, that upstart is a childprocess of systemd (systemd–>lightdm–>lightdm–>upstart).

Why is it so, why is a a process management system a childprocess of another process management system? (at least this is what I think it is)

Best Answer

This has to do with retrocompatibility and, with the scenario where migrating from upstart to systemd could impose a catastrophic failure at Ubuntu 15.04. Quoting the announcement of systemd comming to Ubuntu:

Contingency plan: If after some weeks we find that there are too many or too big regressions, we can revert to upstart by default with two simple uploads (ubuntu-standard and init).

The other detail here is that, Ubuntu did not "fully migrated" to systemd prior to 16.10, having the graphical login to still be managed by upstart not systemd(even with this, being the init manager of choice). Announcement here:

As discussed at UDS 1 we are moving away from using upstart to start graphical desktop sessions, towards systemd (and D-Bus activations in some cases where it's appropriate). Two weeks ago Sebastien Bacher, Iain Lane, Ted Gould, and me had three-day sprint where we converted most services of the Ubuntu session, and before/after I was working on the necessary infrastructure in systemd and upstart, and converted/checked most other flavors. This is now ready to land and get wider testing.

Ubuntu was/is migrating to systemd on a very safe way, first migrating ConsoleKit related stuff back in 2013 to systemd-logind, then migrating the init itself, and the remaining units, to avoid problems.

tl,dr: In your specific case, upstart could be still the one managing graphical login related stuff(lightdm)...

Related Question