无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 372118|回复: 3266

[原创] 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。
  





点评

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

评分

参与人数 128无忧币 +640 收起 理由
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 很给力!
amita + 5

查看全部评分

发表于 2020-10-29 10:52:18 | 显示全部楼层
测试下先。

点评

报告一个现象: 我制作的BIOS/UEFI双启动优盘,神舟优雅x4上要打开CSM支持才能通过Grub4DOS for UEFI 启动,联想上不需要开启就可以启动。 补充:神舟优雅x4 改为纯 UEFI 后,xorboot u 的启动引导没有问题。G  详情 回复 发表于 2021-10-12 19:53
这个怎么使用,可以指点一下吗  详情 回复 发表于 2021-1-30 00:11
回复

使用道具 举报

发表于 2020-10-29 10:52:55 | 显示全部楼层
终于等到大大出手解决支持G4D支持UEFI,再不用绕着弯找亲戚了。

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 很给力!

查看全部评分

回复

使用道具 举报

发表于 2020-10-29 10:56:49 | 显示全部楼层
前排支持!
回复

使用道具 举报

发表于 2020-10-29 10:59:14 | 显示全部楼层
          与时俱进,才能永葆活力!不然真要叫时代给淘汰了......

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

而不得不被丢弃,就实在是太可惜了!!!
回复

使用道具 举报

发表于 2020-10-29 11:02:33 | 显示全部楼层
不知字体文件用G4B还是Grub2,还是都可以?
回复

使用道具 举报

发表于 2020-10-29 11:25:11 来自手机 | 显示全部楼层
暂时拍手围观支持。
回复

使用道具 举报

发表于 2020-10-29 11:27:20 | 显示全部楼层
一直无法适应grub2,终于等到了grub4UEFI。

点评

太多了,有一个就行!!!  发表于 2023-10-24 14:34
回复

使用道具 举报

发表于 2020-10-29 11:28:17 | 显示全部楼层
good job!                                                                                                                           .
回复

使用道具 举报

发表于 2020-10-29 11:33:41 | 显示全部楼层
先ISO和IMG,然后再支持Wim和VHD?
回复

使用道具 举报

发表于 2020-10-29 11:40:19 | 显示全部楼层
非常好!支持uefi了!
回复

使用道具 举报

发表于 2020-10-29 11:47:11 | 显示全部楼层
很厉害的东西,支持一下
回复

使用道具 举报

发表于 2020-10-29 11:48:57 | 显示全部楼层
强悍!

点评

不点大师都如此认可,那我辈就只能仰望加享用啦:)  详情 回复 发表于 2020-10-30 03:04
回复

使用道具 举报

发表于 2020-10-29 11:54:18 | 显示全部楼层
支持支持
回复

使用道具 举报

发表于 2020-10-29 11:55:59 | 显示全部楼层
牛!支持您!!
回复

使用道具 举报

发表于 2020-10-29 12:08:50 | 显示全部楼层
顶起!
回复

使用道具 举报

发表于 2020-10-29 12:09:41 | 显示全部楼层
终于等到了!

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

使用道具 举报

发表于 2020-10-29 13:08:36 | 显示全部楼层
向开发者致敬!
回复

使用道具 举报

发表于 2020-10-29 13:15:09 | 显示全部楼层
很不错的样子
回复

使用道具 举报

发表于 2020-10-29 13:23:16 | 显示全部楼层
厉害!
请问 yaya 是怎么解决 UEFI 函数调用约定方面的问题的?
据我所知,__attribute__((ms_abi)) 只支持 GCC4.7及以上版本,是用汇编解决的吗?
  1. #if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)))||(defined(__clang__) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 2)))
  2.   #define EFIAPI __attribute__((ms_abi))
  3. #else
  4.   #error Compiler is too old for MS_ABI
  5. #endif
复制代码

另外 yaya 准备什么时候上传代码?
回复

使用道具 举报

发表于 2020-10-29 13:52:45 | 显示全部楼层
现在的新电脑基本上都是UEFI了,grub4dos也越来越不适应新机器,这下好了,终于等到了,感谢yaya

点评

与时俱进,支持  发表于 2023-10-27 08:38
回复

使用道具 举报

发表于 2020-10-29 14:00:55 | 显示全部楼层
谢谢!!! 支持!!!  谢谢!!! 支持!!!  谢谢!!! 支持!!!
回复

使用道具 举报

发表于 2020-10-29 14:03:43 | 显示全部楼层
支持楼主的分享
回复

使用道具 举报

发表于 2020-10-29 14:06:57 | 显示全部楼层
牛牛,感谢分享
回复

使用道具 举报

发表于 2020-10-29 14:30:13 | 显示全部楼层
64位的出了?
回复

使用道具 举报

发表于 2020-10-29 14:31:10 | 显示全部楼层
pxe网启支持proxydhcp不
回复

使用道具 举报

发表于 2020-10-29 14:46:48 | 显示全部楼层
\bootx64.efi
如何加载引导PXE启动菜单
回复

使用道具 举报

发表于 2020-10-29 14:49:13 | 显示全部楼层
感谢分享
回复

使用道具 举报

 楼主| 发表于 2020-10-29 15:02:23 | 显示全部楼层
先ISO和IMG,然后再支持Wim和VHD?

GRUB4DOS 本来就应当支持 VHD 吧,不过我没有测试。
Wim 现在内部没有支持。好像 RUN 及 NTBOOT 支持吧,不过需要有人更新一下。
回复

使用道具 举报

 楼主| 发表于 2020-10-29 15:10:22 | 显示全部楼层
64位的出了?

这就是 64 位的。
pxe网启支持proxydhcp不

现在就是通过 UEFI 接口支持 tftp。我的虚拟机 UEFI 不支持 http、ipv4、ipv6 协议。实体机没有测试。

点评

有ipxe差不多了,g4e没必要支持  详情 回复 发表于 2021-4-21 10:12
[attachimg]467557[/attachimg] 似乎不支持proxydhcp 支持参数不  详情 回复 发表于 2020-10-29 20:53
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 03:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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