一。设备命名规则
二。设备节点
三。devfs
四。udev
一。[[Anchor(NBE1)]]设备命名规则
在Linux中把硬件设备当作文件来管理。每个与Linux系统相连的实际设备(包括硬盘、光盘驱动器、扫描仪等),都可以在文件系统中表示出来。Linux系统把每一个设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。 从用户的角度来看,对设备的使用和一般文件的使用一样。
Linux的设备命名规则可以参看内核文档Documentation/devices.txt。
1。硬盘
每个硬盘表现为一个单独的设备文件。通常只能有2-4个IDE硬盘。这就是/dev/hda、/dev/hdb、/dev/hdc、和/dev/hdd。SCSI是/dev/sda,/dev/sdb等等。
2。软驱
软驱的名字是复杂的,因此Linux有一个特定的软驱设备类型,能自动检测软驱中软盘的种类。它使用不同的软盘类型试图读取新插入的软盘的第一个扇区,直到找到正确的一个。这自然要求软盘是已经格式化过的。自动设备叫/dev/fd0 、/dev/fd1等。
3。scsi设备
当一个新的 SCSI 主卡被侦测到时, SCSI 驱动程序会寻找连接著的设备。请检查系统日志你的设备被正确地侦测到了。新的SCSI 设备会被指定为第一个可用的SCSI设备文件。第一个 SCSI 硬盘是 /dev/sda,第一个SCSI 磁带机是 /dev/st0,还有,第一个CD-ROM 会是/dev/scd0。
4。网卡设备
Linux 的以太型网卡界面通常被称做eth0、eth1 等等。环形卡亦同样地被看待.然而它们被称做 tr0、tr1等等。ifconfig 命令是被用来观看及修改网络界面状态的。Linux的另一特点是网络界面并不会像其他设备一样地被看成是一个在/dev里头的文件。所以如果您在/dev内找不到它们时请不要觉得惊讶。
当一个以太网卡被侦测到时,它会被指定为第一个可用的接口卡名字,通常为eth0。
5。串行设备
Linux 的串行设备都是被经由/dev/cua* 和/dev/ttyS*特殊设备文件来做取用。ttyS* 的设备被使用在进来的连接,例如直接地连接终端机。cua* 的设备被使用在往外的连接,比如说调制解调器。而每一个实体串口都各有ttyS和cua两个设备文件:要使用哪个适当的设备到你的应用上都由您来决定。
当一个串行卡或数据卡被侦测到时,它会被指定成为第一个可用的串行设备。通常是/dev/ttyS1(cua1) 或 /dev/ttyS2 (cua2) ,这完成看原已内建的串口数目。
二。[[Anchor(NBE2)]]设备节点
linux中的设备号可以通过查看系统文件/proc/devices获得,实质上内核对设备major的定义在文件include/linux/major.h中。所以是先有驱动程序在内核中,才有设备节点在目录中。
设备号(特指主设备号)的主要作用,就是声明设备所使用的驱动程序。驱动程序和设备号是一一对应的,当你打开一个设备文件时,操作系统就已经知道这个设备所对应的驱动程序。
1。设备节点文件
设备节点文件是一种专用文件,存贮着三种信息:布朗型、整型、整型。布朗型在字符文件与块文件之间作出选择,两个整型是主、次设备号。
设备节点文件并不在磁盘上占用空间,仅仅是为操作系统提供交流,而不是为数据存贮服务。设备节点文件指向一个硬件设备(如:磁盘、磁带、打印机、虚拟控制台)或者操作系统提供的服务(如:/dev/null, /dev/random)。
块文件通常类似于磁盘设备(在数据可以被访问的地方赋予一个块号,意味着同时设定了一个块缓存)。所有其他设备都是字符文件。以前,两种文件类型间是有差别的。比如:字符文件I/O没有缓存,而块文件则有。
mknod命令是用来产生这种类型文件的。mknod 用指定名称产生一个FIFO(命名管道)、字符专用或块专用文件。
以下参数指定了所产生文件的类型:
p 代表FIFO型
b 代表块文件
c 代表字符文件
2。设备节点的注册
2.1块设备注册
设备列表major_names
函数register_blkdev
2.2字符设备注册
设备列表chrdevs
函数register_chrdev和register_chrdev_region
三。[[Anchor(NBE3)]]devfs
四。[[Anchor(NBE4)]]udev