GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada alternatif untuk menggunakan `udev`?

Ada berbagai alternatif untuk udev di luar sana. Tampaknya Gentoo dapat menggunakan sesuatu yang disebut mdev . Pilihan lainnya adalah mencoba menggunakan udev pendahulunya devfsd . Terakhir, Anda selalu dapat membuat semua file perangkat yang Anda perlukan dengan mknod .

Perhatikan bahwa dengan yang terakhir tidak perlu membuat semuanya saat boot karena node dapat dibuat pada disk dan bukan dalam sistem file sementara seperti opsi lainnya. Tentu saja, Anda kehilangan fleksibilitas karena membuat file perangkat secara dinamis saat perangkat keras baru dipasang (misalnya stik USB). Saya percaya pendekatan standar di era ini adalah membuat setiap file perangkat yang Anda perlukan secara wajar sudah dibuat di bawah /dev (yaitu banyak file perangkat).

Tentu saja kesulitan untuk mendapatkan salah satu dari pendekatan ini untuk bekerja di distro modern mungkin cukup tinggi. Wiki Gentoo menyebutkan kesulitan dalam mendapatkan mdev untuk bekerja dengan lingkungan desktop (apalagi di luar Gentoo). devfsd terakhir rilis adalah tahun 2002, saya tidak tahu apakah itu akan bekerja sama sekali dengan kernel modern. Membuat node secara manual mungkin merupakan pendekatan yang paling layak, tetapi bahkan menonaktifkan udev bisa menjadi tantangan, terutama di disto menggunakan systemd (udev sekarang menjadi bagian dari systemd , yang menunjukkan ketergantungan yang kuat).

Saran saya tetap gunakan udev;)


Kernel Linux modern mendukung devtmpfs file system , yang membuat semua node perangkat secara dinamis segera setelah kernel menemukannya. (Faktanya, udev terbaru rilis memerlukan ini; Anda akan menemukan bahwa udev tidak lagi membuat node perangkat apa pun, hanya symlink.)

Begitu pula loading firmware sudah dipindahkan ke kernel juga, jadi tugas yang tersisa hanya udev perform adalah pemuatan modul (menurut modaliases) dan penerapan izin perangkat &aturan udev lainnya.

Jadi secara teori, kernel yang sepenuhnya monolitik harus melakukan boot baik-baik saja tanpa udev.

Namun, masalah sebenarnya di sini adalah apa yang terjadi nanti.

  1. Cukup banyak program ruang pengguna yang bergantung pada udev yang memelihara basis data perangkatnya, yang dapat diakses melalui libudev . Meskipun menghitung perangkat dan mendengarkan peristiwa yang ditambahkan/dihapus dapat dilakukan secara langsung menggunakan antarmuka kernel (sysfs dan netlink), Anda masih akan dibiarkan tanpa semua metadata yang telah dilampirkan oleh berbagai aturan udev.

  2. aturan udev juga mempertahankan berbagai symlink "persisten" di /dev/disk/by-* , /dev/mapper , /dev/input/by-path , /dev/snd/by-path , dan seterusnya. Misalnya, jika Anda memiliki dua disk yang terhubung, tidak ada jaminan bahwa yang pertama akan selalu sda atau sdb , tetapi udev memastikan bahwa symlink ada di /dev/disk/by-uuid akan terus mengarah ke yang benar.

  3. Meskipun node perangkat sekarang dibuat oleh kernel dan oleh karena itu bukan urusan Anda lagi, masih penting untuk dicatat bahwa beberapa jenis perangkat telah mulai menggunakan nomor mayor/minor yang ditetapkan secara dinamis, jadi meskipun Anda memiliki /dev/fuse sebagai 10.228 dan /dev/hpet sebagai 10.229 hari ini, mereka akan memiliki nomor yang berbeda setelah setiap reboot, jadi devtmpfs atau (pada sistem lama) sebuah program yang mendengarkan uevents diperlukan .

Banyak dari hal ini dapat dengan mudah dilakukan oleh program lain seperti mdev , tentu saja. Maksud saya adalah /etc/MAKEDEV statis skrip tidak akan berfungsi lagi...

Jadi, pada dasarnya, dalam hal kompleksitas boot, udev kemungkinan besar paling tidak kekhawatiran Anda.


Ada beberapa alternatif:

  • Cukup miliki satu set chmod yang sesuai , chown , ln , dan perintah serupa dalam skrip yang dijalankan sebagai bagian dari bootstrap.
  • Gunakan systemd-udev , pengelola plug-and-play yang merupakan bagian dari project systemd.
  • Gunakan eudev Gentoo , yang merupakan fork dari systemd-udev dari mana systemd sekarang telah menyimpang secara signifikan.
  • Gunakan vdev milik Devuan , yang merupakan pengelola plug-and-play yang dikembangkan oleh Jude Nelson, yang merupakan bagian dari Devuan.
  • Gunakan mdev , yang bertentangan dengan jawaban lain bukanlah hal Gentoo. Ini adalah pengelola plug-and-play yang ada di dalam BusyBox.
  • Gunakan mdev Suckless yang merupakan pengelola plug-and-play yang dikembangkan oleh Dimitris Papastamos.
  • Gunakan mdevd Laurent Bercot , yang merupakan konfigurasi yang kompatibel dengan mdev BusyBox tetapi melakukan penanganan soketnya sendiri dan tidak memahami protokol DENGARKAN.

Semua ini, selain dari yang pertama, memerlukan seperangkat aturan yang menjelaskan cara bereaksi terhadap peristiwa notifikasi kernel tentang perangkat. Jelas.

Ada juga alat yang akan mengambil program yang dirancang untuk /proc/sys/kernel/hotplug , seperti dua mdev s, dan itu akan mengadaptasi dan membuat serial dengan mendengarkan soket netlink dan kemudian memunculkan program tersebut:

  • s6-netlink-listener lama Laurent Bercot dan s6-uevent-spawner
  • netlink-datagram-socket-listen dan plug-and-play-event-handler dari nosh toolset

Linux
  1. Apakah Ada Kelemahan Dari Menggunakan Mount –bind Sebagai Pengganti Tautan Simbolik?

  2. Cara mengatur nama perangkat khusus menggunakan udev di CentOS/RHEL 7

  3. Apakah ada kode status keluar standar di Linux?

  1. platform.linux_distribution() usang - apa alternatifnya?

  2. Apakah ada distro Linux yang stabil menggunakan btrfs?

  3. Menggunakan aturan udev untuk menjalankan skrip pada penyisipan USB

  1. 3 alternatif sumber terbuka untuk Microsoft Publisher

  2. Cara Memeriksa Port Jarak Jauh Dapat Dicapai Menggunakan Perintah 'nc'

  3. Ada dua MOTD yang ditampilkan saat saya masuk ke server saya menggunakan SSH