Cara menggunakan UDEV untuk Pengesanan dan Pengurusan Peranti di Linux

Cara menggunakan UDEV untuk Pengesanan dan Pengurusan Peranti di Linux

Udev (UserPace /Dev) adalah sub-sistem Linux untuk pengesanan dan pengurusan peranti dinamik, kerana versi kernel 2.6. Ia adalah penggantian DEVFS dan Hotplug.

Secara dinamik mencipta atau menghilangkan nod peranti (antara muka ke pemacu peranti yang muncul dalam sistem fail seolah -olah ia adalah fail biasa, disimpan di bawah /Dev direktori) pada masa boot atau jika anda menambah peranti ke atau mengeluarkan peranti dari sistem. Ia kemudian menyebarkan maklumat mengenai peranti atau perubahan ke negeri ke ruang pengguna.

Fungsinya adalah 1) membekalkan aplikasi sistem dengan peristiwa peranti, 2) menguruskan kebenaran nod peranti, dan 3) boleh membuat symlink berguna di /Dev Direktori untuk mengakses peranti, atau menamakan semula antara muka rangkaian.

Salah satu kebaikan udev adalah bahawa ia boleh menggunakan nama peranti yang berterusan untuk menjamin penamaan peranti yang konsisten merentasi reboot, walaupun perintah penemuan mereka. Ciri ini berguna kerana kernel hanya memberikan nama peranti yang tidak dapat diramalkan berdasarkan susunan penemuan.

Dalam artikel ini, kita akan belajar cara menggunakan Udev untuk pengesanan dan pengurusan peranti pada sistem linux. Perhatikan bahawa kebanyakan jika tidak semua pengagihan linux moden arus perdana Udev Sebagai sebahagian daripada pemasangan lalai.

Belajar asas -asas udev di linux

The udev Daemon, Systemd-udevd (atau Systemd-udevd.perkhidmatan) berkomunikasi dengan kernel dan menerima peranti uevents terus daripadanya setiap kali anda menambah atau mengalih keluar peranti dari sistem, atau peranti mengubah keadaannya.

Udev berdasarkan peraturan - peraturan itu fleksibel dan sangat kuat. Setiap acara peranti yang diterima dipadankan dengan set peraturan yang dibaca dari fail yang terletak di /lib/udev/peraturan.d dan /run/udev/peraturan.d.

Anda boleh menulis fail peraturan tersuai di /etc/udev/peraturan.d/ direktori (fail harus berakhir dengan .peraturan sambungan) untuk memproses peranti. Perhatikan bahawa peraturan fail dalam direktori ini mempunyai keutamaan tertinggi.

Untuk membuat fail nod peranti, udev perlu mengenal pasti peranti menggunakan atribut tertentu seperti label, nombor siri, nombor utama dan kecil yang digunakan, nombor peranti bas dan banyak lagi. Maklumat ini dieksport oleh SYSFS sistem fail.

Setiap kali anda menyambungkan peranti ke sistem, kernel mengesan dan memulakannya, dan direktori dengan nama peranti dibuat di bawah /sys/ direktori yang menyimpan atribut peranti.

Fail konfigurasi utama untuk udev adalah /etc/udev/udev.Conf, Dan untuk mengawal tingkah laku runtime daemon udev, anda boleh menggunakan udevadm utiliti.

Untuk memaparkan kernel yang diterima peristiwa (uevents) dan Acara udev (yang mana Udev dihantar selepas pemprosesan peraturan), lari udevadm dengan arahan monitor. Kemudian sambungkan peranti ke sistem anda dan tonton, dari terminal, bagaimana acara peranti dikendalikan.

Tangkapan skrin berikut menunjukkan petikan TAMBAH Acara selepas menyambungkan cakera flash USB ke sistem ujian:

$ udevadm Monitor 
Pantau acara peranti di Linux

Untuk mencari nama yang diberikan kepada cakera USB anda, gunakan utiliti lsblk yang membaca SYSFS sistem fail dan udev db Untuk mengumpulkan maklumat mengenai peranti yang diproses.

 $ lsblk 
Senaraikan Peranti Blok di Linux

Dari output arahan sebelumnya, cakera USB dinamakan SDB1 (jalan mutlak mestilah /dev/sdb1). Untuk menanyakan atribut peranti dari pangkalan data UDEV, gunakan Perintah Info.

$ udevadm info /dev /sdb1 
Atribut peranti pertanyaan dari udev db di linux

Cara Bekerja Dengan Peraturan Udev di Linux

Dalam bahagian ini, kami akan membincangkan secara ringkas bagaimana menulis udev peraturan. Peraturan terdiri daripada senarai yang dipisahkan koma satu atau lebih pasangan nilai kunci. Peraturan membolehkan anda menamakan semula nod peranti dari nama lalai, mengubahsuai keizinan dan pemilikan nod peranti, mencetuskan pelaksanaan program atau skrip apabila nod peranti dibuat atau dipadam, antara lain.

Kami akan menulis peraturan mudah untuk melancarkan skrip apabila peranti USB ditambah dan apabila ia dikeluarkan dari sistem yang sedang berjalan.

Mari mulakan dengan membuat dua skrip:

$ sudo vim /bin /device_added.sh 

Tambahkan baris berikut di device_added.sh Skrip.

#!/bin/bash echo "peranti usb ditambah pada $ (tarikh)" >>/tmp/skrip.log 

Buka skrip kedua.

$ sudo vim /bin /device_removed.sh 

Kemudian tambahkan baris berikut ke device_removed.sh Skrip.

#!/bin/bash echo "peranti usb dikeluarkan pada $ (tarikh)" >>/tmp/skrip.log 

Simpan fail, tutup dan buat kedua -dua skrip boleh dilaksanakan.

$ sudo chmod +x /bin /device_added.sh $ sudo chmod +x /bin /device_removed.sh 

Seterusnya, mari kita buat peraturan untuk mencetuskan pelaksanaan skrip di atas, yang dipanggil /etc/udev/peraturan.D/80-Ujian.peraturan.

$ vim/etc/udev/peraturan.D/80-Ujian.peraturan 

Tambahkan kedua -dua peraturan berikut ini di dalamnya.

Subsystem == "usb", tindakan == "tambah", env devType == "usb_device", run+= "/bin/device_added.SH "Subsystem ==" USB ", ACTION ==" Buang ", env devType ==" usb_device ", run+="/bin/device_removed.sh " 

Di mana:

  • "==": adalah pengendali untuk membandingkan persamaan.
  • "+=": adalah pengendali untuk menambah nilai kepada kunci yang memegang senarai penyertaan.
  • Subsistem: Memadankan subsistem peranti acara.
  • TINDAKAN: Memadankan nama tindakan acara.
  • Env devType: Padankan dengan nilai harta peranti, jenis peranti dalam kes ini.
  • Jalankan: Menentukan program atau skrip untuk dilaksanakan sebagai sebahagian daripada pengendalian acara.

Simpan fail dan tutupnya. Kemudian sebagai akar, beritahu Systemd-udevd Untuk memuatkan semula fail peraturan (ini juga memuatkan semula pangkalan data lain seperti indeks modul kernel), dengan menjalankan.

$ sudo udevadm control -reload 

Sekarang sambungkan pemacu USB ke mesin anda dan periksa sama ada device_added.sh Skrip telah dilaksanakan. Pertama dari semua fail Skrip.log harus dicipta di bawah /TMP.

$ ls -l /tmp /skrip.log 
Semak Log Skrip Setelah Menambah USB

Maka fail itu harus mempunyai entri seperti "Peranti USB dikeluarkan pada tarikh_time", Seperti yang ditunjukkan dalam tangkapan skrin.

$ CAT /TMP /Skrip.log 
Semak Log Skrip Setelah Mengeluarkan USB

Untuk maklumat lanjut mengenai cara menulis peraturan UDEV dan menguruskan UDEV, rujuk udev dan udevadm Penyertaan manual masing -masing, dengan menjalankan:

$ man udev $ man udevadm 
Ringkasan

Udev adalah pengurus peranti yang luar biasa yang menyediakan cara dinamik untuk menubuhkan nod peranti di /Dev direktori. Memastikan peranti dikonfigurasikan sebaik sahaja ia dipasang dan ditemui. Ia menyebarkan maklumat mengenai peranti yang diproses atau perubahan ke keadaannya, ke ruang pengguna.

Sekiranya anda mempunyai sebarang pertanyaan atau pemikiran untuk berkongsi topik ini, gunakan borang maklum balas.