mknod - make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
option 有用的就是 -m 了
name 自定義
type 有 b 和 c 還有 p
主設備號
次設備號css
主設備號是由Linux/major.h定義的,以下定義了一個DOC設備:
#define IGEL_FLASH_MAJOR 62html
假若有一個命令mknod doc b 62 0 :
其中的doc爲定義的名字,b指塊設備,0指的是整個DOC。若是把0換爲1,則1指的是DOC的第一個分區。2是第2個,對於塊設備次設備號就表示該塊設備上的分區號,依次類推。linux
至於mknod console c 5 1 的意思也很類似:
console是設備的名字
c指字符設備
5是該設備在major.h中定義的標記
1是第一個子設備shell
mknod console c 5 1
console爲設備文件名,本身隨便取
c是指字符型設備 (可選b,塊設備)
5是主設備號 /dev/devices裏面記錄現有的設備
找個沒有用的就能夠了
1是次設備號,當你要給兩個一樣的設備上一個驅動的時候就要分了,從0開始,1就是第二個了 ,對於字符設備,次設備號就表示同類型設備的不一樣設備。安全
一般狀況下,安裝系統時已經建立了經常使用的設備文件,能夠直接訪問這些設備文件來訪問設備。但在用戶從新定製內核,並添加了新硬件驅動程序以後,新驅動程序對應的設備文件就可能不存在。在FreeBSD中,最多見的例子就是在內核中增長聲卡的驅動程序時,就須要建立相應設備文件。數據結構
建立設備文件的基本方式是使用mknod,可是必須知道該設備的正確設備號才能夠。另外一種簡單的方式是使用/dev目錄下的shell程序 MAKEDEV來完成,MAKEDEV實質上就是記錄了不少設備的名字與其設備號之間的關係的程序,所以它能使用正確的設備號來建立設備。首先進入 /dev目錄,而後再執行MAKEDEV。函數
# cd /dev性能
# sh MAKEDEV snd0spa
MAKEDEV將使用設備名做參數建立設備文件,同時也建立這個設備文件依賴的其餘相關設備文件。MAKEDEV的參數,並不必定爲建立的設備文件名。例如創建 「MAKEDEV vty8」 將創建ttyv0到ttyv7共8個設備文件,使用 「MAKEDEV wd1s1a」 命令,將創建 wd一、wd1s一、wd1s2等,以及wd1s1a、wd1s1b等設備文件。也可使用all作MAKEDEV的參數,這將首先清除/dev目錄下的全部設備文件,而後MAKEDEV建立全部預設的設備文件。通常狀況下這將建立足夠多的設備文件,其中的大部分設備文件在具體的系統中不會用獲得。操作系統
若是對一個系統中沒有(或者即便有但內核沒有支持或探測到)的設備對應的設備文件進行操做,則系統返回Device not configured的錯誤信息。
MAKEDEV將使用mknod和對應設備的正確參數,包括字符或塊設備、主設備號和從設備號來創建相應的設備文件。管理員也能夠直接使用 mknod建立設備文件,但這就必須將這些設備參數通通指定正確才行。所以除非對系統中的硬件驅動程序特別熟悉,通常不直接使用mknod來建立設備文件。
[root@can]# ll /dev/hd
hda hda1 hda2 hda3 hda4 hda5 hdc
[root@can]# ll /dev/hda
brw-r----- 1 root disk 3, 0 2008-12-18 /dev/hda
[root@can]# ll /dev/hda4
brw-r----- 1 root disk 3, 4 2008-12-18 /dev/hda4
[root@can]#
mknod命令用於建立Linux中的字符設備文件和塊設備文件。 語法 mknod(選項)(參數) 選項 -Z:設置安全的上下文; -m:設置權限模式; -help:顯示幫助信息; --version:顯示版本信息。 參數 文件名:要建立的設備文件名; 類型:指定要建立的設備文件的類型; 主設備號:指定設備文件的主設備號; 次設備號:指定設備文件的次設備號。 實例 ls -la /dev/ttyUSB* crw-rw—- 1 root dialout 188, 0 2008-02-13 18:32 /dev/ttyUSB0 mknod /dev/ttyUSB32 c 188 32 擴展知識 Linux的設備管理是和文件系統緊密結合的,各類設備都以文件的形式存放在/dev目錄 下,稱爲設備文件。應用程序能夠打開、關閉和讀寫這些設備文件,完成對設備的操做,就像操做普通的數據文件同樣。 爲了管理這些設備,系統爲設備編了號,每 個設備號又分爲主設備號和次設備號。主設備號用來區分不一樣種類的設備,而次設備號用來區分同一類型的多個設備。對於經常使用設備,Linux有約定俗成的編 號,如硬盤的主設備號是3。 Linux爲全部的設備文件都提供了統一的操做函數接口,方法是使用數據結構struct file_operations。這個數據結構中包括許多操做函數的指針,如open()、close()、read()和write()等,但因爲外設 的種類較多,操做方式各不相同。Struct file_operations結構體中的成員爲一系列的接口函數,如用於讀/寫的read/write函數和用於控制的ioctl等。 打開一個文件就是調用這個文件file_operations中的open操做。不一樣類型的文件有不一樣的file_operations成員函數,如普通的磁盤數據文件, 接口函數完成磁盤數據塊讀寫操做;而對於各類設備文件,則最終調用各自驅動程序中的I/O函數進行具體設備的操做。這樣,應用程序根本沒必要考慮操做的是設 備仍是普通文件,可一概看成文件處理,具備很是清晰統一的I/O接口。因此file_operations是文件層次的I/O接口。
來自: http://man.linuxde.net/mknod
1. mknod命令用於建立一個設備文件,即特殊文件 2. 首先要明白什麼是設備文件,簡單的咱們說 操做系統與外部設備(入磁盤驅動器,打印機,modern,終端 等等)都是經過設備文件來進行通訊 的,在Unix/Linux系統與外部設備通信以前,這個設備必須首先要有一個設備文件,設備文件均放在/dev目錄下。通常狀況下在安裝系統的時候系統自動建立了不少已檢測到的設備的設備文件,但有時候咱們也須要本身手動建立,命令行生成設備文件的方式有 insf,mksf,mknod等等 3. 根據mknod命令的使用參數來看【mknod Name { b | c } Major Minor 】,使用mknod以前,至少要明白如下幾點: 設備文件類型:分爲塊設備和字符設備。ls -l /dev 結果顯示第一個字段有b*** 和 c****,這裏即標識了塊設備和字符設備。 字符設備文件----字符設備文件傳送數據給設備的時候,一次傳送一個字符,終端,打印機,繪圖儀,modern等設備都通過字符設備文件傳送數據 塊設備---系統經過塊設備文件存取一個設備的時候,先從內存中的buffer中讀或寫數據,而不是直接傳送數據到物理磁盤,這種方式能有效的提升磁盤和CD-ROMS的I/O性能。磁盤和CD-ROMS便可以使用字符設備文件也可以使用塊設備文件。 4. 來看看mknod 命令,若是該設備文件你想放在一個特定的文件夾下固然就先建立文件夾 mknod 設備文件名[/dev/xyz] b/c 主號 次號