Удев - udev - Wikipedia

удев
ӘзірлеушілерГрег Кроах-Хартман және Кей Сиверс
Бастапқы шығарылымҚараша 2003; 17 жыл бұрын (2003-11)
Тұрақты шығарылым247 (26 қараша, 2020); 22 күн бұрын (2020-11-26)) [±][1]
Репозиторий Мұны Wikidata-да өңдеңіз
ЖазылғанC
Операциялық жүйеLinux ядросы
ТүріҚұрылғы түйіні
ЛицензияGPLv2
Веб-сайтРесми сайт

удев (userspace / dev) - үшін құрылғы менеджері Linux ядросы. Мұрагері ретінде devfsd және hotplug, udev бірінші кезекте басқарады құрылғы түйіндері ішінде / дев анықтамалық. Сонымен бірге, удев бәрін де басқарады пайдаланушы кеңістігі аппараттық құрылғылар жүйеге қосылғанда немесе одан шығарылған кезде туындайтын оқиғалар, соның ішінде микробағдарлама белгілі бір құрылғылардың талаптарына сәйкес жүктеу.

Негіздеме

Бұл операциялық жүйе Келіңіздер ядро бағдарламалық жасақтаманың қалған бөлігіне жабдықтың абстрактілі интерфейсін ұсынуға жауап береді. Болу а монолитті ядро, Linux ядросы дәл осылай жасайды және құрылғы драйверлері оның бастапқы кодының 50% -дан астамын құрайтын Linux ядросының бөлігі болып табылады.[2] Аппараттық құралдар арқылы қол жеткізуге болады жүйелік қоңыраулар немесе олардың үстінен құрылғы түйіндері.

Перифериялық құрылғылармен жұмыс істей білу ыстық розетка -қолдануға ыңғайлы тәсілмен, барлық қосылуға болатын аппараттық құрылғылардың бір бөлігі ядродан демон пайдаланушы кеңістігінде жұмыс істейді. Пайдаланушы кеңістігінде жүгіру қауіпсіздік пен тұрақтылыққа қызмет етеді.

Дизайн

Құрылғы драйверлері Linux ядросының бөлігі болып табылады, оның негізгі функцияларына құрылғыны табу, құрылғының күйінің өзгеруін анықтау және ұқсас төменгі деңгейлі аппараттық функциялар кіреді. Құрылғы драйверін ядродан жадқа салғаннан кейін, анықталған оқиғалар udevd демонстері қолданушыларына жіберіледі. Бұл құрылғы менеджері, удевд, осы оқиғалардың барлығын ұстап алады, содан кейін не болатынын шешеді. Бұл үшін, удевд өте кең конфигурациялық файлдар жиынтығына ие, оларды компьютер әкімшісі өз қажеттіліктеріне сәйкес реттей алады.

  • USB арқылы жаңа сақтау құрылғысы жалғанған жағдайда, удевд ядро арқылы ескертіледі және өзі udisksd-демон туралы хабарлайды. Бұл демонстрациялар файлдық жүйелерді орната алады.
  • Ethernet NIC-ке жаңа Ethernet кабелі қосылған жағдайда, удевд ядро арқылы ескертіледі және өзі NetworkManager-демон туралы хабарлайды. NetworkManager-демоны сол NIC үшін dhclient іске қосуы немесе кейбір қолмен конфигурацияға сәйкес конфигурациялауы мүмкін.

Мұның күрделілігі қосымша авторларын аппараттық қолдау логикасын қайта енгізуге мәжбүр етеді. Кейбір аппараттық құрылғылар оларды пайдалануға дайындау үшін артықшылықты көмекші бағдарламаларды қажет етеді. Бұларды Unix рұқсаттарының моделімен білдіруге ыңғайсыз тәсілдермен шақыру керек (мысалы, пайдаланушыларға қосылуға мүмкіндік беру) сымсыз желілер егер олар бейне консольға кірген болса ғана). Қосымша авторлары қолдануға жүгінеді сетюид екілік файлдар немесе қызметті іске қосу демондар әрқашан қауіпсіздік тесіктерін енгізе отырып, өздерінің қол жетімділігін және артықшылықтарын бөлуді қамтамасыз ету.[3]

ХАЛ осы мәселемен айналысу үшін жасалған, бірақ қазір Linux таратылымдарының көпшілігінде ескірген.

Шолу

Дәстүрліден айырмашылығы Unix жүйелер, мұндағы құрылғы түйіндері ішінде / дев каталог статикалық файлдар жиынтығы болды, Linux udev құрылғылар менеджері динамикалық түрде жүйеде бар құрылғылардың түйіндерін ғана қамтамасыз етеді. Дегенмен девфтер ұқсас функционалдылықты қамтамасыз ету үшін қолданылады, Грег Кроах-Хартман бірқатар себептерін келтірді[4] девфтерге қарағанда удевке артықшылық бергені үшін:

  • udev құрылғының тұрақты атауын қолдайды, бұл, мысалы, құрылғылардың жүйеге қосылу ретіне байланысты емес. Әдепкі udev қондырғысы сақтау құрылғыларының тұрақты аттарын ұсынады. Кез-келген қатты диск өзінің ерекше файлдық жүйесімен, дискінің атауымен және оған қосылған аппараттық құралдың физикалық орналасуымен танылады.
  • udev толығымен орындалады пайдаланушы кеңістігі, девфтерге қарағанда ядро кеңістігі. Соның бір нәтижесі - udev атау саясатын ядродан шығарып алды және түйін жасалмай тұрып құрылғының қасиеттерінен құрылғының атын құруға арналған ерікті бағдарламаларды орындай алады; барлық процестер де үзіліп тұрады және ол төменгі басымдықпен жұмыс істейді.

Удев тұтастай алғанда үш бөлікке бөлінеді:

  • Кітапхана либудев құрылғы туралы ақпаратқа қол жеткізуге мүмкіндік беретін; ол енгізілді жүйелік 183 бағдарламалық жасақтама.[5]
  • Пайдаланушы кеңістігі демон удевд виртуалды басқарады / дев.
  • Әкімшілік командалық жол утилита удевадм диагностика үшін.

Жүйе қоңырауларды ядро ​​арқылы алады желілік сілтеме розетка. Бұрын қолданылған нұсқалар ыстық розетка, өздеріне сілтеме қосу /etc/hotplug.d/default осы мақсатпен.

Пайдалану

udev құрамына енгізілді жүйелік 183[5]

udev - а ретінде жұмыс істейтін жалпы құрылғылар менеджері демон Linux жүйесінде және тыңдау (а. арқылы желілік сілтеме розетка) жаңа құрылғы инициализацияланған немесе құрылғы жүйеден шығарылған жағдайда ядро ​​жібереді. Удев пакеті оқиғалардың экспортталған мәндеріне және табылған құрылғының қасиеттеріне сәйкес келетін кең ережелер жиынтығымен бірге жеткізіледі. Сәйкес келетін ереже құрылғының түйінін атайды және жасайды және құрылғыны баптау және конфигурациялау үшін конфигурацияланған бағдарламаларды іске қосады.

udev ережелері ядро ​​ішкі жүйесі, ядро ​​құрылғысының атауы, құрылғының физикалық орналасуы немесе құрылғының сериялық нөмірі сияқты қасиеттерге сәйкес келуі мүмкін. Ережелер сонымен қатар құрылғыға атау беру үшін жүйеден сыртқы бағдарламалардан ақпарат сұрай алады немесе тапсырыс қондырғылары жүйеге тап болғанына қарамастан, әрқашан бірдей болатын теңшелетін атауды көрсете алады.

Бұрын Linux жүйесінде udev-ті пайдаланудың кең тараған тәсілі - бұл оқиғаны ұяшық арқылы жіберуге мүмкіндік беру ХАЛ, бұл құрылғыға қатысты келесі әрекеттерді орындай алады. Мысалы, HAL жүйеде жұмыс істейтін басқа бағдарламалық жасақтаманы жаңа жабдықтың келгендігі туралы хабар тарату арқылы хабарлама жібереді D-автобус IPC барлық мүдделі адамдарға арналған жүйе процестер. Осылайша, сияқты жұмыс үстелдері GNOME немесе K жұмыс үстелі ортасы 3 бастауы мүмкін файл шолғышы жаңадан тіркелген файлдық жүйелерді қарау үшін USB флэш-дискілері және SD карталары.[6]

2011 жылдың ортасына қарай HAL көптеген Linux дистрибьюторларымен, сондай-ақ KDE, GNOME күшімен жойылды[7] және Xfce[8] басқалары арасында жұмыс үстелі орталары. Бұрын HAL-да қамтылған функциялар udev-тің құрамына енген немесе udisks және бөлек бағдарламалық жасақтамаға көшкен. жоғары қуат.

  • udev Linux құрылғы ағашына төмен деңгейлі қол жеткізуді қамтамасыз етеді. Бағдарламаларға құрылғылар мен олардың қасиеттерін санауға және құрылғылар келген және кеткен кезде хабарлама алуға мүмкіндік береді.
  • dbus - бұл бағдарламалардың бір-бірімен сенімді, сенімді және жоғары деңгейлі объектілік бағдарламалау интерфейсімен байланысуына мүмкіндік беретін негіз.
  • udisks (бұрын DeviceKit-дискілері деп аталған) - libudev және басқа ядролық интерфейстердің жоғарғы жағында орналасқан және сақтау құрылғыларына жоғары деңгейлі интерфейс ұсынатын демонс және қосымшаларға dbus арқылы қол жетімді.
  • upower (бұрын DeviceKit-power деп аталған) - бұл libudev және басқа ядролық интерфейстердің жоғарғы жағында орналасқан және қуатты басқарудың жоғары деңгейлі интерфейсін қамтамасыз ететін және қосымшаларға dbus арқылы қол жетімді демон.
  • NetworkManager - бұл libudev және басқа ядролық интерфейстердің үстінде орналасқан демон (және басқа да демондар) және желіні конфигурациялау мен орнатудың жоғары деңгейлі интерфейсін ұсынады және dbus арқылы қосымшаларға қол жетімді.[9]

udev ядродан хабарламалар қабылдап, оларды Network Manager сияқты ішкі жүйелік демонстарға жібереді. Қосымшалар Network Manager-мен D-Bus арқылы сөйлеседі.

HAL ескірген және оны тек ескі код қолданады. Ubuntu 10.04 HAL жоқ жеткізілді. Бастапқыда DeviceKit жаңа демоны HAL-нің кейбір аспектілерін ауыстыруды жоспарлаған болатын, бірақ 2009 жылдың наурызында DeviceKit пакеті сияқты udev-ке бірдей кодты қосудың пайдасына қолданыстан шығарылды: udev-extras және кейбір функциялар қазір udev-ке ауысқан.

Тарих

удев енгізілді Linux 2.5. Linux ядросының 2.6.13 нұсқасы жаңа нұсқасын енгізді немесе жаңартты uvent интерфейс. Udev жаңа нұсқасын қолданатын жүйе, егер udev өшірілмесе және дәстүрлі болмаса, 2.6.13-тен асқан ядролармен жүктелмейді. / дев каталог құрылғыға қол жеткізу үшін қолданылады.

2012 жылдың сәуірінде, удев код негізі құрамына біріктірілді жүйелік systemd 183-ті udev қосатын алғашқы нұсқа етіп жасайтын ағаш.[5][10][11] 2012 жылдың қазанында, Линус Торвалдс сынға алды Кей Сиверс udev қызмет көрсету және қателерді жоюға деген көзқарас микробағдарлама жүктеу, мәлімдеу:[12]

Ия, оны ядрода жасау «анағұрлым сенімді». Бірақ ойын ойнамаңыз және өтірікті тоқтатыңыз. Бұл неғұрлым сенімді, өйткені бізде қамқорлық жасайтын ұстаушылар бар, және біз регрессиялар тез және еркін ойнай алмайтын нәрсе емес екенін білеміз. Егер бірдеңе сынып қалса және біз оны бұзудың дұрыс түзетуі не екенін білмесек, біз қайтару бұзылған нәрсе. Ия, біз оны ядрода жасағанымыз жақсы. Пайдаланушы кеңістігінде микробағдарламаны жүктеу мүмкін емес болғандықтан емес. Грег одан бас тартқаннан кейін оған техникалық қызмет көрсету төмендеді.

2012 жылы Gentoo Linux жоба құрылды шанышқы systemd архитектурасына тәуелділікті болдырмау үшін udd код базасын құру. Алынған шанышқы деп аталады евдев және udev функционалдығын systemd жоқ етеді. Жобаның алға қойылған мақсаты - еудевті кез-келген нәрседен тәуелсіз ұстау Linux тарату немесе ішінде жүйе.[13] Gentoo жобасы евдевті былайша сипаттайды:[14]

eudev - systemd-udev-тің шанышқысы, мысалы, бар бағдарламалық жасақтамамен жақсы үйлесімділікке жету OpenRC және Іске қосу, ескі ядролар, әртүрлі құрал-саймандар және қолданушылар талап ететін кез-келген нәрсе және әр түрлі тарату.

2014 жылы 29 мамырда udev арқылы микробағдарламалық жасақтаманы қолдау жүйеден алынып тасталды, өйткені түйініне жүктеу ядролардың міндеті деп шешілді.[15] Екі күннен кейін, Ленарт Потеринг осы патчты кейінге қалдыруды ұсынды кдбус udev қолдана бастайды; сол кезде udev-ті kdbus-ты негізгі хабар алмасу жүйесі ретінде пайдалануға және пайдаланушылар кеңістігінен пайдаланушылар кеңістігіндегі netlink негізіндегі тасымалдан босатуға ауыстыру жоспарланып отыр.[16]

Авторлар

udev әзірледі Грег Кроах-Хартман және Кей Сиверс, көмегімен үлкен көмек Дэн Стеклофф, басқалардың арасында.

Әдебиеттер тізімі

  1. ^ V247 шығарылымы, 26 қараша 2020, алынды 27 қараша 2020
  2. ^ Марти, Дон. «Linux-тің үздік әзірлеушілері код жазуға деген ерік-жігерін жоғалтуда ма?». ComputerworldUK. Алынған 2016-06-19.
  3. ^ Пеннингтон, Хавок (2003-07-10), Аппараттық құралдарды жай жұмыс жасау
  4. ^ Грег Кроах-Хартман. «udev and devfs - қорытынды сөз». Архивтелген түпнұсқа (Қарапайым мәтін ) 2011-07-09. Алынған 2008-01-24.
  5. ^ а б c «systemd / systemd». GitHub. Алынған 2016-08-21.
  6. ^ «Удевтегі құрылғыларды динамикалық басқару» (PDF). Linux журналы. 2006-10-01. Алынған 2008-07-14.
  7. ^ «HALRemoval». 2011-06-28. Алынған 2011-09-13.
  8. ^ «Тунар-волман және XAL-тің Xfce-де депортациялануы». 2010-01-17. Алынған 2017-12-25.
  9. ^ Ленарт Потеринг (2010-04-25). «Udev, hal, Dbus және DeviceKit арасындағы байланыс?».
  10. ^ Сиверс, Кей (2012-04-03). «Удевтің бастапқы ағашының болашағы». linux-hotplug (Тарату тізімі). Алынған 2013-05-22.
  11. ^ Сиверс, Кей, «Удевті systemd ішіне импорттауды міндеттеңіз», жүйелік, алынды 2013-05-22
  12. ^ Линус Торвалдс (2012-10-03). «Re: udev сынықтары». Linux-ядро (Тарату тізімі). Алынған 2014-10-28.
  13. ^ «gentoo / eudev - README.md». Алынған 2017-12-25.
  14. ^ «Gentoo Linux Projects - Gentoo eudev жобасы». Алынған 2017-12-25.
  15. ^ «[systemd-devel] [PATCH] udev микробағдарламалық құралын тастаңыз». 2014-05-29.
  16. ^ «[systemd-devel] [PATCH] udev микробағдарламалық құралын тастаңыз». 2014-05-31.

Сыртқы сілтемелер