![如何确定 AMD A6 上是否启用了 NX?](https://linux22.com/image/1377180/%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%20AMD%20A6%20%E4%B8%8A%E6%98%AF%E5%90%A6%E5%90%AF%E7%94%A8%E4%BA%86%20NX%EF%BC%9F.png)
如何确定 NX 位是否已启用?我现在正在尝试运行 rdmsr,但出现错误:
rdmsr:pread: Input/output error
这是我这样做的时候:
rdmsr 0x1a0
CPU 是带有 Radeon HD Graphics 的 AMD A6 3400M APU。
我正在运行 Fedora 18,我想要检查 NX 位是否启用的原因是因为我在尝试在 Gnome Boxes 上安装 Windows 8 时收到错误代码 0x0000005D。
答案1
您使用 rdmsr 工具的方式不正确。您指定的地址正确。
你应该像这样使用它:
sudo rdmsr -f 11:11 0xc00000080
这将为您提供正确的位值,否则您每次都会得到 0 而没有任何错误。
wrmsr
现在您可以按照相同的方式使用该工具设置值。
sudo wrmsr -p processor_no address value
所以在这种情况下应该是这样的
sudo wrmsr 0xc0000080 0xvalue
在 AMD 上测试过..
答案2
我找到了如何做到这一点的方法,或者至少我认为我找到了。如果我错了,请纠正我。
阅读《AMD64 架构程序员手册第 2 卷:系统编程》第 55 页(http://support.amd.com/us/Processor_TechDocs/24593_APM_v2.pdf#G11.1043852),我在维基百科上找到了一个链接(https://en.wikipedia.org/wiki/Control_register),我了解到扩展功能启用寄存器(NXE 位所在的位置)的地址是 C0000_0080h,而不是 0x1a0。基于此,我做了以下事情:
sudo rdmsr -f 11:11 C0000_0080h
返回零(0),根据手册,这意味着该位未启用。
这并不能完全解决我在 Gnome Boxes 上安装 Windows 8 的问题,但我认为它回答了如何确定 AMD A6 芯片上是否启用了 NX 位的问题。