Release of service manager s6-rc 0.5.3.0 and initialization system s6-linux-init 1.0.7

A significant release of the service manager s6-rc 0.5.3.0 has been prepared, intended for managing the launch of initialization scripts and services considering dependencies. The s6-rc toolkit can be used both in initialization systems and for organizing the launch of arbitrary services tied to events reflecting changes in system state. Complete tracking of the dependency tree is provided, along with automatic starting or stopping of services to achieve the specified state. The code is written in C and is distributed under the ISC license.

The service manager s6-rc, which can be seen as an analogue of sysv-rc or OpenRC, includes a set of utilities for starting and stopping long-running processes (daemons) or immediately terminating initialization scripts. During operation, dependencies between components are taken into account, allowing for the parallel launch of non-overlapping scripts and services, and ensuring a consistent order of script execution across different runs. All state changes are managed with respect to dependencies, ensuring that they are not violated (for instance, when starting a service, its necessary dependencies are automatically launched, and when stopping, dependent services are also stopped).

Instead of runlevels, s6-rc offers a more universal concept of bundles, allowing services to be grouped by arbitrary characteristics and tasks. To enhance efficiency, a compiled dependency database is created by the utility s6-rc-compile based on the contents of directories with files for starting/stopping services. The utilities s6-rc-db and s6-rc-update are provided for parsing and manipulating the database. The system supports initialization scripts compatible with sysv-init and can import dependency information from sysv-rc or OpenRC.

The advantages of s6-rc include its compact implementation, containing nothing unnecessary apart from components for solving direct tasks, and consuming minimal resources. Unlike other service managers, s6-rc supports proactive (in offline mode) construction of a dependency graph for an existing set of services, allowing resource-intensive dependency analysis to be performed separately rather than during loading or state changes. Moreover, the system is not monolithic and is divided into a series of distinct and interchangeable modules, each of which, in line with the Unix philosophy, addresses only a specific task.

In combination with the s6 utilities, which monitor process activities (analogous to daemontools and runit), the toolkit allows for simultaneous control over long-running services, such as restarting them in the event of crashes, while ensuring the execution of command sequences in a reproducible manner that is consistent across different launches. It also supports features such as activating a service upon access to a socket (launching a handler when contacting a network port), logging process events (serving as a replacement for syslogd), and controlled provision of additional privileges (similar to sudo).

At the same time, the release of package s6-linux-init 1.0.7.0 is available, offering an implementation of the init process for building ready initialization systems for operating systems based on the Linux kernel, which utilize the s6 and s6-rc utilities for managing services and initialization scripts. Furthermore, s6 and s6-rc are not tied to s6-linux-init and can be used with any other initialization systems if desired.

In addition, the project provides:

  • s6-networking — a set of utilities for creating network services, similar to ucspi.
  • s6-frontend — a wrapper to recreate the functionality of daemontools and runit on top of s6.
  • s6-portable-utils — a set of standard Unix utilities, such as cut, chmod, ls, sort, and grep, optimized for minimal resource consumption and distributed under the ISC license.
  • s6-linux-utils — a set of Linux-bound utilities, such as chroot, freeramdisk, logwatch, mount, and swapon.
  • s6-dns — a set of client libraries and utilities that replace standard DNS utilities from BIND and djbdns.

In the new version of s6-rc, the s6-rc-compile utility has been implemented to read dependency and service set data from directories instead of files. Using directories simplifies the addition of services to the database with dependency information when installing programs via a package manager, as it allows for changes to be made without modifying files. Support for the old file-based format has been retained for compatibility. In the new version of s6-linux-init, the s6-linux-init-maker utility has added an option "-S" for synchronizing data in containers.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster