eudev
ist Gentoo’s gepflegter Fork von udev, Systemd’s Device File Manager für den Linux Kernel. [1] Es verwaltet Geräteknoten in / dev und behandelt alle Benutzerbereichsaktionen beim Hinzufügen oder Entfernen von Geräten.
Das Ziel von eudev ist es, eine bessere Kompatibilität mit existierender Software wie OpenRC, Upstart, älteren Kernel, verschiedenen Toolchains und allem, was sonst noch benötigt wird, zu erhalten (aber nicht durch udev unterstützt). Konfigurationen, die systemd verwenden, sollten es nicht verwenden.
hwdb |
Lesen Sie die Anbieter- / Geräte-String-Datenbank und fügen Sie sie zur udev-Datenbank hinzu | local |
introspection |
Fügen Sie Unterstützung für GObject-basierte Introspektion hinzu | global |
kmod |
Aktivieren Sie das Laden von Modulen über libkmod | local |
rule-generator |
Legacy-Regeln Generator-Regeln und Support-Skripte installieren – beachten Sie, dass die Funktionalität innerhalb von sys-fs / udev weggelassen wurde, da es nicht in allen Fällen stabil ist; Benutzung auf eigene Gefahr | local |
selinux |
!!nur für den internen Gebrauch!! Security Enhanced Linux-Unterstützung, diese muss vom selinux-Profil gesetzt werden oder es tritt ein Break auf | global |
static-libs |
Erstellen Sie auch statische Versionen von dynamischen Bibliotheken | global |
test |
Problemumgehung zum Abrufen von Paketen, die zur Ausführung mit FEATURES = test benötigt werden. Portage-2.1.2 behandelt dies intern, also setze es nicht mehr in make.conf / package.use |
Das Verzeichnis / dev
Die meisten Linux-Benutzer verstehen, dass / dev / sda1 nur eine schnelle Möglichkeit darstellt, auf die erste Partition auf der ersten Festplatte zu verweisen, die der Kernel gefunden hat. Das ist ziemlich einfach, oder?
Aber betrachten Sie hotpluggable Geräte wie USB, IEEE1394, Hot-Swap-fähige PCI, etc. Was ist das erste Gerät für jede dieser? Und für wie lange? >Wie werden die anderen Geräte benannt, wenn der erste verschwindet? Wie wirkt sich das auf laufende Transaktionen aus? Wäre es nicht lustig, wenn ein Druckauftrag plötzlich von einem High-End-Laserdrucker auf einen fast toten Matrixdrucker verlagert würde, nur weil jemandes Mutter beschlossen hat, den Stecker des Laserdruckers zu ziehen (was zufällig der erste Drucker war)?
Ein moderner Gerätemanager (einschließlich udev und eudev) kann:
- Im Benutzerbereich ausführbar sein
- Dynamische Erstellung und Entfernung von Gerätedateien regeln
- Bereitstellung einheitlicher Gerätenamen
- Stellt eine Userspace-Anwendungsprogrammschnittstelle (API) bereit.
Jedes Mal, wenn eine Änderung in der Gerätestruktur auftritt, gibt der Kernel ein Ereignis aus, das vom Gerätemanager abgerufen wird. Der Gerätemanager folgt dann den Regeln, die in den Verzeichnissen /etc/udev/rules.d, /run/udev/rules.d und /lib/udev/rules.d deklariert sind. Basierend auf den Informationen, die in dem Ereignis enthalten sind, findet es die Regeln oder Regeln, die es zum Auslösen benötigt, und führt die erforderlichen Aktionen aus. Diese Aktionen können das Erstellen oder Löschen von Gerätedateien beinhalten und das Laden bestimmter Firmware-Dateien in den Kernel-Speicher auslösen.
Um einen Eintrag in die World-Datei zu vermeiden, sollte die Oneshot-Option verwendet werden.
root # emerge --ask --oneshot sys-fs/eudev
RC-Service
Der RC-Name ist udev, nicht eudev. Es muss im sysinit Runlevel registriert werden.
root # rc-update add udev sysinit * rc-update: udev already installed in runlevel `sysinit'; skipping
Ab sys-fs / udev-init-scripts Version 29 sollte udev-trigger auch dem sysinit runlevel hinzugefügt werden.
Die Migration von udev 216 auf eudev 1.10-r2 (März 2015) ist unkompliziert:
root # emerge --ask --oneshot sys-fs / eudev
Falls das System multilib verwendet und beispielsweise das Attribut abi_x86_32 USE gegenüber dem älteren udev-Paket aktiviert ist, dann vergessen Sie nicht, es auch zu ändern:
Wechsel von udev to eudev in /etc/portage/package.use
# sys-fs/udev abi_x86_32 sys-fs/eudev abi_x86_32
Behalten Sie die klassische ‚eth0‘-Benennung bei:
Die vom Kernel bereitgestellten Netzwerkgeräte-Namen eth0, wlan0 usw. können beim Booten (siehe dmesg) durch die Regel /lib/udev/rules.d/80-net-name-slot.rules udev geändert werden. Um die klassische Benennung beizubehalten, kann diese Regel mit einer gleichnamigen leeren Datei im Verzeichnis /etc/udev/rules.d überschrieben werden:
root # touch /etc/udev/rules.d/80-net-name-slot.rules
Alternativ können Sie net.ifnames = 0 zur Kernel-Befehlszeile hinzufügen, die Standardrichtlinie ändern oder eine benutzerdefinierte erstellen.
Eine interessante Ressource im Zusammenhang mit der Netzwerkbenennung ist, I don’t like this, how do I disable this
Verwenden Sie eine neue „vorhersagbare“ Benennung
Die neue Namenskonvention für Netzwerkschnittstellen ist nicht identisch, daher müssen Schnittstellen neu verknüpft werden. Verwenden Sie /etc/init.d/net.lo als Verknüpfungsziel für alle Schnittstellennamen, die hinzugefügt werden müssen. Stellen Sie sicher, dass <Schnittstellenname> in den folgenden Befehlen durch die im System vorhandenen Ethernet-Schnittstellennamen ersetzt wird. Mit dem Befehl ifconfig kann festgestellt werden, welche Schnittstellen existieren
user $ ifconfig
Erstellen Sie symbolische Links für die vorhandenen Schnittstellen in den Verzeichnissen /etc/init.d/ und /etc/conf.d/:
root # ln -s /etc/init.d/net.lo /etc/init.d/net.<interface_name>
Fügen Sie das / die Skript (e) dem Standard-Runlevel hinzu, damit die Schnittstelle (n) automatisch gestartet werden:
root # rc-update add net.<interface_name> default
Fehlerbehebung
Verwenden von udevadm
Starten Sie udevadm Monitor und sehen Sie, was passiert:
user $ udevadm Monitor
Rufen Sie die Geräteinformationen mithilfe von udevadm-Informationen ab, gefolgt vom Gerätepfad:
udevadm info -p /devices/pci0000:00/0000:00:1d.7
Rufen Sie den Gerätepfad unter Verwendung seines Namens ab:
user $ devadm info -q path -n input/mouse1 /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3.4/1-3.4:1.0/0003:46D:C404.0006/input/input24/mouse1
Testen Sie einen Ereignislauf mit udevadm test, gefolgt vom Gerätepfad, für den ein Ereignis getestet werden soll:
user $ udevadm test /devices/pci0000:00/0000:00:1d.7
Um eine Liste aller udevadm-Befehle zu erhalten:
user $ udevadm -h
Quellen:
https://wiki.gentoo.org/wiki/Udev
https://wiki.gentoo.org/wiki/Eudev
https://forums.gentoo.org/viewtopic-t-966786-start-0.html
https://forums.gentoo.org/viewtopic-p-7712064.html