当我第一次开始使用 Ubuntu 时,我思考我的 CD 驱动器是通过/dev/cdrom0
和/dev/cdrom1
等映射的,但今天看看,你可以看到它们现在通过前缀sr
:
$ ll /dev/{cdrom,sr*}
lrwxrwxrwx 1 root root 3 Feb 10 09:15 /dev/cdrom -> sr0
brw-rw----+ 1 root cdrom 11, 0 Feb 10 09:15 /dev/sr0
brw-rw----+ 1 root cdrom 11, 1 Mar 27 10:30 /dev/sr1
我只是好奇这代表什么。TLDP 在这里没什么帮助;它仍然列为sd
“SCSI 驱动器”,我认为现在它更常见的意思是“串行驱动器”。
“sr” 代表什么?为什么/dev/cdrom
仍然存在?
答案1
Linux年代CSI德isk 支持模块 =标准差_mod
Linux年代CSI电视ape 支持模块 =英石
Linux SCSI CDrom 支持模块 = sr_mod
Linux年代CSIG能量支持模块 =新加坡
因此,最有可能的是,这代表年代CSI 光盘r奥姆
我注意到这并没有完全解决这个问题。
如您所见,/dev/cdrom
只是指向 的符号链接/dev/sr0
,而后者才是实际的设备。
字符设备的命名取决于初始化它的模块:SCSI
CD-ROM 由模块处理sr_mod
,并以模块本身命名(srX
)。
如果您的 CD-ROM 驱动器恰好是一个IDE
驱动器,那么实际的设备名称就是/dev/hdX
。
因此,由于 CD-ROM 驱动器可以通过多个接口连接到系统,因此/dev/cdrom
总是指向第一个 CD-ROM 设备(SCSI
或IDE
其他设备),最有可能为驱动器提供一个独特的通用接口,以供系统中需要使用它的设备使用。
CDROM 设备名称不是由统一的 CDROM 层维护,而是由每个单独的协议栈维护。在 SCSI 子系统中,设备名称由 sr 驱动程序维护,而 IDE 子系统则通过其中央“ide”驱动程序(即不是由 ide-cd 驱动程序)维护设备名称。USB 和 IEEE1394 cd 设备名称由其各自的堆栈维护。这可以部分解释为什么 /dev/cdrom 通常是指向相应子系统设备名称的符号链接。
答案2
阅读这,这封信r
似乎来自 ROM。但没有提供进一步的来源。