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 selalusda
atausdb
, tetapi udev memastikan bahwa symlink ada di/dev/disk/by-uuid
akan 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/fuse
sebagai 10.228 dan/dev/hpet
sebagai 10.229 hari ini, mereka akan memiliki nomor yang berbeda setelah setiap reboot, jadidevtmpfs
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 darisystemd-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 denganmdev
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 dans6-uevent-spawner
netlink-datagram-socket-listen
danplug-and-play-event-handler
dari nosh toolset