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.
-
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. -
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 selalusdaatausdb, tetapi udev memastikan bahwa symlink ada di/dev/disk/by-uuidakan terus mengarah ke yang benar. -
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/fusesebagai 10.228 dan/dev/hpetsebagai 10.229 hari ini, mereka akan memiliki nomor yang berbeda setelah setiap reboot, jadidevtmpfsatau (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
chmodyang 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
eudevGentoo , yang merupakan fork darisystemd-udevdari mana systemd sekarang telah menyimpang secara signifikan. - Gunakan
vdevmilik 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
mdevSuckless yang merupakan pengelola plug-and-play yang dikembangkan oleh Dimitris Papastamos. - Gunakan
mdevdLaurent Bercot , yang merupakan konfigurasi yang kompatibel denganmdevBusyBox 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-listenerlama Laurent Bercot dans6-uevent-spawnernetlink-datagram-socket-listendanplug-and-play-event-handlerdari nosh toolset