无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
楼主: 2011yaya2007777

[原创] GRUB4DOS for UEFI

    [复制链接]
发表于 2020-10-30 21:21:10 | 显示全部楼层
2011yaya2007777 发表于 2020-10-30 16:49
UEFI规范好像没有规定菜单放在哪里吧。我觉得当务之急是完善启动任意磁盘(光盘)、启动任意分区的efi文件 ...

UEFI规范没有规定菜单放在哪里,但有规范efi文件的位置,如 /EFI/vendor_dir/ 或 /EFI/vendor_dir/Boot/
因此我建议相关的文件都放在这一位置。
例如:
\EFI\Microsoft\Boot\
\EFI\Xorboot\
\EFI\grub
以此类推。

当然,这些都是小问题,无关紧要,只是有人提出了建议,我就跟着发表而已。
我翘首期待的是启动 vhdx 和 wim.
回复

使用道具 举报

发表于 2020-10-31 09:06:00 | 显示全部楼层
有常用菜单示例不
回复

使用道具 举报

发表于 2020-10-31 11:11:05 | 显示全部楼层
围观  围观
回复

使用道具 举报

发表于 2020-10-31 11:52:39 | 显示全部楼层
菜单文件可以在一个文件中写2套菜单,做一个标记,bios标记的用bios启动的可以有高级语法。uefi的启动读取uefi支持的语法菜单部分
回复

使用道具 举报

发表于 2020-10-31 12:37:15 | 显示全部楼层
感谢大佬!
回复

使用道具 举报

发表于 2020-10-31 15:45:43 | 显示全部楼层
666
回复

使用道具 举报

发表于 2020-10-31 20:47:17 | 显示全部楼层
我转发到 reboot.pro 上了
http://reboot.pro/topic/22400-grub4dos-for-uefi/
我英语不好,希望英语好的可以帮忙挑挑错。

点评

好,终于发出去了。我挑个小毛病,论坛链接之后,如果能备注是中文网站,效果可能更好一点。  发表于 2020-11-1 07:33
回复

使用道具 举报

发表于 2020-10-31 20:56:11 | 显示全部楼层
如果在uefi模式下,可以让BCD来引导这个efi文件就更好了。这样的话,一些Windows平板就可以用触屏来切换Android x86了。

点评

启用屁帘引导界面,选择自定义引导,即可选择,直接在屁帘上触控即可。  详情 回复 发表于 2020-10-31 21:08
回复

使用道具 举报

发表于 2020-10-31 21:08:16 来自手机 | 显示全部楼层
叮叮咚咚 发表于 2020-10-31 20:56
如果在uefi模式下,可以让BCD来引导这个efi文件就更好了。这样的话,一些Windows平板就可以用触屏来切换And ...

启用屁帘引导界面,选择自定义引导,即可选择,直接在屁帘上触控即可。
回复

使用道具 举报

发表于 2020-10-31 23:34:56 来自手机 | 显示全部楼层
回复

使用道具 举报

发表于 2020-11-1 00:15:57 | 显示全部楼层
本帖最后由 有阴也有阳 于 2020-11-1 00:17 编辑

        提一个建议,能否把支持UEFI启动的menu.lst菜单的位置设置成EFI/grub/menu.lst,

而原来只支持BIOS启动的老的grub4dos的菜单位置则设置成:

/menu.lst
/boot/grub/menu.lst
/grub/menu.lst

        这样启动U盘中就可以有新的支持UEFI启动的grub4dos和原来只支持BIOS启动的旧的

grub4dos两套grub4dos,遇到需要BIOS启动的旧电脑就用原来只支持BIOS启动的旧的grub4dos,

遇到新的需要UEFI启动的新电脑就用新的支持UEFI启动grub4dos......

        在老旧电脑的BIOS启动环境下,原来只支持BIOS启动的grub4dos的功能相当的丰富、完备......

点评

附议!这样即使不能同一套菜单,也不至于混乱了。  详情 回复 发表于 2020-11-8 15:30
回复

使用道具 举报

发表于 2020-11-1 05:49:21 | 显示全部楼层
功德无量 呵呵  希望不断完善!
回复

使用道具 举报

发表于 2020-11-1 08:27:01 | 显示全部楼层
牛!支持您!!
回复

使用道具 举报

发表于 2020-11-1 09:42:24 | 显示全部楼层
载入史册了!
回复

使用道具 举报

 楼主| 发表于 2020-11-1 11:43:35 | 显示全部楼层
提一个建议,能否把支持UEFI启动的menu.lst菜单的位置设置成EFI/grub/menu.lst,

这个建议理由比较充分,可以区分不同内容的同名菜单文件。

点评

建议:BIOS、UEFI共用一个menu.lst菜单为好,兼容bios使用习惯,便于管理、不凌乱,否则pc、x86、x64三个启动模式要分3个菜单 如grub2利用启动环境判断执行不同菜单命令即可: if [ "$grub_platform" = "pc" ] ;  详情 回复 发表于 2020-11-1 12:03
谢谢!!! 这样做的话,在同一个启动U盘中就可以同时拥有新的支持UEFI启动的和旧的只支持BIOS启动的新旧两套 grub4dos,这就为grub4dos在启动U盘中对新旧电脑的维护提供了广阔的天地!!!  详情 回复 发表于 2020-11-1 11:54
回复

使用道具 举报

发表于 2020-11-1 11:54:13 | 显示全部楼层
2011yaya2007777 发表于 2020-11-1 11:43
这个建议理由比较充分,可以区分不同内容的同名菜单文件。


          谢谢!!!

        这样做的话,在同一个启动U盘中就可以同时拥有新的支持UEFI启动的和旧的只支持BIOS启动的新旧两套

grub4dos,这就为grub4dos在启动U盘中对新旧电脑的维护提供了广阔的天地!!!
回复

使用道具 举报

发表于 2020-11-1 12:03:50 | 显示全部楼层
本帖最后由 ksafei 于 2020-11-1 12:06 编辑
2011yaya2007777 发表于 2020-11-1 11:43
这个建议理由比较充分,可以区分不同内容的同名菜单文件。

建议:BIOS、UEFI共用一个menu.lst文件为好,兼容bios使用习惯,便于管理、不凌乱,否则pc、x86、x64三个启动模式要分3个文件
如grub2利用启动环境判断执行不同菜单命令即可:

if [ "$grub_platform" = "pc" ] ; then
         Legacy BIOS 菜单
else
       if [ "$grub_cpu" = "x86_64" ] ; then
              UEFI x64 菜单
          else         UEFI x86 菜单
      fi
fi

点评

仅限于X86么,还有ARM/MIPS这些呢?  详情 回复 发表于 2020-11-1 21:21
回复

使用道具 举报

发表于 2020-11-1 12:39:50 来自手机 | 显示全部楼层
本帖最后由 窄口牛 于 2020-11-1 12:40 编辑

/efi/grub这个路径应该是公用的,用这个路径不太明智,建议/efi/g4efi。grub下面的分支都多少个了?
回复

使用道具 举报

发表于 2020-11-1 12:59:24 | 显示全部楼层
可以磁盘仿真不?

点评

可以 map --mem xxx.iso。  发表于 2020-11-2 08:34
回复

使用道具 举报

发表于 2020-11-1 13:16:43 | 显示全部楼层
盘要清爽,尽量不要增加目录。
盘上一般现成都有/EFI/boot/目录,就用它。
默认配置文件就约定为/EFI/boot/menu.lst,
或者/EFI/boot/menu.txt(这个后缀便于用记事本双击直接打开来编辑)。

点评

盘就是用来放东西的,你这也太强迫症了,就跟 "书桌上不能放书,垃圾桶里不能有垃圾,晾衣架上不能晾衣服" 一样。我觉得 /EFI/grub/ 就行  详情 回复 发表于 2020-11-1 22:08
回复

使用道具 举报

发表于 2020-11-1 13:23:48 | 显示全部楼层
按EFⅠ目录的一贯做法:
efi/boot/bootx64.efi;
efi/grub(这里是软件公司名称作为目录)/menu.lst
回复

使用道具 举报

发表于 2020-11-1 21:21:12 | 显示全部楼层
ksafei 发表于 2020-11-1 12:03
建议:BIOS、UEFI共用一个menu.lst文件为好,兼容bios使用习惯,便于管理、不凌乱,否则pc、x86、x64三个 ...

仅限于X86么,还有ARM/MIPS这些呢?
回复

使用道具 举报

发表于 2020-11-1 21:29:59 | 显示全部楼层
辛苦了,谢谢分享
回复

使用道具 举报

发表于 2020-11-1 22:06:32 | 显示全部楼层
本帖最后由 wintoflash 于 2020-11-1 22:18 编辑

部分论坛上的朋友和reboot.pro那边的一些网友,想启动 RamOS 的 VHD。
但是目前的 Windows 驱动,比如 SVBus,要搜索 int13h 里面的 "$INT13SFGRUB4DOS" 来获取 GRUB4DOS 创建的虚拟盘信息。
UEFI 下没这东西,只能另想办法传递虚拟盘信息。我希望 GRUB4DOS 和 GRUB2 能用同样的方法记录虚拟盘信息,我觉得用 UEFI 环境变量比较合适。yaya 大佬有什么想法吗?比如,变量名叫 "GRUBvdisk",结构如下:
  1. struct grub_vdisk_data
  2. {
  3.     char magic[8]; // "GNU GRUB"
  4.     uint64_t vdisk_addr; // vhd加载到内存的地址
  5.     uint64_t vdisk_size;
  6.     char vdisk_path[];
  7. }
复制代码




点评

如果UEFI下面能够实现map --mem xxx.vhd或者map xxx.vdf并启动,那UEFI-RAMOS就非常有意思,有前景了!现在wintoflash修改的grub2-UEFI可以实现的是map --mem xxx.vhd到内存,但是windows不认识这个磁盘,所  详情 回复 发表于 2020-11-2 08:46
回复

使用道具 举报

发表于 2020-11-1 22:08:49 | 显示全部楼层
pseudo 发表于 2020-11-1 13:16
盘要清爽,尽量不要增加目录。
盘上一般现成都有/EFI/boot/目录,就用它。
默认配置文件就约定为/EFI/boo ...

盘就是用来放东西的,你这也太强迫症了,就跟 "书桌上不能放书,垃圾桶里不能有垃圾,晾衣架上不能晾衣服" 一样。我觉得 /EFI/grub/ 就行
回复

使用道具 举报

发表于 2020-11-1 22:40:00 | 显示全部楼层
建议efi下menu.lst改成menu.efi,新增的配置都以efi结尾,区别易懂

点评

efi是UEFI下面的可启动程序,用这个作为扩展名显然不合适!  详情 回复 发表于 2020-11-2 08:36
回复

使用道具 举报

发表于 2020-11-2 08:17:44 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-11-2 08:33 编辑
2011yaya2007777 发表于 2020-10-30 16:49
UEFI规范好像没有规定菜单放在哪里吧。我觉得当务之急是完善启动任意磁盘(光盘)、启动任意分区的efi文件 ...

确实应该先完善基础的部分,比如启动efi文件。

关于UEFI规范,不同的efi和不同厂商我们当初也讨论过,感觉对于菜单的存放位置,UEFI规范并没有很明确地指明。15楼:http://bbs.wuyou.net/forum.php?m ... 7010&fromuid=298214

我个人更加倾向于grub4dos UEFI版本和BIOS版本采用相同的菜单存放位置,这样子一个菜单就足够了。


另外想问下,grub4dos UEFI版本里面,color语句数值都是6位的hex值,
color normal=0x55ffff highlight=0xff00ff helptext=0xffff55 standard=0x55ffff border=0xaaaaaa

grub4dos BIOS版本,color数值好像是2位的hex值,有区别吗?我试了2位的数值也可以。比如:
color normal=0x07 highlight=0xF1 helptext=0x07 heading=0x02 standard=0x07 border=0x09
这个color语句用于grub4dos UEFI版显示也正常。


感觉一般的命令,grub4dos UEFI版本和BIOS版本大部分是通用的,涉及到内存位置调用可能不同。        
回复

使用道具 举报

发表于 2020-11-2 08:36:19 | 显示全部楼层
l3429900 发表于 2020-11-1 22:40
建议efi下menu.lst改成menu.efi,新增的配置都以efi结尾,区别易懂

        efi是UEFI下面的可启动程序,用这个作为扩展名显然不合适!

点评

我只是从可读性来说,不一定是efi结尾,也可以“”efi-“开头地文件,比如 efi-menu.lst efi-grub.cfg  详情 回复 发表于 2020-11-2 11:35
回复

使用道具 举报

发表于 2020-11-2 08:46:41 | 显示全部楼层
wintoflash 发表于 2020-11-1 22:06
部分论坛上的朋友和reboot.pro那边的一些网友,想启动 RamOS 的 VHD。
但是目前的 Windows 驱动,比如 SVB ...

        如果UEFI下面能够实现map --mem xxx.vhd或者map xxx.vdf并启动,那UEFI-RAMOS就非常有意思,有前景了!现在wintoflash修改的grub2-UEFI可以实现的是map --mem xxx.vhd到内存,但是windows不认识这个磁盘,所以无法启动,已经迈出了第一步。
回复

使用道具 举报

发表于 2020-11-2 08:47:16 | 显示全部楼层
谢谢楼主的分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-3-5 16:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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