This might be adequate for simple servers, but not for desktop and mobile systems.Users roam among different networks, attach and remove all manner of devices like keyboards and headsets, audio interfaces, storage media, movies and music — thanks to Bluetooth and USB we finally have universal plug-in ports, and hotplugging devices is routine instead of an exotic adventure.
Then came two new init systems for Linux: Ubuntu's Upstart, first released in 2006, and systemd, born in 2009.
The systemd code was written primarily by Leonard Poettering.
Overhauling key subsystems tends to give users the jitters, because it means being forced to learn new ways to administer our systems and changing our workflow, and the prospects of essential services suffering growing pains and being less-than-reliable aren't happy-making.
So what's with this new systemd thingy, and what benefits does it bring to us mere Linux users? At boot the kernel launches PID 1, the very first process to run at startup.
And making fun of Windows and Mac refugees who thought that was weird and dumb? But Linux was still a baby, so we had to deal with it.
Then there are network services that could be on-demand like file shares, printers, VNC, SSH, and so on.
Clients of Unix daemons don't need to know if the daemons they depend on are actually running — all they need is the correct Unix domain sockets to be available. They are inter-process communication sockets (IPC), and they are how processes on the local system talk to each other.
You can see these with $ netstat -a --protocol=unix Active UNIX domain sockets (only servers) Proto Ref Cnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 4836 /var/run/dbus/system_bus_socket unix 9 [ ] DGRAM 4584 /dev/log unix 3 [ ] STREAM CONNECTED 489456 /tmp/orbit-carla/linc- aaa-0-476044c676da9 unix 3 [ ] STREAM CONNECTED 489455 unix 3 [ ] STREAM CONNECTED 489452 /tmp/orbit-carla/ linc-8ba-0-45fe9270a46b2 [...] As you can see the sockets have inodes, following the tradition of "everything in Unix is a file." So you can perform various operations on them with standard Linux file utilities, which is a fun topic for another day.
So all sockets for all daemons can be created in one step, and then all daemons in a second step.
Any client requests for daemons that are not yet running will be cached in the socket buffer, and then filled when the daemons are up and running.
hen you first start the program you'll be presented with this window: Here you can choose your nickname, a second choice (in case it's already taken), username and realname.