查看注册设备
我们可以查看proc/devices文件可以获知系统中注册的设备,第一例是主设备号,第二例是设备名,一般同一类设备的主设备号相同。
而次设备号能够唯一标识特定设备,我们可以使用ls -l可以显示出设备文件的主、次设备ID
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
21 sg
29 fb
81 video4linux
108 ppp
116 alsa
128 ptm
136 pts
180 usb
189 usb_device
199 galcore
210 ft_rw_iic_drv
216 rfcomm
246 ttyGS
247 on2psm
248 on2map
249 hx280enc_h1
250 hx280enc
251 hx170dec
252 media
253 rtc
254 iio
Block devices:
259 blkext
7 loop
8 sd
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
179 mmc
253 device-mapper
254 zram
udev
linux之前是用devfd来创建dev目录下的设备节点,但是后来使用了udev来替代,udev是属于用户态,udev接受kernel通过Netlink socket发送的uevent来创建设备(热插拔),而冷插拔的linux在sysfs下面有一个uevent节点,可以往该节点写一个“add”,导致内核重新发送Netlink的uevent事件。
sysfs文件系统
sysfs文件系统和proc很相似,其有block bus dev devices class fs kernel power和firmware等。
block目录是一些块设备,devices是所有系统的设备,bus是所有总线下的设备 比如usb i2c总线,class是对设备进行分类。
也就是说最后bus class block的设备文件 可能是devices下设备文件的符号链接
具体说明可以在内核源码文件Documentation/filesystems/sysfs.txt中看。