vfat, не распознанный в debian

Нахождение драйвера (драйверов) ядра

Устройство жертвы

$ 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 имеет).

Метод 1: Используя (легкий) usbutils

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
⋮

Обратите внимание, что это перечисляет формирователь тока, не по умолчанию. Нет способа найти по умолчанию.

Метод 2: Используя debugfs (требует корня),

Если у Вас есть смонтированный debugfs, ядро поддерживает файл в том же формате как usb-devices распечатывает в /sys/kernel/debug/usb/devices; можно просмотреть с less, и т.д. Обратите внимание, что интерфейсы debugfs не стабильны, таким образом, различные версии ядра могут распечатать в другом формате, или пропускать файл полностью.

Еще раз это только показывает формирователь тока, не значение по умолчанию.

Метод 3: только Используя основные утилиты для чтения/sys непосредственно (лучше всего для сценариев или восстановления)

Можно получить информацию из /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) драйверы?

Когда драйвер 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).

7
10.10.2013, 05:58
5 ответов

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.

3
27.01.2020, 20:19
  • 1
    На самом деле я нашел, что у меня нет подкаталогов в /lib/modules/3.2.0-4-686-pae/, следовательно нет никакого файла *.ko –  simona 10.10.2013, 05:51
  • 2
    @simona, они должны быть в Вашем linux-image-3.2.0-4-686-pae пакет, попытайтесь переустановить его с apt-get install --reinstall, но возможно что-то не так, по крайней мере, с Вашей установкой/файловой системой/HD, это - тот же ПК, где Вы испытывали замораживание? –  Alex 10.10.2013, 08:13
  • 3
    да, это - тот же ПК. Теперь я переустановил, и я могу смонтировать мой разжигать. спасибо А-ч –  simona 10.10.2013, 08:26
  • 4
    Установка и выполненный debsums это проверяет все установленные пакеты (может требовать времени). –  Alex 10.10.2013, 08:33
  • 5
    Кроме того, для не монтирования USB-устройств вручную и как корня смотрят к пакетам usbmount и pmount (для pumount) –  Alex 10.10.2013, 08:46

если Ваш/proc/filesystems содержит использование fat32 что как тип вместо этого. и разве идентификатор устройства для раздела данных не где-нибудь выше? например, у этого парня есть он как sdx12: http://dl.dropbox.com/u/16958605/FirePartedScreen1.png

0
27.01.2020, 20:19
  • 1
    мой /proc/filesystems не содержит fat32. На самом деле от fdisk -l Я могу читать, моя файловая система W95 FAT32 –  simona 10.10.2013, 05:47

Некоторые идеи могут помочь:

  1. Можно проверить если vfat модуль загружается (использование: lsmod)
  2. Можно использовать mount --verbose -t vfat /dev/sdf1 /mnt/usb показать еще некоторую информацию о том, что это происходит.

Так или иначе кажется, что система не может загрузиться vfat модуль.

0
27.01.2020, 20:19
  • 1
    я сверился 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

0
27.01.2020, 20:19

У меня была похожая ошибка на ArchLinux, причина была в несоответствии между установленным ядром(uname -r)и пакетом (pacman -Q linux/pacman -Q linux-hardened).

П.С. Спасибо "Namarrgon" в IRC-чате #archlinux за помощь в решении проблемы.

1
27.01.2020, 20:19

Теги

Похожие вопросы