我有一台 Linux 机器(在 Debian stretch 上运行内核 4.9.84),带有雷电卡,由雷电驱动程序支持:
# lspci -s 09:00.0 -k
09:00.0 System peripheral: Intel Corporation DSL5320 Thunderbolt 2 NHI [Falcon Ridge 2C 2013]
Kernel modules: thunderbolt
但是,thunderbolt模块没有加载,也无法加载:
# modprobe thunderbolt
modprobe: ERROR: could not insert 'thunderbolt': Function not implemented
dmesg
否则不会有任何消息。奇怪的是,如果我insmod
在手边的任何一台机器上运行这个程序,运行 Slackware、Debian、Ubuntu,内核从 4.4 到 4.9,所有的回复都完全相同:“功能未实现”。然而,在具有 4.14 内核的 VM 上,modprobe thunderbolt
似乎运行良好。我不明白,发生了什么?
答案1
通过阅读内核文档,我发现了更多细节:Thunderbolt 要求您手动授权您的设备。但是,当前发行版中没有用于此目的的实用程序。您可以尝试自己编译tbtadm
此处的实用程序:
https://github.com/intel/thunderbolt-software-user-space
或者选择不安全的方式内核文档中描述:
那些只想连接任何设备而不想进行任何手动工作的用户可以将以下行添加到 /etc/udev/rules.d/99-local.rules:
ACTION=="add", SUBSYSTEM=="thunderbolt", ATTR{authorized}=="0", ATTR{authorized}="1"
这将在所有设备出现时自动授权它们。但是,请记住,这会绕过安全级别并使系统容易受到 DMA 攻击。
现在我看到总线上的硬盘如文档中所述:
# cat /sys/bus/thunderbolt/devices/0-1/*_name
8big Rack Thunderbolt 2
LaCie
查看 lspci 输出我在这里找到它:
0c:00.0 RAID bus controller: Device 1c19:0001 (rev b3)
所以它是某种类型的 RAID 控制器,必须需要一个驱动程序(哪一个?它适用于 Linux 吗?谁知道)。
通过深入研究 Windows 驱动程序,我确定它必须使用 Marvell RAID 控制器。现在我需要找到哪一个,如果存在 Linux 驱动程序,则尝试通过在支持的驱动程序中添加 PCI id 1c19:0001 来修补驱动程序。听起来很有趣 :) 让我们先尝试mvsas
一下...