Nächste: Geplante Auftragsausführung, Nach oben: Dienste [Inhalt][Index]
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.
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:
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).
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.
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
).
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
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 RechnernameAuf 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
mitmodify-services
ändern (siehemodify-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"))))))
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.
Diensttyp für einen Dienst, der die Benutzeranmeldung auf der Konsole
möglich macht. Sein Wert ist ein <login-configuration>
-Objekt.
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.
Diensttyp, der Mingetty ausführt, eine Implementierung der Anmeldung auf der
virtuellen Konsole. Der Wert dieses Dienstes ist ein
<mingetty-configuration>
-Objekt.
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.
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.
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
).
Diensttyp für
kmscon, was das
Anmelden auf virtuellen Konsolen ermöglicht. Der Wert des Dienstes mit
diesem Typ ist ein <kmscon-configuration>
-Objekt.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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\"")))
Liefert eine udev-Hardwarebeschreibungsdatei mit dem angegebenen Dateinamen, in der die Hardwareinformationen Inhalt stehen.
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)))
Liefert einen Dienst, der den Dienst vom Typ udev-service-type
um die
Hardware erweitert. Sein Dienstname ist
name-udev-hardware
.
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.
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)))
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.
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.
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
.
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.
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.
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.
Diensttyp des Dienstes, um das rngd
-Programm aus den
rng-tools
auszuführen. Sein Wert ist ein
<rngd-configuration>
-Objekt.
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.<
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.
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
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"))) |#))
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.
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.
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.
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.
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"))))))))
Nächste: Geplante Auftragsausführung, Nach oben: Dienste [Inhalt][Index]