Il existe différentes alternatives à udev là-bas. Apparemment Gentoo peut utiliser quelque chose appelé mdev . Une autre option serait d'essayer d'utiliser udev devfsd, prédécesseur de . Enfin, vous pouvez toujours créer tous les fichiers de périphérique dont vous avez besoin avec mknod .
Notez qu'avec cette dernière, il n'est pas nécessaire de tout créer au démarrage puisque les nœuds peuvent être créés sur disque et non dans un système de fichiers temporaire comme avec les autres options. Bien sûr, vous perdez la flexibilité d'avoir des fichiers de périphérique créés dynamiquement lorsqu'un nouveau matériel est branché (par exemple une clé USB). Je crois que l'approche standard à cette époque était d'avoir chaque fichier de périphérique dont vous pourriez raisonnablement avoir besoin déjà créé sous /dev (c'est-à-dire beaucoup de fichiers de périphérique).
Bien sûr, la difficulté à faire fonctionner l'une de ces approches dans une distribution moderne est probablement assez élevée. Le wiki Gentoo mentionne des difficultés à obtenir mdev pour travailler avec un environnement de bureau (et encore moins en dehors de Gentoo). Le dernier devfsd la version était de 2002, je n'ai aucune idée si cela fonctionnera même avec les noyaux modernes. Créer les nœuds manuellement est probablement l'approche la plus viable, mais même désactiver udev peut être un défi, en particulier dans les distos utilisant systemd (udev fait maintenant partie de systemd , ce qui suggère une forte dépendance).
Mon conseil est de rester avec udev;)
Les noyaux Linux modernes prennent en charge le devtmpfs système de fichiers , qui crée dynamiquement tous les nœuds de périphérique dès que le noyau les découvre. (En fait, le dernier udev les versions nécessitent cette; vous constaterez qu'udev ne crée plus de nœuds de périphérique, uniquement des liens symboliques.)
De même, le chargement du micrologiciel a également été déplacé dans le noyau, de sorte que les seules tâches restantes udev les performances sont le chargement du module (selon les modaliases) et l'application des autorisations de l'appareil et d'autres règles udev.
Donc, en théorie, un noyau entièrement monolithique devrait démarrer très bien sans udev.
Cependant, le vrai problème ici est ce qui se passe plus tard.
-
De nombreux programmes de l'espace utilisateur s'appuient sur udev pour maintenir sa base de données d'appareils, accessible via
libudev. Bien que l'énumération des périphériques et l'écoute des événements ajoutés/supprimés puissent être effectuées directement à l'aide des interfaces du noyau (sysfs et netlink), vous vous retrouverez toujours sans toutes les métadonnées associées aux différentes règles udev. -
Les règles udev maintiennent également divers liens symboliques "persistants" dans
/dev/disk/by-*,/dev/mapper,/dev/input/by-path,/dev/snd/by-path, etc. Par exemple, si vous avez deux disques connectés, rien ne garantit que le premier sera toujourssdaousdb, mais udev s'assure que les liens symboliques dans/dev/disk/by-uuidcontinuera à pointer vers la bonne. -
Alors que les nœuds de périphérique sont maintenant créés par le noyau et ne vous concernent donc plus, il est toujours important de noter que certains types de périphériques ont commencé à utiliser des numéros majeurs/mineurs attribués dynamiquement, donc même si vous avez
/dev/fusecomme 10 228 et/dev/hpetcomme 10 229 aujourd'hui, ils vont ont des numéros différents après chaque redémarrage, donc soitdevtmpfsou (sur les anciens systèmes) un programme qui écoute les uevents est requis .
Beaucoup de ces choses pourraient facilement être faites par d'autres programmes tels que mdev , bien sûr. Mon point est qu'un /etc/MAKEDEV statique le script ne fonctionnera plus...
Donc, fondamentalement, en ce qui concerne la complexité du démarrage, udev est probablement le le moins de vos préoccupations.
Il existe plusieurs alternatives :
- Ayez simplement un ensemble de
chmodapproprié ,chown,ln, et des commandes similaires dans un script exécuté dans le cadre du bootstrap. - Utilisez
systemd-udev, le gestionnaire plug-and-play qui fait partie du projet systemd. - Utiliser le
eudevde Gentoo , qui est un fork desystemd-udevdont systemd a maintenant considérablement divergé. - Utiliser le
vdevde Devuan , qui est un gestionnaire plug-and-play développé par Jude Nelson, qui fait partie de Devuan. - Utilisez
mdev, qui contrairement à une autre réponse n'est pas une chose Gentoo. C'est le gestionnaire plug-and-play intégré à BusyBox. - Utiliser Suckless
mdevqui est un gestionnaire plug-and-play développé par Dimitris Papastamos. - Utiliser le
mdevdde Laurent Bercot , dont la configuration est compatible avec lemdevde BusyBox mais fait sa propre gestion des sockets et ne comprend pas le protocole LISTEN.
Tous ces éléments, à l'exception du premier, nécessitent des ensembles de règles décrivant comment réagir aux événements de notification du noyau concernant les périphériques. Évidemment.
Il existe également des outils qui prendront des programmes conçus pour /proc/sys/kernel/hotplug , comme les deux mdev s, et qui les adaptera et les sérialisera en écoutant un socket netlink puis en engendrant ces programmes :
- L'ancien
s6-netlink-listenerde Laurent Bercot ets6-uevent-spawner netlink-datagram-socket-listenetplug-and-play-event-handlerde l'ensemble d'outils nosh