因此,在尝试在两个 Raspberry Pi 4 上运行一些服务器时,我遇到了一些启动问题。这是设置。
2 x Pi 4 从带有 UEFI 的 SDCard 启动。然后,它们从连接到每个 Pi 上的一个 USB3 端口的两个 2.5 英寸 SSD 启动。其中一个 Pi 应该在某个时候运行带有 ZFS 的 2 个 3.5 英寸 HDD,因此我从 delock 购买了两个 Sata/USB 转换器,仅为两个 SSD 提供 5V,并从 Hama 购买了另外两个 Sata/USB 转换器,也为 3.5 英寸机械磁盘提供 12V。因为两个 Hama 转换器先到,所以我用它们在 Pi 上设置了 Ubuntu 20.04,运行正常。当我用 delock 转换器替换 Hama 转换器时,问题就出现了。
现在我无法在两台 Pi 上启动 Ubuntu,直到我尝试切换回 Hama 转换器。我遇到的问题是 SSD 上的 USB 重置启动循环。
sd 0:0:0:0: [sda] tag#14 uas_eh_abort_handler 0 uas-tag 2 inflight: CWD IN
sd 0:0:0:0: [sda] tag#14 CDB: Read(10) 28 00 00 00 00 80 00 00 08 00
scsi host0: uas_eh_device_reset_handler start
usb 3-2: reset SuperSpeed USB device number 2 using xhci-hcd
scsi host0: uas_eh_device_reset_handler success
这种情况一再发生。我将其追溯到 Hama 转换器不使用的 UAS。因此,我尝试将“uas”列入黑名单,强制它直接使用“usb_storage”,但这最终导致内核崩溃,因为它无法找到根分区。但是,它确实可以在 Ubuntu 的实时安装映像上运行,但由于同样的原因,它也无法启动。从这里我可以正常读取磁盘及其分区。将 UAS 列入黑名单在实际安装的系统上不起作用。
我记得不久前我在装有 Solus 实时安装程序的 USB 磁盘上遇到过类似的问题,它无法启动,因为它在启动时重置了磁盘。当时我没有做太多的错误跟踪,因为只需更换 USB 磁盘即可。但似乎 Linux 在某些 USB 控制器上存在问题。只是不确定是什么问题以及如何修复它。
顺便提一句 我确实更新了内核,两次。第一次从 5.8 升级到 5.11,然后又升级到 5.13。没有变化。
答案1
因此,经过更多测试后,我确实成功启动了。似乎简单地将uas
模块列入黑名单会破坏启动。但是,将内核命令行添加usb-storage.quirks=<device-id>
到内核命令行(也会强制使用普通的 USB 存储模块)可以解决问题。
至少这样我可以使用 DeLock 控制器,但它并没有真正解决很多问题。为什么quirks
打开选项usb-storage
而不是列入黑名单会起作用uas
?为什么一uas
开始就失败了?为什么 USB-3.1 Hama 控制器不使用uas
而 DeLock 的 USB-3.0 却可以使用,在购买这些产品之前如何确定哪个使用了哪个?
编辑:
进一步的测试表明 Hama 产品quirks
在模块中已经有一个匹配项usb-storage
,这解释了为什么它开箱即用。不知道uas
这样做的意义何在,因为为它构建的产品只有在禁用此功能的情况下才能工作。