/dev/sr0 与/dev/cdrom



Luo Weifeng 2011-5-17


这个问题貌似困扰了我一小会,因为要查看cd的mount point,使用mount命令查看后竟然是设备/dev/sr0挂载到了我准备的磁盘mount point,我试着umount了这个设备,使用/dev/cdrom 挂载了后竟然没有区别,然后查看设备节点,发现如下:

原来/dev/cdrom 只是一个到sr0的符号链接。那么sr到底代表什么呢,google了一下发现了一个邮件列表里边也有个哥们郁闷这事。摘录如下:

> > > On Wed, Nov 4, 2009 at 10:17 PM, Derek Broughton > <derek@pointerstop.ca> wrote: > Verde Denim wrote: > > > On Tue, Nov 3, 2009 at 9:34 AM, Derek Broughton > > <derek@pointerstop.ca>wrote: > > > > > > > Translation – I don’t know either… lol > > > Actually, I’d already said that – and suggested “raw” as a > wild guess. But > I was intrigued that Detlef thought that knowing what it stood > for would > prevent errors, since I really can’t imagine how most of us > would need to > know it. > — > derek > > And knowing the acronym definitions probably won’t help the learning > too much, either. > But, according to the Linux SCSI sub-system documentation I have, it > would have to stand for _SCSI_ _READ_ since it is a cd drive that is > designated read-only. For generic operations on the same device, it > would map to sg0 (_SCSI_ _GENERIC_) in order to gain the write perm. > Apparently all of the devices like /dev/sr0, /dev/st0, /dev/nst0x map > to an sg device for generic operations. > Although _raw_ seems to be a good logical choice. Loïc had it right. But you should read the code from orbit. It’s the only way to make sure. >From a 2.4 kernel source drivers/scsi/sd.c static struct Scsi_Device_Template sd_template = { name:”disk”, tag:”sd”, scsi_type:TYPE_DISK, <== “d” for disk major:SCSI_DISK0_MAJOR, /* * Secondary range of majors that this driver handles. */ min_major:SCSI_DISK1_MAJOR, max_major:SCSI_DISK7_MAJOR, blk:1, detect:sd_detect, init:sd_init, finish:sd_finish, attach:sd_attach, detach:sd_detach, init_command:sd_init_command, }; drivers/scsi/st.c static struct Scsi_Device_Template st_template = { name:”tape”, tag:”st”, scsi_type:TYPE_TAPE, <== “t” for tape major:SCSI_TAPE_MAJOR, detect:st_detect, init:st_init, attach:st_attach, detach:st_detach }; drivers/scsi/sr.c static struct Scsi_Device_Template sr_template = { name:”cdrom”, tag:”sr”, scsi_type:TYPE_ROM, <== “r” for ROM major:SCSI_CDROM_MAJOR, blk:1, detect:sr_detect, init:sr_init, finish:sr_finish, attach:sr_attach, detach:sr_detach, init_command:sr_init_command }; >From a 2.6 kernel source drivers/scsi/sr.c MODULE_DESCRIPTION(“SCSI cdrom (sr) driver”); MODULE_LICENSE(“GPL”); MODULE_ALIAS_BLOCKDEV_MAJOR(SCSI_CDROM_MAJOR); MODULE_ALIAS_SCSI_DEVICE(TYPE_ROM); MODULE_ALIAS_SCSI_DEVICE(TYPE_WORM); — sktsee — ubuntu-users mailing list ubuntu-users@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-users  


sr代表 scsi + rom

sd代表 scsi + disk

sg 代表 scsi + generic

st代表 scsi + tape