在我的 Ubuntu 12.04 上,当我插入 USB 设备时,在 dev 目录树下 USB 设备会添加如下:
/dev/bus/usb/001/001
在我的 CentOS 5 上添加如下内容:
/dev/bus/usb/devices/2-1.4/
lsusb 需要在 /dev 下创建 usb 设备,就像第一个一样。为了解决这个问题,当我尝试手动链接它们时,操作系统给出“没有这样的文件或目录错误。”,但在 ubuntu 下可以毫无问题地链接相同的目录。
CentOS:
ln -s /dev/bus/usb/devices/2-1.4/descriptors /sys/bus/usb/001/001
ln: creating symbolic link `/sys/bus/usb/001/001' to `/dev/bus/usb/devices/2-1.4/descriptors': No such file or directory
在 ubuntu 中创建 /dev/bus/usb 不会出现错误。
当我在 CentOS 下插入我的 USB 设备时,日志如下:
Dec 5 12:20:18 2012 kernel: [74465.103460] usb 2-1.4: new high-speed
USB device number 36 using ehci_hcd
Dec 5 12:20:18 2012 kernel: [74465.194011] scsi62 : usb-storage 2-1.4:1.0
Dec 5 12:20:18 2012 kernel: [74465.194091] scsi63 : usb-storage 2-1.4:1.1
Dec 5 12:20:19 2012 kernel: [74466.196062] scsi 62:0:0:0: CD-ROM
HUAWEI Mass Storage 2.31 PQ: 0 ANSI: 2
Dec 5 12:20:19 2012 kernel: [74466.196441] scsi 63:0:0:0:
Direct-Access HUAWEI TF CARD Storage PQ: 0 ANSI: 2
Dec 5 12:20:19 2012 kernel: [74466.198548] sr0: scsi-1 drive
Dec 5 12:20:19 2012 kernel: [74466.198630] sr 62:0:0:0: Attached scsi
generic sg1 type 5
Dec 5 12:20:19 2012 kernel: [74466.198719] sd 63:0:0:0: Attached scsi
generic sg2 type 0
Dec 5 12:20:19 2012 kernel: [74466.201555] sd 63:0:0:0: [sdb]
Attached SCSI removable disk
Dec 5 12:20:22 2012 udevd-event[18390]: wait_for_sysfs: waiting for
\'/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/host62/ioerr_cnt\'
failed
Dec 5 12:20:22 2012 udevd-event[18391]: wait_for_sysfs: waiting for
\'/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.1/host63/ioerr_cnt\'
failed
Dec 5 12:20:25 2012 udevd-event[18443]: wait_for_sysfs: waiting for
\'/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.1/host63/target63:0:0/ioerr_cnt\'
failed
Dec 5 12:20:25 2012 udevd-event[18442]: wait_for_sysfs: waiting for
\'/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.0/host62/target62:0:0/ioerr_cnt\'
failed
这可能是什么原因造成的?我该如何解决?
答案1
如果您拥有以下软件包的旧版本,则必须升级它们。
- libusb1-1.0.8-0.1.el5.i386.rpm
- libusb1-devel-1.0.8-0.1.el5.i386.rpm
- libusb1-静态-1.0.8-0.1.el5.i386.rpm
然后您需要在“/dev/”目录下创建“usb/bus/001/”目录。如果问题没有解决,您可以使用“mknod”命令创建节点。
答案2
我相信 lsusb 使用 /sys 挂载的 sysfs 来发现设备。我通过查看 的输出确认了这一点strace lsusb 2>&1 | grep open
。您确定已正确挂载 /sys 吗?以下是我的 sysfs 在 Ubuntu 上的挂载方式:
$ mount | grep sysfs
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
答案3
在当前系统中,/dev
命名空间是动态的并由 处理udev(7)
。也许分配设备文件的配置不同?
答案4
我的印象是你的 udev 对你的内核来说太旧了。如果你的 udev 不是最新的,你可能需要更新它。另请参阅http://us.generation-nt.com/answer/2-6-37-rc1-wait-sysfs-prints-errors-help-200947741.html(尤其是评论#4中的补丁)
lsusb 应该不相关。但如果它不起作用,请确保您的 sysfs 以正确的权限安装在 /sys 上。