- 积分
- 80
- 最后登录
- 2021-2-25
- 精华
- 0
- 阅读权限
- 20
- 主题
- 15
- UID
- 1518717
- 帖子
- 200
- PB币
- 216
- 威望
- 0
- 贡献
- 0
- 技术
- 10
- 活跃
- 130
 
- UID
- 1518717
- 帖子
- 200
- PB币
- 216
- 贡献
- 0
- 技术
- 10
- 活跃
- 130
|
andylau0077 发表于 2021-2-4 16:01 
HP的商务机,BIOS设置只就能是关了安全启动,其他都改不了,试装了一下,能装,但卡LOGO,用了几乎网上所 ...
Windows 7 并不完全支持 UEFI,在初始图形初始化过程中依赖于旧版 BIOS 中断 10 (Int10h)。
在没有适当旧版支持的计算机上,Windows 7 可能会冻结在"启动 Windows"屏幕上。
某些主板具有"CSM"或"旧版"启动选项来解决此问题,可惜的是,很多现代主板和笔记本的固件并不支持 CSM 模式。
如果要解决这个问题,目前比较好的有两种方案:
第一种:UefiSeven & VgaShim
UefiSeven在 Windows 启动之前在内存中安装一个最小的 Int10h 处理程序,以便启动过程不会因为缺少中断而失败。
因为VgaShim原作者已经很久不更新,而UefiSeven是基于VgaShim的改进,建议选用UefiSeven,如果UefiSeven不能成功,那么VgaShim理论上也不会成功
但是UefiSeven在某些机器上会提示Unable to find a way to unlock memory at C0000 & Unable to unlock VGA ROM memory at C0000 而无法成功运行
第二种:FlashBootPro
开发windows7的预加载程序,为NTOSKRNL.EXE文件用UEFI GOP提供的帧缓冲区更新替换通过VGA端口直接I/O的所有实例(与Windows 8+类似)
每次启动Windows时都会激_活此修补程序,因此NTOSKRNL.EXE文件是动态更新的,仅在RAM中,并且磁盘上的此文件版本不受影响
但是FlashBootPro是个将镜像写入到U盘的软件,在写入镜像到U盘的过程中提供 VGA仿真功能
而且FlashBootPro对win10环境+ESD镜像支持不好,部分人对论坛2009镜像进行操作时会报错退出
我们需要弄清楚FlashBootPro将镜像写入到U盘时到底改动了什么,改动的部分是否具有通用性?
探究过程:
由于FlashBootPro为付费软件,于是我使用的FlashBootPro 3.2x
先使用FlashBootPro将win7 SP1原版镜像写入U盘,勾选软件提供的VGA仿真功能,处理完毕后与原版镜像对比
发现区别在三个地方:
1. 增加了efi\boot\bootx64.efi & efi\microsoft\boot\bootmgfw.efi
2. boot.wim
3. install.wim
通过把原版和处理后的2和3分别挂载,使用Beyond Compare 4对比文件差异,结果只有Windows\Boot\EFI\bootmgfw.efi是不一样的,且这个文件与1的是同一个文件
使用处理过后的启动盘在vmware使用uefi安装win7,成功安装
那么123改动哪个是必要的呢?原因在于我希望1和2替换为win10环境,因为win10的boot.wim自带通用驱动更方便
于是我把修改过的install.wim丢入win10环境中生成新的镜像文件,通过vmware使用uefi安装win7,成功安装
现在我们知道了,FlashBootPro修改过程主要是对bootmgfw.efi打补丁生成新的文件
刚才做的工作都是对原版SP1中的bootmgfw.efi进行处理,而微软在KB4474419-v3补丁中提供了新版的bootmgfw.efi
于是我将原版install.wim进行挂载,打上KB4474419-v3补丁,保存丢入原版安装环境,生成新的镜像,再用FlashBootPro对镜像进行处理
最终生成了新的bootmgfw.efi,767KB,文件版本:6.1.7601.24518
没错,这是个通用文件,甚至可以集成到镜像中,我把这个文件丢入到winsxs\amd64_microsoft-windows-b..ore-bootmanager-efi_31bf3856ad364e35_6.1.7601.24518_none_e63445fbcc19ba3b
然后保存丢入win10安装环境,生成新的镜像,通过vmware使用uefi安装win7,成功安装
当然你也可以在镜像成功安装后,在PE下将bootmgfw.efi替换esp分区中的efi\microsoft\boot\bootmgfw.efi,将bootmgfw.efi重命名为bootx64.efi,替换esp分区中的efi\boot\bootx64.efi
|
|