$ lsusb
Bus 010 Device 002: ID 046d:c01e Logitech, Inc. MX518 Optical Mouse
Bus 010 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Мы собираемся попытаться узнать, какой драйвер используется для UPS APC. Обратите внимание, что существует два ответа на этот вопрос: драйвер, который ядро использовало бы, и драйвер, который используется в настоящее время. Пространство пользователя может дать ядру команду использовать другой драйвер (и в случае моего UPS APC, nut
имеет).
usbutils
пакет (на Debian, по крайней мере) включает названный сценарий usb-devices
. При выполнении его это производит информацию об устройствах в системе, включая которую используется драйвер:
$ usb-devices
⋮
T: Bus=10 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=051d ProdID=0002 Rev=01.06
S: Manufacturer=American Power Conversion
S: Product=Back-UPS RS 1500 FW:8.g9 .D USB FW:g9
S: SerialNumber=XXXXXXXXXXXX
C: #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=24mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbfs
⋮
Обратите внимание, что это перечисляет формирователь тока, не по умолчанию. Нет способа найти по умолчанию.
Если у Вас есть смонтированный debugfs, ядро поддерживает файл в том же формате как usb-devices
распечатывает в /sys/kernel/debug/usb/devices
; можно просмотреть с less
, и т.д. Обратите внимание, что интерфейсы debugfs не стабильны, таким образом, различные версии ядра могут распечатать в другом формате, или пропускать файл полностью.
Еще раз это только показывает формирователь тока, не значение по умолчанию.
Можно получить информацию из /sys
, мысль его более болезненное, чем lspci
. Они /sys
интерфейсы должны быть довольно стабильными, поэтому если Вы пишете сценарий оболочки, это, вероятно, как Вы хотите сделать это.
Первоначально, lsusb
кажется, считает устройства от 1, /sys
от 0. Так 10-2 хорошее предположение для того, где найти, что UPS APC lsusb дает как шину 10, устройство 3. К сожалению, со временем то отображение терпит неудачу — sysfs числа повторных использований, даже когда номера устройств не. devnum
содержание файла будет соответствовать номеру устройства, данному lsusb, таким образом, можно будет сделать что-то вроде этого:
$ grep -l '^3$' /sys/bus/usb/devices/10-*/devnum # the ^ and $ to prevent also matching 13, 31, etc.
/sys/bus/usb/devices/10-2/devnum
Так, в этом случае это определенно 10-2
.
$ cd /sys/bus/usb/devices/10-2
$ ls
10-2:1.0 bDeviceClass bMaxPower descriptors ep_00 maxchild remove urbnum
authorized bDeviceProtocol bNumConfigurations dev idProduct power serial version
avoid_reset_quirk bDeviceSubClass bNumInterfaces devnum idVendor product speed
bcdDevice bmAttributes busnum devpath ltm_capable quirks subsystem
bConfigurationValue bMaxPacketSize0 configuration driver manufacturer removable uevent
Мы можем быть уверены, что это - правильное устройство cat
луг несколько файлов:
$ cat idVendor idProduct manufacturer product
051d
0002
American Power Conversion
Back-UPS RS 1500 FW:8.g9 .D USB FW:g9
Если Вы заглядываете 10-2:1.0 (:1
"конфигурация", .0
интерфейс — единственное USB-устройство может сделать несколько вещей и иметь несколько драйверов; lsusb -v
покажет их), существует modalias файл и символьная ссылка драйвера:
$ cat 10-2\:1.0/modalias
usb:v051Dp0002d0106dc00dsc00dp00ic03isc00ip00in00
$ readlink driver
../../../../../../bus/usb/drivers/usbfs
Так, формирователь тока usbfs
. Можно найти драйвер по умолчанию путем выяснения modinfo
о modalias:
$ /sbin/modinfo `cat 10-2\:1.0/modalias`
filename: /lib/modules/3.6-trunk-amd64/kernel/drivers/hid/usbhid/usbhid.ko
license: GPL
description: USB HID core driver
author: Jiri Kosina
author: Vojtech Pavlik
author: Andreas Gal
alias: usb:v*p*d*dc*dsc*dp*ic03isc*ip*in*
depends: hid,usbcore
intree: Y
vermagic: 3.6-trunk-amd64 SMP mod_unload modversions
parm: mousepoll:Polling interval of mice (uint)
parm: ignoreled:Autosuspend with active leds (uint)
parm: quirks:Add/modify USB HID quirks by specifying quirks=vendorID:productID:quirks where vendorID, productID, and quirks are all in 0x-prefixed hex (array of charp)
Так, значения по умолчанию UPS APC к hid
драйвер, который действительно корректен. И его в настоящее время использование usbfs, который корректен с тех пор nut
usbhid-ups
контролирует его.
Когда драйвер usbfs
, это в основном означает пространство пользователя (неядро), программа функционирует как драйвер. Нахождение, какая программа это, требует корня (если программа не работает как Ваш пользователь), и довольно легко: какой бы ни программа имеет открытый файл устройств.
Мы знаем, что наше устройство "жертвы" является шиной 10, устройство 3. Таким образом, файл устройств /dev/bus/usb/010/003
(по крайней мере, на современном Debian), и lsof
предоставляет ответ:
# lsof /dev/bus/usb/010/003
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
usbhid-up 4951 nut 4u CHR 189,1154 0t0 8332 /dev/bus/usb/010/003
И действительно, usbhid-ups
как ожидалось (lsof усеченный название команды для создания соответствия расположения при необходимости в полном имени можно использовать ps 4951
получить его, или вероятно некоторые выходные параметры форматирования lsof).
mount
использовать libblkid
для предположения файловой системы от устройства, Вы пытаетесь смонтироваться, и Вы видите, что это работает из сообщения об ошибке, которое это дает:
смонтируйтесь: неизвестный тип файловой системы 'vfat'
но странная вещь здесь состоит в том что, если необходимая файловая система находится в модуле, который еще не загружается, mount
попытайтесь автоматически загрузить использование модуля modprobe
.
Таким образом, мое единственное думаю так далеко - то, что что-то неправильно с Вашими модулями ядра:
/lib/modules/3.2.0-4-686-pae/kernel/fs/fat/vfat.ko
/lib/modules/3.2.0-4-686-pae/kernel/fs/fat/fat.ko
править
или по некоторым причинам mount
не удается выполниться modprobe
.
если Ваш/proc/filesystems содержит использование fat32 что как тип вместо этого. и разве идентификатор устройства для раздела данных не где-нибудь выше? например, у этого парня есть он как sdx12: http://dl.dropbox.com/u/16958605/FirePartedScreen1.png
/proc/filesystems
не содержит fat32. На самом деле от fdisk -l
Я могу читать, моя файловая система W95 FAT32
– simona
10.10.2013, 05:47
Некоторые идеи могут помочь:
vfat
модуль загружается (использование: lsmod
)mount --verbose -t vfat /dev/sdf1 /mnt/usb
показать еще некоторую информацию о том, что это происходит.Так или иначе кажется, что система не может загрузиться vfat
модуль.
lsmod
это vfat (или fat32 или жир) не загружается. Когда я использую --verbose
Я получаю тот же ответ: mount: unknown filesystem type 'vfat'
– simona
10.10.2013, 05:50
У меня была такая же проблема с linux-image-3.16.0-4-amd64
с Debian Jessie. Кроме того, это было в моем dmesg после сбоя modprobe, хотя не всегда :
[740079.143533] fat: Unknown symbol __bread_gfp (err 0)
[740079.143558] fat: Unknown symbol __getblk_gfp (err 0)
Решение? Перезагрузка. :-P
У меня была похожая ошибка на ArchLinux, причина была в несоответствии между установленным ядром(uname -r
)и пакетом (pacman -Q linux
/pacman -Q linux-hardened
).
П.С. Спасибо "Namarrgon" в IRC-чате #archlinux за помощь в решении проблемы.
/lib/modules/3.2.0-4-686-pae/
, следовательно нет никакого файла*.ko
– simona 10.10.2013, 05:51linux-image-3.2.0-4-686-pae
пакет, попытайтесь переустановить его сapt-get install --reinstall
, но возможно что-то не так, по крайней мере, с Вашей установкой/файловой системой/HD, это - тот же ПК, где Вы испытывали замораживание? – Alex 10.10.2013, 08:13debsums
это проверяет все установленные пакеты (может требовать времени). – Alex 10.10.2013, 08:33usbmount
иpmount
(дляpumount
) – Alex 10.10.2013, 08:46