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 Tupeln 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"))
Liefert einen Dienst, der den Rechnernamen (den „Host“-Namen des Rechners) als Name festlegt.
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
Liefert einen Dienst, der die Benutzeranmeldung möglich macht. Dazu
verwendet er die angegebene Konfiguration, ein
<login-configuration>
-Objekt, das unter anderem die beim Anmelden
angezeigte Mitteilung des Tages („Message of the Day“) festlegt.
Dies ist der Datentyp, der die Anmeldekonfiguration repräsentiert.
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.
Liefert einen Dienst, der mingetty nach den Vorgaben der Konfiguration
ausführt, einem <mingetty-configuration>
-Objekt, das unter anderem
die Konsole (das „tty“) festlegt, auf der mingetty laufen soll.
Dieser Datentyp repräsentiert die Konfiguration von Mingetty, der vorgegebenen Implementierung zur Anmeldung auf einer virtuellen Konsole.
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
)Ist dies auf #t
gesetzt, wird der Bildschirm nach der Abmeldung
nicht gelöscht.
mingetty
(Vorgabe: mingetty)Welches Mingetty-Paket benutzt werden soll.
Liefert einen Dienst, um agetty entsprechend der Konfiguration
auszuführen, welche ein <agetty-configuration>
-Objekt sein muss, das
unter anderem festlegt, auf welchem tty es laufen soll.
Dies ist der Datentyp, der die Konfiguration von agetty repräsentiert, was
Anmeldungen auf einer virtuellen oder seriellen Konsole implementiert. Siehe
die Handbuchseite agetty(8)
für mehr Informationen.
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
).
Liefert einen Dienst, um
kmscon entsprechend
der Konfiguration auszuführen. Diese ist ein
<kmscon-configuration>
-Objekt, das unter anderem angibt, auf welchem
tty es ausgeführt werden soll.
Dieser Datentyp repräsentiert die Konfiguration von Kmscon, die das Anmelden auf virtuellen Konsolen ermöglicht.
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.
Daemon (nscd) von libc mit der angegebenen Konfiguration
ausführt – diese muss ein <nscd-configuration>
-Objekt
sein. Siehe Name Service Switch für ein Beispiel.
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.
Dies ist der vorgegebene Wert für die <nscd-configuration>
(siehe
unten), die nscd-service
benutzt. Die Konfiguration benutzt die
Zwischenspeicher, die in %nscd-default-caches
definiert sind; siehe
unten.
Dieser Datentyp repräsentiert die Konfiguration des Name Service Caching Daemon (kurz „nscd“).
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: "/var/log/nscd.log"
)Name der nscd-Protokolldatei. Hierhin werden Ausgaben zur Fehlersuche
geschrieben, falls debug-level
echt positiv ist.
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.
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.
Liefert einen Dienst, der einen syslog-Daemon entsprechend der Konfiguration ausführt.
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.
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
ci.guix.gnu.org
und bordeaux.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 ci.guix.gnu.org
und bordeaux.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 ci.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.
max-silent-time
(Vorgabe: 0
)timeout
(Vorgabe: 0
)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.
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.
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.
chroot-directories
(Vorgabe: '()
)Eine Liste von dateiartigen Objekten oder Zeichenketten, die Verzeichnisse anzeigen, die im Erstellungs-Daemon zusätzlich nutzbar sind.
'()
]Führt udev aus, was zur Laufzeit Gerätedateien ins Verzeichnis
/dev einfügt. udev-Regeln können über die rules-Variable als
eine Liste von Dateien übergeben werden. Die Prozeduren udev-rule
,
udev-rules-service
und file->udev-rule
aus (gnu services
base)
vereinfachen die Erstellung einer solchen Regeldatei.
The herd rules udev
command, as root, returns the name of the
directory containing all the active udev rules.
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\"")))
udev-service-type
um die Regeln erweitert und den Dienst vom
Typ account-service-type
um die Gruppen in Form von
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 eine udev-Datei 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"))))))
Zusätzlich können Guix-Paketdefinitionen unter den rules aufgeführt
werden, um die udev-Regeln um diejenigen Definitionen zu ergänzen, die im
Unterverzeichnis lib/udev/rules.d des jeweiligen Pakets aufgeführt
sind. Statt des bisherigen Beispiels zu file->udev-rule hätten wir
also auch das Paket android-udev-rules benutzen können, das in Guix im
Modul (gnu packages android)
vorhanden ist.
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.
rngd
-Programm aus den rng-tools benutzt, um das mit
device bezeichnete Gerät zum Entropie-Pool des Kernels
hinzuzufügen. Dieser Dienst wird fehlschlagen, falls das mit device
bezeichnete Gerät nicht existiert.
'()
]Liefert einen Dienst, der eine Konfigurationsdatei für das
pam_limits
-Modul installiert. Diese Prozedur nimmt optional eine
Liste von pam-limits-entry
-Werten entgegen, die benutzt werden
können, um ulimit
-Limits und nice
-Prioritäten für
Benutzersitzungen festzulegen.
Die folgenden Limit-Definitionen setzen zwei harte und weiche Limits für
alle Anmeldesitzungen für Benutzer in der realtime
-Gruppe.
(pam-limits-service
(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:
(pam-limits-service
(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.
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]