惠普 Gen8 服务器安装 Ubuntu Server 出现 DMAR 错误
1. 环境
- HP ProLiant MicroServer Gen8
- Intel® Xeon® Processor E3-1265L V2
- DDR3 ECC 8G * 2
- Ubuntu Server 24.04.4 LTS
2. 报错
使用命令行用户登录后,系统会报出如下错误:
1 | |
DMAR (DMA Remapping) 是 Intel VT-d(I/O 虚拟化技术,也叫 IOMMU)的一部分。它的作用是管理硬件设备(如网卡、显卡)直接访问内存(DMA)的权限。
而之所以报错,是因为 Linux 内核的 IOMMU 驱动在尝试映射一段内存地址给硬件时,发现这段地址已经被占用了。在 HP Gen8 这种老机器上,通常是因为主板集成的显卡(如 Matrox G200)或某些内置硬件在 BIOS 初始化阶段已经占用了这些 DMA 映射,而新版 Linux 内核的 IOMMU 校验变得更加严格,两者发生了冲突。
3. 解决办法
这里一共有两种解决办法,具体选择那种,取决于你的机器用途。
3.1 修改 Linux 内核引导参数
通过让 IOMMU 工作在 “Passthrough”(直通)模式,可以保留虚拟机的直通能力。不会影响你以后玩虚拟机(如 PVE/KVM)时的 PCI 硬件直通。
3.1.1 编辑文件
1 | |
修改如下:
1 | |
可以将 intel_iommu=pt 换成 intel_iommu=off,效果同方法二,但不需要改 BIOS,可以方便一些;
3.1.2 更新配置
1 | |
3.2 关闭 VT-d (IOMMU)
如果你的 HP Gen8 只是单纯用来做 NAS,不需要运行需要硬件直通的虚拟机,你可以直接从硬件底层关掉它。
重启服务器,在启动画面按
F9进入 BIOS 设置;导航到 System Options -> Processor Options;
找到 Intel (R) VT-d 或 Intel Virtualization Technology for Directed I/O;
将其设置为 Disabled;
按
F10保存并重启机器;
惠普 Gen8 服务器安装 Ubuntu Server 出现 DMAR 错误
https://flowerdown.org/posts/20260314-170738