使用 /etc/udev/rules 在 /dev 中创建符号链接

Mok*_*kum 4 usb udev symbolic-link

我正在攻读 Linux 基金会的 Linux 认证,但我对一个实验室有一些疑问。这是实验室:

  1. 在您的系统上创建并实施一个规则,该规则将在插入 USB 设备时创建一个名为 myusb 的符号链接。
  2. 将 USB 设备插入您的系统。它可以是笔式驱动器、鼠标、网络摄像头等。 注意:如果您在管理程序下运行虚拟机,则必须确保来宾可以看到 USB 设备,这通常只是单击鼠标,也会断开连接它来自主机。
  3. 获取 /dev 目录的列表并查看您的符号链接是否已创建。
  4. 移除 USB 设备。(如果它是一个驱动器,为了安全起见,你应该总是先卸载它。)
  5. 查看您的符号链接是否仍然存在于 /dev 中。

我在终端做了什么;

  1. 创建一个名为 /etc/udev/rules.d/75-myusb.rules

    sudo vim /etc/udev/rules.d/75-myusb.rules
    
    Run Code Online (Sandbox Code Playgroud)
  2. 并让它只包含一行内容:

    SUBSYSTEM=="usb", SYMLINK+="myusb"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重启 udev 服务并检查

    sudo /etc/init.d/udev restart    
    ls -lF /dev | grep myusb
    
    Run Code Online (Sandbox Code Playgroud)

但是比上一个命令没有输出,根本没有列表。

如何检查符号链接是否已创建?

use*_*.dz 5

几点

  • 使用75-,规则按顺序运行。您的规则有可能被来自 的下一个规则覆盖/lib/udev/rules.d/,更喜欢使用99-~90-

  • SUBSYSTEM=="usb", SYMLINK+="myusb" 太笼统

    它匹配所有事件操作add, remove& change。除了所有 USB 设备。也许你应该让它更严格。

    检查使用 lsusb

    Bus 003 Device 003: ID 0461:4d81 Primax Electronics, Ltd Dell N889 Optical Mouse
    
    Run Code Online (Sandbox Code Playgroud)

    并添加它们:

    ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4d81", SYMLINK+="myusb"
    
    Run Code Online (Sandbox Code Playgroud)
  • 并非所有设备都在/dev. (你能说说你用过什么类型的设备吗)

  • 奖励:),即使如此,关于树设备节点的规则仍然很广泛。当您插入相机时,不仅会创建一个节点,还会创建许多从树根到叶子的节点(在大多数情况下,叶子是想要的节点)。查看:

    udevadm info -a /dev/video0
    
    Run Code Online (Sandbox Code Playgroud)

    先前修改的规则可能匹配最后两个节点(而不是叶节点)。