The "removing systemd" experiment

Round 2: Install the Magic Package and Then Remove systemd

To restore a working system right after installation, I'll introduce the no-systemd.deb package (Listing 2). Now this looks a lot better! Only systemd and a few other packages are removed – not the entire desktop system – because an empty package (no-systemd contains no files) is installed first, which fakes a systemd installation as the dependency for other packages (Listing 3).

Listing 2

Setting Up no-systemd


Listing 3

Building the no-systemd.deb Magic Package


libpam-systemd is clearly a dependency for systemd; rfkill has a hard-coded dependency on a package named systemd, which is probably a mistake and unnecessary. Rebuilding the package without this dependency should help.

After removing systemd and libpam-systemd followed by a reboot, I still can't get past the point where the graphical subsystem should start up, because the root filesystem stays mounted read-only; therefore, Xorg can't open its logfile at /var/log/Xorg.0.log. Changing the root filesystem's mount mode to rw instead of ro in the bootloader's config is a quick workaround for now. A better fix would be to change the bootup procedure to remount/read-write at some point. Apparently, this is missing in my sysvinit.deb package.

Now I have a working desktop – kind of. After using it awhile, you will realize that some things are dysfunctional, like configuring the network with the graphical NetworkManager GUI.

Round 3: Install SysVinit over systemd and Do a Lot of Post-Configuration

The reason the previous round failed to produce a fully working system is that some desktop components require the session management introduced by systemd-logind, which is located inside the systemd package. After installing the SysVinit packages (which replace /sbin/init by SysVinit's version plus the necessary basic startup scripts), I also need to install the systemd-shim package to start session management and other services automatically around systemd clients. Also, the policykit-1 package needs to be installed, and permissions for services like NetworkManager should be set to yes instead of no or auth_admin*, if the session can't be detected properly, as shown in the excerpt in Listing 4 from /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy.

Listing 4

Setting Permissions


Also, newer versions of systemd require the cgroup mount point; otherwise, systemd-shim won't be able to start systemd-logind, so login sessions won't be reported to services that request information about the logged-in user. This would be a minimal subset of mounts that systemd-logind expects. I put the following commands in my own startup scripts:

mkdir -p -m 0777 /cgroup/cpu
mount -t cgroup cgroup -o cpu /cgroup/cpu
mkdir -m 1777 /cgroup/cpu/user

It Works!

After round 3, the system looks very much like a Knoppix installation, in which the startup system is run through SysVinit, with other systemd components still present to make programs happy that are hard-coded with systemd dependencies (e.g., on systemd-logind and the libsystemd0 library). Still, LXSession pops up a confusing hard-coded message (Figure 1) that is produced if systemd is not listening on D-Bus. The best way I found to circumvent this problem is to remove the erroneous error message from the lxsession source and recompile the package.

Figure 1: Systemd is not listening on D-Bus.

Also, the rfkill tool has a confusing dependency on a package named (!) "systemd" instead of just the systemd provision in my no-systemd package. Downgrading rfkill or recompiling without the hard-coded dependency fixes this issue.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Systemd GUIs

    Graphical frontends make it easier to take full advantage of the Systemd process manager. We examine some leading tools for the KDE environment.

  • Systemd Graphical Tools

    Systemd has won the race, as indicated by the several tools that already offer a service just a mouse click away. We look at six of these tools.

  • Devuan 1.0.0

    In 2014, the Debian project decided to replace the old init system with systemd, but a small group of developers resisted, forking Debian to start the systemd-free Devuan. We decided to take a look at Devuan 1.0.0, the first stable release.

  • The sys admin's daily grind: systemd-analyze

    In sys admin columnist Charly's case, no fumbled system startup goes undetected. This was already the case with SysVinit and has not changed with systemd. In terms of the his analysis tools, no stopwatch goes unturned.

  • Systemd Units

    Systemd units use files to control resources that Systemd manages.

comments powered by Disqus