我知道/dev
目錄儲存設備文件,但是/dev
目錄是唯一可以儲存設備文件的地方,還是只是約定將設備文件儲存在目錄中/dev
?
答案1
這只是慣例。事實上,在chroot
環境或容器(例如docker)中,裝置條目可能存在於其他地方。
使設備條目成為設備條目的因素是類型條目,而不是名稱
因此,例如:
% ls -ld /dev/vda
brw-rw---- 1 root disk 253, 0 May 26 07:00 /dev/vda
第一個“b”表示這是一個區塊設備。 「253」是主設備號,「0」是次設備號。在這種情況下
% grep virt /proc/devices
253 virtblk
因此主設備253與虛擬塊層相關。
您會注意到名稱“vda”在這裡並不重要!
我確實可以
sudo mknod /tmp/foo b 253 0
現在/tmp/foo
將存取完全相同的資料:
% sudo dd if=/dev/vda bs=256b count=1 | sum
....
40545 128
% sudo dd if=/tmp/foo bs=256b count=1 | sum
....
40545 128
通用名稱對於人類和設定檔很重要(例如,/dev/tty1
是 Linux 電腦上第一個虛擬控制台的通用名稱;/dev/ttyS0
是第一個序列埠的通用名稱),但它是類型(區塊/字元)和主/次編號這使它起作用。