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。
测试下先。{:1_183:} 终于等到大大出手解决支持G4D支持UEFI,再不用绕着弯找亲戚了。 前排支持! 与时俱进,才能永葆活力!不然真要叫时代给淘汰了......
GRUB4DOS——难得的好东西,要是能适应UEFI启动,那就太棒了,若不能适应UEFI启动
而不得不被丢弃,就实在是太可惜了!!!{:3_148:} 不知字体文件用G4B还是Grub2,还是都可以? 暂时拍手围观支持。 一直无法适应grub2,终于等到了grub4UEFI。https://cdn.jsdelivr.net/gh/hishis/forum-master/public/images/patch.gif good job! . 先ISO和IMG,然后再支持Wim和VHD? 非常好!支持uefi了! 很厉害的东西,支持一下 强悍! 支持支持 牛!支持您!! 顶起! 终于等到了!
人生相遇不是太早就是太晚,这个正是时候! 向开发者致敬! 很不错的样子 厉害!
请问 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 准备什么时候上传代码? 现在的新电脑基本上都是UEFI了,grub4dos也越来越不适应新机器,这下好了,终于等到了,感谢yaya 谢谢!!! 支持!!!谢谢!!! 支持!!!谢谢!!! 支持!!! 支持楼主的分享 牛牛,感谢分享 64位的出了? pxe网启支持proxydhcp不 \bootx64.efi
如何加载引导PXE启动菜单
感谢分享 先ISO和IMG,然后再支持Wim和VHD?
GRUB4DOS 本来就应当支持 VHD 吧,不过我没有测试。
Wim 现在内部没有支持。好像 RUN 及 NTBOOT 支持吧,不过需要有人更新一下。 64位的出了?
这就是 64 位的。
pxe网启支持proxydhcp不
现在就是通过 UEFI 接口支持 tftp。我的虚拟机 UEFI 不支持 http、ipv4、ipv6 协议。实体机没有测试。