Udev (rusă)

Această pagină are nevoie de o escortă

Prin funcționalitate, udev înlocuiește hotplug și hwdetect.

„Udev -. Managerul dispozitivului la noile versiuni ale kernel-ului Linux, care este succesorul lui devfs, hotplug și HAL sarcina sa principală - serviciile de fișiere dispozitiv în directorul / dev și prelucrarea tuturor acțiunilor efectuate în spațiul utilizator, atunci când adăugarea / deconectarea dispozitivelor externe, inclusiv descărcarea firmware-ului. "







Pentru a asigura o performanță mai bună, udev încarcă modulele kernelului în mod asincron, adică în paralel, mai degrabă decât secvențial. Acest lucru are dezavantajul său: udev nu păstrează ordinea încărcării modulelor, poate diferi de la descărcare la descărcare. În cazul în care computerul are mai multe dispozitive blocate, acest lucru poate duce la numiri aleatoare aleatoare. De exemplu, dacă două hard-discuri sunt conectate la computer, / dev / sda poate deveni accidental / dev / sdb. Pentru mai multe informații despre acest lucru, vedeți mai jos.

În momentul de față, udev este inclus în pachetul sistemat, iar sistemele Arch Linux sunt instalate în mod implicit. A se vedea, de asemenea, systemd-udevd.service (8) pentru mai multe informații.

Despre regulile udev

Fișierele de reguli udev sunt stocate în directorul /etc/udev/rules.d/. numele lor trebuie să se termine cu .rule. Regulile furnizate de alte pachete sunt plasate în directorul /usr/lib/udev/rules.d/. În acest caz, dacă regulile din aceste directoare au același nume, prioritatea este dată fișierelor din /etc/udev/rules.d/.

Scrierea propriilor reguli

Important: Pentru a monta dispozitive amovibile, nu apelați mount din regulile udev. Dacă utilizați sisteme de fișiere FUSE, veți primi o eroare "Transport final not connected". Utilizați udisks în schimb. care efectuează corect montarea automată.

  • Pentru a afla cum să vă creați propriile reguli, consultați pagina de pe regulile de scriere pe Internet udev.
  • Un exemplu de regulă udev poate fi găsit în secțiunea Exemple din aceeași pagină.

Mai jos este un exemplu de regulă care creează o legătură simbolică / dev / video-cam1. când o cameră web este conectată la computer. De exemplu, am aflat că fișierul device / dev / video2 a fost creat pentru camera conectată. Motivul pentru care creăm această regulă este că data viitoare când este încărcată o cameră web, se poate atribui un alt nume, de exemplu, / dev / video0.

Notă: utilitate udevadm afișează informații despre dispozitivele, dispozitive deoarece menționate (/ dev / video2), și apoi, ca urmare a lanțului de dispozitive mamă, emite informația despre ele. Printre altele, toate atributele posibile ale dispozitivului sunt afișate într-un format compatibil cu udev. Regula de potrivire poate fi creată pe baza acestor atribute ale dispozitivului în sine sau a atributelor dispozitivului părinte.

Utilizăm setările camerei web KERNEL == "video2" și SUBSYSTEM == "video4linux". apoi luăm identificatorii producătorului și produsele dispozitivului parental USB SUBSYSTEMS == "usb". ATTRS == "05a9" și ATTRS == "4519" pentru potrivire:

În exemplu, am creat o legătură simbolică folosind parametrul SYMLINK + = "video-cam1". De asemenea, putem seta cu ușurință proprietarul (OWNER = "john"), grup (GROUP = "video") sau setați permisiunile pentru link (MODE = "0660"). Cu toate acestea, dacă intenționați să creați o regulă care face ceva la înlăturarea dispozitivului, rețineți că atributele dispozitivului pot deveni indisponibile. În acest caz, trebuie să utilizați un set special de variabile de mediu. Pentru a afișa aceste variabile, executați următoarea comandă la deconectarea dispozitivului:

În ieșirea comenzii veți vedea valorile parametrilor dispozitivului, de exemplu, ID_VENDOR_ID și ID_MODEL_ID. care corespund identificatorilor utilizați anterior producătorului și produsului. Regula care folosește variabilele de mediu ale dispozitivului poate arăta astfel:

Lista atributelor dispozitivului

Pentru a afișa toate atributele dispozitivului pe care le puteți utiliza în scrierea regulilor udev. urmați:

Înlocuiți device_name cu numele curent al fișierului de dispozitiv, de exemplu, / dev / sda sau / dev / ttyUSB0.

Dacă nu cunoașteți numele fișierului dispozitivului, puteți afișa și toate atributele pe o anumită cale a sistemului:

Verificarea regulilor înainte de descărcare

De asemenea, puteți specifica o cale directă de sincronizare către dispozitiv:

Descărcați noi reguli

udev este capabil să detecteze automat modificările aduse fișierelor, astfel încât modificările să aibă efect imediat, fără a fi nevoie să reporniți udev. Cu toate acestea, noile reguli nu vor fi aplicate imediat dispozitivelor deja conectate. Dispozitivele cu dispozitive cu comutare la cald, cum ar fi dispozitivele USB, pot fi reconectate pur și simplu pentru a le aplica noi reguli. De asemenea, puteți reporni modulele de kernel ohci-hcd și ehci-hcd. care va reseta automat toate driverele pentru fiecare dispozitiv USB.

Dacă regulile nu se repornesc automat, executați:

Pentru a forța manual udev să aplice regulile dvs., executați:

Sfaturi și trucuri

Acces la programatori și porturi virtuale COM

Următorul set de reguli va permite utilizatorilor obișnuiți (membrii grupului de utilizatori) să acceseze programele USB pentru microcontrolerele AVR USBtinyISP (engleză). porturi virtuale COM (convertoare de interfață USB <-> UART) pe baza cipului popular CP2102 (în limba engleză). programatori Atmel AVR Dragon (engleză) și Atmel AVR ISP mkII (engleză).







Executarea comenzilor la conectarea dispozitivelor USB

Executarea comenzilor la conectarea unui monitor VGA

Creați o regulă /etc/udev/rules.d/95-monitor-hotplug.rules cu următorul conținut pentru a porni arandr atunci când conectați un monitor VGA:

Identificați noile unități eSATA

Dacă unitatea eSATA nu a fost detectată de sistem când este conectată, puteți reporni sistemul fără a deconecta cablul dispozitivului sau, dacă nu doriți să reporniți, efectuați:

O altă opțiune este folosirea utilitarului AUR scsiadd de la AUR.

Unitatea ar trebui să apară în / dev. În caz contrar, încercați:

înainte și după comenzile de mai sus și pentru a vedea dacă se întâmplă ceva.

Identificați porturile interne SATA ca fiind externe

Dacă conectați un adaptor eSATA, sistemul va mai dispune de acesta ca o unitate internă SATA. GNOME și KDE vor solicita în mod constant o parolă de administrator. Următoarea regulă marchează toate porturile SATA specificate ca porturi eSATA, astfel încât utilizatorii obișnuiți pot conecta unitatea lor eSATA la acest port ca o unitate USB fără a solicita o parolă de administrator:

Notă: Puteți afla valoarea corectă pentru parametrul DEVPATH utilizând următoarele comenzi (în loc de / dev / sdb, specificați numele dispozitivului dvs.):

Instalarea numelor persistente ale dispozitivelor

Din cauza modului asincronic de încărcare a modulelor, acestea sunt inițializate într-o ordine diferită de cea de încărcare pentru descărcare. Acest lucru face ca dispozitivele să fie redenumite la întâmplare de fiecare dată când sunt pornite. Pentru a seta nume persistente pentru dispozitivele dvs., puteți crea o regulă specială pentru udev.

A se vedea, de asemenea, articolele Nume permanente pentru dispozitive bloc pentru informații despre dispozitive bloc și configurarea rețelei # Nume de dispozitiv pentru dispozitive de rețea.

Procedura de instalare a camerei web este descrisă în articolul Configurarea camerei web.

Notă: utilizarea altor nume decât / dev / video *. poate împiedica descărcarea v4l1compat.so. și, posibil, v4l2convert.so

Dacă aveți mai multe imprimante, acestea vor fi repartizati aleatoriu nume, cum ar fi / dev / lp [0-9]. care, de exemplu, poate împiedica serverul CUPS să configureze corect dispozitivele. Puteți crea următoarea regulă, ceea ce va crea legături simbolice permanente în directoarele / dev / lp / by-id și / dev / lp /-de cale similară cu schema prezentată în articol numele constante pentru dispozitive bloc.

Unități flash USB

Unitățile flash USB conțin, de obicei, partiții, iar etichetele de partiții vă permit să obțineți nume statice de dispozitive. Puteți obține acest lucru și prin crearea regulii udev.

Mai întâi, aflați numărul de serie și ID-ul USB al dispozitivului dvs. (dacă aveți mai multe dispozitive identice, asigurați-vă că numerele de serie sunt într-adevăr unice):

Creați regula udev pentru dispozitiv prin adăugarea următoarelor fișiere în fișierul /etc/udev/rules.d/. de exemplu, 8-usbstick.rules.

Înlocuiți numărul de serie corespunzător. id_postavschika. id_device pentru valori reale, și numele pentru numele dispozitivului dorit, de exemplu, / dev / sdd. Eticheta specială% n denumește numărul partiției, nu o ștergeți. De exemplu, dacă o unitate are două partiții, vor fi create două legături simbolice.

Verificați conținutul / dev.

Ar trebui să vedeți unul sau mai multe legături simbolice create pentru dispozitivul dvs.

Treziți când dispozitivul USB este activ

În primul rând, determinați identificatorii producătorului și produsele dispozitivului dvs.:

Acum schimbați atributul power / wakeup al dispozitivului și controlerul USB la care este conectat. În acest exemplu, este driverul / usb7 / power / awake. Utilizați următoarea regulă:

Notă: De asemenea, asigurați-vă că controlerul USB este activat în / proc / acpi / awake.

Generarea de evenimente

Verificați regulile înainte de descărcare.

Poate fi util să generați diverse evenimente udev. De exemplu, doriți să simulați deconectarea unui dispozitiv USB de pe o mașină de la distanță. În astfel de cazuri, utilizați declanșator udevadm.

Această comandă simulează deconectarea tuturor dispozitivelor USB cu furnizorul specificat id_id.

Rezolvarea problemelor

Adăugarea modulelor în lista neagră

Uneori, udev poate încărca eronat modulele de kernel greșit. Pentru a evita acest lucru, puteți adăuga astfel de module în lista neagră. În cazul în care modulul este adăugat la această listă, udev îl va ignora atunci când se inițiază boot-ul (inclusiv dacă dispozitivul este deja conectat după pornirea sistemului).

udevd se blochează la încărcare

După migrarea la LDAP sau actualizarea sistemului folosind LDAP, udevd poate începe să se prăbușească când sistemul se încarcă cu mesajul "Starting Daemon UDev". De obicei, acest lucru se datorează faptului că udevd încearcă să identifice numele prin LDAP, dar nu poate, deoarece conexiunea la rețea nu este încă stabilită în acest moment.

Este necesar ca toate grupurile utilizate în LDAP să fie duplicate la nivel local. Obțineți numele grupurilor utilizate în regulile udev. iar numele grupurilor prezente în sistem pot fi:

Rezultatul va fi scris în fișierele present_groups și udev_groups. Pentru a vedea diferențele, efectuați o comparație linie cu linie cu comanda diff.

În acest exemplu, grupul pcscd lipsește din anumite motive în sistem. Toate aceste grupuri trebuie să fie adăugate în sistem. De asemenea, asigurați-vă că numele tuturor resurselor locale este permis înainte de a reveni la LDAP. Fișierul /etc/nsswitch.conf trebuie să conțină următoarea linie:

Dispozitivele BusLogic nefuncționale pot provoca o suspendare atunci când boot-ul sistemului

Acesta este un bug în kernel-ul Linux, care nu este fixat în prezent.

Dispozitivul este detașabil, dar nu este recunoscut ca atare

Creați o regulă udev pentru un anumit dispozitiv. Pentru a obține informații detaliate despre dispozitiv, puteți utiliza ID_SERIAL. sau ID_SERIAL_SHORT (nu uitați să schimbați / dev / sdb dacă este necesar):

Acum, creați fișierul regulat în /etc/udev/rules.d/ și setați variabilele fie pentru udisk, fie pentru udisks2.

Pentru udisks, setați UDISKS_SYSTEM_INTERNAL = "0". care va marca toate dispozitivele ca fiind detașabile și, astfel, adecvate pentru montarea automată. Vedeți detalii pe pagina udisks (7).

Pentru udisks2, instalați UDISKS_AUTO = "1". Pentru a marca dispozitivul pentru montare automată și UDISKS_SYSTEM = "0". pentru a marca aparatul ca fiind detașabil. Vedeți detalii pe pagina udisks (8).

Reporniți regulile udev cu controlul udevadm - reîncărcați. Dispozitivul dvs. va fi acum recunoscut ca detașabil.

Probleme cu încărcarea automată a dispozitivelor audio

Unii utilizatori întâmpină probleme la încărcarea modulelor de dispozitive audio, pentru care vechile intrări din /etc/modprobe.d/sound.conf au rămas. Curățarea fișierului din astfel de înregistrări poate ajuta.

Notă: Deoarece versiunea udev 171, modulele de emulare OSS (snd_seq_oss, snd_pcm_oss și snd_mixer_oss) nu mai sunt încărcate automat.

Suport pentru unitățile IDE

De la versiunea 170, udev nu acceptă dispozitive CD-ROM / DVD-ROM care sunt descărcate ca unități IDE standard de modulul ide_cd_mod și afișate ca / ​​dev / hd * pe sistem. Unitatea este accesibilă numai pentru programele care accesează direct dispozitivul, cum ar fi cdparanoia. dar este invizibil pentru programele de nivel superior, cum ar fi KDE.

Motivul pentru care încărcarea modulului ide_cd_mod are prioritate față de alte module, de exemplu, sr_mod. poate fi faptul că, din anumite motive, modulul piix este încărcat în initramfs. În acest caz, îl puteți înlocui pur și simplu în fișierul /etc/mkinitcpio.conf cu ata_piix.

Unitățile optice au ID-ul grupului invalid

Dacă ID-ul de grup al unității dvs. este setat pe disc. dar vrei să fie optică. trebuie să creați această regulă:

Vezi de asemenea







Articole similare

Trimiteți-le prietenilor: