无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
691#
 楼主| 发表于 2023-5-12 21:16:33 来自手机 | 显示全部楼层
打的补丁有两个改变因数。一是修改了gcc版本,二是修改了efi移交协议。所以要具体分析。另外kernel函数内部是通过chainloader来完成的,其中引入一个小bug,就是字符转换分配的内存小,会产生内存溢出。

点评

之前我已经控制变量试过了,与后者无关。  详情 回复 发表于 2023-5-12 21:54
回复

使用道具 举报

692#
 楼主| 发表于 2023-5-18 16:38:23 来自手机 | 显示全部楼层
在ubuntu20.4使用gcc7.5编译成功。总算过了编译关(几乎什么也不懂)。现在是进不了外置菜单。剩下的事肯定不少,但是相对容易一些。

点评

希望g4e远景可以支持多碎片解析,现在的碎片解析,最多39个,还是有点少了。如果能够像grub2那样子支持很多碎片解析就好了。我说的是远景,有希望吗?  详情 回复 发表于 2023-5-22 18:27
辛苦了!期待中。。。  发表于 2023-5-18 19:50
回复

使用道具 举报

693#
 楼主| 发表于 2023-5-22 18:34:11 来自手机 | 显示全部楼层
有希望。但是容量大了不易使用固定地址,恐怕不兼容SVbus了。

点评

https://grub4dos.chenall.net/ 怎么打不开了?是不是欠费了啊?能联系下chenall吗。  详情 回复 发表于 2023-5-24 14:31
我基本不怎么用svbus驱动,当初用svbus驱动,只是为了后来的primo驱动的RAMOS做了很多的铺垫和技术储备,没有svbus驱动这条路,primo不会在那么短时间内在UEIF_RAMOS领域获得突破性的进展。 g4e的碎片解析开发,  详情 回复 发表于 2023-5-22 21:08
回复

使用道具 举报

694#
 楼主| 发表于 2023-5-24 15:20:45 来自手机 | 显示全部楼层
是的,还在深度测试。
回复

使用道具 举报

695#
 楼主| 发表于 2023-5-26 06:19:01 来自手机 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-5-31 09:59 编辑

这个iso从哪里下载?我想重现一下问题。这个问题好多人反馈,可惜我这里无法重现。另外再问一下,是实机启动还是虚拟机?什么虚拟机?
2023-05-30
今天在网上下载了这个iso,不过不是5月3日的,而是5月16日的。
在虚拟机及实机测试,没有问题。

点评

使用0516版本iso,一样会卡死,应该跟硬件环境有关了。  详情 回复 发表于 2023-6-1 12:05
回复

使用道具 举报

696#
 楼主| 发表于 2023-5-27 20:28:31 来自手机 | 显示全部楼层
就是内置菜单
回复

使用道具 举报

697#
 楼主| 发表于 2023-6-1 12:53:30 来自手机 | 显示全部楼层
可能与硬件有关吧。问题不能重现,没办法盲猜。
回复

使用道具 举报

698#
 楼主| 发表于 2023-6-3 17:52:33 | 显示全部楼层
这个是不是和ventoy一样 放iso到里面就可以了?

不是。正常情况下使用菜单。
使用外部命令 RUN ,则可以放 iso 到里面就可以了。当然还的在菜单里加载它。
回复

使用道具 举报

699#
 楼主| 发表于 2023-6-5 11:03:48 | 显示全部楼层
请问一下有G4E版本的SISO吗,测试G4D版不能用

没有
回复

使用道具 举报

700#
 楼主| 发表于 2023-6-7 11:34:58 | 显示全部楼层
64位的用Qemu测试能出菜单,但32位的不行

试一试这个。

BOOTIA32.rar

138.91 KB, 下载次数: 21, 下载积分: 无忧币 -2

点评

想请问下:g4e启动协议是handover/loadfile2,那么g4d的启动协议是什么呢?  详情 回复 发表于 2023-6-10 15:15
非常感谢! 这个可以了,菜单正常出来了! 目前只试到这一步,其他还在摸索中; 32位的很少有实机环境。  详情 回复 发表于 2023-6-7 11:41
回复

使用道具 举报

701#
 楼主| 发表于 2023-6-15 15:10:09 | 显示全部楼层

@2011yaya2007777
老哥 你的 git 用户名与 email 设置有误。

返回如下信息,好像没有更新前一次推送。
只要下一次推送的用户名与 email 正确即可。
不知为什么会这样。

remote: Resolving deltas: 100% (7/7), completed with 7 local objects.
remote: error: GH007: Your push would publish a private email address.
remote: You can make your email public or disable this protection by visiting:
remote: http://github.com/settings/emails
To github.com:chenall/grub4dos.git
! [remote rejected] 0.4.6a -> 0.4.6a (push declined due to email privacy restrictions)
error: 无法推送一些引用到 'github.com:chenall/grub4dos.git'

点评

[attachimg]528035[/attachimg] 要么取消勾选下面的 "Block command line pushes that expose my email",要么 用你那边显示的 这个邮箱。  详情 回复 发表于 2023-6-15 17:33
回复

使用道具 举报

702#
 楼主| 发表于 2023-6-15 15:28:35 | 显示全部楼层
@wintoflash
请教个问题。
编译中有个警告:
41: Error: *.zip doesn't match any files
Warning: The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files.
For more information see: https://github.blog/changelog/20 ... et-output-commands/

看了一下,是这个内容:
GitHub Actions:弃用保存状态和设置输出命令

2022 年 10 月 11 日
为了避免不受信任的记录数据在工作流作者无意的情况下使用保存状态和设置输出工作流命令,我们引入了一组新的环境文件来管理状态和输出。

从今天开始,如果您通过标准输出使用保存状态或设置输出命令,运行器版本 2.298.2 将开始警告您。 我们正在监控遥测以了解这些命令的使用情况,
并计划在 2023 年 5 月 31 日完全禁用它们。从 2023 年 6 月 1 日开始,通过标准输出使用保存状态或设置输出命令的工作流将失败并出现错误。 我们的遥测显示这些命令的重要用途。 考虑到受影响的客户数量,我们将推迟移除。

修补您的操作和工作流程
如果您使用的是自托管运行器,请确保将它们更新到版本 2.297.0 或更高版本。
使用该工具包的动作作者应将 @actions/core 包更新到 v1.10.0 或更高版本,以获得更新的 saveState 和 setOutput 函数。
通过 stdout 使用保存状态或设置输出的操作和工作流作者应该更新以使用新的环境文件。

例子
使用保存状态或设置输出的工作流程如下所示
- name: Save state
run: echo "::save-state name={name}::{value}"
- name: Set output
run: echo "::set-output name={name}::{value}"

应更新为写入新的 GITHUB_STATE 和 GITHUB_OUTPUT 环境文件:
- name: Save state
run: echo "{name}={value}" >> $GITHUB_STATE
- name: Set output
run: echo "{name}={value}" >> $GITHUB_OUTPUT

我看代码,没有save-state与set-output。
与run有关的代码有2段:
runs:
  using: 'composite'
  steps:
    - id: pre-debug-check
      run: $GITHUB_ACTION_PATH/tmate.sh
      shell: bash
    - id: start-grubdev
      env:
        INPUT_USEQEMU: ${{ inputs.useQemu }}
      run: |
        cd $GITHUB_ACTION_PATH && chmod +x ./start-grubdev.sh && ./start-grubdev.sh
      shell: bash
    - id: start-build
      env:
        INPUT_USEQEMU: ${{ inputs.useQemu }}
        grub4dos_src: ${{ inputs.srcDir }}
        COMMIT_RANGE: "${{ github.event.before || github.event.pull_request.base.sha }}...${{ github.sha }}"
      run: chmod +x $GITHUB_ACTION_PATH/build.sh && $GITHUB_ACTION_PATH/build.sh
      shell: bash
    - id: end-debug-check
      run: $GITHUB_ACTION_PATH/tmate.sh
      shell: bash

# Print connection info
echo ________________________________________________________________________________
echo
echo To connect to this session copy-n-paste the following into a terminal:
tmate -S /tmp/tmate.sock display -p '#{tmate_ssh}'
echo After connecting you can run 'touch /tmp/keepalive' to disable the 2m timeout

不知有没有影响。

点评

别担心。到时候我可以改。  详情 回复 发表于 2023-6-15 17:34
回复

使用道具 举报

703#
 楼主| 发表于 2023-6-15 18:15:45 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-6-15 18:16 编辑
要么取消勾选下面的 "Block command line pushes that expose my email",要么 用你那边显示的 xxx@users.noreply.github.com 这个邮箱。

推送成功了。下载页面更新了。。

别担心。到时候我可以改。

好吧,到时候你处理吧。
回复

使用道具 举报

704#
 楼主| 发表于 2023-7-4 15:36:13 | 显示全部楼层
外部命令cmdline  的建议

启动初始,%?_BOOT% = %@root%" = 引导驱动器根分区

点评

是说 能 便携,例如: windows的 bootmgfw.efi 优先 找 同目录的 bcd g4e起动后,g4e.efi 在 %?_BOOT%分区 问题是 没有 具体 目录 :%?_BOOT%/efi/boot/ 所以 希望 cmdline能取回来%?_BOOT%/efi/bo  详情 回复 发表于 2023-7-4 18:23
回复

使用道具 举报

705#
 楼主| 发表于 2023-7-21 16:48:53 来自手机 | 显示全部楼层
下载2023-07-16版本的RUN、G4E,以及附带的NTBOOT。

点评

一直上http://grub4dos.chenall.net/检查更新 没上github  详情 回复 发表于 2023-7-22 01:11
回复

使用道具 举报

706#
 楼主| 发表于 2023-8-19 21:20:26 来自手机 | 显示全部楼层
关闭安全启动
回复

使用道具 举报

707#
 楼主| 发表于 2023-8-30 14:55:22 | 显示全部楼层
能透過改寫menu.lst解決或是沒法子呢?

关闭secure boot。
使用新版本ntloader及initrd.lz1。
重命名menu.lst。

新建menu.lst,测试,反馈。内容为:
title Win10x64
debug 3
find --set-root /iso/10pe.wim
uuid ()
find --set-root  /efi/grub/ntloader
chainloader /efi/grub/ntloader initrd=/efi/grub/initrd.lz1 uuid=%?% file=/iso/10pe.wim
boot

点评

好的.剛上WEB看NTLOADER有Jun 28版 initrd.lz1要去哪更新呢? 使用NTLOADER裡面附的initrd.cpio嗎?  详情 回复 发表于 2023-8-30 23:16
回复

使用道具 举报

708#
 楼主| 发表于 2023-8-31 05:40:48 来自手机 | 显示全部楼层
initrd.lz1包含在NTLOADER压缩里呀。你没有下载?没有打开看看?

点评

我下載的是Development Build ,Jun 28 裡面是initrd.cpio v2.01的裡面是initrd.lz1 Jun 28的測試可以使用了. 有問題清空一下secure boot就好了 就沒測試了v2.01  详情 回复 发表于 2023-8-31 17:31
回复

使用道具 举报

709#
 楼主| 发表于 2023-8-31 17:51:47 来自手机 | 显示全部楼层
解决了就好

点评

G4E有没隐藏显示分区的命令?G4D下的hide和unhide似乎不管用了  详情 回复 发表于 2023-9-1 10:40
回复

使用道具 举报

710#
 楼主| 发表于 2023-9-1 14:27:47 | 显示全部楼层
G4E有没隐藏显示分区的命令?

G4E有hide,没有unhide。

点评

好的。这个命令还是改写分区标记来达到隐藏?  详情 回复 发表于 2023-9-1 15:27
回复

使用道具 举报

711#
 楼主| 发表于 2023-9-20 11:43:50 来自手机 | 显示全部楼层
菜单首位增加  debug  3,看看有什么反馈信息。启动 linux 比较困难,尤其是传递什么参数。
回复

使用道具 举报

712#
 楼主| 发表于 2023-9-21 13:43:35 来自手机 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-9-21 14:17 编辑

menu.lst放在 /efi/grub/

点评

我的menu.lst菜单是放在了/efi/grub/中,但问题是从64位的G4D-UEFI启动时64位的G4D-UEFI调用的是它,从32位的G4D-UEFI启 动时32位的G4D-UEFI调用的还是它,而这张menu.lst菜单我是针对64位的G4D-UEFI启  详情 回复 发表于 2023-9-21 16:08
回复

使用道具 举报

713#
 楼主| 发表于 2023-9-21 16:28:06 来自手机 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-9-21 17:20 编辑

统一菜单。在菜单里判断是32/64。好像变量是 %@uefi%,返回32/64。
if %@uefi%==32 执行命令

点评

“统一菜单”——那是不是64位的UEFI菜单与32位的UEFI菜单写在同一张menu.lst菜单上,比如: title 运行 Win10 PE 64 位 find --set-root /w1064pe.iso map /w1064pe.iso (0xff) chainloader (0xff) title  详情 回复 发表于 2023-9-21 17:57
回复

使用道具 举报

714#
 楼主| 发表于 2023-9-21 18:09:15 来自手机 | 显示全部楼层
是的,正确。

点评

32/64位的UEFI Grub4dos的菜单都写在同一张menu.lst菜单上太过拥挤......我做了一下变通: 1.启动32位的UEFI Grub4dos时先进入32/64位的UEFI Grub4dos的公共menu.lst菜单: [attac  详情 回复 发表于 2023-9-21 20:05
可否考虑将32位与64位的UEFI-G4D的菜单分开,因为对启动U盘来说,都集中在同一张菜单上太过拥挤、臃肿...... 这只仅仅是64位的UEFI-G4D的菜单: [attachimg]532019[/attachimg]  详情 回复 发表于 2023-9-21 18:40
回复

使用道具 举报

715#
 楼主| 发表于 2023-9-24 09:32:14 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2023-10-12 14:35 编辑

在 UEFI64 环境测试:
1.  porteus.iso 不支持 64 位 CPU,测试肯定失败。
2.  Porteus-4.0-x86_64-20170917.iso 无论使用移交协议,还是装载文件2协议,都成功。

title /boot/imgs/Porteus-4.0-x86_64-20170917.iso
find /boot/imgs/Porteus-4.0-x86_64-20170917.iso ;; uuid () ;; echo %?_UUID%
map /boot/imgs/Porteus-4.0-x86_64-20170917.iso (hd32)
kernel --handover (hd32)/porteus/vmlinuz from=UUID:%?_UUID%/boot/imgs/Porteus-4.0-x86_64-20170917.iso norootcopy nomagic

回复

使用道具 举报

716#
 楼主| 发表于 2023-10-1 12:31:47 | 显示全部楼层
title  Reuturn xxx.vhdx
find /img/xxx.vhd && set roor=
/efi/grub/ext/ntboot %root%/img/xxx.vhdx
boot
回复

使用道具 举报

717#
 楼主| 发表于 2023-10-7 08:06:05 | 显示全部楼层
比如 判断是G4D还是D4U下,加载Iso代码不同

基本正确。提醒一点,这个需要在批处理环境。比如:
title 0  测试 WINPE.iso
!BAT
if %@uefi%==0
{
find --set-root --ignore-floppies --ignore-cd /WINPE.iso
map /WINPE.iso (0xff)
map --hook
chainloader (0xff)
}
else
{
find --set-root /WINPE.iso
map --mem /WINPE.iso (0xff)
chainloader (0xff)
}

在菜单项title前无效。
如果需要在菜单项前使用,需要建一个批处理,比如 xxx.bat,在其中这样写:
!BAT
if %@uefi%==0
{
find --set-root --ignore-floppies --ignore-cd /WINPE.iso
map /WINPE.iso (0xff)
map --hook
chainloader (0xff)
}
else
{
find --set-root /WINPE.iso
map --mem /WINPE.iso (0xff)
chainloader (0xff)
}

然后在菜单写
command (hdx,y)/路径/xxx.bat
回复

使用道具 举报

718#
 楼主| 发表于 2023-11-23 18:47:50 来自手机 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-11-24 06:38 编辑

请上传这两个文件。
请问,不是在uefi环境下吧。

点评

yjd
z77主板uefi环境开了兼容模式,bios引导。  详情 回复 发表于 2023-11-24 10:56
回复

使用道具 举报

719#
 楼主| 发表于 2023-11-24 15:37:00 | 显示全部楼层
title  NTBoot Chenall Plus
map /boot/imgs/NTBOOT-2017-04-02.iso (0xff)
map --hook
chainloader (0xff)
使用新版本grldr正常。

title  NTBoot Chenall Plus
map /boot/imgs/NTBOOT-2017-04-02.iso (cd)
map --hook
chainloader (cd-1)
使用新版本grldr正常。

grldr.rar

174.71 KB, 下载次数: 10, 下载积分: 无忧币 -2

点评

yjd
用新U盘格式成相同udm结构,复现了同样问题,看起来像新版grldr和udm存在问题? 1,udm工具按图格式化,解压模板拖进去。 模板: [attachimg]534868[/attachimg]  详情 回复 发表于 2023-11-25 00:07
回复

使用道具 举报

720#
 楼主| 发表于 2023-11-25 07:10:03 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2023-11-25 07:19 编辑

使用3069#的grldr也是同样问题?
看你提供的截图,是执行 int13/ax=4b01 出现了问题。应当是平台的问题。
换另外一台不同机型的电脑试一试。

点评

yjd
1,模板里的grldr用的 #3069 的文件,还附带2017旧版测试则正常 2,换了G41+酷睿E3110 问题一样,原机启动非虚拟机  详情 回复 发表于 2023-11-25 09:28
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-15 21:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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