mknod創建設備(加載新的設備驅動時候,通常會用到此命令)


mknod - make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
option
有用的就是-m
name
自定義
type
b c 還有p
主設備號
次設備號


主設備號是由linux/major.h定義的,如下定義了一個DOC設備:
#define IGEL_FLASH_MAJOR 62

假如有一個命令mknod doc b 62 0
其中的doc為定義的名字,b指塊設備,0指的是整個DOC。如果把0換為1,1指的是DOC的第一個分區。2是第2個,對於塊設備次設備號就表示該塊設備上的分區號,依次類推。

至於mknod console c 5 1 的意思也很相似:
console
是設備的名字
c
指字符設備
5
是該設備在major.h中定義的標記
1
是第一個子設備

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 snd0

MAKEDEV將使用設備名作參數創建設備文件,同時也創建這個設備文件依賴的其他相關設備文件。MAKEDEV的參數,並不一定為創建的設備文件名。例如建立MAKEDEV vty8” 將建立ttyv0ttyv78個設備文件,使用MAKEDEV wd1s1a” 命令,將建立wd1wd1s1wd1s2等,以及wd1s1awd1s1b等設備文件。也可以使用allMAKEDEV的參數,這將首先清除/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]#



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM