Ve jmenu zjednoduseni obsluhu se delaji veci tak slozite, ze obsluha nakonec nevi co presne se bude dit, hlavne se se to stane automaticky.
Jenomze vse neni tak ruzove. Ruze je to jen po tu dobu, kdy to automaticky funguje a to jen pro toho kdo se "nevrta".
Pokud je problem je to prusvih. Priklad: cislovani DVB zarizeni. Z mnoha duvodu je vhodne vedet ktere zarizeni je ktere stejne jako u sitovych karet. Napriklad ze kazda DVB-S karta je pripojena na jiny satelit nebo protoze jedna je DVB-T druha DVB-S. Co s tim udela udev? Pri kazdem startu je seradi vicemene nahodne a na rozdil od sitovek zatim neni zpusob jak to ocislovat rucne. Jedine dat vsechen tento HW na blacklist a pak zavest scriptem pomoci modprobe. Pokud jsou karty stejneho typu, pak uprimnou soustrast.
Pro pripad DVB to udev ani naznakem nepodporuje (pokud se to za poslednich par tydnu nezmenilo, koukal jsem do kodu) Takze je to fakt problem, staci pouzit google a resi to mnoho lidi.
Uznavam, ze systemove reseni je pomoci udev mozne, ale pomoci blacklistu je to jednodussi.
Ale nejde tady konkretne o DVB, jde o ten fakt, ze nastroj ktery ma veci zjednodusit je neuveritelne komplikovany pokud ho chcete pouzit. To je spatne.
Cozpak nejde matchovat podle PCI_SLOT_NAME? To by melo jit na vsech PCI zarizeni.
Jinak matchovani sitovek podle MAC adresy ve skutecnosti nedela UDEV, ale podpurny program, ktery se na to z UDEVu spousti (neni soucasti udevu). Podobne by melo jit napsat trivialni podpurny program (snad by stacil i shellovy skript) pro DVB zarizeni a nastavit ho v UDEVu jako podpurny program pro celou tridu zarizeni.
> Ale nejde tady konkretne o DVB, jde o ten fakt, ze nastroj ktery ma veci zjednodusit je neuveritelne komplikovany pokud ho chcete pouzit.
Rekl bych, ze UDEV sam o sobe je pomerne jednoduchy. Neuveritelne komplikovane jsou ale defaultni konfiguraky UDEVu, ktere se dodavaji s ruznymi distribucemi. Sam pouzivam rucne zkompilovany UDEV s minimalnim konfigurakem.
(presnou hodnotu KERNELS zjistite pomoci
# udevinfo -a -p `udevinfo -q path -n /dev/dvb/adapter0/frontend0`
nebo jiny adapter). A pak
# udevtrigger
a mel by vzniknout symlink /dev/mojekarta, ktery bude vzdy ukazovat na frontend0 karty zastrcene v PCI slotu 0b, at uz se najde v jakemkoli poradi.
Co je na tom sloziteho - proste popisete jak dane zarizeni vyhledat, a jaky symlink na ne pak udelat. O moc kratsi to uz byt nemuze.
Toereticky by tak nejak chodit melo. Ale dalsi SW hleda DVB karty na /dev/dvb/adapter....
Takze se tomu museji dat jina jmena a pak linky sem, je to jen detail. Teoreticky to jde, prakticky jsem to nebyl schopen za tech nekolik hodin rozchodit. Mozna to zkusim nekdy jeste jednou, dnes uz vim o udev vice nez kdyz jsem to delal poprve.
V linuxu nejsem zadny novacek (od r 1995), neni pro mne problem napsat driver pro specielni HW do linux kernelu, ale tohle me jednoduche rozhodne neprijde.
Cil je aby kazda konkretni karta dostala pokazde stejne cislo. Problem je v tom, ze u udev nelze definovat casove poradi nacitani prislusnych driveru, pri kazdem startu se to lisi. U sitovek se to resit tak ze cislo je prirazene nezavisle na poradi v jakem se pridavaji zarizeni pri startu. Ale DVB drivery na to nejsou pripraveny. Takze prvni zarizeni dostane cislo 0 (jde i minor number) nezavisle na udev a udev k tomu priradi pouze nazev /dev/dvb/adapter0. Jde o to aby karta byla na standardnim miste a v pripade vice karet se pri kazdem restartu nemenilo poradi.
Jedine reseni je dat tomu uplne jine jmeno a a ty spravne dal jako symlink.
Aha, je-li cilem, aby kazda karta dostala stejne cislo, musite je teda
vsechny popsat v souboru *.rules s malym cislem na zacatku, pouzit NAME= misto SYMLINK+= a to by melo byt vse. Pripadne jeste muzete udelat vseobjimajici
pravidlo, ktere Vam vytvori /dev/dvb-dynamic/adapterN pro ty ostatni karty
co takto nepopisete.
Nebo teda to resit externim programem a uchovavanim stavu (podivejte se napriklad do Fedory 8 jak resi perzistentni jmena ethernetovych karet podle
MAC adres) - toto pouzijete pokud Vam nezalezi na tom, aby konkretni karta
mela explicitne dane poradi, ale aby pri prvnim nalezeni te karty se pridelilo
_nejake_ cislo, a to uz mela naporad.
Tohle neni nic co by v udev neslo (dokonce ani nic co by v udev slo jen nejak extremne slozite).