3.4. scsidev 中的设备名称

一个名为 scsidev 的实用程序会将设备名称添加到/dev/scsi目录中,这些名称反映了每个设备的 SCSI 地址。名称的前两个字母是上层 SCSI 驱动程序名称(即 sd、sr、st 或 sg)。“h”后面的数字是主机号,而“-”后面的数字用于主机识别。对于 PCI 适配器,这似乎总是 0,而对于 ISA 适配器,这是它们的 IO 地址。[或许可以使该字段更具信息性或将其删除。]“c”、“i”和“l”后面的数字分别是通道(总线)、目标 ID 和 LUN 值。原始磁盘在显示时没有尾随分区号,而其中包含的分区在显示时,分区号跟在“p”后面。

scsidev 通常作为启动序列的一部分运行。在 SCSI 配置更改后运行它也可能很有用(例如,添加或删除底层驱动程序模块,或使用 add/remove-single-device 命令)。在我的系统上运行 scsidev 后,该系统包含 2 个磁盘、一个 CD 读取器和写入器以及一个扫描仪,然后在/dev/scsi目录中添加了以下名称

$ ls -l /dev/scsi/   # abridged
total 0
brw-------  8,   0 Sep  2 11:56 sdh0-0c0i0l0
brw-------  8,   1 Sep  2 11:56 sdh0-0c0i0l0p1
...
brw-------  8,   8 Sep  2 11:56 sdh0-0c0i0l0p8
brw-------  8,  16 Sep  2 11:56 sdh0-0c0i1l0
brw-------  8,  17 Sep  2 11:56 sdh0-0c0i1l0p1
...
brw-------  8,  24 Sep  2 11:56 sdh0-0c0i1l0p8
crw------- 21,   0 Sep  2 11:56 sgh0-0c0i0l0
crw------- 21,   1 Sep  2 11:56 sgh0-0c0i1l0
crw------- 21,   2 Sep  2 11:56 sgh1-0c0i2l0
crw------- 21,   3 Sep  2 11:56 sgh1-0c0i5l0
crw------- 21,   4 Sep  2 11:56 sgh1-0c0i6l0
br-------- 11,   0 Sep  2 11:56 srh1-0c0i2l0
br-------- 11,   1 Sep  2 11:56 srh1-0c0i6l0
通过忽略第二个字母并查找名称匹配,可以看到 SCSI 通用设备名称 (sg) 与它们在其他上层驱动程序(即 sd、sr 或 st)控制下的对应名称之间的映射。因此,“sdh0-0c0i0l0”和“sgh0-0c0i0l0”指的是同一设备。通过排除法,“sgh1-0c0i5l0”文件名是扫描仪,因为此类设备只能通过 sg 接口访问。

scsidev 包还包括引入诸如/dev/scsi/scanner之类的名称的功能,方法是操作/etc/scsi.alias配置文件。该软件包还包括有用的 rescan-scsi-bus.sh 实用程序。有关 scsidev 的更多信息,请参阅 W6。在我的系统上,devfs 和 scsidev 可以愉快地共存。