udev 符号链接 - /dev/sda 指向哪里

udev 符号链接 - /dev/sda 指向哪里

据说 udev 创建了识别实际设备的符号链接,/dev/disk/by-uuid 就是一个例子。

[root@centos1 by-uuid]# pwd

/dev/disk/by-uuid

[root@centos1 by-uuid]# ls -l

总计 0 lrwxrwxrwx 1 root root 10 六月 26 00:59 4cfc879d-1d4e-4289-856c-5f532a74bb2d -> ../../sda

上述是否意味着 a) /dev/sda 指向 uuid 4cfc879d-1d4e-4289-856c-5f532a74bb2d

或者

b)uuid 4cfc879d-1d4e-4289-856c-5f532a74bb2d 指向 /dev/sda 吗?

==================================================

如果答案是 a,我一直认为链接应该是从左到右的?那么有人将如何引用 uuid 转到 /dev/sda 呢?我还认为 /dev/sda 应该是由 udev 动态添加的,并且它的命名基于某些规则。

如果答案是 b,那么 sda 指向哪里?据说内核动态地将设备添加到 /dev/ 文件夹,并且使用 udev 我们可以保留其中设备的命名。

[root@centos1 dev]# 密码

/dev

[root@centos1 dev]# ls -lt星展银行

brw-rw---- 1 根磁盘 8, 0 6月 26 00:59 sda

==================================================

我尝试在 /etc/udev/rules.d/ 中查找规则,但无济于事。我在 CentOS 上。

我正在尝试 /lib/udev/rules.d/,但看不到将 sda 添加到 /dev/ 的规则

请指教。

答案1

链接是/dev/sda1. 您可以使用文件命令:例如,在我的系统中,

  # file *
  ff28e743-4409-41b3-99ea-f133cdcc86be: symbolic link to `../../sda1' 

因此,你的选择b是正确的。/dev/sda 是不是一个链接,因此它根本不指向任何其他东西:它只是一个特殊的(设备)文件,例如这篇维基百科文章

我没有使用 CentOS,但在我的 Debian/Kubuntu 系统中,磁盘规则位于/lib/udev/rules.d, 在下面

   # ls -lh 60-per*
     -rw-r--r-- 1 root root  616 apr 15 22:33 60-persistent-alsa.rules
     -rw-r--r-- 1 root root 2,5K apr 15 22:33 60-persistent-input.rules
     -rw-r--r-- 1 root root  947 apr 15 22:33 60-persistent-serial.rules
     -rw-r--r-- 1 root root  929 mag  4  2012 60-persistent-storage-dm.rules
     -rw-r--r-- 1 root root 5,6K apr 15 22:33 60-persistent-storage.rules
     -rw-r--r-- 1 root root 1,4K apr 15 22:33 60-persistent-storage-tape.rules
     -rw-r--r-- 1 root root  769 apr 15 22:33 60-persistent-v4l.rules

相关文件当然是60-持久存储.规则。如果您无法在系统中找到它,我建议您尝试:

    find / -type f -name '*persistent-storage*.rules'

编辑:

那么 /sda 是否被 udev 添加到 /dev 中?

是的。

我们如何确保“sda”始终保持为“sda”?

我们没有。规则由udev在安装时。事实上,上述文件包含以下规则:

   # scsi devices
   KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi"

编辑2

最简单的事情,因为你无法下定决心,就是制定自己的规则。假设你有一个设备,叫做现在sdd,但您想在下次重启时将其称为 sda。

首先需要找出一些参数:

   udevadm info -a -p $(udevadm info -q path -n /dev/sdd)

这将输出大量信息。搜索如下行(当然,您的搜索内容会有所不同):

  ATTRS{idVendor}=="18a5"
  ATTRS{idProduct}=="0302"
  ATTRS{serial}=="TT0E4E008XW3DT9H"

您现在可以使用这些参数来制定自己的规则,并将其插入到/etc/udev/rules.d/10-local.rules

 ATTRS{idVendor}=="18a5", ATTRS{idProduct}=="0302", ATTRS{serial}=="TT0E4E008XW3DT9H", KERNEL=="sd?", NAME="sda", RUN+="/home/my_name/bin/my_program"

最后一部分,RUN+="/home/my_name/bin/my_program",是可选的:如果您愿意,您可以使用它来运行命令,但您也可以完全省略它。

相关内容