Gibt es eine Dokumentation für udev builtins?

10

Die Manpage für udev erwähnt an mehreren Stellen, dass bestimmte Regeloptionen verwendet werden können, um eingebaute Befehle aufzurufen, die anscheinend in das udev-Programm selbst integriert sind. Ich konnte jedoch keine Referenzdokumentation finden, die klar erklärt, welche udev-Builds verfügbar sind. was sie tun und wie sie verwendet werden.

Ich habe das Web ohne großen Erfolg durchsucht. Weiß jemand, ob es irgendwo eine Referenz gibt, die Details zu diesen eingebauten Befehlen enthält?

Time4Tea
quelle

Antworten:

6

Leider fehlen diese Informationen auf den Manpages, und selbst wenn Sie wissen, wie man sie liest (siehe unten), werden Sie Probleme haben, diese Informationen zu finden.

Die Schönheit der OpenSource hängt jedoch davon ab, dass Sie die Quellen lesen können. Wenn Sie sich die udev-builtin.cQuelldatei im systemd/ udevrepository ansehen und über grundlegende C-Sprachkenntnisse verfügen , finden Sie den folgenden Codeausschnitt: Eine Struktur, die alle vorhandenen integrierten Typen abbildet.

static const struct udev_builtin *builtins[_UDEV_BUILTIN_MAX] = {
#if HAVE_BLKID
        [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid,
#endif
        [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs,
        [UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb,
        [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
        [UDEV_BUILTIN_KEYBOARD] = &udev_builtin_keyboard,
#if HAVE_KMOD
        [UDEV_BUILTIN_KMOD] = &udev_builtin_kmod,
#endif
        [UDEV_BUILTIN_NET_ID] = &udev_builtin_net_id,
        [UDEV_BUILTIN_NET_LINK] = &udev_builtin_net_setup_link,
        [UDEV_BUILTIN_PATH_ID] = &udev_builtin_path_id,
        [UDEV_BUILTIN_USB_ID] = &udev_builtin_usb_id,
#if HAVE_ACL
        [UDEV_BUILTIN_UACCESS] = &udev_builtin_uaccess,
#endif
};

Dies structenthält alle integrierten Typen und ordnet Quelldateien je nach Typ zu. Beispiel:

Verbunden:


quelle
Vielen Dank für Ihre Antwort, obwohl es etwas bizarr erscheint, dass diese Informationen nicht in den Manpages enthalten sind, sondern nur durch Lesen der Quellen gefunden werden können.
Time4Tea
Vielleicht ist es nicht relevant, dies im systemdTeam zu dokumentieren, da all diese Aktionen ziemlich "automatisch" sind (Tastatur prüfen, USB handhaben, Netzwerkverbindung handhaben ...), aber ja, ich stimme Ihnen zu, dass selbst eine einfache Erklärung, was das ist, wäre großartig, um den Zeitverlust beim Online-
9

Wenn Sie nur udevadm test-builtinohne Argumente ausführen, werden die integrierten Befehle zusammen mit einer kurzen Beschreibung für jeden von ihnen aufgelistet:

udevadm test-builtin --help
Aufruf: Test-Builtin
udevadm test-builtin [OPTIONEN] BEFEHL DEVPATH

Testen Sie einen integrierten Befehl.

  -h --help Diese Nachricht drucken
  -V --version Druckversion des Programms

Befehle:
  blkid Dateisystem- und Partitionsprüfung
  btrfs btrfs Volume Management
  hwdb Hardware-Datenbank
  input_id Geräteeigenschaften eingeben
  Tastatur Tastatur-Scan-Code zur Tastenzuordnung
  kmod Kernel Modul Loader
  net_id Netzwerkgeräteeigenschaften
  net_setup_link Konfigurieren Sie die Netzwerkverbindung
  path_id Erstellt einen dauerhaften Gerätepfad
  usb_id USB-Geräteeigenschaften
  uaccess Verwalten der Benutzer-ACL des Geräteknotens

Wie Sie bemerkt haben, wird die Verwendung von integrierten Funktionen im Handbuch leider nur kurz erläutert.
Ein praktisches Beispiel finden Sie in der 50-udev-default.rulesauf Ihrem System verfügbaren Datei (unter /lib/udev/rules.d/), die Folgendes enthält:

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb"
SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id"
ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}"
don_crissti
quelle
Vielen Dank. Ich wusste das nicht und es ist hilfreich. Ich versuche jedoch, ein Hardware-Initialisierungsproblem während des Startvorgangs zu diagnostizieren, und ich denke, es wäre wirklich hilfreich, wenn ich mehr Details darüber verstehen könnte, was diese Funktionen tatsächlich tun .
Time4Tea
udevadm test-builtinan sich hat es nicht für mich getan. Ich musste hinzufügen --help, um eine Liste zu bekommen. Die Antwort wurde bearbeitet, um den Schalter hinzuzufügen!
Codebling