![]() To date, the Guix System is dependent on unstable git repository development shared with Guix but enables users or organizations to set up stable release channels themselves via the channel-feature. GNU Shepherd was originally designed to work with GNU Hurd, and was later adopted by Guix System. Its services and configuration are stored uniformly as object-oriented Scheme code, and while a core set of services are provided with the basic Guix System, arbitrary new services can be flexibly declared, and through Guile's object system, GOOPS, existing services can be redefined at the user's discretion by asking the Shepherd to dynamically rewrite services in specified ways on instantiation. It is intended to be highly programmable by the system administrator using Guile, but it can also be used to manage per-user profiles of unprivileged daemons and services. A system governed via the Shepherd daemon can represent its user space as a directed acyclic graph, with the "system-service," which is responsible for early phases of boot and init, as its root, and all subsequently initialized services as extensions to system-service functionality, either directly or transitively over other services. Shepherd also provides virtual services which allow dynamic dispatch over a class of related service objects, such as all those which instantiate a mail transfer agent (MTA) for the system. ![]() a service which extends two other services, requiring only one to be present, but readily extending the second one if it is later instantiated without the need for any further reconfiguration or setup. This expresses the instantiation-based dependency relationships found in many modern init systems, making the system modular, but also allows services to interact variadically with other services in arbitrary ways, e.g. ![]() Central to the Shepherd model of user space initialization is the concept of the extension, a form of composability whereby services are designed to be layered onto other services, augmenting them with more elaborate or specialised behaviours as desired. In contrast to systemd, a userspace shepherd process runs as the user. It supplies user-space functionality asynchronously as services, which under Shepherd are generic functions and object data types which it uses to extend the base operating system in a defined way. ![]() The Guix System uses the GNU Daemon Shepherd, formerly known as "dmd" ("Daemon managing Daemons"), as its init system, which is developed in tandem with Guix and is written and configurable in Guile.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |