无忧启动论坛

标题: VGAShim 在部分机器上花屏/无效的修复 [打印本页]

作者: 2010driver1998    时间: 2020-3-29 15:02
标题: VGAShim 在部分机器上花屏/无效的修复
本帖最后由 2010driver1998 于 2020-5-30 18:32 编辑

提醒:
如果你的显卡驱动工作正常的话,你不一定能看到VGAShim导致的花屏/黑屏问题!
因为Windows有显卡驱动就直接用显卡驱动了,没驱动的情况下才会用VESA模式,VGAShim才会起作用!
如果要在装好的系统上测试VGAShim,进安全模式就好了,VGAShim不工作的话是会黑屏的!

在设备管理器卸载/禁用显卡驱动可能会黑屏,原因不明,但抹黑重启后就能正常显示!
Win7的蓝屏不用VESA模式(应该是用的640x480 16色VGA模式),因此VGAShim并不能解决蓝屏时屏幕黑屏的问题!
2020/4/8 更新 v0.98.1
尝试修复部分机器提示“No display adapter found”,VGAShim无效的问题


===================== 以下是 0.98 版本 =========================、不知道会出现这个bug的机器有多少,我的小新700,UEFI是Phoenix的,用原作者的v0.97会花屏


原因是这样的,现在很多机器上UEFI开机会把分辨率设置到最大,在我的笔记本上就是1920x1080
VGAShim启动的时候就试图在1920x1080的屏幕上模拟一个1024x768的屏幕(从代码看应该会显示在中间?)

但Win7的winload.efi一上来就会将分辨率改成1024x768并绘制启动动画(不知道为啥,系统的VGA驱动要用int 10h,但winload.efi却不用,估计它直接用的UEFI GOP)
于是当Windows VGA驱动通过VGAShim模拟的VBE BIOS初始化显卡的时候,得到的framebuffer就是错的,效果就是花屏,但鼠标啥的都能工作

于是我在VGAShim上也加入了类似动作,启动时切到1024x768再模拟VBE BIOS,这样就不会花屏了

github fork https://github.com/driver1998/VgaShim/
下载地址 https://github.com/driver1998/VgaShim/releases/tag/v0.98.1






作者: 叮叮咚咚    时间: 2020-3-29 15:10
如何自定义vgashim的启动路径?
作者: 2010driver1998    时间: 2020-3-29 15:26
叮叮咚咚 发表于 2020-3-29 15:10
如何自定义vgashim的启动路径?

VGAShim只能自动执行同ESP内的EFI\Microsoft\Boot\bootmgfw.efi...
作者: shendg    时间: 2020-3-29 16:06
过来学学
作者: 2012andyle113    时间: 2020-3-29 16:22
感谢分享,备用一个
作者: Nanya    时间: 2020-3-29 16:39
感谢分享,备用一个
作者: freesoft00    时间: 2020-3-29 19:20
只是win7pe有这个问题吗

作者: 2011qt    时间: 2020-3-30 09:48
好东西,谢谢分享
作者: zhczf    时间: 2020-3-30 11:16
楼主是技术大神,支持
作者: 五分钱    时间: 2020-3-30 16:01
不错。终于你站出来讲话了。一直都是以为小问题没有说
作者: 五分钱    时间: 2020-3-30 16:01
不错。终于你站出来讲话了。一直都是以为小问题没有说
作者: kaixiin0917    时间: 2020-4-3 08:36
请问如何修改引导这个文件,我直接在BCD中编辑将引导文件设置为\EFI\BOOT\VGAShim.efi 开机启动报错误0x0000007b,efi\boot\vgashim.efi不存在或者损坏
作者: 2010driver1998    时间: 2020-4-8 22:57
kaixiin0917 发表于 2020-4-3 08:36
请问如何修改引导这个文件,我直接在BCD中编辑将引导文件设置为\EFI\BOOT\VGAShim.efi 开机启动报错误0x000 ...

这是UEFI程序,不是Windows Boot App(winload.efi、memtest.efi是这种类型),所以不能从bootmgr启动
直接在EFI环境下运行它即可(最简单的方法是把它改名为bootx64.efi然后覆盖掉EFI\Boot下的原文件)
VGAShim执行完后会自动寻找同ESP下的bootmgfw.efi启动Windows
作者: kaixiin0917    时间: 2020-4-10 12:24
麻烦能说的详细一些么,论坛上都是发的用他启动,但是没写怎么实现,不需要去改BCD这个玩意么,如果不改BCD的话 怎么能实现通过vgashim.efi启动,我可以理解为把vgashim.eif直接替换掉bootx64.efi就可以,不用修改任何东西,对么
作者: 2011_ssn4201    时间: 2020-4-11 03:11
大神是否方便在帖子中共享一下新版本的vgashim.efi和vgashim.bmp文件?
  特殊地区 打不开原版的网址 没法下载
作者: 510819776    时间: 2020-4-12 13:07
大神的0.98.1版本确实修复了h81与h97芯片组主板报错找不到显卡的问题,实际测试现在关闭csm后win7pe可正常显示桌面了。
作者: ghjghjghj    时间: 2020-4-12 16:05
不错,试试能否工作
作者: kaixiin0917    时间: 2020-5-9 09:23
提示adapter found         no display 是啥问题
作者: 2010driver1998    时间: 2020-5-30 18:29
kaixiin0917 发表于 2020-5-9 09:23
提示adapter found         no display 是啥问题

0.98.1依然报错吗?开机时按键盘V键进debug模式看看有没有详细信息?、

另外试试refind在你的机器上能不能正常显示,修adapter not found参考了他们的代码
作者: zxshxz    时间: 2020-7-6 09:42
你好,0.98版vgashim我在zbook15g1上已经成功实现win7纯uefi启动,在此表示感谢。但是新买的锐龙4600H笔记本用三个版本的vgashim都未能成功启动win7,感觉是没有生效,无论是用win10的bootx64.efi,还是vgashim改名,启动win7都是卡四叶草。如果可能的话,还烦请抽空研究一二。
作者: yjffly    时间: 2020-7-10 17:49
感谢您的分享。
作者: 2010driver1998    时间: 2020-8-16 23:05
zxshxz 发表于 2020-7-6 09:42
你好,0.98版vgashim我在zbook15g1上已经成功实现win7纯uefi启动,在此表示感谢。但是新买的锐龙4600H笔记 ...

开机的时候按V打开VGAShim的调试模式,然后按一次回车继续
应该会输出一些信息,拍照发上来看看
作者: 求道者    时间: 2020-12-9 19:22
这个在OVMF反而用不了……

PS:
十代的WIN7驱动,问题还是太多
姑且搁置
作者: wintoflash    时间: 2020-12-9 19:33
求道者 发表于 2020-12-9 19:22
这个在OVMF反而用不了……

PS:

OVMF可以自己弄csm啊
作者: 求道者    时间: 2020-12-14 19:14
wintoflash 发表于 2020-12-9 19:33
OVMF可以自己弄csm啊
Does OVMF support legacy booting, legacy option ROMs, CSM?

No. While OVMF may have UEFI firmware drivers for some legacy hardware, there is no planned legacy compatibility for OVMF. One reason for this is that there is currently no open source CSM module which could be used within OVMF. Another reason is that we would like to use OVMF to help drive out some legacy assumptions which might be made by software layers above the system firmware.


姑且还没那么无聊。
整了哪天坏了也只能自己兜着,毫无收益可言

作者: wintoflash    时间: 2020-12-14 21:25
求道者 发表于 2020-12-14 19:14
姑且还没那么无聊。
整了哪天坏了也只能自己兜着,毫无收益可言

SeaBIOS 支持作为 OVMF 的 CSM 模块使用。
https://www.seabios.org/Build_overview


作者: blank007    时间: 2020-12-29 19:57
2010driver1998 发表于 2020-3-29 15:26
VGAShim只能自动执行同ESP内的EFI\Microsoft\Boot\bootmgfw.efi...

我想到一个情况,烦请楼主开示:

      您说的是本地硬盘上、纯UEFI启动 Win7 x64 的情况。那么,如果纯UEFI下启动基于 Win7 的 x64  WinPE,该怎么办呢?

      我想,如果让 VGAShim.efi 调用相同目录下的 bootmgfw.efi ,便捷、适用范围是不是可以更好一些?
作者: 666666    时间: 2021-2-3 16:44
27楼说的也很好,能不能设2个启动顺序,找不到第一个,可从第二个启动。
作者: 666666    时间: 2021-2-3 16:54
比如我的主板,设VGAShim.efi第一启动,每次开机只要发现有bootmgfw.efi,就会改成bootmgfw.efi第一启动。这样只有VGAShim.efi支持另一启动文件名,才能使用。
作者: 666666    时间: 2021-2-3 16:59
例如,我bootmgfw.efi改名win.efi或其他名称,VGAShim.efi找不到bootmgfw.efi,而选第二顺序启动win.efi,另类主板没发现bootmgfw.efi,就不会篡改启动顺序,就可使用VGAShim.efi了。
作者: h35473101    时间: 2021-3-5 18:31
谢谢分享,正在学习
作者: 蓝星明月    时间: 2021-4-17 14:25
谢谢分享!!!
作者: yxhappy    时间: 2021-4-20 16:58
这个要试试,没准成功
作者: yxhappy    时间: 2021-4-21 07:53
我的出现一红条重启安装失败
作者: 守护V未来    时间: 2021-6-19 22:29
支持了  安了重启会卡WIN7启动画面 开机可以进桌面 而且开机很慢
作者: 18958925900    时间: 2021-6-23 09:26
谢谢分享,先下载过去看看。
作者: qianzhuang2000    时间: 2021-6-23 19:33
2010driver1998 发表于 2020-4-8 22:57
这是UEFI程序,不是Windows Boot App(winload.efi、memtest.efi是这种类型),所以不能从bootmgr启动
...

谢谢,这个论坛看半天就你说了咋用。
作者: qianzhuang2000    时间: 2021-6-23 19:56
2010driver1998 发表于 2020-4-8 22:57
这是UEFI程序,不是Windows Boot App(winload.efi、memtest.efi是这种类型),所以不能从bootmgr启动
...

微星 x570  无效,卡在四叶草,能进系统,听见开机声音,但是屏幕一直显示四叶草。
作者: 2011Yukari    时间: 2022-10-10 16:02
666666 发表于 2021-2-3 16:59
例如,我bootmgfw.efi改名win.efi或其他名称,VGAShim.efi找不到bootmgfw.efi,而选第二顺序启动win.efi, ...

你可以写一个startup.nsh脚本放在efi\boot\下面,这个一般情况下是优先级最高的
内容可以这么写


  1. set StartupDelay 0
  2. for %i in fs0 fs1 fs2 fs3 fs4 fs5 fs6 fs7 fs8 fs9 fsa fsb
  3. if exist %i:\efi\boot\bootx64.efi then
  4. load %i:\efi\boot\bootx64.efi
  5. endif
  6. endfor
复制代码

作者: JQK    时间: 2022-10-12 18:51
感谢分享




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3