我如何找到哪个 /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”; }