1
0
Fork 0
mirror of https://github.com/pygos/init.git synced 2024-11-16 00:37:10 +01:00
No description
Find a file
David Oberhollenzer 5509e77a1c Release init-0.5
2018-08-16 22:52:27 +02:00
cmd Clean up service list short listing format 2018-07-23 09:28:02 +02:00
docs Mention environment variables 2018-04-14 22:47:15 +02:00
etc Read environment for init from config file 2018-04-12 12:05:15 +02:00
initd Make mksock() more generic, move to util library 2018-06-09 15:32:29 +02:00
lib Add output truncation flag 2018-07-22 17:57:20 +02:00
m4 Add more compiler warning flags 2018-04-12 10:29:15 +02:00
netcfg Add optional script for persistent network interface renaming 2018-04-27 11:28:46 +02:00
scripts Add a module auto loading service 2018-07-18 17:56:09 +02:00
services usyslogd: more control over log rotate behaviour, command line processing 2018-08-16 22:48:55 +02:00
syslogd usyslogd: at least create files/sockets relative to prefix path 2018-08-16 22:48:55 +02:00
.gitignore Add nftables service 2018-07-23 20:20:27 +02:00
autogen.sh Initial commit 2018-03-24 17:04:20 +01:00
configure.ac Release init-0.5 2018-08-16 22:52:27 +02:00
LICENSE Add license text 2018-03-24 21:13:26 +01:00
make_a_release.sh Add automated release script from mtd-utils 2018-04-22 13:41:18 +02:00
Makefile.am Cleanup service dependencies 2018-07-18 21:33:25 +02:00
README.md Add basic documentation stub 2018-04-14 21:39:40 +02:00

About

This directory contains the source code for a tiny init devised for the Pygos system.

The main goal of this project is to create a simple framework for:

  • system boot up and initialization
  • service supervision

With the additional aims of having something that:

  • simply works
  • is easy to understand
  • is easy to configure and maintain

The init process is intended to run on top of Linux and makes use of some Linux specific features (e.g. signalfd), but if sufficient interest exists, it should still be possible to make it run on some BSDs or whatever else.

The init system tries to mimic the concept of unit files from systemd as those were considered to be a good design choice.

Those parameterizeable service description files are stored in /usr/share/init by default. Services are enabled by creating a symlink in /etc/init.d. This can be done using the service command line tool.

See docs/services.md for more information on service description files.

See docs/bootup.md for more information on what the init daemon does during system boot.

Right now, the system is in a "basically works" proof of concept stage and needs some more work to become usable.

There are plans for maybe eventually adding support for Linux name spaces, seccomp filters and cgroups as needed in the medium future.

Why

There are already a bunch of similar projects out there that have been considered for use in the Pygos system. The reason for starting a new one was mainly dissatisfaction with the existing ones. Other Projects that have been considered include:

  • systemd

    Contains a lot of good ideas, but it is HUGE. It has tons of dependencies. It implements tons of things that it simply shouldn't. It has a horrid, "modern", python based, hipster build system. It's simply too damn large and complex.

  • SystemV init

    A bad combination of unnecessary complexity where it isn't needed and a complete lack of abstraction where it would be needed. Shell script copy and paste madness. There are reasons people started developing alternatives (other than "hurr-durr-parallel-boots").

  • upstart

    Seems nice overall, but needlessly big and complex for the intended use case in Pygos. Would have needlessly added D-Bus to the system.

  • OpenRC

    Was already integrated into Pygos. Things turned out to be broken. Upstream developers did not accept fixes (after ignoring them for weeks and preferring typo fixes instead). Complaints from other people who tried to contribute fixes were observed on GitHub. Complaints from package maintainers about deteriorating code quality were observed on the official IRC channel. Documentation is non-existent.

  • daemon tools and similar (runnit, s6, minit, ...)

    The sixties are over. And even code from that era is more readable. The source code for those projects should better be tossed out the window and rewritten from scratch. If you are a first semester CS student and you hand something like this in as a homework, the best you might get is a well deserved slap on the back of your head.

  • busybox init

    Nice and simple. Probably the best fit if the rest of your user space is busybox as well.