首先,我们来看一下linux系统中设备管理的基本知识。
我们的linux操作系统与外部设备例如磁盘、光盘等)的通信都是通过设备文件进行的,APP应用可以打开、关闭这些设备文件,或者从这些设备中读取数据,并向这些设备写入数据这个操作和读写普通文件一样是easy的。 linux为各种类型的设备文件如read ,write )、open 打开)和close )提供相同的接口。
因此,在系统与设备进行通信之前,请先创建设备文件。 此设备文件存储在/dev目录中。 实际上,系统缺省生成许多设备文件,但您可能需要自己手动创建一些设备文件。 在这种情况下,请使用mkdir、mknod等命令。
mknod的标准格式为: mknod devname { b|c } major minor
DEVNAME是要创建的设备文件名。 如果要将设备文件放在特定文件夹下,则必须首先在mkdir的dev目录下创建一个新目录。
2、b和c分别表示块设备和字符设备。
b表示系统从块设备读取数据时,直接从内存缓冲区读取数据,而不通过磁盘。
c表示字符设备文件和设备在传输数据时作为字符进行传输,一次传输一个字符。 例如,打印机、终端作为文字传输数据。
3、MAJOR和MINOR分别表示主设备编号和副设备编号。
为了管理设备,系统为每个设备分配一个编号。 1个设备编号由主设备编号和辅助设备编号组成。 主要设备编号表示一种设备类型,而次要设备编号用于区分同一类型的设备。 在linux操作系统中,设备文件编号被指定为32位无符号整数。 其中,前12位为主设备编号,后20位为从设备编号,因此向系统申请设备文件时,主设备编号不能超过4095,从设备编号不能超过2^20 -1。
问题如何在linux上显示设备的主设备编号
如果要静态分配设备编号,则必须检查系统中已存在的设备编号,以确定要使用的新设备编号。 可以读取/proc/devices文件以获取设备的设备编号。 /proc/devices文件包含字符设备和块设备的设备编号,如下所示:
[ root @ Tom/] # cat/proc/devices/* cat命令/proc/devices显示文件的内容*
Character devices: /*字符设备*/
1毫米
4 /dev/vc/0
7 vcs
13输入
14森德
21 sg
块设备:/*块设备*
1磁盘
2软盘
8 sd
253设备映射器
254 mdp
此时例如ls -l /dev/input
crw—-1root root 13,64 feb 221:39 event 0
crw—-1root root 13,65 feb 221:39 event 1
crw—-1root root 13,66 feb 221:39 event 2
crw—-1root root 13,67 feb 221:39 event 3
crw—-1root root 13,63 feb 221:39 mice
crw—1 root root 13,32 feb 221:39 mouse 0
crw—-1root root 13,33 feb 221:39 mouse 1
很明显,input设备下的主设备编号为13,辅助设备编号用于通过事件和mice进行区分。
问题2 :使用2:mknod
mknod
定义: mknod-makeblockorcharacterspecialfiles
语法: mknod /dev/ttyUSBn c Major Minor
1,n必须等于次要编号Minor,且小于主要编号Major。
2、c:字符设备b:块设备,例如磁盘、软盘、磁带; 其他设备基本上是文字设备)。
删除的时候像普通的文件删除一样使用rm命令就可以了
此外,mknod还可以创建管道文件爱。 后面的c和b的位置写p就可以了