Boot

引導期間連接的 Lenovo USB-C“混合”塢站:引導掛起且 zpool 未載入

  • April 19, 2022

我正在嘗試使Lenovo Thinkpad P52在 Linux Mint 20.3 Una aka Ubuntu 20.04上與Lenovo USB-C Hybrid Dock40AF,請參閱要避免的塢站…)一起使用。多麼……旅程……

筆記型電腦的/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 消失的事實表明在核心模組載入或初始化期間出現了某種錯誤,可能是事情發生的順序 - 儘管我不確定如何調試這個或發生了什麼。沒有底座,一切都按預期工作。


我正在為視障人士對這個系統進行故障排除。擴展塢的全部意義在於連接/斷開筆記型電腦的電纜更少。插入和拔出電纜的一般困難創造了我的場景。因此,即使只有這一根電纜,我也很難說“每次開機前都拔掉電纜,即使你不隨身攜帶它”。

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 驅動程序中仍未解決,儘管各種打包程序已經解決了這個問題

我應用了這個技巧,即displaylink-driver從內部啟動服務,/opt/displaylink/udev.sh如下所示:systemctl start --no-block displaylink-driver

我實際上只添加了--no-block參數。這解決了我的問題,連接到擴展塢的外部顯示器實際上也可以按預期工作。

引用自:https://unix.stackexchange.com/questions/698040