用脚本动态创建设备节点
来源:互联网 发布:linux apt get java8 编辑:程序博客网 时间:2024/04/30 22:14
Linux系统的主设备号本来是固定的,这没有什么不好。但是,有许多理由要求Linux系统能够自动为设备动态分配主设备号——只要设备驱动程序提出申请。尤其是当你不打算给你的客户提供驱动程序源代码的时候,为了避免与客户的系统中的其他设备相冲突,采用动态获取主设备号的办法是一个好主意。
系统动态分配主设备号带来的问题是,提前创建的设备节点可能失效。在没有udev或者mdev这类机制的小型嵌入式系统中,这个问题显而易见(但是,在这样封闭的嵌入式系统中为什么还要动态分配主设备号呢?这是哲学家该思考的问题)。所以,有些系统管理员想到用脚本实现设备节点的自动创建。这样,写好一个脚本之后,不管内核被重新编译多少次,也不管module的加载顺序怎么修改,都能够以不变应万变。
其实写这样的脚本很简单,因为最关键的,获取major的代码只需要一句:
major=$(grep -q <driver-name> /proc/devices | cut -b1,2,3)
这里要提到/proc/devices这个文件节点。cat一下你会发现,输出结果类似:
# cat /proc/devices
Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
6 lp
7 vcs
10 misc
13 input
14 sound
21 sg
29 fb
116 alsa
128 ptm
136 pts
162 raw
180 usb
188 ttyUSB
189 usb_device
216 rfcomm
226 drm
254 pcmcia
Block devices:
1 ramdisk
2 fd
3 ide0
7 loop
8 sd
9 md
65 sd
66 sd
67 sd
68 sd
69 sd
70 sd
71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
253 device-mapper
254 mdp
因此,"grep -q fb /proc/devices"命令得到的结果是
" 29 fb"
再把这个结果作为输入,执行"cut -b1,2,3"之后得到
major=" 29"
虽然29前面还有个空格,但并不耽误你把它写进"mknod /dev/fb0 c $major 0"这条命令里。
简单地利用grep还可以进一步做些事情,例如用
grep -n "Block devices:" /proc/devices
这条命令可以在得到的结果前面加上行号,类似
27:Block devices
再把该结果作为输入,执行"cut -d':' -f1"命令,即可得到行号27。
用相同的方法得到设备驱动名字所在的行号,与27比较,就可以得知你想要创建的设备节点是字符设备还是块设备。
不过,这个方法有些无聊,因为如果你既知道设备节点的名字,又知道设备驱动的名字,却不知道应该创建字符设备还是块设备,那么你真的应该检讨一下了。
- 用脚本动态创建设备节点
- linux用mknod创建设备(节点)
- 自动创建设备节点
- 自动创建设备节点
- 自动创建设备节点
- 创建设备节点mknod
- 自动创建设备节点
- 自动创建设备节点
- 创建设备节点
- 创建设备节点问题
- 在linux中动态的申请设备号,怎么在文件系统中创建设备节点
- 动态创建css节点
- 动态创建input节点
- jstree动态创建节点
- 设备节点的动态建立
- 设备节点的动态建立
- 《Linux设备节点创建》手动与自动创建设备节点
- 创建设备节点之mknod
- sql总结1--基本语法
- sql总结2--提升
- sql3--技巧
- sql4--数据开发经典
- sql5--基本函数
- 用脚本动态创建设备节点
- sql6--常识
- sql7--SQLServer2000同步复制技术实现步骤
- 成为亿万富翁的5大秘诀
- 微软发布Silverlight 5 Beta新特性
- 关于宏定义与main函数的参数问题
- 游戏手柄;鼠标;键盘功能
- BootRom application
- Ubuntu 32bit 4GB 内存问题和解决办法