У меня проблемы с получением жесткого диска FireWire для надежной работы в Linux. Контроллер и накопитель, похоже, опознаны, но я не знаю, как получить к нему доступ.
Некоторый контекст:
# lspci
00:00.0 PCI bridge: Device 16c3:abcd (rev 01)
01:00.0 PCI bridge: Texas Instruments XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express] (rev 01)
02:00.0 FireWire (IEEE 1394): Texas Instruments XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] (rev 01)
Драйвер, используемый для контроллера FireWire
# lspci -vv | grep firewire
Kernel driver in use: firewire_ohci
# lsmod
Module Size Used by
firewire_sbp2 10670 0
firewire_ohci 26356 0
ov5642_camera 74186 0
camera_sensor_clock 721 1 ov5642_camera
firewire_core 45592 2 firewire_ohci,firewire_sbp2
/dev/fw0 присутствует после загрузки (как я понимаю, контроллер firewire).
Когда диск подключен, в dmesg отображается следующее:
firewire_core: skipped bus generations, destroying all nodes
firewire_core: rediscovered device fw0
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
firewire_core: phy config: card 0, new root=ffc1, gap_count=5
scsi0 : SBP-2 IEEE-1394
firewire_core: created device fw1: GUID 0050a035e0500a51, S400, 1 config ROM retries
firewire_sbp2: fw1.0: logged in to LUN 0000 (0 retries)
и /dev/fw1 создан.
Тем не менее, cat /proc /scsi /scsi не дает никаких подключенных устройств.
# ls /sys/bus/firewire/drivers/sbp2/fw1.0
driver modalias model_name rom_index subsystem version
host0 model power specifier_id uevent
Итак, насколько я могу судить, многое работает. Но у меня нет устройства, чтобы играть с? Не уверен, что делать с /dev/fw1
# od /dev/fw1
не получает меня ничего.
cat /sys /class /scsi_disk /* /device /model не раскрывает ничего, касающегося дисковода FireWire.
Когда диск отключен, регистрируется следующее сообщение:
firewire_sbp2: released fw1.0, target 0:0:0
Если у меня подключено устройство при загрузке, все время от времени будет работать (возможно, после каждой двадцатой перезагрузки), диск отображается как /dev /sd [n], и я могу получить к нему доступ как к любому другому диску, он отображается в /proc /scsi /scsi и т. д. Разве я не могу иметь возможность воссоздать его вручную при горячем подключении или когда он не отображается? С чем-то вроде "Удевадм триггер"? (не работает)
Есть идеи, как поступить?
Примечание: это работает на встроенном Linux на основе ARM:
# uname -a
Linux nitrogen6x 3.0.35-1.1.0+g2dc5560 #6 SMP PREEMPT Wed Apr 2 11:12:25 CEST 2014 armv7l GNU/Linux