URI: 
       index.md - sites - public wiki contents of suckless.org
  HTML git clone git://git.suckless.org/sites
   DIR Log
   DIR Files
   DIR Refs
       ---
       index.md (20465B)
       ---
            1 systemd is the best example of Suck.
            2 ====================================
            3 There is a menace which is spreading like a disease throughout the Linux
            4 world, it is called [systemd](https://github.com/systemd/systemd).
            5 
            6 Short Historical Summary
            7 ------------------------
            8 systemd is a replacement for the standard init command, which normally runs
            9 as process id 1 on initialisation of a UNIX bootup. There has been a movement,
           10 especially around the [Red Hat](http://www.redhat.com)-related developers to
           11 copy [Microsoft Windows](http://www.microsoft.com/) and all of its features.
           12 Now this interpretation of how a userspace should look like is implemented and
           13 was introduced with big criticism and change in the Open Source world into
           14 many distributions. The [debacle in Debian](https://wiki.debian.org/Debate/initsystem/systemd)
           15 is the best example in how to not introduce such a changing technology into a
           16 distribution.
           17 
           18 What PID 1 Should Do
           19 ------------------------
           20 When your system boots up the kernel is executing a given binary in its known
           21 namespace. To
           22 see what are the only tasks the application running as pid 1 has to do, see
           23 [sinit](//git.suckless.org/sinit/). Just wait for child process to reap
           24 and run some other init scripts.
           25 
           26 The systemd Chronicles
           27 ----------------------
           28 Now follows a collection of links related to all the features systemd tries to
           29 enforce upon you as a Linux user, because »they know better«.
           30 
           31 Please add all the links you can find! Generations after us have to know how
           32 to not do software and system development! See the
           33 [wiki instructions](//suckless.org/wiki) on how to contribute to this
           34 page.
           35 
           36 The Never Ending Part
           37 ---------------------
           38 * Your link here.
           39 
           40 * [The SystemD Platform: an Unbiased Critique](http://soggywizards.com/tips/code/os/initialization/systemd/good-bad-ugly/)
           41 
           42 Part 4
           43 ------
           44 * [systemd breaks POSIX IPC](https://github.com/systemd/systemd/issues/2039)
           45 * [systemd-logind deletes your message queues](https://knzl.de/systemd-removeipc)
           46 * [systemd breaks the mouse(again)](https://github.com/systemd/systemd/issues/8579)
           47 
           48 Part 3
           49 ------
           50 [NEWS revision 76153ad45f09b6ae45464f2e03d3afefbb4b2afe](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS)
           51 
           52 * [systemd does {,U}EFI bootload](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L1306)
           53   * Should systemd's PID be changed from 1 to a negative, or imaginary,
           54     number? It now exists before the kernel itself, during a bootup. 
           55     See also [systemd-boot](https://wiki.archlinux.org/index.php/systemd-boot).
           56 * [systemd replaces sudo and su](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L1233)
           57   * Please note the command name, machinectl and 
           58     its [features at the manpage](https://www.freedesktop.org/software/systemd/man/machinectl.html). 
           59     In exchange for a program which contains sudo, su and kill 
           60     (and does some functions which historically ssh/telnet did), bare metal
           61     users have a tons of bloat and a lot of things to disable, if even 
           62     possible, useful only to people which deal with virtual machines.
           63 * [systemd-journald can do log-rotate](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L1073)
           64   * Being journal files binaries written with easily corruptable
           65     transactions, does this feature make the log unreadable at times?
           66 * [Transient units](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L708)
           67   * Temporary services, because we love to reinvent procps, forking, 
           68     nohup and lsof.
           69 * [systemd does socat/netcat](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L546)
           70 * [systemd-logind does sighup and nohup](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L274)
           71   * Logout is equivalent to shutting off the machine, so you will NOT 
           72     have any running program after logout, unless you inform your init system.
           73 * [systemd-nspawn can patch at will any kind of file in a container](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L391)
           74   * Paired with transient units and user escalation performable remotely,
           75     this can mean that if you house VPS instances somewhere, your 
           76     hosting provider has means and tools to spy, modify, delete any 
           77     kind of content you store there. Encrypt everything, read your TOS.
           78 * [systemd does UNIX nice](https://github.com/systemd/systemd/blob/76153ad45f09b6ae45464f2e03d3afefbb4b2afe/NEWS#L425)
           79 
           80 from 2016-08-06
           81 
           82 Part 2
           83 ------
           84 * [systemd locks down /etc and makes it read-only](http://bugzilla.redhat.com/show_bug.cgi?id=1350450)
           85 * [systemd now does your DNS](https://lists.dns-oarc.net/pipermail/dns-operations/2016-June/014964.html)
           86 * [systemd hates when you adapt your system (graphics on other than vt1)](https://bugzilla.redhat.com/show_bug.cgi?id=817186)
           87 
           88 Part 1
           89 ------
           90 (If you are adding more parts, link to the right revision and not just the
           91 plain file.)
           92 
           93 [NEWS revision 3f80af378331748e1373d4c189a8e20cddb735c9](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c)
           94 
           95 * [logind should wait](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n2089)
           96   * systemd was introduced to decrease the boot up time. Now that they
           97     do not understand all implications and dependencies, let us add some
           98     artifical time we found out might work for the developers
           99     laptops. More on this small world hypothesis of the systemd
          100     developers below.
          101 * [screen brightness](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1852)
          102   * Screen brightness is something that should crash your boot up when
          103     it is not working.
          104 * [hostnamed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1763)
          105   * There really should be a process running which exposes the content
          106     of a file. Complexity is without cost.
          107 * [seqnum removed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1742)
          108   * The sequential ordering of requests was one reason why udevd was
          109     introduced. Now remove it, because the developer laptops do not have
          110     a problem anymore.
          111 * [floppy group removed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1703)
          112   * Because we know what is right to know about groups. This is just one
          113     example of the mass of group name dependencies systemd is adding.
          114     See sinit for how to not need such dependencies.
          115 * [sysv removed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1651)
          116   * We have won. Now remove all remains of our defeated enemy as
          117     fast as we can. As said in the beginning of the systemd crusade
          118     against the UNIX infidels: »You can patch it out.« It is no more
          119     there.
          120 * [abnormal processes](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1627)
          121   * Now systemd is getting deep into philosophy. What is »abnormal«?
          122     Well, let us just define it. There is no technical merit to accept
          123     this.
          124 * [systemd-resolved](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1578)
          125   * Every configuration file needs its own process and service.
          126   * Symlinks are a good way to solve all world problems.
          127 * [new is better](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1571)
          128   * The systemd development process is flawed by always assuming »new is
          129     best«.
          130   * Network configuration should be in my init process.
          131 * [remote pid 1](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1500)
          132   * »Everything will end up having a remote API.« I wonder when systemd
          133     will understand MIME and e-mail.
          134 * [init does man](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1465)
          135   * My init process is too big, it needs its own file hierarchy and an
          136     abstraction layer to find paths.
          137 * [factory reset](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1401)
          138   * Welcome to the Windows OEM world: Factory reset for Linux! Of course
          139     it is in your init process.
          140 * [system runs runs](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1397)
          141   * Exactly. The predisposition of being able to call such a complex
          142     command does not imply the running system. Let's check it again.
          143 * [clean up directories](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1306)
          144   * There is another monster in systemd, it handles tmp files.
          145     There are just some cases before it was introduced to have to clean up
          146     a directory in the file tree. Now there are hundreds. And easily
          147     another case can be added! Of course your init process does that.
          148 * [firstboot](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1259)
          149   * »Interactive queries« pulls in many dependencies. Let us have it in
          150     every installation out there on by default. Of course in pid 1.
          151 * [journald](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1234)
          152   * This is a bit longer. Because the systemd developers were not able
          153     to contribute to any syslog daemon they had to write their own with
          154     some binary format so the principle of being able to read your log
          155     files after a critical crash was violated. To be nice invaders the old
          156     systems were allowed to order the system log through the specified
          157     mechanism. Now that they implemented our specifics, turn off the
          158     neutral syslog delivery. You will see this pattern of »now that we
          159     conquered your culture, obey« more often in systemd.
          160 * [systemd-terminal](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1224)
          161   * Why does the kernel have tty handling? So in serious situations you
          162     will be able to debug it over the last standing PIN on your
          163     motherboard. Let us remove this, run it in pid 1.
          164 * [networkd is your oppressor](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1216)
          165   * Premature optimisation of IP configurations always leads to misery.
          166 * [We do not understand broadcast](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1211)
          167   * With the growth of systemd in complexity and the new depending
          168     software the implications of the added hacks are increasing.
          169 * [Timezone hack](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1193)
          170   * systemd is too complex for such a simple transaction with the
          171     kernel. Do not inform the kernel and add another assumption which is
          172     only documented in the changelog.
          173 * [the web is a session](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1168) 
          174   * For the future generations: In 2015 nearly everyone was trying to
          175     connect all you do to the web. In the UNIX model it is just a client
          176     which should be simple and integrate into the system. systemd is
          177     doing it the other way around and does integrate itself into the
          178     web.
          179   * The discussion about why my pid 1 is handling sessions is discussed
          180     in other points.
          181 * [pid 1 does DNS](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1128)
          182   * This change adds another open door to your pid 1, adds caches, new
          183     APIs and of course it will never fail and break systemd on your
          184     initial boot.
          185   * They are planning (2015-07) to add multicast DNS to your pid 1.
          186     Multicast DNS implies an enforced timeout to know if someone answered.
          187     systemd was about speed, you know. Look at avahi in how to ruin this
          188     concept for Linux. It has the same developer flaws as systemd: Too
          189     many forced dependencies, you need to implement its API and when it is
          190     taking over you are doomed.
          191 * [policykit](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1113)
          192   * There is a bus inside your pid 1 and if it crashes you are flawed.
          193     Exactly, there are a thousand more cases of errors that could occur
          194     and make your system unbootable. Instead of using a separation of
          195     functions, add everything to a big bus.
          196   * Of course when you are using a misdesign like dbus you need to add
          197     interactions over the bus to add features you forgot in the initial
          198     design. Now let us have our pid 1 have to query for the permission
          199     to boot.
          200   * »Interactive authentication« will produce you a graphical input form
          201     on your serial line.
          202 * [Calendar](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n1044)
          203   * As you see, your pid 1 should handle your calendars and cron jobs
          204     too.
          205 * [utmp should go](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n994)
          206   * We have taken over your culture, now die! Another flaw in the
          207     systemd small world theory: When something is getting optional it
          208     will be removed.
          209 * [password agent](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n964)
          210   * »Interactive authentication«
          211 * [udev timeout](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n944)
          212   * Instead of patching the kernel to add a simple solution, add a hack.
          213     Only the systemd developers tell you when it is allowed to wait or
          214     sleep in userspace. The rest obey our orders!
          215 * [systemd-pm](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n924)
          216   * Power management is required on boot up.
          217 * [user systemd units](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n898)
          218   * What can go wrong when you are adding more paths that are read,
          219     parsed and executed?
          220 * [hack the reload](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n888)
          221   * First systemd was adding »better features« like socket activation to
          222     make developers use their mechanism for daemons. They hit the
          223     proprietary wall of disgust with this changelog entry. systemd is
          224     too big and you will lose your face if you change the misdesign. Now
          225     add another hack because we can do it. Big empires fall too and
          226     sadly have too many casualties when they are falling. :(
          227 * [X11 in systemd](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n783)
          228   * Of course graphics were missing in pid 1.
          229 * [complexity is purity](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n738)
          230   * You will of course need PPPoE when you do parallel bootup. Every
          231     1000 lines of code add one critical bug you never fix.
          232 * [gateway hostname](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n700)
          233   * We rule the world so we are above IETF and IANA. Now add our own
          234     hostnames that of course won't add another assumption.
          235 * [no editor in systemd](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n689)
          236   * This one is a setback. Why is there no default editor in systemd in
          237     case of factory reset?
          238 * [8x ctrl + alt + del](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n610)
          239   * In systemd you press eight times Ctrl+Alt+Del to trigger reboot.
          240 * [privacy policy](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n594)
          241   * For the next generations: In 2015 privacy was a big issue because of
          242     the mentioned hard-wiring between the web and software.
          243     As you can see, every commit which adds some preparation for a 
          244     feature adds another intepretation of what will be a major
          245     assumption in a next release. If you
          246     handle privacy you will have some features depending on that user
          247     decision and of course the factory reset default value.
          248   * Why didn't they use XML for /etc/os-release?
          249 * [fds cache](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n502)
          250   * We have talked about misdesign, too-big-to-fail and world
          251     domination. This is the next example of a hack that is prone to
          252     fail.
          253 * [umount -rf](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n380)
          254   * This is umount for dummies. Just do one thing – right.
          255 * [libudev will be orphaned](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n291)
          256   * With the advent of udevd there was a compatibility to its complexity
          257     called libudev. X11 uses it to query the changing devices. And of
          258     course make it a non-independent API in systemd. Why? You can guess
          259     why: Defeating the infidels.
          260 * [fsck indirections](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n281)
          261   * When there was syslog fsck did output errors to your display as
          262     easy as possible. Now add a hack to have this possible again.
          263 * [systemd-importd](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n236)
          264   * This is pure evil. Your pid 1 is now able to import complete system
          265     images over the network and show them to you as your running system.
          266     There is nothing that can go wrong.
          267 * [CGI for systemd](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n166)
          268   * The web thing has been discussed before.
          269 * [kdbus](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n57)
          270   * As of 2015-07-31 kdbus is not in the mainline Linux kernel. systemd
          271     made kdbus non-optional in its release. The kernel maintainers are
          272     still debating the kdbus ABI or possible alternatives, but if
          273     systemd depends on the current state of kdbus the kernel maintainers
          274     are faced with the hard decision to either break Fedora userspace or
          275     accept the current kdbus proposal into the kernel with its security
          276     and maintainability issues. This is the best example how
          277     systemd is forcing you into decisions. Of course if you are  a mindless
          278     bureaucrat it helps you to keep your job.
          279 * [readahead removed](http://cgit.freedesktop.org/systemd/systemd/tree/NEWS?id=2d1ca11270e66777c90a449096203afebc37ec9c#n950)
          280   * The first thing swallowed in on Fedora was readahead. Now that (of
          281     course!) everyone is using an SSD (at least the developers of
          282     systemd do that) it can be removed. Why was it there? Is it possible
          283     to make it a separate tool again?  There's no time for that, we are implementing
          284     new features.
          285 
          286 from 2015-07-31
          287 
          288 Practical systemd
          289 -----------------
          290 
          291 Here is what happens on a stock Arch Linux system, powered by systemd,
          292 when a non-root user tries to restart the system:
          293 
          294     $ reboot
          295     Failed to set wall message, ignoring: The name org.freedesktop.PolicyKit1 was not provided by any .service files
          296     Failed to reboot system via logind: The name org.freedesktop.PolicyKit1 was not provided by any .service files
          297     Failed to talk to init daemon.
          298 
          299 In contrast, here is the equivalent error message on a system powered by
          300 runit:
          301 
          302     $ reboot
          303     init: fatal: unable to create /etc/runit/stopit: access denied
          304 
          305 And on the oldest and best, Slackware:
          306 
          307     $ reboot
          308     reboot: must be superuser.
          309 
          310 systemd is driving "just google the problem" attitude, because how the hell are
          311 you expected to troubleshoot this kind of error otherwise?
          312 
          313 Further Reading
          314 ---------------
          315 * [Without systemd](http://without-systemd.org/wiki/index.php/Main_Page)
          316 * [Arguments Against systemd](http://without-systemd.org/wiki/index.php/Arguments_against_systemd)
          317