Es gibt verschiedene Alternativen zu udev
da draußen. Anscheinend kann Gentoo etwas benutzen, das man nennt mdev
. Eine andere Möglichkeit wäre der Versuch, udev
den Vorgänger zu verwenden devfsd
. Schließlich können Sie immer alle Gerätedateien erstellen, die Sie benötigen mknod
.
Beachten Sie, dass bei letzterem nicht alles beim Booten erstellt werden muss, da die Knoten auf der Festplatte und nicht wie bei den anderen Optionen in einem temporären Dateisystem erstellt werden können. Natürlich verlieren Sie die Flexibilität, Gerätedateien dynamisch zu erstellen, wenn neue Hardware (z. B. ein USB-Stick) angeschlossen wird. Ich glaube, der Standardansatz in dieser Ära war, dass alle Gerätedateien, die Sie vernünftigerweise benötigen, bereits erstellt wurden /dev
(dh viele Gerätedateien).
Natürlich ist die Schwierigkeit, einen dieser Ansätze in einer modernen Distribution zum Laufen zu bringen, wahrscheinlich ziemlich groß. Das Gentoo-Wiki erwähnt Schwierigkeiten beim mdev
Arbeiten mit einer Desktop-Umgebung (geschweige denn außerhalb von Gentoo). Die letzte devfsd
Veröffentlichung war 2002, ich habe keine Ahnung, ob es überhaupt mit modernen Kerneln funktionieren wird. Das manuelle Erstellen der Knoten ist wahrscheinlich der sinnvollste Ansatz, aber selbst das Deaktivieren udev
könnte eine Herausforderung darstellen, insbesondere bei der Verwendung von Distos systemd
( udev
ist jetzt Teil von systemd
, was auf eine starke Abhängigkeit hindeutet).
Mein Rat ist dabei zu bleiben udev
;)
udev
sollte ohne einwandfrei funktionierensystemd
- beide sind nur innerhalb der gleichen Code-Basis entwickelt,udev
können aber unabhängig davon erstellt und ausgeführt werden.udev
schon viel länger alssystemd
eh und je. Die Frage ist, kann mansystemd
ohne arbeitenudev
? Ich vermute, dass Sie zumindest mit einer--without-udev
Option neu kompilieren müssten .Moderne Linux-Kernel unterstützen das
devtmpfs
Dateisystem (nicht zu verwechseln mit dem altendevfs
) , das alle Geräteknoten dynamisch erstellt, sobald der Kernel sie erkennt. (Tatsächlich erfordern die neuestenudev
Versionen dies. Sie werden feststellen, dass udev keine Geräteknoten mehr erstellt, sondern nur noch Symlinks.)Ebenso wurde das Laden der Firmware in den Kernel verlagert, sodass die einzigen verbleibenden Aufgaben
udev
das Laden von Modulen (entsprechend den Modalitäten) und das Anwenden von Geräteberechtigungen und anderen udev-Regeln sind.Theoretisch sollte ein vollständig monolithischer Kernel also einwandfrei ohne udev booten .
Das eigentliche Problem hierbei ist jedoch, was später passiert.
Nicht wenige Userspace-Programme verlassen sich darauf, dass udev seine Gerätedatenbank verwaltet, auf die über zugegriffen werden kann
libudev
. Während das Auflisten von Geräten und das Abhören von hinzugefügten / entfernten Ereignissen direkt über die Kernel-Schnittstellen (sysfs und netlink) erfolgen kann, bleiben Ihnen immer noch alle Metadaten ohne, die verschiedene udev-Regeln angefügt haben.udev - Regeln auch verschiedene "persistent" Symlinks in aufrechtzuerhalten
/dev/disk/by-*
,/dev/mapper
,/dev/input/by-path
,/dev/snd/by-path
, und so weiter. Wenn Sie beispielsweise zwei Festplatten angeschlossen haben, gibt es keine Garantie, dass die erste immersda
oder istsdb
, aber udev stellt sicher, dass die Symlinks in/dev/disk/by-uuid
weiterhin auf die richtige verweisen.Obwohl Geräteknoten jetzt vom Kernel erstellt werden und daher nicht mehr Ihr Anliegen sind, ist es dennoch wichtig zu beachten, dass einige Gerätetypen dynamisch zugewiesene Haupt- / Nebennummern verwenden, obwohl Sie heute
/dev/fuse
10.228 und/dev/hpet
10.229 haben nach jedem Neustart unterschiedliche Nummern haben, daher ist entwederdevtmpfs
oder (auf älteren Systemen) ein Programm erforderlich , das Ereignisse abhört .Viele dieser Dinge könnten leicht von anderen Programmen erledigt werden, wie
mdev
natürlich. Mein Punkt ist, dass ein statisches/etc/MAKEDEV
Skript nicht mehr funktionieren wird ...Wenn es also um die Boot-Komplexität geht, ist udev mit ziemlicher Wahrscheinlichkeit das geringste Problem für Sie.
quelle
Es gibt verschiedene Alternativen:
chmod
,chown
,ln
, und ähnlichen Befehlen in einem Skript , das als Teil des Bootstrap ausgeführt wird.systemd-udev
den Plug-and-Play-Manager, der Teil des systemd-Projekts ist.eudev
, eine Abzweigung,systemd-udev
von der systemd jetzt erheblich abgewichen ist.vdev
, einen Plug-and-Play-Manager, der von Jude Nelson entwickelt wurde und Teil von Devuan ist.mdev
, was im Gegensatz zu einer anderen Antwort keine Gentoo-Sache ist. Es ist der Plug-and-Play-Manager, der in BusyBox integriert ist .mdev
, einen Plug-and-Play-Manager, der von Dimitris Papastamos entwickelt wurde.mdevd
, der mit der BusyBox-Konfiguration kompatibel istmdev
, jedoch eine eigene Socket-Behandlung durchführt und das LISTEN-Protokoll nicht versteht.Abgesehen von der ersten sind für alle Regeln erforderlich, die beschreiben, wie auf Kernelbenachrichtigungsereignisse für Geräte zu reagieren ist. Offensichtlich.
Es gibt auch Tools, die Programme verwenden, für die sie entwickelt wurden
/proc/sys/kernel/hotplug
, wie z. B. die beidenmdev
s, und die sie anpassen und serialisieren, indem sie einen Netlink-Socket abhören und diese Programme dann erzeugen:s6-netlink-listener
unds6-uevent-spawner
netlink-datagram-socket-listen
undplug-and-play-event-handler
aus dem nosh toolsetquelle
udev? Die beste Alternative ist, es nicht zu benutzen. Und wenn Sie lernen, wie man es nicht benutzt, werden Linux und die * NIX-Welt logischer.
Die beste langfristige Alternative ist die Verwendung statischer Geräte (siehe Hinweis). Wenn Sie den Treiber haben, verwaltet der Linux-Kernel das Hot-Plugging. Ich bevorzuge es, nie udevd laufen zu lassen.
dbus ist eine andere sache. Es verlangsamt Ihr System, aber die sich ständig verändernde Welt der Script-Leute liebt es. Viele Dinge, an die Sie gewöhnt sind, wie z. B. Webbrowser oder Anwendungen mit Skript-Backends, müssen repariert werden (gestartet oder neu erstellt werden, ohne dass das Zeug vorhanden ist, oder für eine andere Anwendung gespeichert werden muss).
Hinweis: Wenn Sie nur ein Flash-Laufwerk oder ein DVD-Gerät anschließen, verwenden Sie
dmesg|tail
, um den Namen des anzuhängenden Geräts anzuzeigen. Zu lernen, wann ein Gerät ein Charakter oder ein Blockgerät ist, ist grundlegendes Systemwissen in der Welt der Computerhardware. In Linux ist es Open Source, lesen Sie viel über Linux, nicht nur eingebettet . Dies ist das Beste für ein umfassenderes Verständnis der einfachen Logik (nicht der Philosophie) aller * NIXs wie Linux (Solaris, HPUX, AIX usw.).Udev, dbus, gconf / dconf, systemd, gnome-shell, gnome, glib, mono und fedora sind für menschen mit viel zeit auf der hand, die kein rtfm können oder ein automatisch aktualisiertes wirklich schickes aber langsameres wollen als Melasse, Buggy, auf halbem Weg dahin Linux. (Ein wirklich schrecklicher Ort, schauen Sie sich im Internet nach Unmengen ähnlicher Erlebnisse um).
Das System bootet dann mit udevd. Es wird jedoch behauptet, dass udev notwendig ist, da
will change
beim Neustart kleinere Gerätenummern vorhanden sind . Udevs Daseinsberechtigung scheint sich auf Schritt und Tritt zu widersprechen. Und wo sich die Dateien befinden, scheint immer falsch zu sein, egal wen Sie konsultieren. Traue oder freedesktop.org nicht.Abgesehen davon, dass udev von diesem als systemd bekannten Horror erfasst wird, weiß ich nicht, was man mit einem / etc / udev-Müll macht. Und es ist verrückt zu sagen, dass das Schreiben von udev-Regeln irgendwie besser ist als alles andere. Die Gentoo-Leute scheinen daran festhalten zu wollen und müssen nicht systemd haben, also haben sie es auf eudev geschoben.
Wenn Sie ein unglaublich schnelles System ohne böse Überraschungen wollen, sollten Sie die Linux-Grundlagen verwenden.
quelle
udev
Funktionalität behandelt werden. Es ist in gewisser Weise auch in Ordnung, die Stärken dieses alternativen Ansatzes herauszustellen .