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” 将建立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]#
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” 将建立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]#
分享到:
相关推荐
Linux一切皆文件,系统与设备通信之前,要建立一个存放在/dev目录下的设备文件,默认情况下就已经生成了很多设备文件,有时候自己手动新建一些设备文件,这就会用到mknod。 语法格式:mknod [参数] 常用参数: -Z...
笔者语: 1. 内容涉及比较多,自己也没有分章节,因为觉得这些内容关联性很强,自己也懒的去弄了。... 2.3 内核与文件系统操作的几个相关的系统调用sys_open, sys_read, sys_write, sys_mount, sys_mknod。
(2)命名管道通信:利用mkfifo(name,mode)或mknod(name,mode,0)创建一个命名管道,然后利用它和文件部分系统调用实现不同进程间的通信。 改造之,使之成为客户/服务器模式,并完成一定的任务(自己定义)。 4、进程...
在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。Mandrake,Gentoo等...
#mknod /dev/hgo c 227 0 3、使用应用程序访问内核: 可以用如下方式写应用程序: int fd; fd = open (“/dev/hgo”, O_RDWR); ioctl(fd, IOCTL_LCD_RESET, 0); //read(fd, *buf, count); //write(fd, *buf,...
# Don't use mknod ,unless you run this Script as root ! # mknod -m 600 dev/console c 5 1 # mknod -m 666 dev/null c 1 3 # echo "making dir : mnt tmp var" # mkdir mnt tmp var chmod 1777 tmp # ...
Mknod –m 666 console c 5 1 Mknod –m 666 null c 1 3 Cd .. 安装/etc Tar etc.tar.gz -C /***/rootfs 编译内核模块: 进入Linux内核目录(LINUX 2。6。29) Make modules ARCH=arm CROSS_COMPLILE=arm-...
Ubuntu虚拟机下使用cutecom进行串口通信 1. 安装cutecom 使用以下命令安装cutecom sudo apt-get install cutecom 调用以下命令打开cutecom ...sudo mknod /dev/ttyUSB0 c 188 0 为ttyUSB0开放权
用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。 stat命令用于显示文件的状态信息。stat...
第三步:insmod加载模块,并生成设备节点mknod。(此步有两种方法); 第四步:编写测试文件test.c并编译成a.out后即可进行设备的读写测试。 在此,希望各位读者不要直接复制我的代码,至少按照我的代码敲一遍,关键...
linux进程间通信——命名管道 FIFO(命名管道)不同于匿名管道之处在于它提供⼀个... 创建命名管道的系统函数有两个:mknod和mkfifo。两个函数均定义在头⽂件sys/stat.h,函数原型如下: #include #include <sy
在wordpress模板制作过程中,有一些貌似复杂的问题,其实只要确定了问题出现的位置,大多数都可以自行解决。1.使用Firebug进行排查1.1 简要介绍与安装方法Firebug是Firefox的一款插件,提供了一整套web开发所必需的...
Linux2.4驱动(静态),不使用devfs,需要自己mknod。
使用交叉编译器3.4.1,编译之后,根据超级终端的设备号mknod节点
1.os.mknod(“test.txt”) #创建空文件 2.fp = open(“test.txt”,w) #直接打开一个文件,如果文件不存在则创建文件 3.关于open 模式: 详情: w:以写方式打开, a:以追加模式打开 (从 EOF 开始, 必要时创建新...
Bel Fuse公司的GALW9V647 450瓦单输出dc-dc转换器是该公司最新款Sirius系列电路板安装CoolConverter模块。该产品是一种适用于电信、网络和无线领域的“延展型”1/4砖产品,在48V标称输入和9.6V输出下,最大输出...
chroot du hostname mknod ptx stty uname cksum echo id mv pwd sum unexpand comm env install nice readlink sync uniq cp expand join nl rm tac unlink csplit expr kill nohup rmdir tail uptime cut factor ...