Dua hal lagi: pemindahan Linux ke perusahaan & server besar lainnya membuat statis /dev
menjadi rusak. Kemajuan teknologi, baik di konsumen dan perusahaan, memperlihatkan statis / dev sebagai lelucon. [Jawaban ini mengisi lebih banyak dari latar belakang, terutama mengapa devf digantikan dengan udev].
Kelelahan Ruang Bilangan Mayor & Minor
/dev
file diidentifikasi di dalam kernel dengan nomor utama dan kecil mereka. Kernel tidak pernah benar-benar peduli tentang nama (dan Anda bisa, misalnya, mv /dev/sda /dev/disk-1
dan itu akan terus bekerja — walaupun tentu saja program tidak akan tahu di mana menemukannya).
Dengan statis /dev
, Anda perlu mengalokasikan angka besar / kecil untuk setiap perangkat potensial yang bisa ada. Angka-angka ini harus unik secara global, karena mereka dikirim sebagai bagian dari distro, bukan dibuat atas permintaan. Masalahnya adalah masing-masing angka 8-bit — kisarannya adalah 0-255.
Awalnya, misalnya, Linux dimulai dengan 8,0 menjadi sda, 8,1 menjadi sda1, 8,16 menjadi sdb, dll. Tetapi orang-orang terus menambahkan semakin banyak disk ke mesin, terutama ketika Anda mempertimbangkan hal-hal seperti saluran serat. Jadi pada beberapa titik, angka utama 65-71 ditambahkan untuk lebih banyak disk. Kemudian, bilangan utama 128–135. Namun orang-orang terus menginginkan lebih banyak disk ...
Dan format tabel partisi seperti GPT muncul, mendukung lebih banyak partisi per disk. Dan tentu saja perangkat lain memakan ruang angka: berbagai pengontrol RAID, manajemen volume logis, dll.
Hasil akhirnya dapat dilihat di Daftar Perangkat Linux LANANA . Jika Anda melihat daftar 2.6 (satu-satunya yang masih ada di sana), banyak blok nomor utama hingga 200 (maks: 255) —digunakan. Jelas, angkanya akan habis.
Mengubah ke angka yang lebih besar tidak mudah. Itu mengubah ABI kernel. Tergantung pada sistem file, itu mengubah tata letak pada disk. Tetapi, tentu saja, sebagian besar perangkat itu tidak ada pada satu sistem apa pun, bahkan perangkat yang (misalnya) kehabisan disk SCSI mungkin memiliki banyak hal gratis — mungkin tidak memerlukan hard disk IBM XT, sebagai contoh.
Dengan dinamis /dev
, distro tidak harus mengirim nomor perangkat. Mereka tidak lagi harus unik secara global. Mereka bahkan tidak harus unik di sepatu bot.
Nama perangkat tidak dapat diprediksi
Dulu sangat mudah untuk menetapkan nomor untuk semuanya. Papan memiliki dua saluran IDE; setiap saluran IDE mendukung satu master, dan satu slave. Anda dapat menetapkan dalam urutan saluran, dan urutan master-kemudian-budak. Jadi hda
menjadi saluran pertama, master; hdb
saluran pertama, budak; hdc
saluran kedua, master; dll. Itu dapat diprediksi dan stabil. Mereka dapat berubah jika Anda menambahkan drive baru, atau menghapus satu, tetapi tidak ada perubahan perangkat keras, mereka statis.
Anda bisa menempatkan /dev/hda1
di Anda /etc/fstab
dan yakin itu akan tinggal kerja, setidaknya perubahan hardware absen.
IDE bekerja seperti itu. Tidak ada setelah itu.
SATA tampaknya sederhana: satu port, satu disk. Tapi tidak demikian; memungkinkan pengganda port. Dan itu memungkinkan hot-swap. Namun, jika tidak ada perubahan perangkat keras, Anda sebenarnya masih dapat tetap membuat pemetaan berfungsi.
USB jauh lebih buruk. Tidak hanya itu memungkinkan hot swap, itu khas. Orang-orang mencolokkan USB flash drive setiap saat. Selanjutnya, perangkat dapat memerlukan waktu beberapa saat untuk menyelidiki — dan benar-benar dapat berubah kapan pun mereka mau (mis., Ketika menghidupkan atau mematikan mode penyimpanan USB pada ponsel Anda). Firewire serupa. Dengan tidak bisa Anda benar-benar datang dengan pemetaan yang stabil.
Disk yang terhubung jaringan tidak memiliki urutan port apa pun yang melekat. Satu-satunya urutan penggunaan kernel adalah urutan mereka muncul. Sama dengan volume logis.
Pencarian kecepatan boot juga membuat segalanya lebih buruk. Awalnya, kernel akan dengan senang hati duduk dan menunggu cukup lama, misalnya, semua perangkat USB diinisialisasi. Untuk sepenuhnya menyelidiki semua bus SCSI, dll. Probe tersebut dibuat menjadi tugas latar belakang; boot tidak lagi menunggu mereka. Perangkat ditambahkan sebagai probe selesai.
Jadi kernel dibiarkan dengan, lebih atau kurang, "urutan apa pun yang mereka tampilkan". Ini berarti bahwa banyak jenis perangkat dapat dan memang mengubah urutan setiap boot — apa yang ada pada satu boot /dev/sdb
adalah pada boot lain /dev/sdc
. Ini membuat gagasan /dev
lelucon statis .
Ringkasan
Ketika Anda mengambil kombinasi statis /dev
menjadi semakin tidak berarti karena pesanan penyelidikan perangkat yang tidak dapat diprediksi, dan terus mengalokasikan nomor statis utama / minor yang menyebabkan pekerjaan substansial tidak habis, menjadi jelas mengapa pengembang Linux memilih untuk beralih ke dinamis /dev
.
/dev
tidak (dengan mudah atau mudah) mengatasi hal-hal seperti orang yang memasukkan adaptor jaringan USB atau adapter jaringan virtual yang ditambahkan atau diturunkan saat sistem sedang berjalan. Namun, tidak ada yang menghentikan Anda untuk mencopotudev
dan kembali ke/dev
rute direktori statis lama .