我将正在运行的 Ubuntu 21.10 升级到 22.04(在我的 MacBookAir6,1 上),重新启动后,默认内核 5.15.0-25 运行了几秒钟,出现了一堆 DMAR 错误,“放弃等待根文件系统设备”,然后退出到 busybox。dmesg 报告了类似这样的内容
ata1.00: failed to IDENTIFY
Ubuntu 21.10(以及 5 年前的版本)在此机器上运行良好。幸运的是,新的 22.04 保留了 5.13.0-40 作为 GRUB 高级启动选项 - 并且可以正常且完全地启动(并且显然可以从内部硬盘查看/启动)。5.13.0-40 的 dmesg 没有 DMAR 故障或 ata1 故障。5.13.0-40 dmesg 显示成功发现内部硬盘
[1.188421] ata1: SATA max UDMA/133 abar m512@0xb0700000 port 0xb0700100 irq 53
[1.495830] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[1.497677] ata1.00: unexpected _GTF length (8)
[1.498794] ata1.00: ATA-8: APPLE SSD TS0128F, 109R0219, max UDMA/100
[1.499435] ata1.00: 236978176 sectors, multi 0: LBA48 NCQ (depth 32)
[1.500647] ata1.00: unexpected _GTF length (8)
[1.501444] ata1.00: configured for UDMA/100
我也能正常地从 USB 磁盘(使用 rufus 实用程序制作)启动 Ubuntu 22.04,但奇怪的是它也无法看到内部硬盘(从 fdisk、gnome 磁盘实用程序或 gparted 中)。它能够看到它启动的 USB 磁盘。以下是其 5.15.0-25 内核 dmesg 的一些摘录
[1.449514] ata1: SATA max UDMA/133 abar m512@0xb0700000 port 0xb0700100 irq 54
[1.766097] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[1.766382] DMAR: DRHD: handling fault status reg 3
[1.766427] DMAR: [DMA Write NO_PASID] Request device [04:00.1] fault addr 0xfffe0000 [fault reason 0x02] Present bit in context entry is clear
[1.766525] ata1.00: failed to IDENTIFY (INIT_DEV_PARAMS failed, err_mask=0x80)
然后..
[ 7.032539] DMAR: DRHD: handling fault status reg 2
[ 7.032595] DMAR: [DMA Write NO_PASID] Request device [04:00.1] fault addr 0xfffe0000 [fault reason 0x02] Present bit in context entry is clear
[ 7.314168] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[ 7.314403] DMAR: DRHD: handling fault status reg 3
[ 7.314445] DMAR: [DMA Write NO_PASID] Request device [04:00.1] fault addr 0xfffe0000 [fault reason 0x02] Present bit in context entry is clear
[ 7.314533] ata1.00: failed to IDENTIFY (INIT_DEV_PARAMS failed, err_mask=0x80)
[ 7.314538] ata1: limiting SATA link speed to 3.0 Gbps
[12.408499] DMAR: DRHD: handling fault status reg 2
[12.408543] DMAR: [DMA Write NO_PASID] Request device [04:00.1] fault addr 0xfffe0000 [fault reason 0x02] Present bit in context entry is clear
[12.690278] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 320)
[12.690566] DMAR: DRHD: handling fault status reg 3
[12.690597] ata1.00: failed to IDENTIFY (INIT_DEV_PARAMS failed, err_mask=0x80)
我不确定 DMAR 是否相关,因为新内核中有一些额外的 DMAR 条目
[0.269655] DMAR: No ATSR found
[0.269657] DMAR: No SATC found
[0.269660] DMAR: IOMMU feature pgsel_inv inconsistent
[0.269664] DMAR: IOMMU feature sc_support inconsistent
[0.269666] DMAR: IOMMU feature pass_through inconsistent
[0.269669] DMAR: dmar0: Using Queued invalidation
[0.269682] DMAR: dmar1: Using Queued invalidation
我被困住了。
答案1
在对内核版本的 dmesg 进行更详细的比较后,很明显,pci 设备 04:00.1 仅在有问题的内核 5.15.0-25 上被引用,其中设备 04:00.1 上有 DMAR 故障(在 MacBookAir6,1 上)。lspci 显示的 PCI 设备 04:00.0 是
04:00.0 SATA controller: Toshiba Corporation Device 010b (rev 14)
有问题的 04:00.1 - SATA 控制器的功能编号 1 导致 DMAR 故障。搜索 DMAR 故障地址和原因,找到了有关英特尔iommu内核选项默认在较新的内核中处于开启状态。这给某些机器带来了问题。要在 MacBookAir6,1 上修复此问题,内核选项
intel_iommu=off
添加到 GRUB 配置让我的系统像以前一样完全启动。
答案2
Bill 的回答解决了我的问题并节省了我很多时间。谢谢。
对于实时 USB 系统(例如全新安装),选择要启动的 GRUB 条目(安装 Ubuntu),按“e”并在内核行的三个破折号后添加临时参数“intel_iommu=off”。然后按下其中一个启动键。有关更多详细信息,请参阅此帖子:https://askubuntu.com/a/19487
然后该参数自动应用于我的安装并插入到/etc/默认/grub现在有条目
GRUB_CMDLINE_LINUX="intel_iommu=off"
干杯,M。