无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
121#
发表于 2021-2-9 18:44:39 | 显示全部楼层
wintoflash 发表于 2021-2-9 18:06
我先确认一下,B360用grub2是可以关机的吧

刚才,用grub2.05能关机,  

现在是搞 抽象(  广适应 )
回复

使用道具 举报

122#
发表于 2021-2-9 19:16:20 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-10 16:27 编辑
wintoflash 发表于 2021-2-9 19:06
增加了一些调试信息。重新看了一遍,确定和 GRUB2 的 ACPI 关机代码完全一样。

执行 /acpihalt debug  ...



以前 排查 bootmgfw.efi 问题的实践  说明,g4e 确实丢掉了 一部分 grub2 对主板的 抽象 部分

说明 grub205 的 halt 源代码  有用到 grub2 环境的语句
回复

使用道具 举报

123#
发表于 2021-2-9 20:01:25 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-9 20:09 编辑
wintoflash 发表于 2021-2-9 19:38
你先执行一下 ver 这个外部命令,看看 uefi 版本,顺便确保外部命令能正常运行,再执行 acpihalt debug
...

外部命令  死机 (ver 和 fat)

回复

使用道具 举报

124#
发表于 2021-2-9 20:20:40 | 显示全部楼层
vbox试   随  2021-1-31版发布的外部命令 有问题(单独发的没问题),编译问题 ?yfat是单独下载的,fat是随g4e下载的




回复

使用道具 举报

125#
发表于 2021-2-9 21:41:20 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-9 21:46 编辑

@2011yaya2007777
@wintoflash

开启 CMS 后 正常  (至于 ,下载包带的外部命令,搞了几小时了,暂不测试了)

1.  单独下的 fat 正常
2.  apcihalt 也能用

纯UEFI 是出问题的 根本原因
(g4e 的关机, 即使 开CMS,也是 停一会,重启)
回复

使用道具 举报

126#
发表于 2021-2-10 12:05:13 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-11 14:40 编辑
wintoflash 发表于 2021-2-10 10:43
那还是别弄成外部命令。

现在 halt 命令优先使用 ACPI 功能关机。

在  uefi+CMS 下,这个可以了, 这种 bios组态下,没什么毛病了


回复

使用道具 举报

127#
发表于 2021-2-10 12:29:14 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-10 16:28 编辑
2011yaya2007777 发表于 2021-2-10 08:57
你这段话,说明2个问题:
1. 2021-1-31版本的grub4dos for uefi可以执行外部命令。
2. 2021-1-31版本新 ...

对的,现在是考虑 抽象

要分 开  bios的状态:  uefi+CMS    纯UEFI   两种情况
回复

使用道具 举报

128#
发表于 2021-2-10 16:22:26 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-11 08:24 编辑
2011yaya2007777 发表于 2021-2-10 15:53
麻烦2011whp使用2.10版本的grub4dos for uefi测试一下关机,便于确定 W大的修正结果,谢谢。

1245楼  版
uefi+CMS  可以关机

纯UEFI    也  可以关机
回复

使用道具 举报

129#
发表于 2021-2-12 18:22:57 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-15 11:23 编辑

@2011yaya2007777

看下 这个批处理模板 whp.zip (552 Bytes, 下载次数: 50)
问题(已解决):
   将  ntloader 和 、initrd.lz1 复制到  /efi/grub/whp/
http://bbs.c3.wuyou.net/forum.ph ... &extra=page%3D1

   启动 wimpe批处理命令: whp  nt6wim /src/boot.wim


注:批处理whp  是文本 文件,只是没有后缀名(utf8码),自行 个性化编写。



回复

使用道具 举报

130#
发表于 2021-2-13 12:24:21 | 显示全部楼层
2011yaya2007777 发表于 2021-2-13 10:39
错误的原因是:你使用了中文双引号。

果然是这个原因,

批处理,启动 wimpe 成功了

批处理 个性化些 过程 还是不错的
回复

使用道具 举报

131#
发表于 2021-2-18 21:23:37 | 显示全部楼层
本帖最后由 2011whp 于 2021-2-18 21:52 编辑

疑情  先带着   B360主板 纯UEFI 切换 显示模式 丢盘





注:命令行 能用,第三图,菜单指还能移动(个人猜测,是不是 切换 显示模式时,内存变化 把什么给 覆盖了)

另一个gfx小问题:  在命令行 满屏后,打个 有长输出的命令,如help  感觉在 一行一行的刷屏
( video→gfx→ app )按这个层次,感觉是 app 在一屏一屏地刷,没用上 gfx 的功能似的 (个人猜的,仅供参考)



回复

使用道具 举报

132#
发表于 2021-5-13 21:31:42 | 显示全部楼层
本帖最后由 2011whp 于 2021-5-19 19:59 编辑

  临时 拼音 输入法,



一个能用的 输入法 批处理:用时去掉扩展名 方便(if语句排出来的)用法:p.txt -h
p.txt (29.48 KB, 下载次数: 7)
所含汉字 集合为,这个工具制作的  http://bbs.wuyou.net/forum.php?m ... 6003&extra=page%3D1
支持10种字体大小16|18|20|22|24|26|28|32|36|40

个别 汉字的 添加      生成hex字体(取字模).zip (912.18 KB, 下载次数: 9)
回复

使用道具 举报

133#
发表于 2021-5-20 13:11:51 | 显示全部楼层
本帖最后由 2011whp 于 2021-5-20 13:24 编辑

自动 编号  当热键    一般不会超 20个  菜单项

按12 时  可以选中 12菜单
(估计 是 数字超过 菜单总数时,清空缓冲,保留最后一个数字,进而选中菜单项)


我不知在哪看的,好像是 efi 工作方式 屏蔽 中断了,

这样的话,发出的键盘指令,要过efi   才能交给  g4e的输入终端(具体 ,说不清,不懂)



@hhh333 你是有台机器,一直不能用热键,还是 有时能用,有时不能用呢
按理说,热键 不会出什么问题




回复

使用道具 举报

134#
发表于 2021-5-20 18:36:40 | 显示全部楼层
本帖最后由 2011whp 于 2021-5-20 18:58 编辑
2011yaya2007777 发表于 2021-5-20 17:35
这个功能实现了。
示例:
setmenu --hotkey-color=0xffff

这样的  不死机了( 以前 setmenu  上的热键 命令死机)

title   里的  [F3] 正常
F9 重启  正常

title   里的  ^字母 不正常(^h 加上空格 可以了,但不显示 字母 h)

v键的 作用  是 下箭头


附菜单
setmenu --hotkey-color=0xffff
/hotkey.mod  [F9] @reboot

title [F3]启动 shellx64.efi 文件


title ^h d启动差分VHD 文件


回复

使用道具 举报

135#
发表于 2021-5-20 19:03:04 | 显示全部楼层
hhh333 发表于 2021-5-20 18:38
还是老样子,一运行hotkey就死机。这是菜单,hotkey.mod改名为hotkey,放EFI/grub/ext下
虚拟机光盘启动 ...

先 复制 粘贴  照做,再考虑 路径问题


@2011yaya2007777  是不是 g4e  里的 热键 功能 已经 去掉了  
setmenu --hotkey [F9] reboot  这个好像不 起作用了
回复

使用道具 举报

136#
发表于 2021-5-20 20:19:11 | 显示全部楼层


根据表现:
   title 里的 ^
       1.  做第一个字符时,^abc    :  显示热键a  但 按 a键 没反应
       2.  做第一个字符时,^a bc   : 不显示热键a  但 按 a键 有反应
       3.                             b^ac   : yaya 试的 是显示 键a吧   按键有反应

点评

我那菜单可能复杂一点,一运行hotkey就死,也不能像你们一样看到效果  详情 回复 发表于 2021-5-20 20:23
回复

使用道具 举报

137#
发表于 2021-5-21 11:19:08 | 显示全部楼层
本帖最后由 2011whp 于 2021-5-21 11:20 编辑




title [F3]启动 efi 文件 \n 有着色吗
title b^ac启动虚拟光盘
title ^t启动虚拟光盘(加载到内存)



有效果


回复

使用道具 举报

138#
发表于 2021-5-21 11:49:23 | 显示全部楼层
本帖最后由 2011whp 于 2021-5-25 11:49 编辑
hhh333 发表于 2021-5-20 18:38
还是老样子,一运行hotkey就死机。这是菜单,hotkey.mod改名为hotkey,放EFI/grub/ext下
虚拟机光盘启动 ...

这里的菜单 U盘能启动http://bbs.wuyou.net/forum.php?m ... 9954&fromuid=413782

mod扩展名,很重要(这样理解 加载服务,和调用外置程序是不一样的,)
没有的话,不起作用,但能启动
与位置无关

%?_BOOT:~0,4%  来判断,光盘时为  (0xa0)  U盘时 为 (hd0,0),用echo 试验下


点评

你这一解释我清楚了一些 这个东西可以认为是一个mod,也可以认为是一个常驻内存的命令,假设hotkey.mod改名为hotkey并放()/EFI/grub/ext/下 1、我的程序中没有发过root命令,如果这个时候用 ()/EFI/grub/ext/hotk  详情 回复 发表于 2021-5-21 17:03
回复

使用道具 举报

139#
发表于 2021-5-21 11:57:35 | 显示全部楼层
现在 g4e 支持多少个变量呢(以前是 变量名 支持很多,但值只支持两个)
回复

使用道具 举报

140#
发表于 2021-5-21 17:35:16 | 显示全部楼层
本帖最后由 2011whp 于 2021-5-21 17:40 编辑
hhh333 发表于 2021-5-21 17:03
你这一解释我清楚了一些
这个东西可以认为是一个mod,也可以认为是一个常驻内存的命令,假设hotkey.mod ...

用 %@root%  代替 ()试试

我这 试时,去掉  mod扩展名,不好使,yaya说理论上没关

我的理解是: mod的话 就常驻内存,成为 g4e的一部分了,外部命令是 执行完就消失了(当然 留下变量)

点评

名称改与不改照死不误,我再试下。 现在放EFI/grub/ext下 先root ()/efi/rub/ext再直接运行就行了,不先root一下就不好使,目前讲不出道理,应该只有yaya知道了  详情 回复 发表于 2021-5-21 18:20
回复

使用道具 举报

141#
发表于 2021-5-21 19:43:56 | 显示全部楼层
本帖最后由 2011whp 于 2021-5-31 09:19 编辑




不开 兼容模式的 360主板(纯UEFI),死机

root ()/EFI
/hotkey  [F9] @reboot
回复

使用道具 举报

142#
发表于 2021-5-22 13:52:32 | 显示全部楼层
本帖最后由 2011whp 于 2021-5-31 09:21 编辑

理一下变量
     1. 启动时 留下的标识数据区(具体 15版帮助的 6.12节  6.14节)
    2. 启动程序 设备块(分区):  %@boot%
    3. (bd) 菜单所在分区,初始值 %@boot%
        configfile 命令 会影响这个值(会记录新的菜单所在分区)
    4. %@path%  外部命令默认目录
            grub> command
            #输出当前外部命令所在文件夹,默认 (bd)/EFI/GRUB/
            command [--set-path=PATH] 可改变
            configfile 的默认参数为最后一次加载的菜单  初始值为 %@path%/menu.lst
    5.  %@root%(当前目录)
        () 为 root的路径 所在分区,随root变化
                               最好不要带 路径,只保持分区,因为 命令行提示符不显示当前目录,容易乱
                                还有 find 命令 的路径参数 会加 上%@root% 中的路路径 也容易乱
    6  系统变量@打头:不可写,只能用相关命令影响  @date  @time  @random  @uefi  @retval
        系统变量?_打头:可以写  也可叫 寄存器型变量  %?%  ?_BOOT  ?_UUID




命令的 名称空间
     1.  以字母开始:  先找内部命令(含insmod)→  %@root% 目录内的文件  →  %@path% 目录内的文件
     2.  以  /   开始:  专门访问%@root% 目录内的文件(可以 住 深层目录定位)
           等效于 command /
     3.  以  (   开始:   绝对 的 文件 路径
               特例:()引用当前 @root 的分区   (bd)引用 当前菜单所在的分区,
     4.   command  hotkey     专门访问  %@path%的命令 hotkey


g4e的 三个  核心变量     
        1. 启动文件 所在分区  %@boot%
        2. 菜单文件 所在分区  (bd)        初始值来源%@boot%
        3.               当前目录  %@root%     初始值来源%@boot%
                          外部命令  备用目录  %@path%           初始值来源  (bd)/ efi/grub

回复

使用道具 举报

143#
发表于 2021-5-22 14:19:54 | 显示全部楼层
本帖最后由 2011whp 于 2021-5-31 09:20 编辑
hhh333 发表于 2021-5-22 12:27
老大,现在这个表现形式的效果是达到了,但是,我前面已经说了,装载hotkey或hotkey.mod也没什么问题,现 ...

我这有 两种 死机的 情况,你的 加 root 方法 ,也不好使

见前几楼的 图  ,hhh333 你的 bios  开兼容模式 了吗



回复

使用道具 举报

144#
发表于 2021-5-25 11:29:37 | 显示全部楼层
估计  UEFI  输入终端  的 工作机制 有变化

以前是中断机制:  键盘 按键  到 机内的控制 芯片 ,芯片会发起中断信号,进而执行 中断处理程序,进而 调用 终端的处理程序。

现在 可能是:  键盘 按键  到 机内的控制 芯片 , UEFI轮询程序,读控制芯片 ,看 有没有 按键,有的话处理。终端的处理,是不是也成了 轮询 机制了

  
回复

使用道具 举报

145#
发表于 2021-5-29 10:23:57 | 显示全部楼层
本帖最后由 2011whp 于 2021-6-6 21:13 编辑

编译环境搭建 学习贴:
[求助] grub4dos for uefi 编译环境搭建出错
       http://bbs.wuyou.net/forum.php?m ... 4635&extra=page%3D1

grub4dos_BIOS和grub4dos_UEFI编译环境搭建(ubuntu14.04)
       http://bbs.wuyou.net/forum.php?m ... 5582&extra=page%3D1



回复

使用道具 举报

146#
发表于 2021-6-2 18:45:51 | 显示全部楼层
本帖最后由 2011whp 于 2021-6-4 14:07 编辑
把3处 ‘FOR_MODULES (header)’ 整合到一起了。

试makeimge

打包用的 字体  ,  非 16 字体 不可用

官网内置菜单示例:
pxe detect
configfile
default 0
timeout 1
title find /efi/grub/menu.lst
        errorcheck off
        find --set-root /efi/grub/menu.lst
        configfile /efi/grub/menu.lst
        errorcheck on
        commandline
title commandline
        commandline
title reboot
        reboot
title halt
        halt


回复

使用道具 举报

147#
发表于 2021-6-12 08:26:52 | 显示全部楼层
新闻(阅后删):Linux x86/x86_64现在将始终保留前1MB的内存
https://www.chinaz.com/2021/0607/1261487.shtml

https://www.codingsky.com/news/2021-06-09/111343.html

OEM机 修复 cpu的代码 在哪运行,是不是 在低1MB

bios加电 时,cpu缓冲运行 ,不能一直用这个缓冲

回复

使用道具 举报

148#
发表于 2021-6-15 14:53:20 | 显示全部楼层

fmwqsn 说传参数

估计是受   linux  grub.exe   --confilg  $menuentry   的影响

把g4e做前置,其它efi环境用

如:
uefishell:    g4e.efi   --confilg  %menuentry%  (未知,这个引用 会不会是整体)
grub204: chainloader   --confilg  $menuentry
bootice写入bios NV存储,做 主板启动时,的Fx 菜单:g4e.efi   --confilg  “menuentry”

现在内置菜单,能起到相同的效果,一对一即可( 用的人  把g4e学到这个程序,也不用 什么参数了)
——————————————————————————————————————

或者 传进个 默认菜单 值 defaut    起动文件,pathfile  (这样,菜单必须 用脚本 写的足够通用)

————————————————————————————————————————

还是 抄菜单 来的 好,,是个  想法 或 趣向   
回复

使用道具 举报

149#
发表于 2021-6-16 14:07:27 | 显示全部楼层
本帖最后由 2011whp 于 2021-6-16 20:11 编辑
wintoflash 发表于 2021-6-16 09:53
我说的是在外部命令里面,怎么样才能返回一个字符串,存到%?%里面。不是g4d脚本。
找到了

意思是你这个外部命令,能找到 启动g4e.efi的参数    ,起码能找到grub2  chainloader 时的参数


办法是找个内存区,弄成g4e的扩展变量 ,参见   2015版 grub4dos.chm帮助的  6.14节 后面部分,(这个功能我试过能用的)
set @extend 0x40000 10   意思是  从 0x40000处(注意扇区对齐)建 10个变量的 内存区


实际占用 11个扇区,
     第1个扇区,每8个字符对应一个 变量名
     第2个扇区是第一个变量的值
     ………………
     第11个扇区是第10个变量的值


你用外部命令:直写内存 ,g4e 用 set @extend 0x40000 10   声明一下 就有了

和普通 变量是一样的用法。

回复

使用道具 举报

150#
发表于 2021-6-16 17:25:54 | 显示全部楼层
本帖最后由 2011whp 于 2021-6-16 18:37 编辑

记得以前 提过 为驱动 开发玩家 准备个 交换区,正好借这个 参数传 实现下,

这个内存区  哪一段安全呢,这段 0x40000   内存 run 批处理用了没有?

或者 顺便 也来个 GUID式的 efi变量 交互(不太懂,就是ventoy式的那种)

经试验:


申明 扩展变里时,把 变量名 清空了,重写一下 变量名,即可,
申明 扩展变里 不会清空变量值
这样的话,申明后
自个写变量名: write (md)0x200+1  outval01outval02outval03outval04outval05outval06outval07outval08outval09outval10
10个扇区:5KB容量,能交互好多信息了
这个外部命令现在 能找到 grub2的  参数,下一步,找 uefishell  和  bios 的


2015版 帮助  10节
在grub4dos环境中,以下两块内存可以放心使用:

1、0x60000-0x60400(即内存384KB开始的长度为1KB的区域,扇区序列表示法为(md)0x300+2),经常用于菜单或批处理临时使用。

2、0x40000-0x44FFF(即内存256KB至275KB之间,长度为20KB,扇区序列表示法为(md)0x200+40)也是可以使用的(这一段是最常使用的,且空间较大)。

建议写到  (md)0x21c处    因为帮助 这么说的,也许有人会用 刚开始的部分,但一般用不到那么多(或者说一般人不用扩展变量)
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-29 04:50

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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