Live data from Hacker News

Debian committee members vote for systemd as init system

lists.debian.org

31–40 of 152 posts

Re: Debian committee members vote for systemd as init system

#31
post #17

Can anyone give a quick rundown of the different init systems? For the most part it can get confusing for a non day to day system administrator when I am trying to get a program to "run on boot". Between rc.local, init.d, run levels, etc. sometimes it is just frustrating.

Upstart is Ubuntu's event driven alternative to init.d. It's big benefit is that it stands alone, and can mimic init.d for compatibility just fine.

Personally (perhaps being the system I used) I think it's great - very easy to work with, and I've had no stability problems with it whatsoever.

Re: Debian committee members vote for systemd as init system

#32
post #15

Not a surprise, was there a compelling reason for upstart at all?

Upstart was created before systemd. Edit: Upstart was a great sysvinit replacement, at least during those years before systemd appeared.

upstart was always a mediocre to terrible sysv replacement. The fact it couldn't handle such insignificant programs like postfix natively speaks volumes.

Re: Debian committee members vote for systemd as init system

#33
post #24

Not a surprise, was there a compelling reason for upstart at all?

Systemd isn't portable to non-linux. (And while you may not care about debian kfreebsd, some people do)

There are no working ports of upstart to non-linux, and up until 2 months ago no-one was even trying to. It's about as portable as systemd (i.e. with a bunch of work and if you don't mind forking it).

Re: Debian committee members vote for systemd as init system

#34
post #8

For a fun retelling of the events (I think this only works on Firefox): http://aceattorney.sparklin.org/jeu.php?id_proces=57684

That was incredible. How was the dialogue compiled? Was it copied verbatim from mailing list discussions, or was it paraphrased?

Re: Debian committee members vote for systemd as init system

#35
post #22
post #8

For a fun retelling of the events (I think this only works on Firefox): http://aceattorney.sparklin.org/jeu.php?id_proces=57684

It works perfectly in chrome. I don't know what's with the obnoxious yellow banner - I thought firefox people were against the "best viewed in internet explorer" attitude.

Works fine in IE 11 as well.

Re: Debian committee members vote for systemd as init system

#36
post #17

Can anyone give a quick rundown of the different init systems? For the most part it can get confusing for a non day to day system administrator when I am trying to get a program to "run on boot". Between rc.local, init.d, run levels, etc. sometimes it is just frustrating.

I am just going to go over Upstart and systemd

systemd: dependency based init system. A service is written by declaring which services need to be started for that service to start. It is also a syslog like program (journal) and a cgroups writer (cgroups are a cointainment feature of the linux kernel). It also features socket activated and bus activated services, where the init system watches for a socket or dbus bus to be accessed, and then starts the job then. It is criticized for being too invasive and too tied to linux kernel features (like cgroups).

Upstart: an event based init system. Jobs start and stop on a certain event (or events). These events can be socket events, dbus events, udev events (network-device-added, removed, changed, etc.) or job events ($JOB-started, stopped, starting, stopping). There are also other events, but those are the basics. It suffers in two areas: socket activation is limited to one tcp or unix socket (no UDP, no tcp6, no DGRAM), and it unreliably stops services. The former is a simple problem that would not be too much work to fix (the developers of Upstart did not want to use socket activation, so they decided to stop efforts on developing it), and the latter is a fundamental code problem. Upstart uses ptrace to track daemons, while systemd uses pidfiles and cgroups. Because Upstart does not use cgroups, it can not kill all of a services children (just that service), and so zombie services might be problematic.

Re: Debian committee members vote for systemd as init system

#37
post #31
post #17

Can anyone give a quick rundown of the different init systems? For the most part it can get confusing for a non day to day system administrator when I am trying to get a program to "run on boot". Between rc.local, init.d, run levels, etc. sometimes it is just frustrating.

Upstart is Ubuntu's event driven alternative to init.d. It's big benefit is that it stands alone, and can mimic init.d for compatibility just fine. Personally (perhaps being the system I used) I think it's great - very easy to work with, and I've had no stability problems with it whatsoever.

systemd is also sysv and LSB init script compatible.

Re: Debian committee members vote for systemd as init system

#40
post #17

Can anyone give a quick rundown of the different init systems? For the most part it can get confusing for a non day to day system administrator when I am trying to get a program to "run on boot". Between rc.local, init.d, run levels, etc. sometimes it is just frustrating.

I know less about the new Linux ones, but a brief summary of the two big "traditional" ones:

Linux systems traditionally use "SysV Init", the init system from AT&T UNIX System V (1983). It's the one that has: 1) run levels; and 2) a pile of shell scripts in /etc/init.d that run on run-level changes. Run levels probably make most sense if you think of Ye Olde Mainframe booting: first it initializes core services, then it enters multi-user mode, then it initializes network services, then (optionally) it enters full application mode. These are supposed to be discrete, semantically meaningful boot levels that you could purposely initiate: boot to runlevel 1, boot to runlevel 2, drop back to runlevel 1. Dependencies are handled by a mixture of those runlevels, and scripts that are run in alphabetical order within run levels. That ordering (unlike runlevels) is not supposed to be meaningful to the sysop, but just necessity-based: some stuff depends on other services already being started, even if conceptually you want them all "at once". The convention is to prefix startup-script filenames with numbers that effectively serve as priorities within a runlevel.

BSD systems traditionally use their own "BSD init". There are no runlevels, though there is still a separate "single-user mode" for maintenance. In classic BSD startup was just one very large shell script in /etc/rc. In later versions it was augmented by an /etc/rc.local script that allowed local modifications to be made without mucking with the main script. Modern BSDs (starting with NetBSD, later adopted by the others) modularized it, with an /etc/rc.d directory (base system) and /usr/local/etc/rc.d/ directory (ports). This differs from SysV init in that it still has no run levels, and rather than explicit ordering via filename sorting, has dependency-resolution ordering via semantic comments at the top of each script that are parsed and resolved by rcorder(8) (http://www.freebsd.org/cgi/man.cgi?query=rcorder&sektion=8). Afaik this system, originating in NetBSD, was the first dependency-based startup system on a free Unix (I believe commercial Unixes like Solaris also moved to dependency-based init in the 2000s).

Many Linux vendors have decided that SysV Init is not such a nice system nowadays, because it involves maintaining fairly complex scripts with edge cases that have to be handled in every script through error-prone boilerplate, and an explicit global startup ordering: all programs that can be installed on Debian and need startup must be assigned an integer that fully specifies their position in the startup sequence relative to all other programs that might also be installed. Runlevels as a mechanism also seem pretty unhelpful for most uses people have nowadays. Instead there is a hope for some kind of dependency-based startup. But the big disagreement is over what to replace it with. It is also complicated by other changes that are happening in parallel and which are caught up in it. For example, Linux's 'cgroups' resource-control mechanism has long been in the kernel, but not widely used by userspace tools, and there are moves to sort out this situation by essentially letting the init system also own resource assignments, which would more tightly couple those components. This is probably where the big philosophical differences come in.

Post reply on HN