Nächste: , Nach oben: Dienste   [Inhalt][Index]


11.10.1 Basisdienste

Das Modul (gnu services base) stellt Definitionen für Basis-Dienste zur Verfügung, von denen man erwartet, dass das System sie anbietet. Im Folgenden sind die von diesem Modul exportierten Dienste aufgeführt.

Variable: %base-services

Diese Variable enthält eine Liste von Basis-Diensten, die man auf einem System vorzufinden erwartet (siehe Diensttypen und Dienste für weitere Informationen zu Dienstobjekten): ein Anmeldungsdienst (mingetty) auf jeder Konsole (jedem „tty“), syslogd, den Name Service Cache Daemon (nscd) von libc, die udev-Geräteverwaltung und weitere.

Dies ist der Vorgabewert für das services-Feld für die Dienste von operating-system-Deklarationen. Normalerweise werden Sie, wenn Sie ein Betriebssystem anpassen, Dienste an die %base-services-Liste anhängen, wie hier gezeigt:

Variable: special-files-service-type

Dieser Dienst richtet „besondere Dateien“ wie /bin/sh ein; eine Instanz des Dienstes ist Teil der %base-services.

Der mit special-files-service-type-Diensten assoziierte Wert muss eine Liste von zweielementigen Listen sein, deren erstes Element eine „besondere Datei“ und deren zweites Element deren Zielpfad ist. Der Vorgabewert ist:

`(("/bin/sh" ,(file-append bash "/bin/sh"))
  ("/usr/bin/env" ,(file-append coreutils "/bin/env")))

Wenn Sie zum Beispiel auch /bin/bash zu Ihrem System hinzufügen möchten, können Sie den Wert ändern auf:

`(("/bin/sh" ,(file-append bash "/bin/sh"))
  ("/usr/bin/env" ,(file-append coreutils "/bin/env"))
  ("/bin/bash" ,(file-append bash "/bin/bash")))

Da dieser Dienst Teil der %base-services ist, können Sie modify-services benutzen, um die Liste besonderer Dateien abzuändern (siehe modify-services). Die leichte Alternative, um eine besondere Datei hinzuzufügen, ist über die Prozedur extra-special-file (siehe unten).

Prozedur: extra-special-file Datei Ziel

Das Ziel als „besondere Datei“ Datei verwenden.

Beispielsweise können Sie die folgenden Zeilen in das services-Feld Ihrer Betriebssystemdeklaration einfügen für eine symbolische Verknüpfung /usr/bin/env:

(extra-special-file "/usr/bin/env"
                    (file-append coreutils "/bin/env"))

This procedure is meant for /bin/sh, /usr/bin/env and similar targets. In particular, use for targets under /etc might not work as expected if the target is managed by Guix in other ways.

Variable: host-name-service-type

Diensttyp für einen Dienst, der den Rechnernamen (den „Host“-Namen des Rechners) systemweit festlegt. Als Wert muss eine Zeichenkette angegeben werden. Vorgegeben ist, dass dieser Dienst in einem operating-system enthalten ist (siehe essential-services).

Variable: console-font-service-type

Installiert die angegebenen Schriftarten auf den festgelegten TTYs (auf dem Linux-Kernel werden Schriftarten für jede virtuelle Konsole einzeln festgelegt). Als Wert nimmt dieser Dienst eine Liste von Paaren aus TTY und Schriftart. Als Schriftart kann der Name einer vom kbd-Paket zur Verfügung gestellten Schriftart oder ein beliebiges gültiges Argument für setfont dienen. Ein Beispiel:

`(("tty1" . "LatGrkCyr-8x16")
  ("tty2" . ,(file-append
                font-tamzen
                "/share/kbd/consolefonts/TamzenForPowerline10x20.psf"))
  ("tty3" . ,(file-append
                font-terminus
                "/share/consolefonts/ter-132n"))) ; für HiDPI
Variable: hosts-service-type

Der Typ des Dienstes, um Einträge in /etc/hosts festzulegen. Andere Dienste können ihn erweitern, indem sie eine Liste von host-Verbundsobjekten übergeben.

Das folgende Beispiel zeigt, wie man zwei Einträge zu /etc/hosts hinzufügt:

(simple-service 'add-extra-hosts
                hosts-service-type
                (list (host "192.0.2.1" "example.com"
                            '("example.net" "example.org"))
                      (host "2001:db8::1" "example.com"
                            '("example.net" "example.org"))))

Anmerkung: Vorgegeben ist, dass /etc/hosts folgende Einträge enthält:

127.0.0.1 localhost Rechnername
::1       localhost Rechnername

Auf den meisten Installationen will man genau das. Wenn Sie allerdings einen Grund haben, die vorgegebenen Einträge zu ändern, können Sie sie innerhalb von operating-system mit modify-services ändern (siehe modify-services).

Folgendes Beispiel zeigt, wie sich verhindern lässt, dass der eingestellte Rechnername dasselbe wie localhost bedeutet.

(operating-system
  ;; …

  (essential-services
   (modify-services
     (operating-system-default-essential-services this-operating-system)
     (hosts-service-type config => (list
                                     (host "127.0.0.1" "localhost")
                                     (host "::1"       "localhost"))))))
Prozedur: host Adresse kanonischer-Rechnername [Alias-Namen]

Liefert einen neuen Eintrag für einen Rechnernamen für Adresse als kanonischer-Rechnername, wenn Sie wollen mit weiteren Alias-Namen.

Adresse muss eine Zeichenkette sein, die eine gültige IPv4- oder IPv6-Adresse angibt. kanonischer-Rechnername und die Zeichenketten in der Liste Alias-Namen müssen gültige Rechnernamen sein.

Variable: login-service-type

Diensttyp für einen Dienst, der die Benutzeranmeldung auf der Konsole möglich macht. Sein Wert ist ein <login-configuration>-Objekt.

Datentyp: login-configuration

Der Datentyp, der die Konfiguration der Benutzeranmeldung repräsentiert und unter anderem die beim Anmelden angezeigte Mitteilung des Tages („Message of the Day“) festlegt.

motd

Ein dateiartiges Objekt, das die „Message of the Day“ enthält.

allow-empty-passwords? (Vorgabe: #t)

Leere Passwörter standardmäßig zulassen, damit sich neue Anwender anmelden können, direkt nachdem das Benutzerkonto „root“ für den Administrator angelegt wurde.

Variable: mingetty-service-type

Diensttyp, der Mingetty ausführt, eine Implementierung der Anmeldung auf der virtuellen Konsole. Der Wert dieses Dienstes ist ein <mingetty-configuration>-Objekt.

Datentyp: mingetty-configuration

Dieser Datentyp repräsentiert die Konfiguration von Mingetty. Sie legt unter anderem die Konsole (das „tty“) fest, auf der Mingetty laufen soll.

tty

Der Name der Konsole, auf der diese Mingetty-Instanz läuft – z.B. "tty1".

auto-login (Vorgabe: #f)

Steht dieses Feld auf wahr, muss es eine Zeichenkette sein, die den Benutzernamen angibt, als der man vom System automatisch angemeldet wird. Ist es #f, so muss zur Anmeldung ein Benutzername und ein Passwort eingegeben werden.

login-program (Vorgabe: #f)

Dies muss entweder #f sein, dann wird das voreingestellte Anmeldeprogramm benutzt (login aus dem Shadow-Werkzeugsatz) oder der Name des Anmeldeprogramms als G-Ausdruck.

login-pause? (Vorgabe: #f)

Ist es auf #t gesetzt, sorgt es in Verbindung mit auto-login dafür, dass der Benutzer eine Taste drücken muss, ehe eine Login-Shell gestartet wird.

clear-on-logout? (Vorgabe: #t)

When set to #t, the screen will be cleared before showing the login prompt. The field name is bit unfortunate, since it controls clearing also before the initial login, not just after a logout.

delay (Vorgabe: #f)

When set to a number, sleep that many seconds after startup.

print-issue (default: #t)

When set to #t, write out a new line and the content of /etc/issue. Value of 'no-nl can be used to suppress the new line.

print-hostname (default: #t)

When set to #t, print the host name before the login prompt. The host name is printed up to the first dot. Can be set to 'long to print the full host name.

nice (Vorgabe: #f)

When set to a number, change the process priority using nice.

working-directory (default: #f)

When set to a string, change into that directory before calling the login program.

root-directory (default: #f)

When set to a string, use this directory at the process’s root directory.

shepherd-requirement

List of shepherd requirements. Unless you know what you are doing, it is recommended to extend the default list instead of overriding it.

As an example, when using auto-login on a system with elogind, it is necessary to wait on the 'dbus-system service:

(modify-services %base-services
  (mingetty-service-type config =>
                         (mingetty-configuration
                          (inherit config)
                          ;; Automatically log in as "guest".
                          (auto-login "guest")
                          (shepherd-requirement
                           (cons 'dbus-system
                                 (mingetty-configuration-shepherd-requirement
                                  config))))))
mingetty (Vorgabe: mingetty)

Welches Mingetty-Paket benutzt werden soll.

Variable: agetty-service-type

Diensttyp eines Dienstes, der agetty ausführt, was Anmeldungen auf einer virtuellen oder seriellen Konsole implementiert. Der Wert dieses Dienstes ist ein <agetty-configuration>-Objekt.

Datentyp: agetty-configuration

Dieser Datentyp repräsentiert die Konfiguration von agetty. Sie legt unter anderem die Konsole (das „tty“) fest, auf der agetty laufen soll33.

tty

Der Name der Konsole, auf der diese Instanz von agetty läuft, als Zeichenkette – z.B. "ttyS0". Dieses Argument ist optional, sein Vorgabewert ist eine vernünftige Wahl unter den seriellen Schnittstellen, auf deren Benutzung der Linux-Kernel eingestellt ist.

Hierzu wird, wenn in der Kernel-Befehlszeile ein Wert für eine Option namens agetty.tty festgelegt wurde, der Gerätename daraus für agetty extrahiert und benutzt.

Andernfalls wird agetty, falls auf der Kernel-Befehlszeile eine Option console mit einem tty vorkommt, den daraus extrahierten Gerätenamen der seriellen Schnittstelle benutzen.

In beiden Fällen wird agetty nichts an den anderen Einstellungen für serielle Geräte verändern (Baud-Rate etc.), in der Hoffnung, dass Linux sie auf die korrekten Werte festgelegt hat.

baud-rate (Vorgabe: #f)

Eine Zeichenkette, die aus einer kommagetrennten Liste von einer oder mehreren Baud-Raten besteht, absteigend sortiert.

term (Vorgabe: #f)

Eine Zeichenkette, die den Wert enthält, der für die Umgebungsvariable TERM benutzt werden soll.

eight-bits? (Vorgabe: #f)

Steht dies auf #t, wird angenommen, dass das TTY 8-Bit-korrekt ist, so dass die Paritätserkennung abgeschaltet wird.

auto-login (Vorgabe: #f)

Wird hier ein Anmeldename als eine Zeichenkette übergeben, wird der angegebene Nutzer automatisch angemeldet, ohne nach einem Anmeldenamen oder Passwort zu fragen.

no-reset? (Vorgabe: #f)

Steht dies auf #t, werden die Cflags des Terminals (d.h. dessen Steuermodi) nicht zurückgesetzt.

host (Vorgabe: #f)

Dies akzeptiert eine Zeichenkette mit dem einzutragenden Anmeldungs-Rechnernamen („login_host“), der in die Datei /var/run/utmpx geschrieben wird.

remote? (Vorgabe: #f)

Ist dies auf #t gesetzt, wird in Verbindung mit host eine Befehlszeilenoption -r für einen falschen Rechnernamen („Fakehost“) in der Befehlszeile des mit login-program angegebenen Anmeldeprogramms übergeben.

flow-control? (Vorgabe: #f)

Ist dies auf #t gesetzt, wird Hardware-Flusssteuerung (RTS/CTS) aktiviert.

no-issue? (Vorgabe: #f)

Ist dies auf #t gesetzt, wird der Inhalt der Datei /etc/issue nicht angezeigt, bevor die Anmeldeaufforderung zu sehen ist.

init-string (Vorgabe: #f)

Dies akzeptiert eine Zeichenkette, die zum TTY oder zum Modem zuerst vor allem anderen gesendet wird. Es kann benutzt werden, um ein Modem zu initialisieren.

no-clear? (Vorgabe: #f)

Ist dies auf #t gesetzt, wird agetty den Bildschirm nicht löschen, bevor es die Anmeldeaufforderung anzeigt.

login-program (Vorgabe: (file-append shadow "/bin/login"))

Hier muss entweder ein G-Ausdruck mit dem Namen eines Anmeldeprogramms übergeben werden, oder dieses Feld wird nicht gesetzt, so dass als Vorgabewert das Programm login aus dem Shadow-Werkzeugsatz verwendet wird.

local-line (Vorgabe: #f)

Steuert den Leitungsschalter CLOCAL. Hierfür wird eines von drei Symbolen als Argument akzeptiert, 'auto, 'always oder 'never. Für #f wählt agetty als Vorgabewert 'auto.

extract-baud? (Vorgabe: #f)

Ist dies auf #t gesetzt, so wird agetty angewiesen, die Baud-Rate aus den Statusmeldungen mancher Arten von Modem abzulesen.

skip-login? (Vorgabe: #f)

Ist dies auf #t gesetzt, wird der Benutzer nicht aufgefordert, einen Anmeldenamen einzugeben. Dies kann zusammen mit dem login-program-Feld benutzt werden, um nicht standardkonforme Anmeldesysteme zu benutzen.

no-newline? (Vorgabe: #f)

Ist dies auf #t gesetzt, wird kein Zeilenumbruch ausgegeben, bevor die Datei /etc/issue ausgegeben wird.

login-options (Vorgabe: #f)

Dieses Feld akzeptiert eine Zeichenkette mit den Befehlszeilenoptionen für das Anmeldeprogramm. Beachten Sie, dass bei einem selbst gewählten login-program ein böswilliger Nutzer versuchen könnte, als Anmeldenamen etwas mit eingebetteten Befehlszeilenoptionen anzugeben, die vom Anmeldeprogramm interpretiert werden könnten.

login-pause (Vorgabe: #f)

Ist dies auf #t gesetzt, wird auf das Drücken einer beliebigen Taste gewartet, bevor die Anmeldeaufforderung angezeigt wird. Hiermit kann in Verbindung mit auto-login weniger Speicher verbraucht werden, indem man Shells erst erzeugt, wenn sie benötigt werden.

chroot (Vorgabe: #f)

Wechselt die Wurzel des Dateisystems auf das angegebene Verzeichnis. Dieses Feld akzeptiert einen Verzeichnispfad als Zeichenkette.

hangup? (Vorgabe: #f)

Mit dem Linux-Systemaufruf vhangup auf dem angegebenen Terminal virtuell auflegen.

keep-baud? (Vorgabe: #f)

Ist dies auf #t gesetzt, wird versucht, die bestehende Baud-Rate beizubehalten. Die Baud-Raten aus dem Feld baud-rate werden benutzt, wenn agetty ein BREAK-Zeichen empfängt.

timeout (Vorgabe: #f)

Ist dies auf einen ganzzahligen Wert gesetzt, wird terminiert, falls kein Benutzername innerhalb von timeout Sekunden eingelesen werden konnte.

detect-case? (Vorgabe: #f)

Ist dies auf #t gesetzt, wird Unterstützung für die Erkennung von Terminals aktiviert, die nur Großschreibung beherrschen. Mit dieser Einstellung wird, wenn ein Anmeldename nur aus Großbuchstaben besteht, dieser als Anzeichen dafür aufgefasst, dass das Terminal nur Großbuchstaben beherrscht, und einige Umwandlungen von Groß- in Kleinbuchstaben aktiviert. Beachten Sie, dass dabei keine Unicode-Zeichen unterstützt werden.

wait-cr? (Vorgabe: #f)

Wenn dies auf #t gesetzt ist, wird gewartet, bis der Benutzer oder das Modem einen Wagenrücklauf („Carriage Return“) oder einen Zeilenvorschub („Linefeed“) absendet, ehe /etc/issue oder eine Anmeldeaufforderung angezeigt wird. Dies wird typischerweise zusammen mit dem Feld init-string benutzt.

no-hints? (Vorgabe: #f)

Ist es auf #t gesetzt, werden keine Hinweise zu den Feststelltasten Num-Taste, Umschaltsperre („Caps Lock“) und Rollen-Taste („Scroll Lock“) angezeigt.

no-hostname? (Vorgabe: #f)

Das vorgegebene Verhalten ist, den Rechnernamen auszugeben. Ist dieses Feld auf #t gesetzt, wird überhaupt kein Rechnername angezeigt.

long-hostname? (Vorgabe: #f)

Das vorgegebene Verhalten ist, den Rechnernamen nur bis zu seinem ersten Punkt anzuzeigen. Ist dieses Feld auf #t gesetzt, wird der vollständige Rechnername (der „Fully Qualified Hostname“), wie ihn gethostname oder getaddrinfo liefern, angezeigt.

erase-characters (Vorgabe: #f)

Dieses Feld akzeptiert eine Zeichenkette aus Zeichen, die auch als Rücktaste (zum Löschen) interpretiert werden sollen, wenn der Benutzer seinen Anmeldenamen eintippt.

kill-characters (Vorgabe: #f)

Dieses Feld akzeptiert eine Zeichenkette aus Zeichen, deren Eingabe als „ignoriere alle vorherigen Zeichen“ interpretiert werden soll (auch „Kill“-Zeichen genannt), wenn der Benutzer seinen Anmeldenamen eintippt.

chdir (Vorgabe: #f)

Dieses Feld akzeptiert eine Zeichenkette, die einen Verzeichnispfad angibt, zu dem vor der Anmeldung gewechselt wird.

delay (Vorgabe: #f)

Dieses Feld akzeptiert eine ganze Zahl mit der Anzahl Sekunden, die gewartet werden soll, bis ein TTY geöffnet und die Anmeldeaufforderung angezeigt wird.

nice (Vorgabe: #f)

Dieses Feld akzeptiert eine ganze Zahl mit dem „nice“-Wert, mit dem das Anmeldeprogramm ausgeführt werden soll.

extra-options (Vorgabe: '())

Dieses Feld ist ein „Notausstieg“, mit dem Nutzer beliebige Befehlszeilenoptionen direkt an agetty übergeben können. Diese müssen hier als eine Liste von Zeichenketten angegeben werden.

shepherd-requirement (Vorgabe: '())

Mit dieser Option können zusätzliche Shepherd-Anforderungen für die einzelnen 'term-*-Shepherd-Dienste festgelegt werden (zum Beispiel 'syslogd).

Variable: kmscon-service-type

Diensttyp für kmscon, was das Anmelden auf virtuellen Konsolen ermöglicht. Der Wert des Dienstes mit diesem Typ ist ein <kmscon-configuration>-Objekt.

Datentyp: kmscon-configuration

Dieser Datentyp repräsentiert die Konfiguration von Kmscon, die unter anderem angibt, auf welchem TTY es ausgeführt werden soll.

virtual-terminal

Der Name der Konsole, auf der diese Kmscon läuft – z.B. "tty1".

login-program (Vorgabe: #~(string-append #$shadow "/bin/login"))

Ein G-Ausdruck, der den Namen des Anmeldeprogramms angibt. Als Vorgabe wird das Anmeldeprogramm login aus dem Shadow-Werkzeugsatz verwendet.

login-arguments (Vorgabe: '("-p"))

Eine Liste der Argumente, die an login übergeben werden sollen.

auto-login (Vorgabe: #f)

Wird hier ein Anmeldename als eine Zeichenkette übergeben, wird der angegebene Nutzer automatisch angemeldet, ohne nach einem Anmeldenamen oder Passwort zu fragen.

hardware-acceleration? (Vorgabe: #f)

Ob Hardware-Beschleunigung verwendet werden soll.

font-engine (Vorgabe: "pango")

Welcher Schriftartentreiber in Kmscon benutzt wird.

font-size (Vorgabe: 12)

Welche Schriftgröße in Kmscon benutzt wird.

keyboard-layout (Vorgabe: #f)

Wenn es auf #f gesetzt ist, benutzt Kmscon die voreingestellte Tastaturbelegung, also normalerweise US English („QWERTY“) für eine PC-Tastatur mit 105 Tasten.

Andernfalls muss hier ein keyboard-layout-Objekt stehen, das angibt, welche Tastaturbelegung aktiv sein soll. Siehe Tastaturbelegung für mehr Informationen, wie die Tastaturbelegung angegeben werden kann.

kmscon (Vorgabe: kmscon)

Das Kmscon-Paket, das benutzt werden soll.

Variable: nscd-service-type

Dies ist der Diensttyp für den nscd (Name Service Cache Daemon) aus der libc. Der Wert des Dienstes ist ein <nscd-configuration>-Objekt.

Der Einfachheit halber bietet der Shepherd-Dienst für nscd die folgenden Aktionen an:

invalidate

Dies macht den angegebenen Zwischenspeicher ungültig. Wenn Sie zum Beispiel:

herd invalidate nscd hosts

ausführen, wird der Zwischenspeicher für die Auflösung von Rechnernamen (von „Host“-Namen) des nscd ungültig.

statistics

Wenn Sie herd statistics nscd ausführen, werden Ihnen Informationen angezeigt, welche Ihnen Informationen über den nscd-Zustand und die Zwischenspeicher angezeigt.

Datentyp: nscd-configuration

Dieser Datentyp repräsentiert die Konfiguration des nscd (Name Service Cache Daemon).

name-services (Vorgabe: '())

Liste von Paketen, die Namensdienste bezeichnen, die für den nscd sichtbar sein müssen, z.B. (list nss-mdns).

glibc (Vorgabe: glibc)

Ein Paket-Objekt, das die GNU-C-Bibliothek angibt, woraus der nscd-Befehl genommen werden soll.

log-file (Vorgabe: #f)

Name of the nscd log file. Debugging output goes to that file when debug-level is strictly positive, or to standard error if it is #f. Regular messages are written to syslog when debug-level is zero, regardless of the value of log-file.

debug-level (Vorgabe: 0)

Eine ganze Zahl, die den Detailgrad der Ausgabe zur Fehlersuche angibt. Größere Zahlen bewirken eine ausführlichere Ausgabe.

caches (Vorgabe: %nscd-default-caches)

Liste der <nscd-cache>-Objekte, die repräsentieren, was alles zwischengespeichert werden soll; siehe unten.

Datentyp: nscd-cache

Ein Datentyp, der eine Zwischenspeicher-Datenbank von nscd mitsamt ihren Parametern definiert.

Datenbank

Dies ist ein Symbol, was den Namen der Datenbank repräsentiert, die zwischengespeichert werden soll. Gültige Werte sind passwd, group, hosts und services, womit jeweils die entsprechende NSS-Datenbank bezeichnet wird (siehe NSS Basics in Referenzhandbuch der GNU-C-Bibliothek).

positive-time-to-live
negative-time-to-live (Vorgabe: 20)

Eine Zahl, die für die Anzahl an Sekunden steht, die ein erfolgreiches (positives) oder erfolgloses (negatives) Nachschlageresultat im Zwischenspeicher verbleibt.

check-files? (Vorgabe: #t)

Ob auf Änderungen an den der database entsprechenden Dateien reagiert werden soll.

Wenn database zum Beispiel hosts ist, wird, wenn dieses Feld gesetzt ist, nscd Änderungen an /etc/hosts beobachten und berücksichtigen.

persistent? (Vorgabe: #t)

Ob der Zwischenspeicher dauerhaft auf der Platte gespeichert werden soll.

shared? (Vorgabe: #t)

Ob der Zwischenspeicher zwischen den Nutzern geteilt werden soll.

max-database-size (Vorgabe: 32 MiB)

Die Maximalgröße des Datenbank-Zwischenspeichers in Bytes.

Variable: %nscd-default-caches

Liste von <nscd-cache>-Objekten, die von der vorgegebenen nscd-configuration benutzt werden (siehe oben).

Damit wird dauerhaftes und aggressives Zwischenspeichern beim Nachschlagen von Dienst- und Rechnernamen („Host“-Namen) aktiviert. Letzteres verbessert die Leistungsfähigkeit beim Nachschlagen von Rechnernamen, sorgt für mehr Widerstandsfähigkeit gegenüber unverlässlichen Namens-Servern und bietet außerdem einen besseren Datenschutz – oftmals befindet sich das Ergebnis einer Anfrage nach einem Rechnernamen bereits im lokalen Zwischenspeicher und externe Namens-Server müssen nicht miteinbezogen werden.

Variable: syslog-service-type

Diensttyp des Dienstes, mit dem der syslog-Daemon ausgeführt wird. Sein Wert ist ein <syslog-configuration>-Objekt.

Wenn eine geänderte syslog-configuration nach dem Rekonfigurieren Ihres Systems in Kraft treten soll, sollten Sie bevorzugt die ‘reload’-Aktion benutzen, statt den Dienst neu zu starten, weil viele Dienste von Syslog abhängen und das auch viele Dienste wie die Anmeldeverwaltung neu starten lassen würde:

# herd reload syslog

Das sorgt dafür, dass der schon laufende syslogd-Prozess seine Konfiguration neu lädt.

Datentyp: syslog-configuration

Dieser Datentyp repräsentiert die Konfiguration des syslog-Daemons.

syslogd (Vorgabe: #~(string-append #$inetutils "/libexec/syslogd"))

Welcher Syslog-Daemon benutzt werden soll.

config-file (Vorgabe: %default-syslog.conf)

Die zu benutzende syslog-Konfigurationsdatei. Siehe syslogd invocation in GNU Inetutils für weitere Informationen über die Syntax der Konfiguration.

Variable: guix-service-type

Dies ist der Typ für den Dienst, der den Erstellungs-Daemon guix-daemon ausführt (siehe Aufruf von guix-daemon). Als Wert muss ein guix-configuration-Verbundsobjekt verwendet werden, wie unten beschrieben.

Datentyp: guix-configuration

Dieser Datentyp repräsentiert die Konfiguration des Erstellungs-Daemons von Guix. Siehe Aufruf von guix-daemon für weitere Informationen.

guix (Vorgabe: guix)

Das zu verwendende Guix-Paket. Siehe Anpassung des systemweiten Guix, um zu erfahren, wie Sie ein Paket zusammen mit Kanälen voreinstellen.

build-group (Vorgabe: "guixbuild")

Der Name der Gruppe, zu der die Erstellungs-Benutzerkonten gehören.

build-accounts (Vorgabe: 10)

Die Anzahl zu erzeugender Erstellungs-Benutzerkonten.

authorize-key? (Vorgabe: #t)

Ob die unter authorized-keys aufgelisteten Substitutschlüssel autorisiert werden sollen – vorgegeben ist, den von bordeaux.guix.gnu.org und ci.guix.gnu.org zu autorisieren (siehe Substitute).

Wenn authorize-key? wahr ist, kann /etc/guix/acl durch einen Aufruf von guix archive --authorize nicht verändert werden. Sie müssen stattdessen die guix-configuration wie gewünscht anpassen und das System rekonfigurieren. Dadurch wird sichergestellt, dass die Betriebssystemkonfigurationsdatei eigenständig ist.

Anmerkung: Wenn Sie ein System mit auf wahr gesetztem authorize-key? starten oder dahin rekonfigurieren, wird eine Sicherungskopie der bestehenden /etc/guix/acl als /etc/guix/acl.bak angelegt, wenn festgestellt wurde, dass jemand die Datei von Hand verändert hatte. Das passiert, um die Migration von früheren Versionen zu erleichtern, als eine direkte Modifikation der Datei /etc/guix/acl, „in place“, noch möglich war.

authorized-keys (Vorgabe: %default-authorized-guix-keys)

Die Liste der Dateien mit autorisierten Schlüsseln, d.h. eine Liste von Zeichenketten als G-Ausdrücke (siehe guix archive aufrufen). Der vorgegebene Inhalt ist der Schlüssel von bordeaux.guix.gnu.org und ci.guix.gnu.org (siehe Substitute). Siehe im Folgenden substitute-urls für ein Beispiel, wie Sie sie ändern können.

use-substitutes? (Vorgabe: #t)

Ob Substitute benutzt werden sollen.

substitute-urls (Vorgabe: %default-substitute-urls)

Die Liste der URLs, auf denen nach Substituten gesucht wird, wenn nicht anders angegeben.

Wenn Sie zum Beispiel gerne Substitute von guix.example.org zusätzlich zu bordeaux.guix.gnu.org laden würden, müssen Sie zwei Dinge tun: Erstens guix.example.org zu den substitute-urls hinzufügen und zweitens dessen Signierschlüssel autorisieren, nachdem Sie ihn hinreichend geprüft haben (siehe Substitut-Server autorisieren). Mit der Konfiguration unten wird das erledigt:

(guix-configuration
  (substitute-urls
   (append (list "https://guix.example.org")
           %default-substitute-urls))
  (authorized-keys
   (append (list (local-file "./guix.example.org-key.pub"))
           %default-authorized-guix-keys)))

In diesem Beispiel wird angenommen, dass die Datei ./guix.example.org-key.pub den öffentlichen Schlüssel enthält, mit dem auf guix.example.org Substitute signiert werden.

generate-substitute-key? (Vorgabe: #t)

Ob ein Schlüsselpaar für Substitute als /etc/guix/signing-key.pub und /etc/guix/signing-key.sec erzeugt werden soll, wenn noch keines da ist.

Mit dem Schlüsselpaar werden Store-Objekte exportiert, z.B. bei guix publish (siehe guix publish aufrufen) oder guix archive (siehe guix archive aufrufen). Es zu erzeugen dauert einige Sekunden, wenn genug Entropie vorrätig ist, und ist auch nur einmal nötig, aber z.B. auf virtuellen Maschinen, die so etwas nicht brauchen, schalten Sie es vielleicht lieber aus, wenn die zusätzliche Zeit beim Systemstart ein Problem darstellt.

channels (Vorgabe: #f)

Eine Liste der Kanäle, die in /etc/guix/channels.scm genannt werden sollen, von wo sie guix pull nach Vorgabe ausliest (siehe guix pull aufrufen):

Anmerkung: Wenn Sie ein System rekonfigurieren, wird eine Sicherungskopie der bestehenden /etc/guix/channels.scm als /etc/guix/channels.scm.bak angelegt, wenn festgestellt wurde, dass jemand die Datei von Hand verändert hatte. Das passiert, um die Migration von früheren Versionen zu erleichtern, als eine direkte Modifikation der Datei /etc/guix/channels.scm, „in place“, noch möglich war.

max-silent-time (Vorgabe: 3600)
timeout (Vorgabe: (* 3600 24))

Die Anzahl an Sekunden, die jeweils nichts in die Ausgabe geschrieben werden darf bzw. die es insgesamt dauern darf, bis ein Erstellungsprozess abgebrochen wird. Beim Wert null wird nie abgebrochen.

log-compression (Vorgabe: 'gzip)

Die für Erstellungsprotokolle zu benutzende Kompressionsmethode – entweder gzip, bzip2 oder none.

discover? (Vorgabe: #f)

Ob im lokalen Netzwerk laufende Substitutserver mit mDNS und DNS-SD ermittelt werden sollen oder nicht.

build-machines (Vorgabe: #f)

In diesem Feld muss entweder #f stehen oder eine Liste von G-Ausdrücken, die zu einem build-machine-Verbundsobjekt oder zu einer Liste von build-machine-Verbundsobjekten ausgewertet werden (siehe Nutzung der Auslagerungsfunktionalität).

Wenn es #f ist, bleibt die Datei /etc/guix/machines.scm unberührt. Ansonsten wird die Liste der G-Ausdrücke in /etc/guix/machines.scm geschrieben. Wenn dort bereits eine vorherige Datei vorgefunden wird, wird eine Sicherungskopie von ihr in /etc/guix/machines.scm.bak angelegt. So können Sie die Erstellungsmaschinen, an die Sie auslagern möchten, direkt in die Betriebssystemdeklaration schreiben, etwa so:

(guix-configuration
  (build-machines
    (list #~(build-machine (name "foo.example.org") )
          #~(build-machine (name "bar.example.org") ))))

Weitere Erstellungsmaschinen können über den guix-extension-Mechanismus hinzugefügt werden (siehe unten).

extra-options (Vorgabe: '())

Eine Liste zusätzlicher Befehlszeilenoptionen zu guix-daemon.

log-file (Vorgabe: "/var/log/guix-daemon.log")

Die Datei, in die die Standardausgabe und die Standardfehlerausgabe von guix-daemon geschrieben werden.

http-proxy (Vorgabe: #f)

Die URL des für das Herunterladen von Ableitungen mit fester Ausgabe und von Substituten zu verwendenden HTTP- und HTTPS-Proxys.

Sie können den für den Daemon benutzten Proxy auch zur Laufzeit ändern, indem Sie die set-http-proxy-Aktion aufrufen, wodurch er neu gestartet wird.

herd set-http-proxy guix-daemon http://localhost:8118

Um die Proxy-Einstellungen zu löschen, führen Sie dies aus:

herd set-http-proxy guix-daemon
tmpdir (Vorgabe: #f)

Ein Verzeichnispfad, der angibt, wo guix-daemon seine Erstellungen durchführt.

environment (Vorgabe: '())

Welche Umgebungsvariablen beim Aufruf des Daemons gesetzt sein sollen, als Liste von Zeichenketten der Form Schlüssel=Wert.

socket-directory-permissions (default: #o755)

Permissions to set for the directory /var/guix/daemon-socket. This, together with socket-directory-group and socket-directory-user, determines who can connect to the build daemon via its Unix socket. TCP socket operation is unaffected by these.

socket-directory-user (default: #f)
socket-directory-group (default: #f)

User and group owning the /var/guix/daemon-socket directory or #f to keep the user or group as root.

Datentyp: guix-extension

Dieser Datentyp repräsentiert die Parameter des Erstellungs-Daemons von Guix, die erweiterbar sind. Ein Objekt dieses Typs kann als Diensterweiterung für Guix verwendet werden. Siehe Dienstkompositionen für weitere Informationen.

authorized-keys (Vorgabe: '())

Eine Liste dateiartiger Objekte, wobei jedes Listenelement einen öffentlichen Schlüssel enthält.

substitute-urls (Vorgabe: '())

Eine Liste von Zeichenketten, die jeweils eine URL mit Substituten enthalten.

build-machines (Vorgabe: '())

Eine Liste von G-Ausdrücken, die zu build-machine-Verbundsobjekten oder zu einer Liste von build-machine-Verbundsobjekten ausgewertet werden (siehe Nutzung der Auslagerungsfunktionalität).

Mithilfe dieses Feldes kann ein Dienst geschrieben werden, durch den neue Erstellungsmaschinen hinzugefügt werden, an die Erstellungen durch den Daemon ausgelagert werden sollen. Das ist nützlich für Dienste wie die des Typs hurd-vm-service-type, womit eine virtuelle GNU/Hurd-Maschine direkt zum Auslagern eingerichtet wird (siehe hurd-vm-service-type).

chroot-directories (Vorgabe: '())

Eine Liste von dateiartigen Objekten oder Zeichenketten, die Verzeichnisse anzeigen, die im Erstellungs-Daemon zusätzlich nutzbar sind.

Variable: udev-service-type

Diensttyp des Dienstes, um udev auszuführen, was zur Laufzeit Gerätedateien ins Verzeichnis /dev einfügt. Sein Wert ist ein <udev-configuration>-Objekt.

Weil es einen Unterschied macht, welchen Dateinamen eine udev-Regel bzw. eine Hardwarebeschreibungsdatei trägt, ist es notwendig, nicht nur einfache dateiartige Objekte mit Regeln darin anzugeben, wo der Name ignoriert wird, sondern die dateiartigen Objekte für Verzeichnisse zu benutzen, wo sich optional Regeln unter lib/udev/rules.d und sich optional Hardwaredateien unter lib/udev/hwdb.d befinden. So ist es auch möglich, den Dienst mit ganzen Paketen zu konfigurieren, die Regeln und hwdb-Dateien enthalten.

Der udev-service-type kann mit dateiartigen Objekten, die dieser Hierarchie folgen, erweitert werden. Um sie einfach zu erzeugen, gibt es die Prozeduren udev-rule und file->udev-rule, um udev-Regeln bereitzustellen, sowie udev-hardware und file->udev-hardware, um Hardwarebeschreibungsdateien bereitzustellen.

Innerhalb der Betriebssystemdeklaration kann der Diensttyp mit den Prozeduren udev-rules-service and udev-hardware-service erweitert werden.

Datentyp: udev-configuration

Der Datentyp, der die Konfiguration von udev repräsentiert.

udev (Vorgabe: eudev) (Typ: dateiartig)

Das Paketobjekt des udev-Dienstes. Zur Laufzeit wird dieses Paket benutzt und ist kompiliert für das Zielsystem. Um den Hardware-Index hwdb.bin zu erstellen, wird das für das aktuelle System kompilierte Paket auch beim Erzeugen der Systemdefinition benutzt.

rules (Vorgabe: ’()) (Typ: Liste-von-Dateiartigen)

Liste von dateiartigen Objekten mit udev-Regeln in einem Unterverzeichnis.

hardware (Vorgabe: ’()) (Typ: Liste-von-Dateiartigen)

Liste von dateiartigen Objekten mit udev-Hardwarebeschreibungsdateien in einem Unterverzeichnis.

Prozedur: udev-rule Dateiname Inhalt

Liefert eine udev-Regeldatei mit dem angegebenen Dateinamen, in der die vom Literal Inhalt definierten Regeln stehen.

Im folgenden Beispiel wird eine Regel für ein USB-Gerät definiert und in der Datei 90-usb-ding.rules gespeichert. Mit der Regel wird ein Skript ausgeführt, sobald ein USB-Gerät mit der angegebenen Produktkennung erkannt wird.

(define %beispiel-udev-rule
  (udev-rule
    "90-usb-ding.rules"
    (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", "
                   "ATTR{product}==\"Beispiel\", "
                   "RUN+=\"/pfad/zum/skript\"")))
Prozedur: udev-hardware Dateiname Inhalt

Liefert eine udev-Hardwarebeschreibungsdatei mit dem angegebenen Dateinamen, in der die Hardwareinformationen Inhalt stehen.

Prozedur: udev-rules-service Name Regeln [#:groups '()]

Liefert einen Dienst, der den Dienst vom Typ udev-service-type um die Regeln erweitert und den Dienst vom Typ account-service-type um die unter #:groups angegebenen Systembenutzergruppen. Dazu wird ein Diensttyp name-udev-rules für den einmaligen Gebrauch erzeugt, den der zurückgelieferte Dienst instanziiert.

Hier zeigen wir, wie damit udev-service-type um die vorher definierte Regel %beispiel-udev-rule erweitert werden kann.

(operating-system
 ;; …
 (services
   (cons (udev-rules-service 'usb-ding %beispiel-udev-rule)
         %desktop-services)))
Prozedur: udev-hardware-service Name Hardware

Liefert einen Dienst, der den Dienst vom Typ udev-service-type um die Hardware erweitert. Sein Dienstname ist name-udev-hardware.

Prozedur: file->udev-rule Dateiname Datei

Liefert eine Datei mit udev-Regeln mit dem angegebenen Dateinamen, in der alle in der Datei, einem dateiartigen Objekt, definierten Regeln stehen.

Folgendes Beispiel stellt dar, wie wir eine bestehende Regeldatei verwenden können.

(use-modules (guix download)     ;für url-fetch
             (guix packages)     ;für origin
             )

(define %android-udev-rules
  (file->udev-rule
    "51-android-udev.rules"
    (let ((version "20170910"))
      (origin
       (method url-fetch)
       (uri (string-append "https://raw.githubusercontent.com/M0Rf30/"
                           "android-udev-rules/" version "/51-android.rules"))
       (sha256
        (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003"))))))

Weil auch Guix-Paketdefinitionen unter den rules aufgeführt werden können, um die udev-Regeln um diejenigen Definitionen zu ergänzen, die im Unterverzeichnis lib/udev/rules.d des jeweiligen Pakets aufgeführt sind, hätten wir statt des bisherigen Beispiels zu file->udev-rule also auch das Paket android-udev-rules benutzen können, das in Guix im Modul (gnu packages android) vorhanden ist.

Prozedur: file->udev-hardware Dateiname Datei

Liefert eine udev-Hardwarebeschreibungsdatei mit dem angegebenen Dateinamen, in der alle in der Datei, einem dateiartigen Objekt, definierten Regeln stehen.

Das folgende Beispiel zeit, wie dieses Paket android-udev-rules benutzt werden kann, damit das „Android-Tool“ adb Geräte erkennen kann, ohne dafür Administratorrechte vorauszusetzen. Man sieht hier auch, wie die Benutzergruppe adbusers erstellt werden kann, die existieren muss, damit die im Paket android-udev-rules definierten Regeln richtig funktionieren. Um so eine Benutzergruppe zu erzeugen, müssen wir sie sowohl unter den supplementary-groups unserer user-account-Deklaration aufführen als auch sie im groups-Feld der udev-rules-service-Prozedur aufführen.

(use-modules (gnu packages android)  ;für android-udev-rules
             (gnu system shadow)     ;für user-group
             )

(operating-system
  ;; …
  (users (cons (user-account
                ;; …
                (supplementary-groups
                 '("adbusers"   ;für adb
                   "wheel" "netdev" "audio" "video")))))
  ;; …
  (services
    (cons (udev-rules-service 'android android-udev-rules
                              #:groups '("adbusers"))
          %desktop-services)))
Variable: urandom-seed-service-type

Etwas Entropie in der Datei %random-seed-file aufsparen, die als Startwert (als sogenannter „Seed“) für /dev/urandom dienen kann, nachdem das System neu gestartet wurde. Es wird auch versucht, /dev/urandom beim Hochfahren mit Werten aus /dev/hwrng zu starten, falls /dev/hwrng existiert und lesbar ist.

Variable: %random-seed-file

Der Name der Datei, in der einige zufällige Bytes vom urandom-seed-service abgespeichert werden, um sie nach einem Neustart von dort als Startwert für /dev/urandom auslesen zu können. Als Vorgabe wird /var/lib/random-seed verwendet.

Variable: gpm-service-type

Dieser Typ wird für den Dienst verwendet, der GPM ausführt, den General-Purpose Mouse Daemon, welcher zur Linux-Konsole Mausunterstützung hinzufügt. GPM ermöglicht es seinen Benutzern, auch in der Konsole die Maus zu benutzen und damit etwa Text auszuwählen, zu kopieren und einzufügen.

Der Wert für Dienste dieses Typs muss eine gpm-configuration sein (siehe unten). Dieser Dienst gehört nicht zu den %base-services.

Datentyp: gpm-configuration

Repräsentiert die Konfiguration von GPM.

options (Vorgabe: %default-gpm-options)

Befehlszeilenoptionen, die an gpm übergeben werden. Die vorgegebenen Optionen weisen gpm an, auf Maus-Ereignisse auf der Datei /dev/input/mice zu lauschen. Siehe Command Line in gpm manual für weitere Informationen.

gpm (Vorgabe: gpm)

Das GPM-Paket, was benutzt werden soll.

Variable: guix-publish-service-type

Dies ist der Diensttyp für guix publish (siehe guix publish aufrufen). Sein Wert muss ein guix-publish-configuration-Objekt sein, wie im Folgenden beschrieben.

Hierbei wird angenommen, dass /etc/guix bereits ein mit guix archive --generate-key erzeugtes Schlüsselpaar zum Signieren enthält (siehe guix archive aufrufen). Falls nicht, wird der Dienst beim Starten fehlschlagen.

Datentyp: guix-publish-configuration

Der Datentyp, der die Konfiguration des „guix publish“-Dienstes repräsentiert.

guix (Vorgabe: guix)

Das zu verwendende Guix-Paket.

port (Vorgabe: 80)

Der TCP-Port, auf dem auf Verbindungen gelauscht werden soll.

host (Vorgabe: "localhost")

Unter welcher Rechneradresse (welchem „Host“, also welcher Netzwerkschnittstelle) auf Verbindungen gelauscht wird. Benutzen Sie "0.0.0.0", wenn auf allen verfügbaren Netzwerkschnittstellen gelauscht werden soll.

advertise? (Vorgabe: #f)

Steht dies auf wahr, wird anderen Rechnern im lokalen Netzwerk über das Protokoll DNS-SD unter Verwendung von Avahi mitgeteilt, dass dieser Dienst zur Verfügung steht.

Dadurch können in der Nähe befindliche Guix-Maschinen mit eingeschalteter Ermittlung (siehe oben die guix-configuration) diese Instanz von guix publish entdecken und Substitute darüber beziehen.

compression (Vorgabe: '(("gzip" 3) ("zstd" 3)))

Dies ist eine Liste von Tupeln aus Kompressionsmethode und -stufe, die zur Kompression von Substituten benutzt werden. Um zum Beispiel alle Substitute mit beiden, sowohl lzip auf Stufe 7 und gzip auf Stufe 9, zu komprimieren, schreiben Sie:

'(("lzip" 7) ("gzip" 9))

Auf Stufe 9 ist das Kompressionsverhältnis am besten, auf Kosten von hoher Prozessorauslastung, während auf Stufe 1 eine schnelle Kompression erreicht wird. Siehe guix publish aufrufen für weitere Informationen zu den verfügbaren Kompressionsmethoden und ihren jeweiligen Vor- und Nachteilen.

Wird eine leere Liste angegeben, wird Kompression abgeschaltet.

nar-path (Vorgabe: "nar")

Der URL-Pfad, unter dem „Nars“ zum Herunterladen angeboten werden. Siehe --nar-path für Details.

cache (Vorgabe: #f)

Wenn dies #f ist, werden Archive nicht zwischengespeichert, sondern erst bei einer Anfrage erzeugt. Andernfalls sollte dies der Name eines Verzeichnisses sein – z.B. "/var/cache/guix/publish" –, in das guix publish fertige Archive und Metadaten zwischenspeichern soll. Siehe --cache für weitere Informationen über die jeweiligen Vor- und Nachteile.

workers (Vorgabe: #f)

Ist dies eine ganze Zahl, gibt es die Anzahl der Worker-Threads an, die zum Zwischenspeichern benutzt werden; ist es #f, werden so viele benutzt, wie es Prozessoren gibt. Siehe --workers für mehr Informationen.

cache-bypass-threshold (Vorgabe: 10 MiB)

Wenn cache wahr ist, ist dies die Maximalgröße in Bytes, die ein Store-Objekt haben darf, damit guix publish den Zwischenspeicher umgehen darf, falls eine Suche darin mit negativem Ergebnis ausfällt („Cache Miss“). Siehe --cache-bypass-threshold für weitere Informationen.

ttl (Vorgabe: #f)

Wenn dies eine ganze Zahl ist, bezeichnet sie die Time-to-live als die Anzahl der Sekunden, die heruntergeladene veröffentlichte Archive zwischengespeichert werden dürfen. Siehe --ttl für mehr Informationen.

negative-ttl (Vorgabe: #f)

Wenn dies eine ganze Zahl ist, bezeichnet sie die Time-to-live für erfolglose (negative) Suchen, als Anzahl der Sekunden. Siehe --negative-ttl für mehr Informationen.

Variable: rngd-service-type

Diensttyp des Dienstes, um das rngd-Programm aus den rng-tools auszuführen. Sein Wert ist ein <rngd-configuration>-Objekt.

Datentyp: rngd-configuration

Datentyp, der die Konfiguration von rngd repräsentiert.

rng-tools (Vorgabe: rng-tools) (Typ: dateiartig)

Paketobjekt mit dem rngd-Programm aus den rng-tools.

device (Vorgabe: "/dev/hwrng") (Typ: Zeichenkette)

Der Pfad zum Gerät, das zum Entropie-Pool des Kernels hinzugefügt werden soll. Dieser Dienst wird fehlschlagen, falls das mit device bezeichnete Gerät nicht existiert.<

Variable: pam-limits-service-type

Diensttyp des Dienstes, der eine Konfigurationsdatei für das pam_limits-Modul installiert. Der Wert des Dienstes ist eine Liste von pam-limits-entry-Werten, die benutzt werden können, um ulimit-Limits und nice-Prioritäten für Benutzersitzungen festzulegen. Vorgegeben ist, dass der Wert die leere Liste ist.

Die folgenden Limit-Definitionen setzen zwei harte und weiche Limits für alle Anmeldesitzungen für Benutzer in der realtime-Gruppe.

(service pam-limits-service-type
         (list
          (pam-limits-entry "@realtime" 'both 'rtprio 99)
          (pam-limits-entry "@realtime" 'both 'memlock 'unlimited)))

Der erste Eintrag erhöht die maximale Echtzeit-Priorität für unprivilegierte Prozesse ohne zusätzliche Berechtigungen; der zweite Eintrag hebt jegliche Einschränkungen des maximalen Adressbereichs auf, der im Speicher reserviert werden darf. Diese Einstellungen werden in dieser Form oft für Echtzeit-Audio-Systeme verwendet.

Ein weiteres nützliches Beispiel stellt das Erhöhen der Begrenzung dar, wie viele geöffnete Dateideskriptoren auf einmal benutzt werden können:

(service pam-limits-service-type
         (list
          (pam-limits-entry "*" 'both 'nofile 100000)))

Im Beispiel oben steht das Sternchen dafür, dass die Beschränkung für alle Benutzer gelten soll. Es ist wichtig, dass Sie darauf achten, dass der Wert nicht größer als der Höchstwert des Systems ist, der in der Datei /proc/sys/fs/file-max zu finden ist, denn sonst könnten sich Benutzer nicht mehr anmelden. Weitere Informationen über Schranken im Pluggable Authentication Module (PAM) bekommen Sie, wenn Sie die Handbuchseite im linux-pam-Paket lesen.

Variable: greetd-service-type

greetd ist ein minimaler und flexibler Daemon zur Anmeldeverwaltung, der nicht voraussetzt, dass zu startende Programme außergewöhnliche Anforderungen erfüllen müssen.

Wenn Sie etwas von der Shell in einer virtuellen Konsole aufrufen können, dann kann greetd das auch aufrufen. Wenn dem Programm ein einfaches JSON-basiertes Protokoll zur Interprozesskommunikation beigebracht werden kann, kann es für die Anmeldung verwendet werden als „Greeter“.

greetd-service-type steuert die Infrastruktur bei, um Nutzer anzumelden. Dazu gehört:

  • greetd-PAM-Dienst
  • Eine besondere Variation von pam-mount, mit der das XDG_RUNTIME_DIR-Verzeichnis eingebunden wird

Hier ist ein Beispiel, wie Sie von mingetty-service-type auf greetd-service-type umsteigen können und wie verschiedene Terminals eingerichtet werden könnten:

  (append
   (modify-services %base-services
     ;; greetd-service-type bringt uns den PAM-Dienst von "greetd"
     (delete login-service-type)
     ;; und er kann mingetty-service-type ersetzen
     (delete mingetty-service-type))
   (list
    (service greetd-service-type
             (greetd-configuration
              (terminals
               (list
                ;; wir haben die Wahl, welches Terminal anfangs aktiv sein soll
                (greetd-terminal-configuration (terminal-vt "1") (terminal-switch #t))
                ;; wir bestimmen, ob in der Umgebung XDG_RUNTIME_DIR gesetzt wird
                ;; und können sogar eigene Umgebungsvariable vorgeben
                (greetd-terminal-configuration
                 (terminal-vt "2")
                 (default-session-command
                   (greetd-agreety-session
                    (extra-env '(("MEINE_VAR" . "1")))
                    (xdg-env? #f))))
                ;; wir können eine andere Shell als wie vorgegeben bash benutzen
                (greetd-terminal-configuration
                 (terminal-vt "3")
                 (default-session-command
                   (greetd-agreety-session (command (file-append zsh "/bin/zsh")))))
                ;; wir können jeden ausführbaren Befehl zum Greeter machen
                (greetd-terminal-configuration
                 (terminal-vt "4")
                 (default-session-command (program-file "nichts-tun-greeter" #~(exit))))
                (greetd-terminal-configuration (terminal-vt "5"))
                (greetd-terminal-configuration (terminal-vt "6"))))))
    ;; mingetty-service-type kann auch parallel benutzt werden;
    ;; wenn man das will, sollte man (delete login-service-type)
    ;; oben weglassen
    #| (service mingetty-service-type (mingetty-configuration (tty "tty8"))) |#))
Datentyp: greetd-configuration

Das Verbundsobjekt mit der Konfiguration des greetd-service-type.

motd

Ein dateiartiges Objekt, das die „Message of the Day“ enthält.

allow-empty-passwords? (Vorgabe: #t)

Leere Passwörter standardmäßig zulassen, damit sich neue Anwender anmelden können, direkt nachdem das Benutzerkonto „root“ für den Administrator angelegt wurde.

terminals (Vorgabe: '())

Eine Liste von greetd-terminal-configuration für jedes Terminal, für das greetd gestartet werden soll.

greeter-supplementary-groups (Vorgabe: '())

Die Liste der Gruppen, zu denen das Benutzerkonto greeter hinzugefügt werden soll. Zum Beispiel:

(greeter-supplementary-groups '("seat" "video"))

Beachten Sie, diese Aktion schlägt fehl, wenn es die Gruppe seat nicht gibt.

Datentyp: greetd-terminal-configuration

Verbundsobjekt zur Konfiguration des greetd-Daemons auf einem der Terminals.

greetd (Vorgabe: greetd)

Das zu verwendende greetd-Paket.

config-file-name

Welchen Namen die Konfigurationsdatei des greetd-Daemons bekommen soll. Im Allgemeinen wird er automatisch aus dem Wert von terminal-vt abgeleitet.

log-file-name

Welchen Namen die Protokolldatei des greetd-Daemons bekommen soll. Im Allgemeinen wird er automatisch aus dem Wert von terminal-vt abgeleitet.

terminal-vt (Vorgabe: ‘"7"’)

Auf welchem virtuellen Terminal das hier läuft. Wir empfehlen, ein bestimmtes VT zu wählen und Konflikte zu vermeiden.

terminal-switch (Vorgabe: #f)

Ob dieses Terminal beim Start von greetd aktiv gemacht werden soll.

source-profile? (Vorgabe: #t)

Ob /etc/profile und ~/.profile mit source geladen werden sollen, wenn die Dateien existieren.

default-session-user (Vorgabe: ‘"greeter"’)

Mit welchem Benutzerkonto der Greeter ausgeführt werden soll.

default-session-command (Vorgabe: (greetd-agreety-session))

Dafür können Sie entweder eine Instanz einer Konfiguration mit greetd-agreety-session angeben oder mit gexp->script ein dateiartiges Objekt als Greeter benutzen.

Datentyp: greetd-agreety-session

Verbundstyp zur Konfiguration des greetd-Greeters agreety.

agreety (Vorgabe: greetd)

Das Paket mit dem Befehl /bin/agreety.

command (Vorgabe: (file-append bash "/bin/bash"))

Der bei erfolgreicher Anmeldung durch /bin/agreety auszuführende Befehl.

command-args (Vorgabe: '("-l"))

Die Befehlszeilenargumente, die an den command-Befehl übergeben werden.

extra-env (Vorgabe: '())

Zusätzliche Umgebungsvariable, die bei der Anmeldung gesetzt werden sollen.

xdg-env? (Vorgabe: #t)

Wenn es auf wahr steht, werden XDG_RUNTIME_DIR und XDG_SESSION_TYPE gesetzt, bevor command ausgeführt wird. Es ist zu bedenken, dass die extra-env sofort anschließend gesetzt werden und somit Vorrang haben.

Datentyp: greetd-wlgreet-session

Allgemeiner Verbundstyp zur Konfiguration des greetd-Greeters wlgreet.

wlgreet (Vorgabe: wlgreet)

Das Paket mit dem Befehl /bin/wlgreet.

command (Vorgabe: (file-append sway "/bin/sway"))

Der bei erfolgreicher Anmeldung durch /bin/wlgreet auszuführende Befehl.

command-args (Vorgabe: '())

Die Befehlszeilenargumente, die an den command-Befehl übergeben werden.

output-mode (Vorgabe: "all")

Was für die Option outputMode in die TOML-Konfigurationsdatei eingetragen wird.

scale (Vorgabe: 1)

Was für die Option scale in die TOML-Konfigurationsdatei eingetragen wird.

background (Vorgabe: '(0 0 0 0.9))

Eine RGBA-Liste, die die Hintergrundfarbe der Anmeldeaufforderung angibt.

headline (Vorgabe: '(1 1 1 1))

Eine RGBA-Liste, die die Farbe der Titelzeile in der Benutzeroberfläche angibt.

prompt (Vorgabe: '(1 1 1 1))

Eine RGBA-Liste, die die Farbe von Aufforderungen in der Benutzeroberfläche angibt.

prompt-error (Vorgabe: '(1 1 1 1))

Eine RGBA-Liste, die die Farbe von Fehlern in der Benutzeroberfläche angibt.

border (Vorgabe: '(1 1 1 1))

Eine RGBA-Liste, die die Farbe von Umrandungen in der Benutzeroberfläche angibt.

extra-env (Vorgabe: '())

Zusätzliche Umgebungsvariable, die bei der Anmeldung gesetzt werden sollen.

Datentyp: greetd-wlgreet-sway-session

Verbundstyp zur auf Sway bezogenen Konfiguration des greetd-Greeters wlgreet.

wlgreet-session (Vorgabe: (greetd-wlgreet-session))

Ein Verbundsobjekt vom Typ greetd-wlgreet-session, das die allgemeine wlgreet-Konfiguration enthält, zusätzlich zur auf Sway bezogenen greetd-wlgreet-sway-session.

sway (Vorgabe: sway)

Das Paket mit dem Befehl /bin/sway.

sway-configuration (Vorgabe: #f)

Ein dateiartiges Objekt, das eine Sway-Konfigurationsdatei enthält, die dem Pflichtteil der Konfiguration vorangestellt wird.

Hier ist ein Beispiel, wie Sie greetd unter Verwendung von wlgreet und Sway konfigurieren können:

  (greetd-configuration
   ;; Das greeter-Benutzerkonto benötigt diese Berechtigungen, sonst stürzt
   ;; Sway beim Start ab.
   (greeter-supplementary-groups (list "video" "input" "seat"))
   (terminals
    (list (greetd-terminal-configuration
           (terminal-vt "1")
           (terminal-switch #t)
           (default-session-command
            (greetd-wlgreet-sway-session
             (sway-configuration
              (local-file "sway-greetd.conf"))))))))

Fußnoten

(33)

Siehe die Handbuchseite agetty(8) für mehr Informationen.


Nächste: Geplante Auftragsausführung, Nach oben: Dienste   [Inhalt][Index]