/proc/devices awk

/proc/devices/中的设备是通过insmod加载到内核的,它可产生一个major供mknod作为 参数。 

/dev/* 是通过mknod加上去的,格式:mknod device1 c/b major minor 如:mknod /dev/ttyS0 c 4 64,用户通过此设备名来访问你的驱动。

那如何在shell中自动创建设备节点呢

使用linux的awk命令

首先我们查看一下/proc/devices的格式

# cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
 10 misc
 13 input
 14 sound
 21 sg
 81 video4linux
 89 i2c
 90 mtd
116 alsa
128 ptm
136 pts
247 dm365mmap
248 irqk
249 edma
250 cmem
251 dev_dma
252 dev_i2c
253 csl
254 rtc

Block devices:
  1 ramdisk
  8 sd
 31 mtdblock
 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
254 mmc
每一条记录有两个部分组成:major和驱动名称

所以awk可这样提取所要的信息

#awk '$2=="dev_i2c" { print $1}' /proc/devices
$2表示输入给awk的第二个参数,同理$1表示第一个参数,特殊的$0表示整条记录

意思是如果驱动名称等于"dev_i2c",就打印他的major

执行上述命令后,输出:

252

那怎样使用输出的信息呢,只哟将它复制给一个变量就好了

#major=$(awk '$2=="dev_i2c" { print $1}' /proc/devices)
这样print 就将$1打印到了major中。测试一下

#echo $(major)
252
目的实现了,上述命令可以直接写到脚本里,先加一个判断/dev/dev_i2c点文件是否存在,不存在就创建

insmod ./drv.ko

if [ ! -f /dev/dev_i2c ]
then
    major=$(awk '$2=="dev_i2c" {print $1}' /proc/devices)
    mknod /dev/dev_i2c c ${major} 0
fi







  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值