K udev existují různé alternativy tam venku. Zdá se, že Gentoo může používat něco, co se nazývá mdev . Další možností by bylo pokusit se použít udev předchůdce devfsd . Nakonec můžete pomocí mknod vždy vytvořit všechny soubory zařízení, které potřebujete .
Všimněte si, že s posledně jmenovaným není nutné vytvářet vše při bootování, protože uzly lze vytvořit na disku a ne v dočasném souborovém systému jako u ostatních možností. Samozřejmě ztratíte flexibilitu dynamicky vytvářených souborů zařízení, když je připojen nový hardware (např. USB klíčenka). Věřím, že standardním přístupem v této éře bylo mít každý soubor zařízení, který byste mohli rozumně potřebovat, již vytvořený pod /dev (tj. mnoho souborů zařízení).
Samozřejmě, že obtížnost přimět některý z těchto přístupů k fungování v moderním distru je pravděpodobně poměrně vysoká. Wiki Gentoo zmiňuje potíže při získávání mdev pracovat s desktopovým prostředím (natož mimo Gentoo). Poslední devfsd vydání bylo 2002, netuším, jestli to bude vůbec fungovat s moderními jádry. Ruční vytváření uzlů je pravděpodobně nejschůdnější přístup, ale dokonce i zakázání udev může být problém, zvláště v distos používajícím systemd (udev je nyní součástí systemd , což naznačuje silnou závislost).
Moje rada je držet se udev;)
Moderní linuxová jádra podporují devtmpfs file system , který dynamicky vytváří všechny uzly zařízení, jakmile je jádro objeví. (Ve skutečnosti nejnovější udev vydání vyžadují tento; zjistíte, že udev již nevytváří žádné uzly zařízení, pouze symbolické odkazy.)
Podobně bylo načítání firmwaru přesunuto také do jádra, takže zbývají pouze úlohy udev provádí načítání modulů (podle modalias) a použití oprávnění zařízení a dalších pravidel udev.
Teoreticky by se tedy plně monolitické jádro mělo nabootovat v pohodě bez udev.
Skutečným problémem je však to, co se stane později.
-
Poměrně mnoho programů v uživatelském prostoru se spoléhá na to, že udev udržuje databázi zařízení přístupnou přes
libudev. Zatímco výčet zařízení a poslech přidaných/odebraných událostí lze provést přímo pomocí rozhraní jádra (sysfs a netlink), stále zůstanete bez všech metadat, která jsou připojena různými pravidly udev. -
Pravidla udev také udržují různé "trvalé" symbolické odkazy v
/dev/disk/by-*,/dev/mapper,/dev/input/by-path,/dev/snd/by-path, a tak dále. Pokud máte například připojeny dva disky, není zaručeno, že první bude vždysdanebosdb, ale udev zajišťuje, že symbolické odkazy jsou v/dev/disk/by-uuidbude i nadále ukazovat na ten správný. -
I když jsou uzly zařízení nyní vytvářeny jádrem, a proto už vás to nezajímá, je stále důležité poznamenat, že některé typy zařízení začaly používat dynamicky přidělovaná hlavní/vedlejší čísla, takže i když máte
/dev/fusejako 10 228 a/dev/hpetjako 10 229 dnes, budou mít různá čísla po každém restartu, takže buďdevtmpfsnebo (na starších systémech) je vyžadován program, který poslouchá uevents .
Mnohé z těchto věcí lze snadno provést jinými programy, jako je mdev , samozřejmě. Jde mi o to, že statický /etc/MAKEDEV skript už nebude fungovat...
Takže v podstatě, pokud jde o složitost bootování, udev je dost pravděpodobně nejmenší vašich obav.
Existuje několik alternativ:
- Stačí mít sadu vhodných
chmod,chown,lna podobné příkazy ve skriptu, který se spouští jako součást bootstrapu. - Použijte
systemd-udev, správce plug-and-play, který je součástí projektu systemd. - Použijte Gentoo
eudev, což je větevsystemd-udevod kterého se systemd nyní výrazně odchýlil. - Použijte Devuanův
vdev, což je plug-and-play manažer vyvinutý Judem Nelsonem, který je součástí Devuan. - Použijte
mdev, což na rozdíl od jiné odpovědi není věc Gentoo. Je to správce plug-and-play, který je zabudován do BusyBox. - Použijte Suckless
mdevcož je plug-and-play manažer vyvinutý Dimitrisem Papastamosem. - Použijte
mdevdLaurenta Bercota , což je konfigurace kompatibilní s BusyBoxemmdevale zpracovává vlastní soket a nerozumí protokolu LISTEN.
Všechny tyto, kromě prvního, vyžadují sady pravidel popisujících, jak reagovat na události oznámení jádra o zařízeních. Samozřejmě.
Existují také nástroje, které převezmou programy určené pro /proc/sys/kernel/hotplug , jako jsou dva mdev s, a to je přizpůsobí a serializuje poslechem síťového soketu a poté vytvoří tyto programy:
- Starý
s6-netlink-listenerLaurenta Bercota as6-uevent-spawner netlink-datagram-socket-listenaplug-and-play-event-handlerze sady nástrojů pro nos