概述

优质
小牛编辑
135浏览
2023-12-01

设备管理是 Linux 中比较基础的知识,与内核的关系也比较密切。随着 Udev 的广泛使用,Linux 发行版的智能程度越来越高,许多 Linux 新用户对 /dev 目录下的东西变得不再熟悉,有时候遇见问题就会抓狂。

Linux 中的设备按照存取方式的不同,可以分为两种:

字符设备
无缓冲且只能顺序存取
块设备
有缓冲且可以随机(乱序)存取

而按照是否对应物理实体,也可以分为两种:

物理设备
对实际存在的物理硬件的抽象
虚拟设备
不依赖于特定的物理硬件,仅是内核自身提供的某种功能

无论是哪种设备,在 /dev 目录下都有一个对应的文件(节点),并且每个设备文件都必须有主/次设备号,主设备号相同的设备是同类设备,使用同一个驱动程序(虽然目前的内核允许多个 驱动共享一个主设备号,但绝大多数设备依然遵循一个驱动对应一个主设备号的原则)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。

内核能够识别的所有设备都记录在源码树下的 Documentation/devices.txt 文件中。另外,在 http://www.lanana.org/docs/device-list/ 也有一份,貌似已经失去维护。

注意:在 /dev 目录下除了各种设备节点之外还通常还会存在:FIFO管道、Socket、软/硬连接、目录。这些东西并不是设备文件,因此也就没有主/次设备号。