无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 2011yaya2007777
打印 上一主题 下一主题

[原创] GRUB4DOS for UEFI

    [复制链接]
1051#
发表于 2021-1-12 21:28:25 | 只看该作者
wintoflash 发表于 2021-1-12 20:13
测试:使用 gcc-7 编译的 grub4dos

adobe flash player 被禁用后,无法向论坛发送任何附件。

只能文字描述一下:您刚才的这个版本,使用 configfile  ,会报告 : 不能加载到内存。其它的还没有测试。
回复

使用道具 举报

1052#
发表于 2021-1-13 09:14:14 | 只看该作者
本帖最后由 xianglang 于 2021-1-13 09:22 编辑
2011whp 发表于 2021-1-12 17:24
xianglang : 试了下   死机了  只能电源关机(B360主板台机)

chainloader (hd3,0)  倒是 能用

我刚才也试了下,指定分区可以引导成功,只指定硬盘就不行。

又下载了12号的版本试了下,问题依旧。

回复

使用道具 举报

1053#
 楼主| 发表于 2021-1-13 11:07:30 | 只看该作者
@wintoflash
你 1045# 的 grub4dos-for_UEFI-2021-01-12.7z,是使用什么版本的 gcc 编译的?
如果不是 gcc-4.8.0 ,可否上传一个 gcc-x.x.x.tcz ? 我试一试可否重现外部命令的问题?现在还有人反馈 configfile 的问题,同样是编译问题。我这里编译正常,但是官网及你编译失败。

点评

grub4dos用gcc不同的版本编译出来的效果会不一样 估计编译时用到了很多hack的内容。 因为不懂得这些编译细节,之前弄那个开发环境时也是找了好几个版本,最后就4.8的是正常的。  详情 回复 发表于 2021-1-13 11:40
回复

使用道具 举报

1054#
发表于 2021-1-13 11:14:56 | 只看该作者
本帖最后由 2011whp 于 2021-1-13 12:02 编辑

实现:总菜单,分菜单,这个不错(区分ia32  x64)

calc *0x8272&0xff > nul
set ver=%@retval%
if "%@retval%"=="32" configfile menuia32.lst
发现 现在PE制作者,新近的 大部分 放弃 ia32了(估计微软也在弃),还是主攻x64,好些。


回复

使用道具 举报

1055#
发表于 2021-1-13 11:40:56 | 只看该作者
2011yaya2007777 发表于 2021-1-13 11:07
@wintoflash
你 1045# 的 grub4dos-for_UEFI-2021-01-12.7z,是使用什么版本的 gcc 编译的?
如果不是 g ...

grub4dos用gcc不同的版本编译出来的效果会不一样
估计编译时用到了很多hack的内容。
因为不懂得这些编译细节,之前弄那个开发环境时也是找了好几个版本,最后就4.8的是正常的。

回复

使用道具 举报

1056#
 楼主| 发表于 2021-1-13 15:00:22 | 只看该作者
grub4dos用gcc不同的版本编译出来的效果会不一样

你说的有道理,我感觉可能不是 gcc 版本问题。因为我这里是 4.8,官网也是 4.8。
grub4dos_dev 可能是 32 位 linux 编译环境,记得 wintoflash 在 biuld 里增加了判断环境的代码
platform=`uname -m`
if [ $platform = 'x86_64' ]
then
    $SOURCE_DIR/grub-mkimage64 -d $GRUB4DOS_TEMP -p /GRUB2 -o BOOTX64.EFI -O x86_64-efi
else
    $SOURCE_DIR/grub-mkimage -d $GRUB4DOS_TEMP -p /GRUB2 -o BOOTX64.EFI -O x86_64-efi
fi
官网是 64 位编译环境?
按道理说,32 位环境可以编译 32 位代码,也可以编译 64 位代码。同理,64 位环境可以编译 64 位电脑,也可以编译 32 位代码。不应该影响 c 代码的编译呀。
我看了一下,编译参数有
git-1.6
gcc-4.8
linux-3.0.1_api_headers
libssl-0.9.8
i486-linux-gnu-cpp-4.8
等等。
总之,不懂编译的人,搞不清楚。

点评

跟32位64位应该有很大关系。我查gcc-5报错的时候,很多帖子都提到了这个问题。  详情 回复 发表于 2021-1-13 15:08
回复

使用道具 举报

1057#
发表于 2021-1-13 15:08:06 | 只看该作者
2011yaya2007777 发表于 2021-1-13 15:00
你说的有道理,我感觉可能不是 gcc 版本问题。因为我这里是 4.8,官网也是 4.8。
grub4dos_dev 可能是 3 ...

跟32位64位应该有很大关系。我查gcc-5报错的时候,很多帖子都提到了这个问题。
travis-ci上是64位的ubuntu。
回复

使用道具 举报

1058#
 楼主| 发表于 2021-1-13 15:38:34 | 只看该作者
1060# 3个版本都不正常。
外部命令死机。
configfile 报错,
回复

使用道具 举报

1059#
发表于 2021-1-13 15:56:42 | 只看该作者
现在好像都是64位的,travis-ci 也即将停用,我这些天测试看看用github action能不能编译一个可用的出来。

今天试了一些版本都不行,估计要考虑用docker环境了。

点评

我的grub2就是用 github action 自动编译发布的。不过为了让下载地址固定,都是覆盖上一次的文件。 用的是这个 https://github.com/marketplace/actions/automatic-releases 配置文件:https://github.com/a1ive/g  详情 回复 发表于 2021-1-13 18:21
回复

使用道具 举报

1060#
 楼主| 发表于 2021-1-13 16:47:20 来自手机 | 只看该作者
好复杂,就靠你们这些大神们了。(●—●)
回复

使用道具 举报

1061#
发表于 2021-1-13 18:21:24 | 只看该作者
chenall 发表于 2021-1-13 15:56
现在好像都是64位的,travis-ci 也即将停用,我这些天测试看看用github action能不能编译一个可用的出来。
...

我的grub2就是用 github action 自动编译发布的。不过为了让下载地址固定,都是覆盖上一次的文件。
用的是这个 https://github.com/marketplace/actions/automatic-releases
配置文件:https://github.com/a1ive/grub/bl ... workflows/build.yml
回复

使用道具 举报

1062#
发表于 2021-1-13 21:26:00 | 只看该作者
GRUB4DOS for UEFI 不错
回复

使用道具 举报

1063#
发表于 2021-1-14 12:51:04 | 只看该作者
试了好几个gcc的版本,编译出来都不能正常使用,目前就只有grubdev环境编译是正常的。
回复

使用道具 举报

1064#
 楼主| 发表于 2021-1-14 15:14:13 | 只看该作者
试了好几个gcc的版本,编译出来都不能正常使用,目前就只有grubdev环境编译是正常的

比较奇怪的问题。
我这里只有grubdev环境。
如果有比较简单的、体积小的其他编译环境(windows下的linux),推荐一个,我看看可否定位问题。
回复

使用道具 举报

1065#
 楼主| 发表于 2021-1-14 15:16:51 | 只看该作者
chainloader  (hd3)  问题

现在 chainloader (hd3) 的时候,不搜索及加载 bootmgfw.efi。
可以考虑加载 bootx64.efi 失败时,加载 bootmgfw.efi。

点评

是不是 为了功破 bootmgfw启动,而带来的 chainloader (hd3)死机 为了两者 都能正常 我的意思是:退到以前 能 chainloader (hd3)的版,然后对 bootmgfw 做特殊处理, 因为大部分 efi 不  详情 回复 发表于 2021-1-14 19:00
回复

使用道具 举报

1066#
发表于 2021-1-14 15:51:40 | 只看该作者
我自己重新装了一个32位 ubuntu 编译就正常了,用64位编译出来就是有问题。

可能需要看一下编译脚本有没有什么地方可以调整的了,实在不行的话就只能找一个可以使用32位linux的CI来自动编译了。
回复

使用道具 举报

1067#
发表于 2021-1-14 16:45:49 | 只看该作者
本帖最后由 blank007 于 2021-1-14 20:26 编辑

Grub4dos UEFI 2021-01-12 官网版本情况。其它未测试。
晕。居然没注意到 grub4dos-for_UEFI-2021-01-13 这个版本。不过,两个版本的结果一样。




补充:


grub4dos-for_UEFI-2021-01-13 版本,使用 chainloader 去调用 acronis backup 自己的 .efi ,可以正常启动  acronis backup,分辨率可以达到最高。


kernel+initrd 可以加载 acronis backup 的多个 initrd 文件,也可以正常启动  acronis backup。但分辨率似乎受到影响,达不到最高。



snap00001.jpg (24.24 KB, 下载次数: 70)

snap00001.jpg
回复

使用道具 举报

1068#
发表于 2021-1-14 16:48:41 | 只看该作者
本帖最后由 xianglang 于 2021-1-14 16:55 编辑

1月12号的版本(不只是这个版本,12月29号的也是一样),在电脑插入硬盘格式的 U 盘之后,G4E 会将 U 盘设置为 (hd0),而本地硬盘却顺延了,如图:




回复

使用道具 举报

1069#
 楼主| 发表于 2021-1-14 17:24:09 | 只看该作者
1月12号的版本(不只是这个版本,12月29号的也是一样),

引导驱动器设置为 (hd0),也就是 0x80,有什么不对的地方?

点评

问题是,我是用 SSD 硬盘上的 G4E 引导的,而不是用 U 盘引导的。  详情 回复 发表于 2021-1-15 13:43
回复

使用道具 举报

1070#
发表于 2021-1-14 17:51:03 | 只看该作者
本帖最后由 2011whp 于 2021-1-15 12:33 编辑

blank007:没有回复的主题贴,可以  点编辑  →右上角 高级模式→ 下方 附加选项→ 删除此贴

总之:g4e现在都是小问题了,
菜单公用部分
calc *0x8272&0xff > nul
set efinum=%@retval%


configfile  /efi/grub/64.lst   能用 (下面图是  子菜单 标题加了个 x64标记)
你的菜单文件 是 txt    是不是utf8编码的,






回复

使用道具 举报

1071#
发表于 2021-1-14 19:00:41 | 只看该作者
2011yaya2007777 发表于 2021-1-14 15:16
现在 chainloader (hd3) 的时候,不搜索及加载 bootmgfw.efi。
可以考虑加载 bootx64.efi 失败时,加载  ...


是不是 为了功破  bootmgfw启动,而带来的  chainloader (hd3)死机

为了两者  都能正常  
  我的意思是:退到以前 能 chainloader (hd3)的版,然后对 bootmgfw 做特殊处理,
          因为大部分  efi  不涉及那个  固件内的 设备句柄


(注:我的hd3硬盘的 esp分区 有  /efi/boot/bootx64.efi )
   
回复

使用道具 举报

1072#
发表于 2021-1-14 19:20:17 | 只看该作者
2011whp 发表于 2021-1-14 17:51
blank007:没有回复的主题贴,可以  点编辑  →右上角 高级模式→ 下方 附加选项→ 删除此贴

总之:g4e ...

我用的是 2021-01-12 官网版本。

你用的应该是YAYA在论坛中上传的版本。


另外,我的 uefix64.txt 确属 utf-8 格式
回复

使用道具 举报

1073#
 楼主| 发表于 2021-1-14 20:37:20 | 只看该作者
可能需要看一下编译脚本有没有什么地方可以调整的了,实在不行的话就只能找一个可以使用32位linux的CI来自动编译了。

不懂编译,帮不上忙。怎么省事怎么来。能解决问题就行。
回复

使用道具 举报

1074#
 楼主| 发表于 2021-1-14 21:10:54 | 只看该作者
是不是 为了功破  bootmgfw启动,而带来的  chainloader (hd3)死机

你试一试1024#(1042#?)版本
回复

使用道具 举报

1075#
发表于 2021-1-15 13:43:25 | 只看该作者
本帖最后由 xianglang 于 2021-1-15 13:45 编辑
2011yaya2007777 发表于 2021-1-14 17:24
引导驱动器设置为 (hd0),也就是 0x80,有什么不对的地方?

问题是,我是用 SSD 硬盘上的 G4E 引导的,而不是用 U 盘引导的。

晕,我原来有写是用 SSD 硬盘之类引导的,可能我自己误触本本的触摸板给吃掉了。

回复

使用道具 举报

1076#
 楼主| 发表于 2021-1-15 13:54:03 来自手机 | 只看该作者
无论从硬盘启动,还是从U盘启动 ,驱动器号都是(hd0)。这会影响什么?

点评

影响倒是不太大,只是有时候插着 U 盘启动时,菜单直接 chainloader (hd0) 或 chainloader (hd0,1)/efi/microsoft/boot/bootmgfw,efi 之类引导 Windows 时会出错,找不到相应文件而不能启动系统而已。  详情 回复 发表于 2021-1-15 15:18
回复

使用道具 举报

1077#
发表于 2021-1-15 15:18:11 | 只看该作者
2011yaya2007777 发表于 2021-1-15 13:54
无论从硬盘启动,还是从U盘启动 ,驱动器号都是(hd0)。这会影响什么?

影响倒是不太大,只是有时候插着 U 盘启动时,菜单直接 chainloader (hd0) 或  chainloader (hd0,1)/efi/microsoft/boot/bootmgfw,efi 之类引导 Windows 时会出错,找不到相应文件而不能启动系统而已。
回复

使用道具 举报

1078#
发表于 2021-1-15 17:29:03 | 只看该作者
本帖最后由 2011whp 于 2021-1-16 20:00 编辑

通用菜单:
find --set-root
map /
chainloader          (注:启动root分区 可以不加任何参数)

如果文件 本身不够独特的话  find 分区标识文件(名字 随机取,好像支持很长的文件名,顺便写点  .txt备忘什么滴)

回复

使用道具 举报

1079#
发表于 2021-1-16 20:23:16 | 只看该作者
有条件的试一下这个版本是否正常

grub4dos-for_UEFI-2021-01-16.7z

240.7 KB, 下载次数: 82, 下载积分: 无忧币 -2

点评

外部命令也正常  详情 回复 发表于 2021-1-17 13:45
使用 UltraISO 制作的 BIOS/UEFI 双启动.iso (I9SO9660_Joilet格式),UEFI自然是使用这个版本,Qemu 测试发现: /efi/grub/menu.lst 能识别,可分别 configfile 到 UEFIx64.txt / UEFIx86.txt。 只是: 1.  详情 回复 发表于 2021-1-16 23:08
Qemu 下测试, UEFIx86.txt: clear debug off color light-gray/black light-gray/blue light-blue/black color border=0x08 font /EFI/Grub/Unicode.gz graphicsmode -1 640 setmenu --ve  详情 回复 发表于 2021-1-16 21:44
2021-01-16版本,实体机测试,基于svbus驱动的RAMOS没问题;基于primo驱动的RAMOS没问题。  详情 回复 发表于 2021-1-16 21:03
报告大侠:简直完美! 经Qemu、真机测试,以下菜单完美显示、执行: menu.lst: clear debug off root () calc *0x8272&0xff set UEFIx=%@retval% if %UEFIx%==64 configfile /EFI/Grub/UEFIx64  详情 回复 发表于 2021-1-16 20:52
回复

使用道具 举报

1080#
 楼主| 发表于 2021-1-16 20:49:31 来自手机 | 只看该作者
本帖最后由 2011yaya2007777 于 2021-1-16 21:18 编辑

虚拟机和实体机都正常!什么环境编译的?

g4e_wb  ;  ver ;  date

configfile /efi/boot/menu.lst
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-25 21:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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