Windows 8 Build 7973.0.fbl grfx dev1.110330-1700:修订间差异

跳转到导航 跳转到搜索
→‎Gallery
第 57 行: 第 57 行:
This build automatically enables Aero Glass transparency after installing the Starter and Home Basic SKUs, despite product policies limiting usage of such effects. Changing the current visual style over to a different one (e.g.: [[Aero Lite|Windows Basic]]) will disable glass effects.
This build automatically enables Aero Glass transparency after installing the Starter and Home Basic SKUs, despite product policies limiting usage of such effects. Changing the current visual style over to a different one (e.g.: [[Aero Lite|Windows Basic]]) will disable glass effects.


==Compiler==
== 编译器 ==
This is one of the first builds to be produced 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
第 82 行: 第 82 行:
nop                    ; 90
nop                    ; 90
</syntaxhighlight>
</syntaxhighlight>
As a disclaimer, patching winload.exe with these changes will invalidate signatures and thus requires <code>{bootmgr} nointegritychecks</code> to be enabled in the BCD 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.


===Compatibility===
需要声明的是,用这些更改来修改 <code>winload.exe</code> 将会使签名失效,因此需要在 BCD 中启用 <code>{bootmgr} nointegritychecks</code> 才能使用修改后的 <code>winload.exe</code> 启动,同时在 <code>%systemroot%\System32</code> 和 <code>%systemroot%\System32\Boot</code> 中对此文件的所有权也需要进行修改,以防无法替换文件。
====VMware Workstation====
 
For another workaround on the Intel SSE bug that does not involve patching and disabling security checks, the compatibility level must be set to version 7.x or lower in order to boot this build. In addition, 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:
=== 兼容性 ===
==== VMware Workstation ====
英特尔 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"
第 94 行: 第 95 行:
</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 处理器,上述配置步骤大多不需要,仅需更改兼容性版本即可。


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

导航菜单