如何根据序列号查找USB存储设备PATH?

如何根据序列号查找USB存储设备PATH?

/var/log/dmesg如果我在例如中找到序列号SerialNumber: xxxxxxxxxxxxxx。如何找到该设备以及该设备的路径?

我需要启用内核模块吗usb-storage?这对我有什么作用?我如何让它持久?

我尝试使用,lsusb但存储设备似乎没有出现。但是我可以在 dmesg 中看到它,没有任何错误。我需要找到 USB 存储设备并在其上创建文件系统。

答案1

我需要启用内核模块 usb-storage 吗?这对我有什么作用?我如何让它持久?

不会。现在您发现的任何 Linux 内核都会包含该模块或已编译该模块,并且系统会在必要时加载它。

如果您使用 RHEL,则更是如此,正如您的标签所示。

我尝试使用 lsusb 但存储设备似乎没有出现。

然后计算机根本不会将其视为工作 USB 设备,因此您遇到了硬件问题。

但是可以在 dmesg 中看到它,没有任何错误。

如果没有错误,那么 dmesg 会告诉您有一个特定大小的存储设备,包括其设备名称。

如果这种情况没有发生,那么你的存储设备就损坏了,Linux 无法改变这种情况。

答案2

当你看到例如:

usb 1-1: Product: DT 100 G2
usb 1-1: Manufacturer: Kingston
usb 1-1: SerialNumber: xxxxxxxxxxxxxxxxxxxxxx

记下 USB 路径前缀(1-1在此示例中)。

其后应包含如下消息:

usb-storage 1-1:1.0: USB Mass Storage device detected
scsi host6: usb-storage 1-1:1.0

第一行表示该设备的配置1、接口0已被识别为USB存储设备,并且usb-storage驱动程序模块已自动加载并已控制它。该驱动程序将其呈现为 SCSI 兼容存储设备scsi host6,如第二行所示。

如果usb-storage模块未加载,则此步骤和任何后续步骤都不会发生,并且该设备将无法作为存储设备进行访问。

然后通用SCSI层依次识别设备:

scsi 6:0:0:0: Direct-Access     Kingston DT 100 G2        PMAP PQ: 0 ANSI: 0 CCS
scsi 6:0:0:0: Attached scsi generic sg0 type 0

请注意 SCSI 四部分标识符:6:0:0:0= 主机 6、控制器/总线 0、目标 0、LUN 0 现在与 USB 存储设备关联。如果您需要使用原始 SCSI 命令访问它,您可以使用该/dev/sg0设备来完成。

sd 6:0:0:0: [sda] 31342592 512-byte logical blocks: (16.0 GB/14.9 GiB)
sd 6:0:0:0: [sda] Write Protect is off
sd 6:0:0:0: [sda] No Caching mode page found
sd 6:0:0:0: [sda] Assuming drive cache: write through
  sda: sda1
sd 6:0:0:0: [sda] Attached SCSI removable disk

之后,通常的磁盘存储驱动程序检测到它是一个实际的类磁盘存储设备,并将其呈现为 /dev/ sda。它还检测到 USB 存储设备的分区表只有一个分区,如该sda: sda1行所示。如果磁盘具有例如三个分区,则它可能看起来像这样sda: sda1 sda2 sda3


usb-storage插入 USB 存储设备时模块可能无法加载的常见原因有两个:

  • 该设备已损坏且无法再被识别为 USB 存储设备
  • usb-storage该系统经过“强化”以获得额外的安全性,并且已有意禁用该模块的自动加载。

如果您怀疑可能是前者,请尝试使用其他 USB 存储设备。如果设备没有出现在lsusb列表中,最有可能的解释是硬件故障,因为这意味着该设备甚至无法完成最底层的USB识别。

如果是后者的话停止并确保您确实可以将 USB 存储设备插入该特定服务器,然后再继续下一步。强化通常表明服务器可能正在提供一些关键服务,这些服务可能对技术、管理(变更控制/审计)或法律级别有特殊要求。对此类服务器进行未经授权的篡改可能会导致您失去工作和/或被起诉,具体取决于司法管辖区。安全总比后悔好。


在大多数强化指令中禁用内核模块的常用方法是在某个文件中添加一行/etc/modprobe.d/*.conf,例如:

install usb-storage /bin/true   #could be also /bin/false

这用一个不执行任何操作的命令替换了模块的实际加载,从而禁用了该模块的自动加载。

注释掉该行(并depmod在较旧的发行版中运行)通常足以解除限制,然后应该可以通过拔出并重新插入 USB 存储设备来检测到它。但在此之前,请确保您拥有适当的授权并已完成所有必要的变更管理步骤。

相关内容