Thunderbolt - это, по сути, шина PCIe, представленная в виде удобного в использовании подключаемого интерфейса. Как вы можете себе представить, горячее подключение карты PCIe к любому компьютеру - это не то, что вы можете ожидать без проблем - если только не будут предприняты особые усилия со стороны производителей хоста и съемных устройств, а также разработчиков материнской платы прошивка, прошивка устройства, ядро ОС и драйверы устройства.
Все это означает, что существует огромная площадь потенциальных ошибок и проблем, которые могут помешать этой горячей замене работать так, как мы этого хотим. Я бы порекомендовал использовать отладочное ядро и пытаться взломать отладчик, когда он зависает - если вы можете, то, вероятно, это не проблема аппаратного или микропрограммного обеспечения. Инструкции по выполнению этого, возможно, немного выходят за рамки вопроса или моего ответа здесь, но в Интернете доступны ресурсы, которые делают это немного легче.
Теперь, если вам нужно средство, с помощью которого вы можете вручную извлечь устройство до его извлечения, вы можете попробовать следующее:
После определения адреса устройства в системе в выводе команды lspci
, где DDDD:BB:DD.F - это домен: шина: устройство.Назначение периферийного устройства молнии:
05:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:03.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:04.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:05.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
06:06.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
07:00.0 System peripheral: Intel Corporation DSL3510 Thunderbolt Port [Cactus Ridge] (rev 03)
08:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Controller [Cactus Ridge]
09:00.0 PCI bridge: Intel Corporation DSL3510 Thunderbolt Controller [Cactus Ridge]
Вы можете выполнить следующее:
echo "1" | sudo tee /sys/bus/pci/devices/DDDD\:BB\:DD.F/remove > /dev/null
Который должен запускать процедуры выгрузки в ядре и драйвере (и, возможно, даже в прошивке устройства), после чего вы сможете извлечь его более безопасно. (Очевидно, что grep
в подоболочке может заменить DDDD:BB:DD.F для простоты использования в будущем).
После повторного подключения устройства может потребоваться выполнить повторное сканирование вручную:
echo "1" | sudo tee /sys/bus/pci/rescan > /dev/null
(Или это может не понадобиться.)
Я давно не пользовался Linux, так как сейчас я почти исключительно на FreeBSD и OS X, поэтому, пожалуйста, прости меня, если я не в чём-то здесь.