2011yaya2007777 发表于 2020-10-29 10:31:46

GRUB4DOS for UEFI

本帖最后由 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。






假大空 发表于 2020-10-29 10:52:18

测试下先。{:1_183:}

天使的魔翼 发表于 2020-10-29 10:52:55

终于等到大大出手解决支持G4D支持UEFI,再不用绕着弯找亲戚了。

monitor20 发表于 2020-10-29 10:56:49

前排支持!

有阴也有阳 发表于 2020-10-29 10:59:14

          与时俱进,才能永葆活力!不然真要叫时代给淘汰了......

      GRUB4DOS——难得的好东西,要是能适应UEFI启动,那就太棒了,若不能适应UEFI启动

而不得不被丢弃,就实在是太可惜了!!!{:3_148:}

2012kwy 发表于 2020-10-29 11:02:33

不知字体文件用G4B还是Grub2,还是都可以?

窄口牛 发表于 2020-10-29 11:25:11

暂时拍手围观支持。

Climbing 发表于 2020-10-29 11:27:20

一直无法适应grub2,终于等到了grub4UEFI。https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif

pseudo 发表于 2020-10-29 11:28:17

good job!                                                                                                                           .

2012kwy 发表于 2020-10-29 11:33:41

先ISO和IMG,然后再支持Wim和VHD?

sairen139 发表于 2020-10-29 11:40:19

非常好!支持uefi了!

2012andyle113 发表于 2020-10-29 11:47:11

很厉害的东西,支持一下

不点 发表于 2020-10-29 11:48:57

强悍!

韩小锐 发表于 2020-10-29 11:54:18

支持支持

zhoubin 发表于 2020-10-29 11:55:59

牛!支持您!!

ddsony 发表于 2020-10-29 12:08:50

顶起!

captain_g 发表于 2020-10-29 12:09:41

终于等到了!

人生相遇不是太早就是太晚,这个正是时候!

aguest 发表于 2020-10-29 13:08:36

向开发者致敬!

静听雨下 发表于 2020-10-29 13:15:09

很不错的样子

wintoflash 发表于 2020-10-29 13:23:16

厉害!
请问 yaya 是怎么解决 UEFI 函数调用约定方面的问题的?
据我所知,__attribute__((ms_abi)) 只支持 GCC4.7及以上版本,是用汇编解决的吗?
#if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)))||(defined(__clang__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 2)))
#define EFIAPI __attribute__((ms_abi))
#else
#error Compiler is too old for MS_ABI
#endif
另外 yaya 准备什么时候上传代码?

lsc202 发表于 2020-10-29 13:52:45

现在的新电脑基本上都是UEFI了,grub4dos也越来越不适应新机器,这下好了,终于等到了,感谢yaya

蓝星明月 发表于 2020-10-29 14:00:55

谢谢!!! 支持!!!谢谢!!! 支持!!!谢谢!!! 支持!!!

MC阿虎 发表于 2020-10-29 14:03:43

支持楼主的分享

2010up 发表于 2020-10-29 14:06:57

牛牛,感谢分享

江南一根葱 发表于 2020-10-29 14:30:13

64位的出了?

江南一根葱 发表于 2020-10-29 14:31:10

pxe网启支持proxydhcp不

2010up 发表于 2020-10-29 14:46:48

\bootx64.efi
如何加载引导PXE启动菜单

ohte 发表于 2020-10-29 14:49:13

感谢分享

2011yaya2007777 发表于 2020-10-29 15:02:23

先ISO和IMG,然后再支持Wim和VHD?
GRUB4DOS 本来就应当支持 VHD 吧,不过我没有测试。
Wim 现在内部没有支持。好像 RUN 及 NTBOOT 支持吧,不过需要有人更新一下。

2011yaya2007777 发表于 2020-10-29 15:10:22

64位的出了?
这就是 64 位的。
pxe网启支持proxydhcp不
现在就是通过 UEFI 接口支持 tftp。我的虚拟机 UEFI 不支持 http、ipv4、ipv6 协议。实体机没有测试。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: GRUB4DOS for UEFI