启动期间连接 Lenovo USB-C“混合”坞站:启动挂起且 zpool 未加载

启动期间连接 Lenovo USB-C“混合”坞站:启动挂起且 zpool 未加载

我正在尝试做一个联想Thinkpad P52与一个联想 USB-C 混合坞站40AF, 看要避免的码头...) 在 Linux Mint 20.3 Una aka 上乌班图20.04。多么...的旅程...

笔记本电脑的/home文件夹位于 ZFS 文件系统 (zpool) 上。操作系统本身运行在btrfs.显卡在 BIOS 中切换为专用(即 Nvidia)并由 Nvidia 专有驱动程序驱动。笔记本电脑的 BIOS已经升级提前升级到最新版本,以避免在这种设置中主板变砖(确实令人印象深刻的 BIOS 错误)。 Thunderbold 安全性也已在 BIOS 中关闭。有趣的是,boltctl list尽管我必须禁用 Thunderbold 安全性,但运行时扩展坞不会显示。我想这就是“混合”的用武之地。 DisplayLink 驱动程序已从这里。我应该准备好出发吧。

当我在与扩展坞断开连接的情况下启动笔记本电脑,一切正常美好的。一旦计算机启动并且扩展坞上的网络和 USB 按预期工作,我就可以插入扩展坞。 (我还没有深入到解决显示连接故障的程度。)

当我将扩展坞插入笔记本电脑启动,在出现登录屏幕之前,启动会挂起大约两分钟。它通常显示一行控制台输出,通常是一些错误,但每次都有不同的错误(例如ucsi_acpi USBC000:00 con1 failed to register alternate modesbluetooth hci0 setting interface failed (71))。我认为这些错误在没有扩展坞的情况下也会发生 - 我猜这是因为我可以看到它们的挂起。当我等待超时过去时,我会看到通常的图形登录屏幕,但登录尝试失败。这时我发现我的 zpool 消失了(每次我在连接扩展坞的情况下启动时),因此没有用户文件夹可供用户登录。我切换到命令行 ( Ctrl+F1) 并检查zpool status- 什么也没有。手册zpool import data,内容/home再次显示,返回登录屏幕(Ctrl+F7),一切正常。

超时和我的 zpool 消失的事实表明在内核模块加载或初始化期间出现某种错误,也许是事情发生的顺序 - 尽管我不确定如何调试这个或发生了什么。没有扩展坞,一切都会按预期进行。


我正在为视障人士对该系统进行故障排除。扩展坞的重点在于连接/断开笔记本电脑的电缆更少。正是由于插入和拔出电缆的普遍困难才造成了我的情况。因此,即使只有这一根电缆,“即使您没有随身携带,每次启动机器之前也只需拔掉电缆”对我来说是一个很难说服的说法。

答案1

ZFS 池在引导期间通过该服务导入zfs-import-cache.service。这在我的案例中失败了result dependency

通过检查依赖关系,我发现systemd-udev-settle.service之前已经失败,报告Main process exited, code=exited, status=1/FAILUREFailed with result 'exit-code'.

因为这只在连接 Dock 时才会发生,所以我最终查看了 DisplayLink 和相关的错误。我找到了这个宝石。事实证明,/opt/displaylink/udev.sh它被 udev 服务调用并超时,这是一个已知问题 - 与 ZFS 没有任何关系,只是一个不幸的事件链。问题已经是认识两年多并且在 DisplayLink 驱动程序中仍未修复,尽管各种打包商已经围绕它进行黑客攻击

我应用了这个 hack,即displaylink-driver从内部启动服务/opt/displaylink/udev.sh,如下所示:systemctl start --no-block displaylink-driver

我实际上只添加了--no-block参数。这解决了我的问题连接到扩展坞的外部显示器实际上也按预期工作。

相关内容