新安装Ubuntu 22.04和24.04或升级Kernel 6.8(或更高版本)过程中的驱动程序错误
- 更新时间2025-09-05
- 阅读时长5分钟
设置或复制现有Ubuntu 22.04或24.04系统时,可能会显示运行时故障消息。
症状
由于这种情况会影响整个驱动程序功能,驱动程序可能会返回各种错误消息,包括关于内部错误或硬件故障的消息。例如:
The device could not be calibrated.
Status Code: -50152
A hardware failure has occurred. The operation could note be completed as specified.
受影响的发行版和内核
该问题已在下列系统中出现多次:
- Ubuntu 22.04.04 HWE (kernel 6.8.0-40-generic)
- Ubuntu 24.04.01 (kernel 6.8.0-40-generic)
您可以使用以下命令检查内核版本:uname -r
确认问题
使用以下两种方法之一来确定PC是否存在该问题。
- 在系统日志中查找未设置PTE读取权限内核消息:
- 打开新的接线端窗口。
- 输入以下命令:
journalctl -k | grep -i NO_PASID
- 查找与此范例类似的日志条目:
Sep 09 14:00:10 my_test_machine kernel: DMAR: [DMA Read NO_PASID] Request device [03:00.0] fault addr 0x1166b8000 [fault reason 0x06] PTE Read access is not set - 将时间标识关联到上一个故障。
如需检查上次重启前是否发生类似错误,请改用以下命令:
journalctl | grep -i NO_PASID
- 查找指定IOMMU默认域类型为已翻译的内核消息:
- 打开新的接线端窗口。
- 输入命令:
journalctl -k | grep -i IOMMU
- 查找与此范例类似的日志条目:
[ 0.262686] iommu: Default domain type: Translated
解决方案
推荐的解决方案是使用以下步骤将IOMMU默认域类型配置为直通模式。
下面将编辑GRUB配置文件。NI强烈建议先创建该文件的副本,然后再编辑。如文件包含错误数据,计算机可能无法启动。
下列过程不包含为GRUB配置文件创建副本的步骤。修改配置之前,请创建现有配置文件的备份副本。开始之前,请先阅读完整的流程。
- 编辑GRUB配置文件:
- 打开接线端窗口。
- 在命令提示符中,输入以下命令,以在VI编辑器中打开文件:
sudo vi /etc/default/grub
- 在出现提示时输入用户密码。
- 将光标移至指定变量的行。
GRUB_CMDLINE_LINUX_DEFAULT
- 按<i>键,使VI编辑器进入插入模式。
- 添加命令“ iommu=pt”。
例如:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=pt"
注: 不要修改或删除现有的变量定义文本。在上例所示位置添加该命令。 - 按<Esc>键,使VI编辑器返回命令模式。
- 保存GRUB配置文件并使用:wq命令退出VI编辑器
- 在接线端窗口中,输入以下命令,重新生成GRUB配置文件:
sudo update-grub
- 重启系统。
- 确认GRUB配置已正确更新,且IOMMU默认域类型已配置为直通模式。
- 打开新的接线端窗口。
- 输入命令:
journalctl -k | grep -i IOMMU
- 查找与此范例类似的日志条目:
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.8.0-41-generic root=UUID=d27287cc-623b-4c29-93ec-23a5eb00177a ro quiet splash iommu=pt vt.handoff=7 ... [ 0.261029] iommu: Default domain type: Passthrough (set via kernel command line)
注: 如使用的是Ubuntu 22.04,则可安装Kernel 6.5作为推荐解决方案的替代方案。