无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 401479|回复: 3291
打印 上一主题 下一主题

[原创] GRUB4DOS for UEFI

    [复制链接]
跳转到指定楼层
#
发表于 2020-10-29 10:31:46 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 2011yaya2007777 于 2021-4-24 10:50 编辑

  使用于 UEFI 环境的 GRUB4DOS。
  
  这是一个庞大的工程,几乎所有的代码都捋了一遍。修改了控制台键盘输入输出,控制台屏幕输出,内存控制,
  驱动器控制,获取日期时间,暂停控制,图形模式及Unicode字体实现,PXE 网启,等等。
  
  开发过程中,参考了 GRUB2 源码。有关映射,参考了 wintoflash 的源码。

  文件下载:http://grub4dos.chenall.net/

更新说明:
2021-04-24 (yaya)
  支持尾续菜单, 改进批处理调试, 内置 unicode 16*16 英文点阵字符。

2020-11-18 (yaya)
  1. 菜单目录更改为:/efi/grub/menu.lst
  2. 支持实体光盘、硬盘启动。
  3. 多个光盘时,启动光盘调整为第一光盘,以适应 windows。
  4. 增加退出 GRUB4DOS 函数 exit_g4d。
  5. 批处理变更:
     函数下标不变,参数由 32 位变更为 64 位。(Fn.下标 参数1 参数2 ...)
     变量地址由 0x8304 变更为 0x8308,由 32 位变更为 64 位。
     call Fn 函数,如果使用变量 0x8200-0x8400 则要在前面加g4e,如 g4e0x8217。
     批处理增加 else 函数。增加 {脚本集} 表示法。
     如:
     if 条件
     {
       脚本集
       if 条件 {
         脚本集 }
       else {
         脚本集 }
     }
     else if 条件
     {
       脚本集
     }
     else
     {
       脚本集
     }
     注意:
     1. 大括弧必须是一行的结尾。
     2. 脚本集可多行书写。
     3. 大括弧内部可以嵌套。

2020-10-30
  1. 可以启动 efi 文件。
  2. 可以启动 iso 及 img 文件。
  3. 内置热键功能。
  
  与旧版本不同之处:
  1. 可以通过 graphicsmode 命令查看系统支持的图形模式。
  2. map 函数执行后即挂载。不需要执行 --hook 指令。
  3. 取消 --hook,--unhook,--rehook,--unmap=,--floppies=,--harddrives= 指令。
  4. 在 UEFI 环境,可以从 0x80 以外的磁盘启动,因此不需要交换磁盘操作,如 map (hd0) (hd1)。
  5. 取消删除磁盘功能,如 map (hd1) (hd1)。
  6. 目前 PXE 网启只支持 tftp。
  





点评

辛苦了  发表于 2024-5-11 18:36
楼主, 建议提供一个样本PE,包括ISO镜像,包含某PE制作工具对应的完整包。 这样比较易学易用。 比较像grub4DOSmenu.lst那样  发表于 2023-7-22 11:13
有没有efi siso 模块啊?  发表于 2022-2-17 07:02
菜单目录更能不能自定义?  发表于 2022-1-7 21:32

评分

参与人数 129无忧币 +642 收起 理由
yyz2191958 + 2 赞一个!
liangzr1976 + 5 很给力!
slyneo + 5 很给力!
jhdonline + 1 很给力!
1928374655 -1 赞一个!
msvcdll + 1 很给力!
天涯无痕 + 5 很给力!
kunpeng + 5
快雪时晴 + 1 很给力!
wawakuliao + 5 赞一个!
weiteng + 5 赞一个!
2012chenyuwen + 5 很给力!
xuxuezeng + 5 很给力!
f111 + 5 很给力!!!
994956737 + 1 很给力!
9001 + 5 致敬技术大神们!
szmsys + 5 很给力!
hzghgz + 5 赞一个!
ddngng + 5 很给力!
wwj402 + 5 很给力!
小妹 + 3
lpsyuntao + 1 赞一个!
ddianxing + 5 很给力!
defswffaaaawe + 1 赞一个!
robincai + 30 亲测非常好用!
wfccsqk + 2
ypf188 + 5 很给力!
a-lao + 5 很给力!
2011cwj6958 + 5 很给力!
榕龙 + 1 很给力!

查看全部评分

3207#
发表于 2024-5-26 00:37:47 | 只看该作者
谢谢分享
回复

使用道具 举报

3206#
发表于 2024-5-25 17:51:29 | 只看该作者

谢谢大佬解答!
回复

使用道具 举报

3205#
发表于 2024-5-25 17:40:18 | 只看该作者
wanghh 发表于 2024-5-25 16:22
谢谢大佬解答!            GRUB4DOS for UEFI 启动需要关闭 安全启动吗?

需要

点评

谢谢大佬解答!  详情 回复 发表于 2024-5-25 17:51

评分

参与人数 1无忧币 +5 收起 理由
wanghh + 5 赞一个!

查看全部评分

回复

使用道具 举报

3204#
发表于 2024-5-25 16:22:10 | 只看该作者
本帖最后由 wanghh 于 2024-5-25 17:17 编辑

谢谢大佬解答!            GRUB4DOS for UEFI 启动需要关闭 安全启动吗?

点评

需要  详情 回复 发表于 2024-5-25 17:40
回复

使用道具 举报

3203#
发表于 2024-5-25 12:57:38 | 只看该作者
本帖最后由 hilsonma 于 2024-5-26 05:42 编辑
wanghh 发表于 2024-5-25 06:33
如何安装啊。没有说明

可参考 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=423365

方法一 (需主板固件支持,需要关闭安全启动)
1.官方下载包中提取bootx64.efi 和 menu.lst 放到 esp 的 \EFI\grub\
2.按自己的需要修改menu.lst,并将用到的文件放到匹配的路径
3.将 esp 的 \EFI\grub\bootx64.efi 添加到 UEFI启动序列 并调到第一位

方法二 (需主板固件支持,建议关闭安全启动,不关的话可以采用过安全启动方案但不一定有效)
1.官方下载包中提取 bootx64.efi 放到 esp 的 \EFI\boot\
  官方下载包中提取 menu.lst 放到 esp 的 \EFI\grub
2.按自己的需要修改menu.lst,并将用到的文件放到匹配的路径
3.将 esp 的 \EFI\boot\bootx64.efi 添加到 UEFI启动序列 并调到第一位

方法三 (适用于原来是windows安装的引导,需要关闭安全启动)
1.官方下载包中提取bootx64.efi 和 menu.lst 放到 esp 的 \EFI\grub\
2.按自己的需要修改menu.lst,并将用到的文件放到匹配的路径
3.将 esp 的 \EFI\Microsoft\Boot\bootmgfw.efi 改名为 bootmgf.efi
  将 esp 的 \EFI\grub\bootx64.efi 改名为bootmgfw.efi ,复制一份放到 esp 的 \EFI\Microsoft\Boot\

附件是我根据方法三做的简易安装包
解压后点击 g4e安装.cmd 即可完成安装,重启即生效
菜单的第1项是原来的windows启动
菜单的第2项是启动pe,需要将pe的wim文件命名为boot.wim放到根目录的pe子目录中
菜单的第3项是diy自动菜单,将你想启动的镜像等放到根目录的diy子目录中,会自动生成子菜单供选择启动

g4e.7z (961.07 KB, 下载次数: 7)

请做好U盘启动准备!!!提防万一出错无法开机。

点评

谢谢大佬解答!  详情 回复 发表于 2024-5-25 16:22
回复

使用道具 举报

3202#
发表于 2024-5-25 06:33:23 | 只看该作者
如何安装啊。没有说明

点评

可参考 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=423365 方法一 (需主板固件支持) 1.官方下载包中提取bootx64.efi 和 menu.lst 放到 esp 的 \EFI\grub\ 2.按自己的需要修改menu.lst,并将用到的文件  详情 回复 发表于 2024-5-25 12:57
回复

使用道具 举报

3201#
发表于 2024-5-24 21:51:07 | 只看该作者
不和菜单如何写了。
回复

使用道具 举报

3200#
发表于 2024-5-22 19:18:29 | 只看该作者
这个是为了DOS设计的么?
回复

使用道具 举报

3199#
发表于 2024-5-16 07:35:59 | 只看该作者
学习一下,谢谢大神
回复

使用道具 举报

3198#
发表于 2024-5-13 15:27:44 | 只看该作者
谢谢,辛苦了!
回复

使用道具 举报

3197#
发表于 2024-5-13 15:27:32 | 只看该作者
谢谢,辛苦了
回复

使用道具 举报

3196#
发表于 2024-5-11 20:48:28 来自手机 | 只看该作者
uefi
回复

使用道具 举报

3195#
发表于 2024-5-11 17:59:05 | 只看该作者
厉害厉害~
回复

使用道具 举报

3194#
发表于 2024-5-11 16:51:43 来自手机 | 只看该作者
启动管理工具收藏
回复

使用道具 举报

3193#
发表于 2024-5-3 19:48:37 | 只看该作者
谢谢楼主
回复

使用道具 举报

3192#
发表于 2024-4-27 21:46:29 | 只看该作者
哪位大侠能给个使用说明吗?谢谢!
回复

使用道具 举报

3191#
发表于 2024-4-25 08:40:06 | 只看该作者
感谢楼主分享。。。。。。。
回复

使用道具 举报

3190#
发表于 2024-4-23 14:04:35 来自手机 | 只看该作者
張烈支持
回复

使用道具 举报

3189#
发表于 2024-4-19 21:53:53 | 只看该作者
感谢分享
回复

使用道具 举报

3188#
 楼主| 发表于 2024-4-19 11:50:38 来自手机 | 只看该作者
本身不能。可在无忧搜一搜,有方法。
回复

使用道具 举报

3187#
发表于 2024-4-19 11:24:38 | 只看该作者
怎么过安全启动呢楼主
回复

使用道具 举报

3186#
发表于 2024-4-18 20:38:03 | 只看该作者
好帖!!!
回复

使用道具 举报

3185#
发表于 2024-4-15 18:49:06 | 只看该作者
不才 发表于 2024-4-8 21:57
求教,在 EFIx64 模式下如何加载运行Memtest86+程序?
问题已解决!

EFI下分64与32位,互不通用的,常识
回复

使用道具 举报

3184#
发表于 2024-4-8 21:57:22 | 只看该作者
本帖最后由 不才 于 2024-4-10 11:31 编辑

求教,在 EFIx64 模式下如何加载运行Memtest86+程序?
问题已解决!

在闲鱼买了两根内存条,习惯性的使用Memtest86+内存测试程序(memtest86+-5.01.bin,最新版是7.0的 memtest32.bin)进行测试。在 Legacy Bios 模式下,通过g4d使用kernel加载可正常运行程序进行检测。但在 EFIx64 模式下,尝试通过 g4e 使用 kernel 加载却被提示不支持64位CPUs(可是在 Legacy Bios 模式下,通过g4d使用kernel加载没问题啊)。请教各位老师,在g4e中该如何加载运行Memtest86+程序呢?
Memtest86+ 主页:
http://www.memtest.org/#downiso
刚才在官网上认真阅读了相关说明,原来在UEFI模式下搞不定的原因是偶加载错了程序主体。都是想当然惹得祸哈。
在g4e下应该用kernel加载memtest64.efi(32位的则加载memtest32.efi)!在虚拟机上测试了一下,已经可以正常运行检测程序了。




memtest32.bin.gz

67.26 KB, 下载次数: 1, 下载积分: 无忧币 -2

memtest86+-5.01.bin.gz

54.5 KB, 下载次数: 1, 下载积分: 无忧币 -2

点评

EFI下分64与32位,互不通用的,常识  详情 回复 发表于 2024-4-15 18:49
回复

使用道具 举报

3183#
发表于 2024-3-28 09:39:59 | 只看该作者
2011yaya2007777 发表于 2020-12-23 10:54
谢谢你,这么详尽的解答,受教了!

楼主您好,请问,哪里有支持碎片的svbus下载喔?
回复

使用道具 举报

3182#
发表于 2024-3-27 23:58:12 | 只看该作者
2011yaya2007777 发表于 2020-12-29 16:03
那就算了吧,不管 SVBus 的碎片问题了,省省心吧。

请问,碎片问题,是不是解决不了噢?
svbus那边,有通知作者吗?
或者说,有没有第三方的支持碎片的其它驱动?
回复

使用道具 举报

3181#
发表于 2024-3-27 15:44:57 | 只看该作者
2011yaya2007777 发表于 2023-5-22 18:34
有希望。但是容量大了不易使用固定地址,恐怕不兼容SVbus了。

楼主,最新版的,是不是不兼容SVBUS了?
最近,我用“最新版的grub4dos-for_UEFI-2024-02-26.7z+SVBUS”挂载的盘,会出现数据丢失、数据损坏的情况。
================================================

楼主你好,有个问题困扰着小弟,能否帮忙看看:

小弟的需求是,开机后,系统能同时挂载几个差分的VHD:
windows10.vhd,  program.vhd,   data.vhd

//================================
网上的的一些做法是:创建开机启动的“计划任务”、创建开机启动的“Windows服务”。
但是,这些方法,都不能满足小弟的需求。(因为计划任务、Windows服务,这些在开机的启动流程中,都太后了。)
小弟需要的解决方案是:开机后,能最早的挂载(程序盘、数据盘)的VHD,越早越好。
//================================
请问楼主大侠,有好的解决方案吗?





回复

使用道具 举报

3180#
发表于 2024-3-22 09:21:35 | 只看该作者
下载
回复

使用道具 举报

3179#
发表于 2024-3-22 09:10:30 | 只看该作者
本帖最后由 hhh333 于 2024-4-7 21:38 编辑
2011yaya2007777 发表于 2024-3-20 20:31
目前只能从根目录查找。你可以在grldrstart.S里面更改,然后编译grub4dos。grldr在根目录很烦吗?

哈哈,grldr不烦。主要是用这个文件来装载bootmgr的,每一个PE对应一个mgr。而这个mgr是放在\BOOT下的。
譬如,我的PE安装到硬盘,其中一种方式就是改boot.ini的:
  1. [BOOT loader]
  2. timeout=10
  3. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
  4. [operating systems]
  5. multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP/2003 (Boot to C:\Windows)" /noexecute=optin /fastdetect
  6. C:\BOOT\H3_AVL06.BIN="H3 Win10 PE 64"
  7. C:\BOOT\H3_AVL10.BIN="H3 Win10 PE"
  8. C:\BOOT\H3_AVL16.BIN="H3 Win8.1 PE 64"
  9. C:\BOOT\H3_AVL81.BIN="H3 Win8.1 PE"
  10. C:\BOOT\H3_AVL03.BIN="H3 Win2003 PE"
  11. C:\BOOT\H3_AVLW7.BIN="H3 Win7 PE"
  12. C:\BOOT\H3_AVLW8.BIN="H3 Win8 PE"
  13. C:\BOOT\H3_AVL64.BIN="H3 Win8 PE 64"
  14. C:\BOOT\H3_AVLIN.BIN="H3 Win2003 PE ExtTools-Built-In"
  15. C:\BOOT\H3_AVLRM.BIN="H3 Win2003 PE Non-RAM-Mode"
  16. C:\BOOT\H3_AVLNV.BIN="H3 Win2003 PE Native_Mode"
  17. C:\grldr="H3 Grub4DOS for NT5"
复制代码
对应关系是这样的:
  1. 硬盘启动器(grldr.mbr改名而来)-->指向的PE启动器---->对应的BCD-->对应的WIM------>对应的PE
  2.     H3_AVLW7.BIN------------------------>H3_MGRW7.BIN------>BW7-------->H3_7PE.WIM----->Win7PE
  3.     H3_AVLW8.BIN------------------------>H3_MGRW8.BIN------>BW8-------->H3_8PE.WIM----->Win8 PE
  4.     H3_AVL81.BIN------------------------->H3_MGR81.BIN------>B81---------->H3_81PE.WIM--->Win81 PE
  5.     H3_AVL10.BIN------------------------->H3_MGR10.BIN------>B10---------->H3_10PE.WIM--->Win10 PE
  6.     H3_AVL64.BIN------------------------->H3_MGR64.BIN------>B64---------->H3_864.WIM----->Win8 64 PE
  7.     H3_AVL16.BIN------------------------->H3_MGR16.BIN------>B16---------->H3_8164.WIM--->Win81 64 PE
  8.     H3_AVL06.BIN------------------------->H3_MGR06.BIN------>B06---------->H3_1064.WIM--->Win10 64 PE
  9.     H3_AVL11.BIN------------------------->H3_MGR11.BIN------>B11---------->H3_1164.WIM--->Win11 64 PE
复制代码


这样我就必须把H3_MGRxx.BIN必须复制一份放根目录下,显得有点多,当然也可以做成统一一个BCD,把这些都包含进去,但这需要二次选择不是?
回复

使用道具 举报

3178#
发表于 2024-3-21 10:58:09 | 只看该作者
不点 发表于 2024-3-21 04:38
你可以使用 wee,来取代 grldr.mbr。在 wee 的菜单中,你可以指定查找的位置。这样,就可以避免去修改和 ...

哦,感谢解答,我这技术肯定搞不定,我看下wee
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-3 16:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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