Mar*_*nes 12 linux grub ubuntu
我从 USB 安装了全新的 Ubuntu。当我启动 PC 时,它直接带我进入 GNU Grub,当我选择 Ubuntu 时,我收到以下消息。
[Firmware Bug]: AMD-Vi: IOAPIC[0] not in IVRS table
[Firmware Bug]: AMD-Vi: No southbridge IOAPIC found in IVRS table
AMD-Vi: Disabling interrupt remapping
Run Code Online (Sandbox Code Playgroud)
我可以通过“Ubuntu 的高级选项”>“Ubuntu,使用 Linux 4.2.0-30-generic(恢复模式)”>“恢复”进入 Ubuntu 桌面,但 CPU 以接近 100% 的速度运行并且不可持续。
电脑规格:
AMD A6-6400K
微星 A68HI ?Mini ITX F?M2+ 主板
Mir*_*ici 13
CPU 始终 100% 使用的原因我认为这与您看到的消息不同。
关于错误信息
现在关于AMD-Vi: IOAPIC[0] not in IVRS table和AMD-Vi: No southbridge IOAPIC found in IVRS table错误。这些消息意味着您的 CMOS/BIOS 设置已配置为启用IOMMU,但 BIOS 缺少描述 IOMMU 和 SMBus 控制器地址的 IVRS 表。IVRS = I/O 虚拟化报告结构。另见:http : //support.amd.com/TechDocs/48882_IOMMU.pdf
什么是 IOMMU?
IOMMU是一个硬件单元,如今已成为 CPU 的一部分。它允许将设备可见的虚拟地址映射到物理地址。
为什么是 IOMMU?
修复“AMD-Vi:IOAPIC[0] 不在 IVRS 表中”
正确的修复应该来自主板的硬件制造商。因此,如果您的主板有 BIOS/固件更新,请安装它,因为这可能会解决问题。不幸的是,对于我的主板(Asus Crosshair V Formula),即使在最新的 BIOS/固件更新(版本 1703,发布日期:10/17/2012)中,IVRS 也已损坏。
如果 MB 的制造商没有提供修复程序,您可以在 Linux 中修复此问题,方法是在内核启动参数中使用ivrs_ioapicoption指定这些设备所在的位置。
以下是执行此操作的步骤。有关更多详细信息,请参阅:https : //ubuntuforums.org/showthread.php?t=2254677
通过添加amd_iommu_dump=1内核选项来引导内核。您可以在启动期间通过 grub 菜单执行此操作。
在内核日志中,您将看到如下几行:
$ dmesg |grep 'DEV_SPECIAL(IOAPIC\|not in IVRS table'
[ 0.133756] AMD-Vi: DEV_SPECIAL(IOAPIC[0]) devid: 00:14.0
[ 0.133995] AMD-Vi: DEV_SPECIAL(IOAPIC[255]) devid: 00:00.1
[ 0.134116] [Firmware Bug]: AMD-Vi: IOAPIC[5] not in IVRS table
[ 0.134235] [Firmware Bug]: AMD-Vi: IOAPIC[6] not in IVRS table
$
Run Code Online (Sandbox Code Playgroud)
记下 中的索引IOAPIC。在这种情况下,它们是5和6。注意 devid,哪里00:14.0可以,哪里00:00.1不正确。
搜索这些设备的总线地址并记下地址(00:00.2和00:14.0)
$ lspci -nn | egrep "SMBus | IOMMU"
00:00.2 IOMMU [0806]: Advanced Micro Devices, Inc. [AMD/ATI] RD890S/RD990 I/O Memory Management Unit (IOMMU) [1002:5a23]
00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller [1002:4385] (rev 42)
$
Run Code Online (Sandbox Code Playgroud)
现在添加为内核参数:在 dmesg 输出中找到ivrs_ioapic[5]=00:14.0 ivrs_ioapic[6]=00:00.2index5和where 6,值来自 lspci 输出。您可以通过编辑/etc/default/grub文件,然后运行grub2-mkconfig -o /boot/grub2/grub.cfg.
禁用 IOMMU 有很小的性能优势。但是为了系统的安全性和稳定性,禁用它是不可取的。某些虚拟化设置(PCI 直通、SR-IOV)需要 IOMMU,禁用它不是一种选择。
| 归档时间: |
|
| 查看次数: |
20832 次 |
| 最近记录: |