GNU/Linux >> Belajar Linux >  >> Linux

Apakah Nomor Mayor, Nomor Minor Unik?

Apakah major, minor nomor Unik?

Apakah kami memiliki kutipan dan referensi untuk itu?

NAME   MAJ:MIN RM   SIZE RO MOUNTPOINT
sda      8:0    0 465.8G  0 
├─sda1   8:1    0 298.2M  0 
├─sda2   8:2    0     3G  0 
├─sda3   8:3    0 458.7G  0 /
├─sda4   8:4    0     1K  0 
└─sda5   8:5    0   3.8G  0 
sr0     11:0    1  1024M  0 

Jawaban yang Diterima:

Dari Antarmuka Pemrograman Linux , 14.1

Setiap file perangkat memiliki nomor ID utama dan nomor ID kecil. ID utama mengidentifikasi kelas umum perangkat, dan digunakan oleh kernel untuk mencari driver
yang sesuai untuk jenis perangkat ini. ID minor secara unik mengidentifikasi perangkat tertentu
dalam kelas umum. ID mayor dan minor dari file perangkat ditampilkan oleh perintah
ls -l.

[…]

Setiap driver perangkat mendaftarkan asosiasinya dengan ID perangkat utama tertentu, dan asosiasi ini menyediakan koneksi antara file khusus perangkat dan perangkat. Nama file perangkat tidak memiliki relevansi ketika kernel mencari driver perangkat.

yaitu tujuannya adalah untuk menyediakan pemetaan unik dari instance mayor:minor ke perangkat:untuk setiap jenis perangkat. Sebenarnya, Anda bisa memiliki dua perangkat berbeda dengan mayor yang sama:minor, selama satu adalah char dan satu adalah blok:

# ls -l /dev/ram1 /dev/mem
crw-r----- 1 root kmem 1, 1 Jan  1  1970 /dev/mem
brw-rw---- 1 root disk 1, 1 Jan  1  1970 /dev/ram1

Di Linux, kapan saja di satu sistem mayor:nomor minor untuk setiap jenis perangkat unik. Namun jumlahnya dapat berubah seiring waktu, dan tidak perlu sama di seluruh sistem Linux yang berbeda (bahkan distribusi, kernel, dan perangkat keras yang sama). Perhatikan bahwa perangkat karakter dan blok memiliki spasi penomoran yang berbeda, mis. block major 1 ditugaskan ke disk RAM, char major 1 ditugaskan ke satu set perangkat kernel termasuk null dan zero.

Secara historis jurusan perangkat (kebanyakan) statis dialokasikan melalui registri (juga masih ada, meskipun tidak dipelihara, di Documentation/devices.txt sumber kernel ). Saat ini banyak perangkat dialokasikan secara dinamis, ini dikelola oleh udev, dan pemetaan dapat dilihat di /proc/devices . Perangkat tetap masih ada di incude/uapi/linux/major.h (baru saja dipindahkan dari include/major.h )

Sekarang meskipun kombinasi mayor:minor secara unik mengidentifikasi instance perangkat tertentu, tidak ada yang menghentikan Anda membuat beberapa node perangkat (file) yang merujuk ke perangkat yang sama. Mereka bahkan tidak harus dibuat di /dev (tetapi mereka harus berada di sistem file yang mendukung pembuatan node perangkat, dan tidak dipasang dengan nodev pilihan).

Penggunaan yang umum adalah membuat perangkat nol, nol, dan acak duplikat di chroot:

# find /dev /var/chroot -regextype posix-extended -regex ".*/(zero|null|random)" -type c | 
xargs ls -l
crwxrwxrwx 1 root root 1, 3 2012-11-21 03:22 /dev/null
crw-rw-r-- 1 root root 1, 8 2012-05-07 10:35 /dev/random
crw-rw-rw- 1 root root 1, 5 2012-11-21 03:22 /dev/zero
crwxrwxrwx 1 root root 1, 3 2012-11-21 03:22 /var/chroot/sendmail/dev/null
crw-rw-r-- 1 root root 1, 8 2012-05-07 10:35 /var/chroot/sendmail/dev/random
crw-rw-rw- 1 root root 1, 5 2012-11-21 03:22 /var/chroot/sendmail/dev/zero

Nama-nama itu hanya alias, kernel tidak terlalu peduli dengan sebagian besar nama atau lokasi, kernel peduli dengan nomor mayor sehingga dapat memilih driver yang benar, dan driver (biasanya) peduli dengan nomor minor sehingga dapat memilih contoh yang benar.

Terkait:Belajar Bahasa Inggris – Ketika “kuat” digunakan setelah angka, apakah itu merujuk pada angka yang tepat atau angka perkiraan??

Sebagian besar nama hanyalah konvensi (meskipun beberapa ditentukan oleh POSIX). Perhatikan juga bahwa satu perangkat dapat mendaftar untuk beberapa nomor utama, periksa sd driver di /proc/devices; nama modul driver (.ko ) tidak harus sama dengan nama perangkat, dan tidak harus sama dengan node perangkat di /dev , dan satu modul driver dapat mengelola beberapa perangkat logis/fisik atau nama perangkat.

Untuk rekap:Anda mungkin memiliki dua atau lebih node perangkat (di /dev/ atau di tempat lain) yang memiliki nomor mayor:minor yang sama, tetapi jika jenisnya sama, mereka merujuk ke perangkat yang sama. Anda dapat memiliki satu driver yang dapat menangani beberapa instance utama, tetapi di dalam kernel dan di dalam driver, untuk setiap jenis (char atau blok) nomor mayor:minor diambil untuk merujuk ke perangkat tertentu (utama) dan instance tertentu ( minor) perangkat.

Anda tidak dapat memiliki dua node perangkat dengan tipe dan mayor:minor yang sama dan mengharapkan mereka mengakses dua perangkat logis atau fisik yang berbeda. Saat perangkat sedang diakses, kernel memilih satu driver berdasarkan jenis dan nomor utama (dan tidak berdasarkan nama node perangkat), dan menurut konvensi, nomor minor secara deterministik memilih instance atau sub-fungsi tertentu.

Perbarui Beberapa sejarah yang menarik dan beberapa perspektif *BSD dapat ditemukan di BSDCon Poul-Henning Kamp 2002 presentasi:https://www.usenix.org/legacy/events/bsdcon/full_papers/kamp/kamp_html/

Jika Anda melompat kembali ke tahun 1978 (milik Alcatel-Lucent, Jurnal Teknis Sistem Bell Juli-Agustus 1978) ‘Sistem Berbagi Waktu Unix ' menjelaskannya dengan jelas (hal1937):

Perangkat dicirikan oleh nomor perangkat utama, nomor perangkat kecil, dan kelas (blok atau karakter). Untuk setiap kelas, ada larik titik masuk ke driver perangkat. Nomor perangkat utama digunakan untuk mengindeks larik saat memanggil kode untuk driver perangkat tertentu. Nomor perangkat minor diteruskan ke driver perangkat sebagai argumen. Nomor kecil tidak memiliki arti selain yang dikaitkan dengannya oleh pengemudi. Biasanya, pengemudi menggunakan nomor minor untuk mengakses salah satu dari beberapa perangkat fisik yang identik.


Linux
  1. Bagaimana Cara Meningkatkan Jumlah Inode Dalam Sistem File Ext4?

  2. Batas Praktis Jumlah Snapshot Btrfs?

  3. Linux – Jumlah Utama Unix Anda?

  1. Linux – Bagaimana Kernel Linux Mengetahui Nomor Mayor dan Minor Perangkat?

  2. Ubah nomor port server SSH default

  3. Cara Mengidentifikasi Nomor Mayor dan Minor Untuk Perangkat Blok di Unix

  1. Membatasi jumlah klien yang terhubung pada VirtualHost di Apache

  2. Nomor perangkat dalam keluaran perintah stat

  3. Apa perbedaan antara distribusi Linux utama? Akankah saya menyadarinya?