uselessd 8

uselessd is a systemd-208 fork optimized for less resource usage, a leaner DBUS ABI, fewer dependencies and BSD/Linux cross-platform compatibility. It reduces featuritis by constraining unit types and concentrating on system initialization and process supervision. In particular udev gets extracted to support alternative handlers, binary journald logging removed to allow established syslog services for early boot sequences. Some auxiliary reimplementations like systemd-fsck are transferred back to the original system tools.

Tags c init init-system systemd process-manager dbus boot pid0 linux bsd administrator
License GNU LGPL
State development

Recent Releases

816 Nov 2014 18:10 major feature: A new feature has been introduced - hard job failures for uselessd conditions. By default, if a Condition*= directive in a systemd or uselessd service is false, the job is skipped. On the other hand, if the file /run/systemd/condition-job-failure exists with a text string of Y, T, yes or true, all false conditions will lead to a job failure being logged for units on a global level. This is similar to systemd-git's (presumably will be in 218) Assert*= options, except implemented as a global and volatile flag in the /run directory. The default tmpfiles.d configuration creates the file with a value of N. The default tmpfiles.d configuration now respects the legacy /forcefsck, /fastboot and /forcequotacheck files and will not interfere with them existing. systemd-sleep has been replaced with a shell script called uselessd-sleep. Much simpler, it is currently limited - it only executes the /usr/lib/systemd/system-sleep directory once and expects shell scripts with an *.sh extension only. In addition, it requires an explicitly configured /etc/systemd/sleep.conf file. As a result, we provide a stock one. Relevant units have been updated to use uselessd-sleep. systemd-shutdown and systemd-shutdownd will no longer be built if --disable-initd is passed to the configure script. A new configure switch has been introduced: --disable-update-utmp, for stripping out the systemd-update-utmp tool from the build. main-no-init has been significantly simplified. In keeping with its purpose as a stage 2 process manager/supervisor, it no longer handles things irrelevant to it: /proc/cmdline parsing, crash shells, crash VTs, watchdog timers, switch-root handling, daemon reexec/keexec/shutdown/reboot/halt/poweroff. In addition, it no longer dumps core by default and the --user option has been removed, due to main-no-init's intended usage being as a global system instance. tmpfiles updates, bugfixing, refactoring, manager signal handler update, new test cases.
707 Nov 2014 15:50 minor feature: A new program has been introduced - uselessd-cgls, which is a lightweight alternative to systemd-cgls written in Bourne shell. It can be configured out of the build with --disable-cgls and comes with a manpage. Two other new configure switches have been introduced: --disable-remount-fs and --disable-sleep, to, respectively strip out the systemd-remount-fs tool for rescanning /etc/fstab, and the systemd-sleep tool for controlling sleep mode from sysfs plus applying user configuration (as well as all respective units and manpages). A wide variety of bugfixes.
629 Oct 2014 14:56 minor feature: Three new configure options have been added: --enable-mudflap for building with GCC Mudflap compiler instrumentation on compilers that support it. --disable-plymouth for turning off Plymouth event integration in units and tty-ask-password-agent. --disable-password-agents to strip the systemd-ask-password, systemd-reply-password and systemd-tty-ask-password-agent tools out of the build. Note that the path units will still be shipped if HAVE_SYSV_COMPAT evaluates to true. The KillMode=mixed unit option for sending SIGTERM to the main process of the control group and then a SIGKILL to all the remaining ones in the same group, has been backported. The exact kill signals are configurable, see man 5 systemd.kill for details. systemctl has gained an --avoid-bus option which will head straight for the /run/systemd/private IPC socket and not do any system bus checks, where such a condition is allowed. This is a small preliminary step for an intended future overhaul of the IPC system. Some dead code has been removed, shutdownd will no longer run an unmount in containers (instead relying on the kernel's namespace destructors), main-no-init no longer checks for Plymouth running.
522 Oct 2014 21:32 major feature: Preliminary experimental support for running a system-wide instance of uselessd without being PID1 (init) has been introduced. See for details. Don't allow enabling of masked units. More vigorous overflow checking in strv_push().
407 Oct 2014 03:16 bugfix: systemd-analyze, -activate, -cgtop and -delta can now be configured out of the build. systemd-initctl is now only installed when the HAVE_SYSV_COMPAT conditional evaluates to true. The infamous /proc/cmdline "debug" argument fiasco has been addressed by renaming it to "systemd.debug", so that it uses an exclusive namespace. Currently, upstream systemd resolves the issue by keeping the generic term "debug", but simply redirecting output to journald as soon as it is available. As we do not have it, we implement this. Various bugfixes from systemd-stable have been backported, like and no longer having a RefuseManualStart option.
301 Oct 2014 03:39 bugfix: The systemd-machine-id-setup tool is now entirely standalone and not also a routine called by PID1. It is governed by a oneshot unit, and it can be optionally disabled from the build. Two new tools have been introduced: uselessd-hostname-setup uselessd-loopback-setup These are once again decoupled from PID1 logic and refactored into their own tools wrapped around by getopt loops, and governed by oneshot units. They, too, can be disabled from the build, and come with brief manpages. You may need to enable their services through systemctl. The test-hostname binary was dropped for being redundant, as a result. The test was manual to begin with. libgcrypt and liblzma have been dropped from the build, due to not actually being used. They formerly belonged as enabling optional extensions to journald behavior. An ordering bug in one of the default units was fixed. A bugfix for systemd-tmpfiles was backported, concerning files inheriting the age of their top-level directories.
229 Sep 2014 03:15 minor feature: * Redundant options from systemd-analyze (set-log-level and dump) have been removed. Use the ones from the uselessd binary instead, or by setting the systemd.log_level kernel parameter. * The internal pager has been removed entirely. Pipes exist for a reason. Use them. Don't burden the software with junk. * A double-free bug has been fixed in the can_sleep() function in sleep-config.c. This means that the test-sleep binary will now pass successfully. * Some memory leaks were patched, thanks to findings obtained from clang-analyzer. * An unused shared file was removed, as well as some vestiges from the old manpages. Unused dropin directories were removed from systemd-delta's array listing. * The flag for disabling static linking has been removed from the build. Nonetheless, a modern GNU/Linux system typically requires shared objects for components such as NSS, gethostname(2) and many other things. We haven't done anything to explicitly enable static builds, we just got rid of the build-time error.