Portál AbcLinuxu, 5. května 2025 11:59
Udev před přibližně šesti lety definitivně nahradil starého, jaderného správce adresáře /dev zvaného devfs.
Tahle věta je IMHO trochu zavádějící, protože vzbuzuje představu, že se devfs
opravdu používal. Ve skutečnosti ho ale z běžných distribucí používal pouze Mandrake, takže to byla spíš taková slepá ulička.
/dev
jako normální součást filesystému a v něm statické soubory vytvářené skriptem při instalaci. Když bylo potřeba něco upravit (což bylo jen velmi zřídka), provádělo se to přímo příkazem mknod
- buď to udělal přímo správce systému nebo post-instalační skript balíčku. Takové řešení mělo samozřejmě spoustu nedostatků, takže se hledaly způsoby, jak spravovat obsah /dev
dynamicky, aby opravdu odpovídal tomu, co v počítači je, a umožňoval mít jména zařízení persistentní. Virtuální filesystém devfs
byl (v Linuxu) první takový pokus, ale měl řadu chyb, proto se nikdy moc neprosadil a nakonec vznikl udev založený na úplně jiné koncepci.
Podobné chování je u názvů síťových rozhraní. Že má v těchto názvech prsty udev se člověk bohužel často dozví, až když hledá důvod, proč je jeho síťová karta při startu přejmenována např. z eth0 na eth3To ma nemilo prekvalipo v Debiane, kde som za nic na svete nevedel prist preco pri vymene sietovky mi ta nie a nie fungovat, ked pri starsej distribucii Debianu to fungovalo. Po hodinach patrania som na to prisiel, ze to sposobil udev a jeho pravidlo. Osobne si myslym, ze to mohli lepsie postavit aby sa chovanie udev podobalo tomu, co bolo pred tym. Ak mam jednu sietovku, tak preco po jej vymene to nemoze byt stale eth0. Tak mam za bezpecene, ze siet mi bude fungovat stale(samozrejme ak mam ovladac). Teraz to tak nieje a ludom, ktory sa s tym stretnu prvy raz to zbytocne komplikuje zivot. To nehovorim o BFU, ktory to nema sancu zvladnut. Neviem ako su na tom ine distribucie.Udev totiž pro každé síťové rozhraní, co je kdy připojeno do systému, trvale vyhradí název.
Objavi sa to povodne zariadenie a pri deli sa mu najblizsie volne.
Jenže ta persistentní jména mají zajistit právě to, aby se tohle nestalo.
Sposobuje to aj problem pri klonovani systemu.Tak klonování systémů je obecně problém kvůli chybějícímu všeobjímajícímu seal/sysprep postupu. Když je potřeba dělat často nové systému, je podle mě lepší zkousnout kulku a nasadit něco, co je naprovižnuje od nuly.
Podobné chování je u názvů síťových rozhraní. Že má v těchto názvech prsty udev se člověk bohužel často dozví, až když hledá důvod, proč je jeho síťová karta při startu přejmenována např. z eth0 na eth3Udev totiž pro každé síťové rozhraní, co je kdy připojeno do systému, trvale vyhradí název. Tyto názvy jsou pak zapisovány do
/etc/udev/rules.d/70-persistent-net.rules
. Tento soubor můžete dle své vůle upravovat, nebo smazat.
Tady by bylo vhodné upřesnit, že to udev nedělá sám od sebe, ale opět na základě nějakého jiného souboru s pravidly (a za pomoci helperů). Např. v OpenSuSE 12.2 je to /lib/udev/rules.d/75-persistent-net-generator.rules
Pokud tam ten generátor není, tak tam není ani ten soubor s pravidly, o kterém píše autor.
Přejmenovávání na jména, která by mohla kolidovat s těmi automaticky generovanými, se obecně moc nedoporučuje (ať už u blokových/znakových zařízení nebo u síťových rozhraní). On i ten generátor je trochu komplikovanější a snaží se potenciální kolize řešit, ale stejně je to náchylné na race conditions. Některé zdroje jdou dokonce tak daleko, že doporučují NAME="..."
nepoužívat vůbec, nechat všemu původní jména a jen přidávat symbolické linky. Ale to zrovna u síťových rozhraní nejde.
Jenže leckdy tam ten generator není ... např. Archlinux ho už nemá.
A ani nikdy neměl
Tak. Být tu Flattr tlačítko, tak už tam má hlas.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.