OpenSuse USB HDD 获取内部 HDD 的设备节点名称“/dev/sdb”

OpenSuse USB HDD 获取内部 HDD 的设备节点名称“/dev/sdb”

操作系统:OpenSuse Leap 42.2,内核 4.4.76-1-默认

我有以下问题:

当我在运行时连接 USB 存储设备时,它会获取分配的设备节点名称,/dev/sdk这很好。

如果我在插入外部 USB 驱动器的情况下重新启动计算机,操作系统会决定将/dev/sdb本应是内部硬盘驱动器的 USB 存储设备连接到该设备。

我需要一种方法来强制外部 USB 驱动器获取高于或等于的设备节点名称/dev/sdk

这个话题到目前为止我学到了:

根据 udev 手册,无法更改 /dev/ 目录中的文件名称: NAME 用于网络接口的名称。 udev 无法更改设备节点的名称,只能创建附加符号链接。

这对我来说意味着我无法使用udev规则强制内核/驱动程序为我的 USB 设备分配某个设备节点名称,例如/dev/sdk.

我使用创建了一个符号链接这个话题并且符号链接有效。现在我有一个静态别名usbDevice -> sdb1 / usbDevice -> sdk1,它引用外部 USB 驱动器,无论它是否安装在/dev/sdk或 上/dev/sdb

但这并不能解决我的问题,因为它不会更改我的 USB 设备的实际节点名称。

有谁知道我怎样才能:

  • 强制此特定 USB 设备获取分配的高于或等于的节点名称/dev/sdk

也许是通过告诉操作系统它应该在所有其他设备连接到该/dev文件夹​​后查找 USB 设备。

我不介意外部 USB 设备分配什么设备节点名称,只要它不替换我已使用的设备节点之一即可。

有人能给我提示从哪里开始吗?系统服务?

答案1

对我有用的强制设备顺序的一种方法(至少对于声卡驱动程序)是确保 SATA 驱动程序被编译到内核中,并在启动过程中稍后加载 USB 大容量存储模块。这样你就可以确保你的内部驱动力得到/dev/sdb

答案2

绝不尝试将硬盘强制安装到特定/dev/sd*设备。内核枚举这些设备,并且它们在每次启动时可能会以不同的顺序进行初始化。如果你试图干涉它,你只会破坏东西。

相反,请使用已提供的符号链接来为您提供持久名称。这些可以在/dev/disk/by-*目录中找到。您可以选择硬件小路(例如某些 USB 设备上的某些 USB 端口),通用唯一标识符分配给卷并且无论硬盘插入何处都可以工作,标签您用 分配给卷tune2fs,并且可以轻松记住,或者IDs 由硬盘的制造商和型号组成。

只要在你想用的地方使用它们就/dev/sdk可以了。

相关内容