无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 2011yaya2007777
打印 上一主题 下一主题

[原创] GRUB4DOS for UEFI

    [复制链接]
331#
 楼主| 发表于 2020-11-9 18:16:47 | 只看该作者
菜单变量是啥啊……

不好意思,打错了。是采用变量...

点评

嘛,就先这样吧,这样不用我进一步对现有驱动做修改了,用原版就挺好的hhhhhhhhh。也保持兼容性,哪天哪位的BIOS对这个方案不高兴了再说吧。  详情 回复 发表于 2020-11-9 18:44
回复

使用道具 举报

332#
 楼主| 发表于 2020-11-9 18:17:01 | 只看该作者
但是删除menu.lst,或者把menu.lst改名为menu1.lst 都能进入命令行。

肯定是menu.lst的内容有问题。我没有找到menu.lst。看其他菜单,你调用了外部命令。现在外部命令可能得修改。
回复

使用道具 举报

333#
发表于 2020-11-9 18:44:08 | 只看该作者
本帖最后由 sunsea 于 2020-11-9 18:45 编辑
2011yaya2007777 发表于 2020-11-9 18:16
不好意思,打错了。是采用变量...

嘛,就先这样吧,这样不用我进一步对现有驱动做修改了,用原版驱动就挺好的hhhhhhhhh。也保持兼容性,哪天哪位的BIOS对这个方案不高兴了再说吧。
回复

使用道具 举报

334#
 楼主| 发表于 2020-11-9 18:50:44 来自手机 | 只看该作者
菜单可以在命令行一条一条地输入,看看哪条死机。

点评

uefi模式下,确定把 graphicsmode这行命令注释就不死机了,但是菜单显示起始位置不统一。又注释了 menuset这行,显示依旧不统一。 直接root,显示不了root启动设备,bios启动的话 测试直接加载 .mod文件不成功,  详情 回复 发表于 2020-11-9 19:56
回复

使用道具 举报

335#
发表于 2020-11-9 19:46:32 来自手机 | 只看该作者
xianglang 发表于 2020-11-9 16:52
SLIC 是 G4D 下一个外部命令文件,模拟品牌机 OEM 激活 Windows 用的。

能否把slic命令文件跟常用xxx.bin打个包共享一下,好久没用grub4dos整win7了,找找感觉。

点评

没有问题,见附件,有两个,一个是 4KB 的,一个是 20KB 的,都可以使用。  详情 回复 发表于 2020-11-10 10:31
回复

使用道具 举报

336#
发表于 2020-11-9 19:56:54 | 只看该作者
本帖最后由 cchessbd 于 2020-11-9 20:42 编辑
2011yaya2007777 发表于 2020-11-9 18:50
菜单可以在命令行一条一条地输入,看看哪条死机。

uefi模式下,确定把 graphicsmode这行命令注释就不死机了,但是菜单显示起始位置不统一。又注释了 menuset这行,显示依旧不统一。文本菜单模式下按c进入命令行,

1、测试root,显示(0xa0),执行第一项菜单后无法启动,按c进入命令行,root,显示不了root启动设备。这不知道是不是root命令在uefi模式有问题。2、测试直接加载 .mod文件不成功,里面就是几个外部文件,hotkey等。。。 insmod 命令在uefi模式有问题
3、boot启动 /boot/ipxe.krn,启动不了。。。以上测试是qemu虚拟机下。boot命令在uefi模式有问题
uefi模式下可以编辑每个菜单命令。

以下是正常bios启动界面,uefi启动界面对比。附上使用的菜单文件。





uefi启动界面-20201109200136.jpg (19.89 KB, 下载次数: 178)

菜单首行没有对齐,不知道为啥不显示中文

菜单首行没有对齐,不知道为啥不显示中文

bios-20201109200031.jpg (42.88 KB, 下载次数: 163)

bios-20201109200031.jpg

新建截图-20201109195516.jpg (41.72 KB, 下载次数: 176)

有问题的命令

有问题的命令

menu.lst.txt

1.74 KB, 下载次数: 14, 下载积分: 无忧币 -2

点评

在UEFI下用bios的东西?  详情 回复 发表于 2020-11-10 15:25
回复

使用道具 举报

337#
 楼主| 发表于 2020-11-9 20:28:54 来自手机 | 只看该作者
不支持ipxe,不支持kernel。    死机的图形模式命令,后面紧跟 -1 800就行了。置顶菜单sili

点评

我又按您的输入试了,qemu虚拟机下执行 graphicsmode -1 800又死机了。实机之前也是graphicsmode 这行命令死机。等我量产一下usb光驱,进入实机试一试。 机子主板是 微星z390i。实机启动uefi的win10 x64 pe没有问  详情 回复 发表于 2020-11-9 20:41
回复

使用道具 举报

338#
 楼主| 发表于 2020-11-9 20:31:33 来自手机 | 只看该作者
示例里面有。或者指定图形模式。怎么知道支持哪些图形模式,有命令,置顶说明里面有。
回复

使用道具 举报

339#
发表于 2020-11-9 20:41:28 | 只看该作者
本帖最后由 cchessbd 于 2020-11-9 21:19 编辑
2011yaya2007777 发表于 2020-11-9 20:28
不支持ipxe,不支持kernel。    死机的图形模式命令,后面紧跟 -1 800就行了。置顶菜单sili

我又按您的输入试了,qemu虚拟机下执行 graphicsmode  -1 800又死机了。实机之前也是graphicsmode 这行命令死机。等我量产一下usb光驱,进入实机试一试。。。现在我拿u盘的量产光驱,实机加载文本菜单界面后,运行graphicsmode  -1 800后死机黑屏无任何提示,没有截图。

另外发现了实机启动后汉字又显示了,但是显示不全;
实机root设备是(fd0),而虚拟机启动root设备是(0xa0);
实机chainloader /boot/bootx64.efi,boot成功运行,但是无法启动进入win10 x64 pe,错误提示0xc000000e,没有进入加载wim文件过程这一步。
机子主板是 微星z390i。实机用模拟fd0启动软盘(微软的bootx64.efi)做usb光驱的efi引导文件,uefi启动win10 x64 pe没有问题。
又用虚拟机测试以上chainloader /boot/bootx64.efi过程,直接黑屏死机了。

当然本身qemu虚拟机也是不能进入win10 x64 pe的,不过虚拟机用微软的bootx64.efi放置启动软盘内(不经过 grub uefi调用),有加载过程及win图标出现,然后不动(见图);而虚拟机进入grub uefi 命令行,chainloader /boot/bootx64.efi,无加载过程及win图标出现



debug-20201109203719.jpg (42.3 KB, 下载次数: 189)

执行 graphicsmode -1 800

执行 graphicsmode  -1 800

debug-20201109203803.jpg (18.08 KB, 下载次数: 264)

执行 graphicsmode -1 800又死机

执行 graphicsmode  -1 800又死机

IMG_20201109_204912.jpg (716.15 KB, 下载次数: 264)

加载bootx64.efi,能boot不能进入pe

加载bootx64.efi,能boot不能进入pe

IMG_20201109_204957.jpg (1.08 MB, 下载次数: 250)

boot后出错界面

boot后出错界面

IMG_20201109_204447.jpg (1017.6 KB, 下载次数: 247)

实际又能显示汉字,缺一汉字(虚拟机无汉字)

实际又能显示汉字,缺一汉字(虚拟机无汉字)

新1-20201109210339.jpg (42.9 KB, 下载次数: 267)

虚拟机测试以上chainloader /boot/bootx64.efi过程,直接黑屏死机

虚拟机测试以上chainloader /boot/bootx64.efi过程,直接黑屏死机

新2-20201109210339.jpg (22.31 KB, 下载次数: 267)

虚拟机微软bootx64.efi直接加载过程截图

虚拟机微软bootx64.efi直接加载过程截图

新3-20201109210836.jpg (19.88 KB, 下载次数: 262)

虚拟机微软bootx64.efi直接加载出现此图标后死机

虚拟机微软bootx64.efi直接加载出现此图标后死机
回复

使用道具 举报

340#
 楼主| 发表于 2020-11-9 20:54:13 来自手机 | 只看该作者
在命令行执行graphicsmode,就知道支持不支持图形模式,知道支持什么尺寸。

点评

不知道yaya大有没有认真看我的贴,那我再说一下遇到uefi版本的问题吧,虚拟机的暂且不管。。。 1.实机命令行执行graphicsmode死机,执行graphicsmode -1 800也死机,死机都是黑屏无任何提示,菜单debug on打开也无  详情 回复 发表于 2020-11-11 12:28
我的猜测是yaya老大没有完全模拟微软bootx64.efi启动过程(efisys.bin是软驱fd0文件格式,从usb光驱uefi启动后,加载fd0内的bootx64.efi,此文件会去光驱查找启动相关必需文件,注意:实机是进入了pe的); 但是实机  详情 回复 发表于 2020-11-9 21:44
回复

使用道具 举报

341#
 楼主| 发表于 2020-11-9 21:37:50 来自手机 | 只看该作者
实机你是使用量产的cdrom起动的,怎么会被识别为软盘?它有启动镜像efi没有?你的U盘是不是还有一个量产单元,为软盘,也有efi启动文件?

点评

我先用 map (fd0) (cd0) chainloader (fd0)/boot/bootx64.efi,boot启动后,仍然是0xc000000e的错误提示。 但是现在的 map (fd0) (fd1)啥的 没作用了,模拟cd0后,对微软的bootx64.efi无效。 看来只能是 grub for  详情 回复 发表于 2020-11-9 22:36
没有其他软驱,就一个usb光驱。量产光驱用的iso是有启动镜像efi的。bios启动正常,用微软的efisys.bin做efi启动镜像也正常(usb光驱可以正常双启)  详情 回复 发表于 2020-11-9 22:16
回复

使用道具 举报

342#
发表于 2020-11-9 21:44:59 | 只看该作者
本帖最后由 cchessbd 于 2020-11-9 21:58 编辑
2011yaya2007777 发表于 2020-11-9 20:54
在命令行执行graphicsmode,就知道支持不支持图形模式,知道支持什么尺寸。

我的猜测是yaya老大没有完全模拟微软bootx64.efi启动过程(efisys.bin是软驱fd0文件格式,bootx64.efi启动是在fd0,从usb光驱uefi启动后,加载fd0内的bootx64.efi,此文件会去光驱查找启动相关必需文件,注意:实机是进入了pe的);
但是实机启动grub for uefi的(替换了efisys.bin中的此文件),启动后整个usb光驱变为fd0,没有光驱了,这样微软的bootx64.efi自然无法查找启动文件。同时实机我用ls命令探测了 (cd0) (cd1) (a0)都没有找到,这就是出现0xc000000e错误提示的根本原因。
不知道yaya大怎么解决这一问题,不然真的没法用grub for uefi。是应该再模拟一个cd0,还是要grub for uefi运行后不把光驱模拟为fd0。。。
同时实机uefi模式,chainloader +1命令也有问题(可能是我想在uefi下运行dos,想多了)。见图


IMG_20201109_213100.jpg (635.68 KB, 下载次数: 159)

实机探测光驱不存,整个光驱被模拟为fd0。

实机探测光驱不存,整个光驱被模拟为fd0。

IMG_20201109_213428.jpg (1.08 MB, 下载次数: 166)

chainloader +1 无法执行

chainloader +1 无法执行
回复

使用道具 举报

343#
发表于 2020-11-9 22:16:05 | 只看该作者
2011yaya2007777 发表于 2020-11-9 21:37
实机你是使用量产的cdrom起动的,怎么会被识别为软盘?它有启动镜像efi没有?你的U盘是不是还有一个量产单元 ...

没有其他软驱,就一个usb光驱。量产光驱用的iso是有启动镜像efi的。bios启动正常,用微软的efisys.bin做efi启动镜像也正常(usb光驱可以正常双启)
回复

使用道具 举报

344#
发表于 2020-11-9 22:16:52 | 只看该作者
本帖最后由 cchessbd 于 2020-11-9 22:19 编辑

chainloader应该也是有问题的,无法加载其他文件,但是(fd0)/boot/bootx64.efi可以加载。实机无法加载(hd1,1)的文件,也无法加载fd0的文件bootmgr bootmgr.efi。出错提示见图


IMG_20201109_221149.jpg (769.45 KB, 下载次数: 161)

无法加载启动文件

无法加载启动文件
回复

使用道具 举报

345#
发表于 2020-11-9 22:36:39 | 只看该作者
本帖最后由 cchessbd 于 2020-11-10 08:23 编辑
2011yaya2007777 发表于 2020-11-9 21:37
实机你是使用量产的cdrom起动的,怎么会被识别为软盘?它有启动镜像efi没有?你的U盘是不是还有一个量产单元 ...

我先用 map (fd0) (cd0)  chainloader (fd0)/boot/bootx64.efi,boot启动后,仍然是0xc000000e的错误提示。
但是现在的 map (fd0) (fd1)啥的 没作用了,模拟cd0后,对微软的bootx64.efi无效。也就是说实机启动grub uefi后,模拟(fd0) 为(cd0)这条路不通。
看来只能是 grub for uefi启动后自身bootx64.efi在 fd1,加载其他引导文件时,模拟fd0,放入该文件,然后启动,实机设备不动。这样估计就没问题了。
回复

使用道具 举报

346#
发表于 2020-11-10 07:06:12 | 只看该作者
本帖最后由 wuwuzz 于 2020-11-10 08:20 编辑


2020-11-09版的G4D,经测试:

1、已解决了多光驱(量产或实体)干扰条件下,MAP 磁盘上的(win10 PE)ISO,正确启动问题。
2、以G4D为光盘引导程序,为PE ISO加壳,形成新ISO(即ISO嵌套)测试成功。

==================
3、测试SVbus

看上下文,SVbus是为VHD启动准备的,对SVbus/VHD不太熟。以前测试W大grub2的
run.efi、ntboot时,准备了一个win10 to go的fixwtg.vhd,能测试通过。


在g4d下,
map (hd1,1)/fixwtg.vhd (hd2)
chainloader (hd2,0)
boot

进入VHD时失败,提示0xc000000e错误。测试 svbus是不是对VHD有什么特定要求,比如要
装svbus for windows驱动之类。




回复

使用道具 举报

347#
 楼主| 发表于 2020-11-10 08:33:10 | 只看该作者
fixwtg.vhd 是固定尺寸的,还是动态尺寸的?如果是后者,要加 --mem

点评

固定尺寸  详情 回复 发表于 2020-11-10 09:53
回复

使用道具 举报

348#
发表于 2020-11-10 08:58:03 | 只看该作者
谢谢楼主的分享
回复

使用道具 举报

349#
发表于 2020-11-10 09:53:08 来自手机 | 只看该作者
2011yaya2007777 发表于 2020-11-10 08:33
fixwtg.vhd 是固定尺寸的,还是动态尺寸的?如果是后者,要加 --mem

固定尺寸

点评

出现新问题。 此fixwtg.vhd用grub2的run.efi或ntboot启动,成功进入win10,然后重启(冷启或热启) 电脑,在G4D下MAP,chainloader出现failed to load image/boot_image_handle not found 错误。手动chainloader  详情 回复 发表于 2020-11-10 11:24
回复

使用道具 举报

350#
发表于 2020-11-10 10:31:01 | 只看该作者
本帖最后由 xianglang 于 2020-11-10 10:46 编辑
9001 发表于 2020-11-9 19:46
能否把slic命令文件跟常用xxx.bin打个包共享一下,好久没用grub4dos整win7了,找找感觉。

没有问题,见附件,有两个,一个是 4KB 的,一个是 20KB 的,都可以使用。

slic.rar

7.27 KB, 下载次数: 40, 下载积分: 无忧币 -2

点评

感谢! 我记着是chenall发的东东,没几天删除了。 以前吧都是搞硬刷bios,现在不流行了,还是来软的吧,哈哈  详情 回复 发表于 2020-11-10 14:38
回复

使用道具 举报

351#
发表于 2020-11-10 10:45:57 | 只看该作者
本帖最后由 xianglang 于 2020-11-10 10:47 编辑

我想了一下,G4D UEFI 是全新的,菜单文件名还是不是使用 MENU.LST 为好,改成 MENU-EFI.LST 比较好,直观,也不会与原来的菜单文件名混淆,至于存放目录,可以是 /GRUB、/BOOT/GRUB、/EFI/BOOT、 / 目录,并且按这样的优先顺序查找。因为 G4D 会有一大堆外部命令和相关文件,还是存放在专用的目录里比较清爽干净,存放在 / 和 /BOOT 目录,都显得太杂乱了一些。
回复

使用道具 举报

352#
发表于 2020-11-10 11:24:54 | 只看该作者

出现新问题。

此fixwtg.vhd用grub2的run.efi或ntboot启动,成功进入win10,然后重启(冷启或热启)
电脑,在G4D下MAP,chainloader出现failed to load image/boot_image_handle not found
错误。手动chainloader bootx64.efi再boot,无反应。

不能重现350#的场景了。




回复

使用道具 举报

353#
发表于 2020-11-10 13:14:58 | 只看该作者
又发现两个问题:一是使用 halt 关机命令,在我的台式机上,执行的是重启,命令执行后不久 CPU 风扇停一下,风扇再转并正常启动,而在非 UEFI 版本正常关机。

二是使用诸如 map --mem (hd1,1)/vdf/win7x64.vhd (hd0) 之类命令,如果后面 (hd0) 是存在的磁盘,则会在将 VHD 读入内存完成后,提示磁盘不存在,(hd0) 仍然是原来已存在的磁盘,只有映射为一个不存在的磁盘号,才会正常。另外,我这个 VHD 中的 WIN7 安装有 SVBUS 驱动,可以在 G4D 中作为内存系统使用,EFI 启动时在 DCB 菜单中加载,也可以正常启动,不过用 UEFI 版映射到内存后启动它时,直接启动 (hd3) 会提示 BOOTX64.EFI 没有什么之类,启动 BOOTMGFW.EFI 会在出现 BCD 菜单前出错。
回复

使用道具 举报

354#
发表于 2020-11-10 14:38:49 来自手机 | 只看该作者
本帖最后由 9001 于 2020-11-10 14:43 编辑
xianglang 发表于 2020-11-10 10:31
没有问题,见附件,有两个,一个是 4KB 的,一个是 20KB 的,都可以使用。


感谢!
我记着是chenall发的东东,没几天删除了。
以前吧都是搞硬刷bios,现在不流行了,还是来软的吧,哈哈

20K跟4K有何区别?

点评

有什么区别就不太清楚了,我这里 20K 那个会有一大堆显示信息闪过,我一般用 4K 那个。  详情 回复 发表于 2020-11-10 14:58
回复

使用道具 举报

355#
发表于 2020-11-10 14:58:06 | 只看该作者
9001 发表于 2020-11-10 14:38
感谢!
我记着是chenall发的东东,没几天删除了。
以前吧都是搞硬刷bios,现在不流行了,还是来软的 ...

有什么区别就不太清楚了,我这里 20K 那个会有一大堆显示信息闪过,我一般用 4K 那个。

点评

SLIC使用菜单命令什么,不会用  详情 回复 发表于 2020-11-10 15:18
回复

使用道具 举报

356#
发表于 2020-11-10 15:18:13 | 只看该作者
xianglang 发表于 2020-11-10 14:58
有什么区别就不太清楚了,我这里 20K 那个会有一大堆显示信息闪过,我一般用 4K 那个。

SLIC使用菜单命令什么,不会用

点评

在chainloader /bootmgr 之前使用slic xxx. bin加载slic表,模拟某种OEM机器启动  发表于 2020-11-10 15:25
回复

使用道具 举报

357#
发表于 2020-11-10 15:25:50 | 只看该作者
cchessbd 发表于 2020-11-9 19:56
uefi模式下,确定把 graphicsmode这行命令注释就不死机了,但是菜单显示起始位置不统一。又注释了 menuse ...

在UEFI下用bios的东西?
回复

使用道具 举报

358#
发表于 2020-11-10 16:34:54 | 只看该作者
有坛友把g4d for uefi 当成了g4d的升级版,所以按g4d的功能去试,然后就产生各种问题。

其实把g4d for uefi 当成一个新的软件就好了,它实现了哪些功能,以yaya公布的为准,这样试了有问题的再反馈。其他的功能等待yaya拓展,并不是g4d有的现在g4d for uefi都有了,需要耐心等待yaya。
回复

使用道具 举报

359#
 楼主| 发表于 2020-11-10 17:19:45 来自手机 | 只看该作者
知心啊,哈哈哈
回复

使用道具 举报

360#
发表于 2020-11-10 19:07:31 | 只看该作者
2011yaya2007777 发表于 2020-11-8 19:00
W大,我 --mem 使用的是 GRUB_EFI_LOADER_DATA,这个不知道会不会被释放?

对于分配页,分配池,我有些 ...

EFI_LOADER_CODE 和 EFI_LOADER_DATA,操作系统可以自行决定是否回收。
AllocatePages分配的内存不跨页,可能对驱动更友好一点。但是要注意,AllocatePages在32位uefi上可能被分配到4GB之后的内存。

点评

自行决定是否回收的话对我们的虚拟盘估计就比较有风险了……  详情 回复 发表于 2020-11-10 19:28
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-29 21:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表