[ARM-Linux开发]mknod命令使用

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  主号  次号
相关文章
相关标签/搜索