如何正确创建/dev/dvd?

cha*_*cus 10 udev 12.04

/dev/dvd默认情况下,某些程序会查找 DVD。当我第一次在没有插入 DVD 的情况下启动我的计算机时,/dev/dvd存在并指向正确的位置 ( /dev/sr0)。但是,当我插入 DVD 时,就/dev/dvd消失了。我希望它一直存在,这样我就不必/dev/sr0在寻找 DVD 的程序中导航。如何确保/dev/dvd符号链接存在并指向正确的位置?

看起来我可以向/etc/udev/rules.d/70-persistent-cd.rules. 该站点提供了几个示例,但该70-persistent-cd.rules文件说“将 ENV{GENERATED}=1 标志添加到您自己的规则中”,这不是示例的一部分。该man 7 udev页面是坚不可摧的我,我不相信链接页面提供的信息,我需要100%。

那么,我可以在现代的 Ubuntu 12.04(或更高版本)系统上做些什么来使其/dev/dvd始终存在并指向正确的设备?

编辑:是否像ENV{GENERATED}=1在链接页面中添加规则一样简单,如下所示:

SUBSYSTEM=="block", KERNEL=="sr0", SYMLINK+="dvd", GROUP="cdrom", ENV{GENERATED}=1
Run Code Online (Sandbox Code Playgroud)

这是现代 Ubuntu 的正确信息吗?ENV{GENERATED}当它不是生成的而是手写的时候,在那里做什么?

Rad*_*anu 8

本教程很好地解释了如何做你想做的事:

根据它,有两种创建符号链接的方法。第一个是使用型号名称和序列号:

SUBSYSTEM=="block", ENV{ID_MODEL}=="...", ENV{ID_SERIAL}=="...", ENV{GENERATED}="1", SYMLINK+="dvd"
Run Code Online (Sandbox Code Playgroud)

这样,即使您将驱动器移动到 IDE 总线上的不同位置,符号链接也将保持正确,但/dev/dvd如果更换驱动器,则不会创建符号链接。

第二个是基于设备在总线上的位置:

SUBSYSTEM=="block", ENV{ID_TYPE}=="...", ENV{ID_PATH}=="pci-...", ENV{GENERATED}="1", SYMLINK+="dvd"
Run Code Online (Sandbox Code Playgroud)

这样,即使您更换不同型号的驱动器,符号链接也将保持正确,但将它们放置在 IDE 总线上的相同位置。ENV{ID_TYPE}如果您将 DVD 以外的其他东西放在总线上的那个位置,该键可确保符号链接消失。

你可以找到的值ID_MODELID_SERIALID_TYPEID_PATH(在使用下面的命令udevtest? -了-在教程中不起作用命令在Ubuntu):

udevadm info --query=all --name=sr0
Run Code Online (Sandbox Code Playgroud)

SUBSYSTEM=="block"关键是必要的,以避免匹配SCSI通用设备。没有它,在使用 SCSI DVD 的情况下,符号链接有时会指向正确的/dev/sr0设备,有时会指向/dev/sg0,这是错误的。

ENV{GENERATED}="1"需要该密钥以防止 udev75-cd-aliases-generator.rules文件覆盖您的自定义规则。