/dev 目錄是 Linux 中唯一可以儲存裝置檔案的地方嗎?

/dev 目錄是 Linux 中唯一可以儲存裝置檔案的地方嗎?

我知道/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是第一個序列埠的通用名稱),但它是類型(區塊/字元)和主/次編號這使它起作用。

相關內容