Windows 8 Build 7973.0.fbl dnt3 wireless.110330-1800:修订间差异

跳转到导航 跳转到搜索
→‎Gallery
第 52 行: 第 52 行:
Only the top portion of the window frame is blurred when using the [[Windows Aero]] and [[Aero Lite]] theme, leaving the side borders transparent.
Only the top portion of the window frame is blurred when using the [[Windows Aero]] and [[Aero Lite]] theme, leaving the side borders transparent.
== Compiler ==
== 编译器 ==
{{hatnote|These instructions are not required for the x64 compile, and as such the compile can work without following these workarounds.}}
{{hatnote|这些指令对于 x64 编译不是必需的,因此编译可以在不遵循这些变通方法的情况下进行。}}
This is one of the first builds to be compiled using a new compiler. However, the problems surrounding it at that time resulted in the build becoming unbootable on certain hardware, as the boot loader does not properly function on modern x86 CPUs, namely Intel processors with the AVX instruction set and a select number of AMD CPUs. As a result, a CPU triple fault occurs resulting in either a crash on a hypervisor or a reboot on real hardware.
这是使用新编译器生成的首批版本之一。然而,当时围绕它的问题导致此版本在某些硬件上无法启动,引导加载程序在现代 x86 CPU(特别是包括 AVX 指令集的英特尔处理器和部分 AMD CPU)上无法正常工作。因此,会发生 CPU 三重故障,导致在虚拟机管理程序上崩溃或在真实硬件上重启。


=== Patching <code>winload.exe</code> to run on Intel processors with AVX ===
=== 修补 <code>winload.exe</code> 以在支持 AVX 的英特尔处理器上运行 ===
In order to properly enable SSE instructions for machines using Intel processor with AVX, the 9th bit in Control Register 4 (CR4) must be turned on. The following code is executed and is located in <code>winload.exe</code> at offset <code>A552</code>:
为了在配备支持 AVX 的英特尔处理器的机器上正确启用 SSE 指令,必须开启控制寄存器 4(CR4)中的第 9 位。以下代码被执行,并位于 <code>winload.exe</code> <code>A552</code> 偏移处:
<syntaxhighlight lang="nasm">
<syntaxhighlight lang="nasm">
mov    eax, cr4        ; 0f20e0
mov    eax, cr4        ; 0f20e0
or      eax, 20h        ; 83c820        -- Turn on 5th bit, PAE (Physical Address Extension)
or      eax, 20h        ; 83c820        -- 开启第 5 位,PAE(Physical Address Extension,物理地址扩展)
mov    cr4, eax        ; 0f22e0        -- Store it in CR4
mov    cr4, eax        ; 0f22e0        -- 存储到 CR4
mov    eax, cr0        ; 0f20c0
mov    eax, cr0        ; 0f20c0
or      eax, 80000000h  ; 0d00000080    -- Enable paging
or      eax, 80000000h  ; 0d00000080    -- 启用分页
mov    cr0, eax        ; 0f22c0
mov    cr0, eax        ; 0f22c0
</syntaxhighlight>
</syntaxhighlight>


By default the following bits are set in CR0: Protected Mode (PE) (<code>0x00000001</code>), Monitor co-processor (MP) (<code>0x00000002</code>) and Extension type (ET) (<code>0x00000010</code>), with no bits in CR4 set initially, so the need to turn on the 9th SSE bit (i.e. OR with <code>0x600</code>) should be done, but due to limitation in this piece of code, a rewriting needs to be done and the following approach may be used instead:
默认情况下,CR0 中设置的位包括:受保护模式(PE)(<code>0x00000001</code>)、协处理器监控(MP)(<code>0x00000002</code>)和扩展类型(ET)(<code>0x00000010</code>),而 CR4 中最初没有任何位被设置,因此需要开启第 9 SSE 位(即 OR <code>0x600</code>),但由于这段代码的限制,需要进行重写,可以改为以下方式:
<syntaxhighlight lang="nasm">
<syntaxhighlight lang="nasm">
mov    eax,620h        ; b820060000
mov    eax,620h        ; b820060000
第 79 行: 第 79 行:
</syntaxhighlight>
</syntaxhighlight>


As a disclaimer, patching winload.exe with these changes will invalidate integrity checks and thus requires Test Mode to be enabled (by setting <code>NoIntegrityChecks</code> in the BCD to on) in order to boot with the patched winload.exe, as well as ownership of the file in both <code>%systemroot%\System32</code> and <code>%systemroot%\System32\Boot</code> need to be altered in case file replacement was not possible.
需要声明的是,用这些更改来修改 <code>winload.exe</code> 将会使签名失效,因此需要在 BCD 中启用 <code>{bootmgr} nointegritychecks</code> 才能使用修改后的 <code>winload.exe</code> 启动,同时在 <code>%systemroot%\System32</code> <code>%systemroot%\System32\Boot</code> 中对此文件的所有权也需要进行修改,以防无法替换文件。


=== Compatibility ===
=== 兼容性 ===
==== VMware Workstation ====
==== VMware Workstation ====
The Intel SSE bug can be worked around by setting the compatibility level to version 7.x or lower and the following block of code must be added to the VMX (virtual machine configuration) file in order to allow this build to boot on modern Intel CPUs:
英特尔 SSE 漏洞可以通过将兼容性级别设置为 7.x 或更低版本来解决,且必须将以下代码块添加到 VMX(虚拟机配置)文件中,以允许此版本在现代英特尔 CPU 上启动:
<syntaxhighlight lang="ini">
<syntaxhighlight lang="ini">
cpuid.0.ebx = "0110:1000:0111:0100:0111:0101:0100:0001"
cpuid.0.ebx = "0110:1000:0111:0100:0111:0101:0100:0001"
第 91 行: 第 91 行:
</syntaxhighlight>
</syntaxhighlight>


The above configuration is mostly not required if the host machine has an AMD processor, and as such only requires the compatibility version to be changed.
如果主机使用的是 AMD 处理器,上述配置步骤大多不需要,仅需更改兼容性版本即可。


== 图库 ==
== 图库 ==

导航菜单