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


8.8.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.

Scheme-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:

Scheme-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 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")))

Wenn Sie zum Beispiel auch /usr/bin/env 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")))

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).

Scheme-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"))
Scheme-Prozedur: host-name-service Name

Liefert einen Dienst, der den Rechnernamen (den „Host“-Namen des Rechners) als Name festlegt.

Scheme-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
Scheme-Prozedur: login-service Konfiguration

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.

Datentyp: login-configuration

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.

Scheme-Prozedur: mingetty-service Konfiguration

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.

Datentyp: mingetty-configuration

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 Anmelde-Shell gestartet wird.

mingetty (Vorgabe: mingetty)

Welches Mingetty-Paket benutzt werden soll.

Scheme-Prozedur: agetty-service Konfiguration

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.

Datentyp: agetty-configuration

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.

Scheme-Prozedur: kmscon-service-type Konfiguration

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.

Datentyp: kmscon-configuration

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.

kmscon (Vorgabe: kmscon)

Das Kmscon-Paket, das benutzt werden soll.

Scheme-Prozedur: nscd-service [Konfiguration] [#:glibc glibc] [#:name-services '()] Liefert einen Dienst, der den Name Service Cache

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.

Scheme-Variable: %nscd-default-configuration

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.

Datentyp: nscd-configuration

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.

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 The GNU C Library Reference Manual).

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.

Scheme-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.

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.

Scheme-Prozedur: syslog-service Konfiguration

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.

Scheme-Variable: guix-service-type

Dies ist der Typ für den Dienst, der den Erstellungs-Daemon guix-daemon ausführt (siehe Aufruf des 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 des 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 zu autorisieren (siehe Substitute).

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 Aufruf von guix archive). Der vorgegebene Inhalt ist der Schlüssel von ci.guix.gnu.org (siehe Substitute).

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.

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: 'bzip2)

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

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.

Scheme-Prozedur: udev-service [#:udev eudev #:rules '()]

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 und file->udev-rule aus (gnu services base) vereinfachen die Erstellung einer solchen Regeldatei.

Scheme-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\"")))

Der Befehl herd rules udev liefert, wenn er als Administratornutzer „root“ ausgeführt wird, Namen und Verzeichnis von allen aktiven udev-Regeln.

Hier zeigen wir, wie man den vorgegebenen udev-service um sie erweitern kann.

(operating-system
 ;; …
 (services
 (modify-services %desktop-services
   (udev-service-type config =>
     (udev-configuration (inherit config)
      (rules (append (udev-configuration-rules config)
                     (list %beispiel-udev-rule))))))))
Scheme-Prozedur: file->udev-rule [Dateiname Datei]

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 des operating-system-Verbundsobjekts 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")))))

  (groups (cons (user-group (system? #t) (name "adbusers"))
                %base-groups))

  ;; …

  (services
   (modify-services %desktop-services
     (udev-service-type
      config =>
      (udev-configuration (inherit config)
                          (rules (cons android-udev-rules
                                       (udev-configuration-rules config))))))))
Scheme-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.

Scheme-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.

Scheme-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.

Scheme-Variable: guix-publish-service-type

Dies ist der Diensttyp für guix publish (siehe Aufruf von guix publish). 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 Aufruf von guix archive). 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.

compression (Vorgabe: '(("gzip" 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.

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.

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.

Scheme-Prozedur: rngd-service [#:rng-tools rng-tools] [#:device "/dev/hwrng"] Liefert einen Dienst, der das

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.

Scheme-Prozedur: pam-limits-service [#:limits '()]

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.


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