Mknod
mknod 是做什麼的?
那麼
mknod
命令,它有什麼作用?/dev/random$ mknod -m 666 random c 1 8
我知道這
-m
指定了權限,並且mknod
總體上在文件系統中創建了一個inode
可以是文件、目錄、設備、fifo 等的文件……但我真的不明白最後 3 個參數是做什麼的。
最後三個參數是類型、主要、次要。他們確定設備實際代表什麼;名稱是約定俗成的,但不能確定功能。如果你創建它,
/dev/wubbalubbadubdub
它仍然/dev/random
和類型一樣長,major,minor 說它是這樣的。類型
c
是字元設備(與塊設備相反)。主要/次要數字本質上是幻數。除了參考相關的核心文件之外,沒有其他方法可以理解它們。
https://www.kernel.org/doc/Documentation/admin-guide/devices.txt
因此,在您的情況下,您有字元設備,主要 1,次要 8,其記錄如下:
1 char Memory devices ⇑MAJOR ⇓MINOR = /dev/name 1 = /dev/mem Physical memory access 2 = /dev/kmem Kernel virtual memory access 3 = /dev/null Null device 4 = /dev/port I/O port access 5 = /dev/zero Null byte source 6 = /dev/core OBSOLETE - replaced by /proc/kcore 7 = /dev/full Returns ENOSPC on write 8 = /dev/random Nondeterministic random number gen. 9 = /dev/urandom Faster, less secure random number gen. 10 = /dev/aio Asynchronous I/O notification interface 11 = /dev/kmsg Writes to this come out as printk's, reads export the buffered printk records. 12 = /dev/oldmem OBSOLETE - replaced by /proc/vmcore
這就是它的全部。如果你想
/dev/random
你必須使用c 1 8
. 如果你想要它/dev/urandom
,它就是c 1 9
。這就是它在核心中的歷史列舉方式。大多數時候,您只使用核心、devtmpfs、udev 或您的發行版提供的靜態/dev 結構提供的設備節點;您很少需要自己創建它們,即使那樣也可能有幫助者,因此您不必自己找出正確的幻數。
您也可以使用 mknod 創建 FIFO,但 mkfifo 應該更易於使用。