找不到要挂载的 USB 设备

找不到要挂载的 USB 设备

我如何找到哪个 /dev/? 设备来在 Red Hat 3 Taroon 上安装我的 USB 硬盘?我在 Google 上搜索了很多次,并检查了日志文件,但仍然毫无头绪。我正在尝试与你们这些专家进行最后一次尝试,

# /sbin/fdisk -l

没有提供有关 USB 驱动器的任何信息。

# lsusb -vv
Bus 004 Device 005: ID 059f:0951 LaCie, Ltd 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x059f LaCie, Ltd
  idProduct          0x0951 
  bcdDevice            0.00
  iManufacturer          10 LaCie
  iProduct               11 LaCie Hard Drive USB
  iSerial                 5 9F908FFFFFFF
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          4
    bmAttributes         0xc0
      Self Powered
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk (Zip)
      iInterface              6 MSC Bulk-Only Transfer
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize        512
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               none
        wMaxPacketSize        512
        bInterval               0
  Language IDs: (length=4)
     0409 English(US)

这里还有一些可能有趣的内容

# /var/log/message
May 23 18:17:13 mypc kernel: USB.c: USB disconnect on device 00:1d.7-5 address 4
May 23 18:18:00 mypc kernel: hub.c: new USB device 00:1d.7-5, assigned address 5
May 23 18:18:00 mypc kernel: USB.c: USB device 5 (vend/prod 0x59f/0x951) is not claimed by any active driver.

答案1

谢谢大家的答案

内核中未加载 usb-storage 模块

modprobe usb-storage

答案2

dmesg 是查找该信息的地方。

例如,这是将 USB 闪存盘插入我的盒子后,使用 dmesg | tail 的输出

verrall@granite:~$ dmesg | tail
[4296470.550538] sd 46:0:0:0: [sdg] Write Protect is off
[4296470.550538] sd 46:0:0:0: [sdg] Mode Sense: 00 00 00 00
[4296470.550538] sd 46:0:0:0: [sdg] Assuming drive cache: write through
[4296470.555971] sd 46:0:0:0: [sdg] 16058440 512-byte hardware sectors (8222 MB)
[4296470.555971] sd 46:0:0:0: [sdg] Write Protect is off
[4296470.555971] sd 46:0:0:0: [sdg] Mode Sense: 00 00 00 00
[4296470.555971] sd 46:0:0:0: [sdg] Assuming drive cache: write through
[4296470.555971] sdg: sdg1
[4296470.764472] sd 46:0:0:0: [sdg] Attached SCSI removable disk
[4296470.764509] sd 46:0:0:0: Attached scsi generic sg7 type 0

从这里我可以看到我的设备是 /dev/sdg,并且它上面有一个分区 /dev/sdg1。因此,要将其挂载到 /mnt,我会这样做,

# sudo mount /dev/sdg1 /mnt

答案3

如果您知道要安装的分区的标签(例如,名为“LaCie”的卷),您可以执行以下操作

sudo findfs LABEL="LaCie"

它将打印出该分区对应的设备名称。

答案4

我谷歌搜索了很多次,找到的最佳解决方案是使用 dmesg。然而,这对于脚本来说并不是一个令人满意的答案。我可以解析 dmesg 的输出,但有人无意中调整日志消息会破坏我的脚本。

我找到了一个适用于内核为 2.6.32-5-amd64 的 Debian 发行版的答案。似乎所涉及的文件与发行版没有太大关系,但我尚未验证这一点。

秘诀是记住,就 Linux 内核而言,USB 驱动器也是 SCSI 驱动器。命令“ls -l /sys/bus/scsi/devices”将显示目录内容为一组符号链接。您会发现所有 USB 驱动器都会链接到包含字符串“usb”的路径,而非 USB 驱动器的符号链接路径中则不会有该字符串。

/sys/bus/scsi/devices 中有三组目录,即 ?:?:?:? 目录、host? 目录和 target?:?:? 目录。您会发现相应的 /sys/bus/scsi/devices/?:?:?:?/block 目录包含一个以其使用的设备文件命名的目录。

以下 Perl 片段展示了如何获取设备文件列表(每个 USB 驱动器一个):

opendir(DIR,"/sys/bus/scsi/devices") or die "无法枚举 SCSI 设备\n";

虽然(我的$file=readdir(DIR)){
    下一步,如果($file eq'.');
    接下来如果($file eq'..');
    下一步,如果(!(-l“/sys/bus/scsi/devices/$file”));
    下一步,如果(!($file=~/\d*:\d*:\d*:\d*/));
    如果(readlink(“/ sys / bus / scsi / devices / $ file”)=〜/ usb /){
        opendir(INNER_DIR,"/sys/bus/scsi/devices/$file/block")或die“无法打开$file/block\n”;
        虽然(我的$inner_file = readdir(INNER_DIR)){
            接下来如果($inner_file eq'.');
            接下来如果($inner_file eq'..');
            推@dev_files,“/dev/$inner_file”;
        }
        关闭内部目录;
    }
}
关闭DIR;
die "未找到 USB 设备\n" 除非(标量@dev_files);

对于我的 $line (@dev_files) {
    打印“$line\n”;
}

相关内容