无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
241#
 楼主| 发表于 2021-1-11 17:44:12 | 显示全部楼层
1月10日的版本,map --mem --top 已经没有问题,但是直接 chainloader (hd-1) 时,只有一个 NTFS 分区的固定容量 VHD 会有如下提示:
Failed to load virtual partition image .

这个 NTFS 分区有 /efi/boot/bootx64.efi 文件吗?
如果有,map 之后,使用 vol 探测一下文件所在分区,比如是 (hd2,0),那么
ls (hd2,0)/efi/boot/
看看结果。

但是在分了三分区(0分区 NTFS 系统、1分区 NTFS 数据、2分区 FAT32 ESP,G4E 从该 ESP 分区启动)的 SSD 硬盘里,直接 chainloader (hd0) 后,只有一个光标而没有了下文,无论是否加载 ntfs_x64.efi 都一样。

从 (hd0) 启动,然后又启动 (hd0)? 视乎不可以吧。
回复

使用道具 举报

242#
 楼主| 发表于 2021-1-11 18:48:58 | 显示全部楼层
真机下也是 ver=0

你使用什么版本?截图反馈!!!
回复

使用道具 举报

243#
 楼主| 发表于 2021-1-11 19:33:37 | 显示全部楼层
真机上还不能截屏,只能在qemu下截屏.

确实有问题。
回复

使用道具 举报

244#
 楼主| 发表于 2021-1-12 15:55:20 | 显示全部楼层
真机下也是 ver=0

iftitle [if %@uefi%==64] WinPE (x64)\n基于 Windows 10,内存要求: 1024 MB\n
chainloader /Boot/WinX/x64/WinX.efi

iftitle [if %@uefi%==32]] WinPE (x86)\n基于 Windows 10,内存要求: 1024 MB\n
chainloader /Boot/WinX/x86/WinX.efi


BOOTX64.rar

135.68 KB, 下载次数: 22, 下载积分: 无忧币 -2

回复

使用道具 举报

245#
 楼主| 发表于 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
回复

使用道具 举报

246#
 楼主| 发表于 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
回复

使用道具 举报

247#
 楼主| 发表于 2021-1-13 15:38:34 | 显示全部楼层
1060# 3个版本都不正常。
外部命令死机。
configfile 报错,
回复

使用道具 举报

248#
 楼主| 发表于 2021-1-13 16:47:20 来自手机 | 显示全部楼层
好复杂,就靠你们这些大神们了。(●—●)
回复

使用道具 举报

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

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

使用道具 举报

250#
 楼主| 发表于 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
回复

使用道具 举报

251#
 楼主| 发表于 2021-1-14 17:24:09 | 显示全部楼层
1月12号的版本(不只是这个版本,12月29号的也是一样),

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

点评

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

使用道具 举报

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

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

使用道具 举报

253#
 楼主| 发表于 2021-1-14 21:10:54 | 显示全部楼层
是不是 为了功破  bootmgfw启动,而带来的  chainloader (hd3)死机

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

使用道具 举报

254#
 楼主| 发表于 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
回复

使用道具 举报

255#
 楼主| 发表于 2021-1-16 20:49:31 来自手机 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2021-1-16 21:18 编辑

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

g4e_wb  ;  ver ;  date

configfile /efi/boot/menu.lst
回复

使用道具 举报

256#
 楼主| 发表于 2021-1-16 21:26:24 | 显示全部楼层
calc *0x8272&0xff
set UEFIx=%@retval%

if %UEFIx%==64 configfile /EFI/Grub/UEFIx64.txt
if %UEFIx%==32 configfile /EFI/Grub/UEFIx86.txt


现在不用这样复杂,更简单的是:

if %@uefi%==64 configfile /EFI/Grub/UEFIx64.txt
if %@uefi%==32 configfile /EFI/Grub/UEFIx86.txt

点评

ok! 多谢。  详情 回复 发表于 2021-1-16 21:31
回复

使用道具 举报

257#
 楼主| 发表于 2021-1-20 18:49:39 | 显示全部楼层
支持差分VHD,请测试。
map --mem --parent-vhd-name="父VHD文件名称(带路径)“ 子VHD文件名称(带路径) (hd)
chainloader (hd-1)

BOOTX64.rar

136.02 KB, 下载次数: 40, 下载积分: 无忧币 -2

点评

发现在 exit_g4d 退回 开机Fx 菜单了, 希望保住 这个功能 (两台机有这 现象) 测试 VHD 那个 2021-1-20版 http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=422652&pid=4221838&fromu  详情 回复 发表于 2021-1-23 19:04
示例 写的父子 颠倒了吧, 颠倒一下,有读内存提示 (QEMe测试)  详情 回复 发表于 2021-1-20 20:06
两级差分是不是这样: map --mem --parent-vhd-name="/vhd/win81_0.vhdx" "/vhd/win81_1b.vhdx" "/vhd/win.vhdx" (hd)  详情 回复 发表于 2021-1-20 20:04
用 bootice建了人 差分vhd map --mem --parent-vhd-name="/Wind400.vhd" /Wind400Z.vhd (hd) 显示器一行文字:booting command-list 死机(没见读内存提示) 这个怎么用呢  详情 回复 发表于 2021-1-20 19:38
回复

使用道具 举报

258#
 楼主| 发表于 2021-1-20 18:52:23 | 显示全部楼层
关于官网编译的版本,也即64位环境编译的版本,不能运行外部命令的问题已经定位,近日将处理。
回复

使用道具 举报

259#
 楼主| 发表于 2021-1-20 19:47:58 来自手机 | 显示全部楼层
用法对。只是文件在当前根目录吗?

点评

[attachimg]473471[/attachimg] 在 g4e分区根目录 流程上,有没有读内存提示 两个vhd, 在win10 上能 挂上,改了 子vhd 父vhd 不变 (内容是:通过改 子vhd,为 refind启动盘)  详情 回复 发表于 2021-1-20 19:59
回复

使用道具 举报

260#
 楼主| 发表于 2021-1-20 20:14:21 来自手机 | 显示全部楼层
我理解是:由父创建子。只支持一级差分。不支持vhdx.
回复

使用道具 举报

261#
 楼主| 发表于 2021-1-20 20:41:34 来自手机 | 显示全部楼层
blocklist /Wind400.vhd
回复

使用道具 举报

262#
 楼主| 发表于 2021-1-20 21:00:06 来自手机 | 显示全部楼层
我测试时有一次也是这样,后来又正常了。我没有探究原因。你再启动几次,不行的话,明天再说。

点评

[attachimg]473498[/attachimg] 可以的,全新用 bootice 做了一个 (主vhd 用动态大小 ) 刹问题: 主vhd 是动态大小 是不是必要条件 vhd的 制作软件 是不是可以不同 …………  详情 回复 发表于 2021-1-21 09:29
回复

使用道具 举报

263#
 楼主| 发表于 2021-1-21 11:03:37 来自手机 | 显示全部楼层
昨天的版本,父vhd只能说动态的。现在正考虑父vhd是固定的。

点评

建议多层差分也考虑一下。 或者可以跟wintoflash参考一下,他改的grub2的ntboot模块是可以直接引导子vhdx的,不用指明父vhd,也不管有几层差分。  详情 回复 发表于 2021-1-22 10:04
为什么chenall网站那里每次发新版本都是那个2020-12-20的置顶呢,能不能改过来,让最新版本置顶。  详情 回复 发表于 2021-1-22 09:49
回复

使用道具 举报

264#
 楼主| 发表于 2021-1-22 10:28:41 | 显示全部楼层
grub4dos 有 ntboot 模块,希望有人移植到 grub4dos for uefi。

点评

2021-01-22: 此版本不能正常运行外部命令。无论是从github上下载的,还是自己编译的,都不行。 [attachimg]473610[/attachimg]  详情 回复 发表于 2021-1-22 14:20
如果Wintoflash大神有兴趣,应该很简单。grub2的ntboot就是Wintoflash大神从chenall的ntboot移植过去的。  详情 回复 发表于 2021-1-22 13:51
回复

使用道具 举报

265#
 楼主| 发表于 2021-1-22 16:27:51 | 显示全部楼层
2021-01-22: 此版本不能正常运行外部命令。 无论是从github上下载的,还是自己编译的,都不行。
是不是外部命令的头文件又要改?

我提交补丁以后等了一会,见没有编译。
我是想下载官网编译的版本进行测试,成功后再放出其他补丁。
我现在下载了官网编译的版本,是可以正常运行外部命令。不过意义不大,好像 chenall 已经改变成了 32 位编译环境。
wintoflash 可以发一个你编译的版本吗?

外部命令的头文件是改变了。

g4e_wb-2021-01-22.rar

7.6 KB, 下载次数: 20, 下载积分: 无忧币 -2

点评

更新头文件之后没问题了。 你将来还会改外部命令的格式吗?如果不改了的话,我就把外部命令头文件传到 grubutils 源码仓库里面。  详情 回复 发表于 2021-1-22 16:57
grub4dos-for_UEFI-2021-01-22.7z 这个我试了不可以运行外部命令,估计是由于头文件改变的原因。 有可能的话还得整一个自动测试的功能。^_^ 有问题好提早发现。  详情 回复 发表于 2021-1-22 16:50
正常提交后10分钟左右会自动编译完成。 目前暂时还没有自动发布到grub4dos.chenall.net 编译后的文件可以在 release 里面下载。 对于测试功能,可以考虑创建新的分支,代码上传成功后发一个PR就会针对PR的  详情 回复 发表于 2021-1-22 16:45
回复

使用道具 举报

266#
 楼主| 发表于 2021-1-22 17:01:44 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2021-1-22 17:05 编辑

wintoflash 可以发一个你编译的版本吗?

如果64位环境编译成功的话,外部命令的格式就不会更改了。
回复

使用道具 举报

267#
 楼主| 发表于 2021-1-22 17:13:34 | 显示全部楼层
我是想要一个64位环境编译的 grub4dos for uefi,即 bootx64.efi
回复

使用道具 举报

268#
 楼主| 发表于 2021-1-22 17:24:19 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2021-1-22 17:36 编辑

我修改了两个外部命令。

回复

使用道具 举报

269#
 楼主| 发表于 2021-1-22 17:31:16 | 显示全部楼层
亲自测试,64 位 linux 环境编译的 grub4dos for uefi ,工作不正常的问题圆满解决!
回复

使用道具 举报

270#
 楼主| 发表于 2021-1-22 18:29:36 | 显示全部楼层
不好意思,搞乱了,重新上传。

g4dext.rar

30.24 KB, 下载次数: 18, 下载积分: 无忧币 -2

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-30 00:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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