mknod - make block or character special files
mknod [OPTION]... NAME TYPE [MAJOR MINOR]
    option 有用的就是 -m 了
    name   自定义
    type   有 b 和 c 还有 p
    主设备号
    次设备号

p
FIFO型
b
块文件
c
字符文件

GNU版本还允许使用u('unbufferd'非缓冲化),以保持与C语言的一致。

当创建一个块文件或字符文件时,主、次设备号必须在文件类型参数后给出。(十进制或八进制以0开头;GNU 版本还允许使用以0x开头的十六进制)缺省地,所产生的文件模式为0666('a+rw')。

选项

-m mode, --mode=mode
为新建立的文件设定模式,就象应用命令chmod一样,以后仍然使用缺省模式建立新目录。

主设备号是由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” 将建立ttyv0到ttyv7共8个设备文件,使用 “MAKEDEV wd1s1a” 命令,将建立 wd1、wd1s1、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]#

主次设备号在驱动中有两种设定方法
一种是明确指定了设备号,通常在register_chrdev_region函数的第一个参数中给定。
另一种是动态分配设备号,通常在alloc_chrdev_region函数的第一个参数中得到,这种方法也是较为常见的。

对于动态分配的设备号,一旦编号分配了, 就可以从 /proc/devices 中读取它.

mknod命令的更多相关文章

  1. linux mknod命令解析

    linux mknod命令解析 http://www.cnblogs.com/cobbliu/archive/2011/07/05/2389014.html mknod:make node  生成设备 ...

  2. 【转】linux mknod命令解析

    转自:http://www.cnblogs.com/cobbliu/archive/2011/07/05/2389014.html 个人觉得linux的软件设计思想异常强大,比如把所有的设备都当做文件 ...

  3. mknod命令的使用

    1.mknod命令 在Linux系统下,mknod命令可用于系统下字符设备文件和块设备文件的创建. (1)命令语法 mknod(选项)(参数) (2)常用选项说明 -Z:设置安全的上下文. -m:设置 ...

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

    mknod - make block or character special files mknod [OPTION]... NAME TYPE [MAJOR MINOR]     option 有 ...

  5. 设备文件的创建mknod

    设备文件是通过mknod命令来创建的.其命令格式为: mknod [OPTION]... NAME TYPE [MAJOR MINOR] TYPE取值: 主设备号和次设备号两个参数合并成一个16位的无 ...

  6. mknod用法以及主次设备号【转】

    转自:http://www.cnblogs.com/hnrainll/archive/2011/06/10/2077583.html mknod 用途 创建特殊文件. mknod Name { b | ...

  7. Linux-mknod命令(9)

    mknod命令用于创建字符设备文件和块设备文件 (ls /dev -l 结果显示b开头和c开头的,即标识了块设备和字符设备.) 为了管理设备,所以设备中都有两个设备号:  主设备号:为了区分不同类型的 ...

  8. Linux常用命令及Vim使用

    1.ls 命令 --------------------------------------------------------------------- ls以默认方式显示当前目录文件列表 ls - ...

  9. bin&sbin 命令作用

    最近需要了解sbin与bin的功能,需要整理一下.一下全部为Ubuntu14里面默认安装的.在这里收集一下,转载请注明出处! bin bash shell bunzip2 .bz2文件的解压缩程序. ...

随机推荐

  1. 洛谷 [POI2007]BIU-Offices 解题报告

    [POI2007]BIU-Offices 题意 给定\(n(\le 100000)\)个点\(m(\le 2000000)\)条边的无向图\(G\),求这个图\(G\)补图的连通块个数. 一开始想了半 ...

  2. 20165218 2017-2018-2 《Java程序设计》课程总结

    20165218 2017-2018-2 <Java程序设计>课程总结 一.每周作业链接汇总 20165218 我期望的师生关系 20165218 学习基础和C语言基础调查 2016521 ...

  3. python基础----递归函数(二分法、最大深度递归)

    递归函数 定义:在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. #例子1 # age()=age()+ n= age(n)=age(n-)+ # age()=ag ...

  4. 图像处理之均值滤波介绍及C算法实现

    1 均值滤波介绍 滤波是滤波是将信号中特定波段频率滤除的操作,是从含有干扰的接收信号中提取有用信号的一种技术. 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临 ...

  5. Codeforces Round #286 (Div. 2) B 并查集

    B. Mr. Kitayuta's Colorful Graph time limit per test 1 second memory limit per test 256 megabytes in ...

  6. hihocoder 1509异或排序

    描述 给定一个长度为 n 的非负整数序列 a[1..n] 你需要求有多少个非负整数 S 满足以下两个条件: (1).0 ≤ S < 2^60 (2).对于所有 1 ≤ i < n ,有 ( ...

  7. jre,jdk,jvm的关系

    今天在用maven搭建项目工程的时候出错的原因竟然是因为使用了jre,而非jdk导致报错,这里就搜集了有关这方面的信息:   JDK(Java Development Kit)是针对Java开发员的产 ...

  8. TCP/IP地址格式转换API

    1.htonl ()和ntohl( )  ntohl( )-----网络顺序转换成主机顺序(长整型) u_long PASCAL FAR ntohl (u_long netlong); htonl ( ...

  9. 题解【bzoj2038 [2009国家集训队]小Z的袜子(hose)】

    Description \(m\) 个询问,每次给出一个区间,求从这个区间中取出两个数使得它们同色的概率. \(n,m,a_i \leq 50000\) Solution 莫队模板题 最后的概率是 选 ...

  10. 手脱tElock 0.98b1 -> tE!

    声明: 只为纪录自己的脱壳历程,高手勿喷 第一种:两次内存法 注: ①这是在win7x32系统上运行的脱壳,所以可能地址不同 ②修复的时候用等级三修复,最后修复不了的剪切掉然后转存合一正常运行,已测试 ...