无忧启动论坛

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

[发布] 增强 GRUB4DOS 菜单编辑功能,支持动画,支持精简字库,支持图形菜单

    [复制链接]
1#
发表于 2021-3-30 12:15:30 | 显示全部楼层
既然升级了,以前用的menuset外部命令,现在用回这个,但好像与hotkey外部命令冲突,加上hotkey就不出菜单。setmenu自带热键功能吗?
回复

使用道具 举报

2#
发表于 2021-3-30 18:01:05 | 显示全部楼层
本帖最后由 hhh333 于 2021-3-30 18:05 编辑
2011yaya2007777 发表于 2021-3-30 12:36
grub4dos for uefi 带热键功能。菜单设置请使用内部命令,外部命令已经不兼容。

g4d for bios的带不带,怎么启用?譬如这样的:title ^D 进入 DOS工具集
顺便再问一下:grub4dos for uefi 如何判断是32位还是64位环境
回复

使用道具 举报

3#
发表于 2021-3-31 10:31:34 | 显示全部楼层
2011yaya2007777 发表于 2021-3-30 20:05
bios版本不带内部热键。uefi版本带内部热键。内部热键用法是:
setmenu --hotkey 参数
其他和热键以前的 ...

既然可以自动编号了,实际上热键也没必要,把菜单都改成无热键形式算了
回复

使用道具 举报

4#
发表于 2021-3-31 12:29:08 | 显示全部楼层
2011yaya2007777 发表于 2021-3-30 20:05
bios版本不带内部热键。uefi版本带内部热键。内部热键用法是:
setmenu --hotkey 参数
其他和热键以前的 ...

怪了,菜单中加
calc *0x8272&0xff | set arch=
if /i "%arch%"=="64 (HEX:0x40)" set IA=x64 || set IA=ia32
怎么arch总是没赋值?IA永远ia32
但放到命令行状态执行又没问题


回复

使用道具 举报

5#
发表于 2021-3-31 14:49:09 | 显示全部楼层
2011yaya2007777 发表于 2021-3-31 14:36
calc *0x8272&0xff | set /a arch=
if /i "%arch%"=="64" set IA=x64 || set IA=ia32

哦,好久没用,生疏了
回复

使用道具 举报

6#
发表于 2021-3-31 14:58:39 | 显示全部楼层
2011yaya2007777 发表于 2021-3-31 14:36
calc *0x8272&0xff | set /a arch=
if /i "%arch%"=="64" set IA=x64 || set IA=ia32

arch变成零了
回复

使用道具 举报

7#
发表于 2021-4-2 06:27:46 | 显示全部楼层
本帖最后由 hhh333 于 2021-4-2 06:34 编辑
2011yaya2007777 发表于 2021-3-31 15:29
批处理我也不熟悉。

calc *0x8272&0xff > nul ;; set arch=%@retval%
  1. set BZD=/EFI/boot
  2. set IA=x64
  3. set PE=64
  4. calc *0x8272&0xff > nul ;; set arch=%@retval%
  5. #if "%arch%"=="64" set IA=x64 || set IA=ia32

  6. if "%arch%"=="32" set BZD=/BOOT
  7. if "%arch%"=="32" set IA=ia32
  8. if "%arch%"=="32" set PE=PE
复制代码
运行后,PE与arch都是0,难道只支持两个变量吗?

回复

使用道具 举报

8#
发表于 2021-4-2 07:34:43 | 显示全部楼层
2011yaya2007777 发表于 2021-4-2 07:00
设置arch变量后,使用echo %arch%查看一下,看看是什么值。
  1. set BZD=/EFI/boot
  2. set IA=x64
  3. set PE=64
复制代码

只运行这三个,后面都不运行,最后一个是空的
回复

使用道具 举报

9#
发表于 2021-4-2 08:48:52 | 显示全部楼层
2011yaya2007777 发表于 2021-4-2 08:08
怪事,上面代码我这里测试正常。

EFI.7z (1.21 MB, 下载次数: 35)

这是菜单和启动包,你看一下。

回复

使用道具 举报

10#
发表于 2021-4-2 09:45:34 | 显示全部楼层
本帖最后由 hhh333 于 2021-4-2 09:46 编辑

我发你的是2月10号的版本,是光盘启动方式
回复

使用道具 举报

11#
发表于 2021-4-8 11:13:30 | 显示全部楼层
本帖最后由 hhh333 于 2021-4-8 11:32 编辑

请yaya解惑,或者也算一个bug
G4D(grub4dos-0.4.6a-2021-01-27)一启光盘,先根下的menu.lst,再根据类型启动相应的子菜单
这是menu.lst
debug off
calc *0x8205=*0x8205|0x20
timeout 1
set h3cd=H3CDALL.ISO

#默认启动菜单
set grmenu=H3_GR2HD.LST

#UD启动菜单(注意:menu.lst位于UD内时表示启动文件和内核均藏于UD内启动,即H3PE约定menu.lst总是跟着BOOT和内核走,切记!)
if %@root%==(ud) set grmenu=H3_GR2UD.LST

#光启菜单
if %?_BOOT%==(cd) set grmenu=H3_GR2CD.LST
checkrange 0xA0:0xFF read 0x82A0 > nul && set grmenu=H3_GR2CD.LST

#网启菜单
if %?_BOOT%==(pd) pxe keep && set grmenu=H3_GRPXE.LST

#ISO整体启动菜单
if %?_BOOT%==(ud) if exist (ud)/%h3cd% root (ud)
if /i exist /%h3cd% goto H3CDALL

:H3CD-HD-UD-PXE
#以下内容用于多启动方式时调用相应菜单文件启动

terminal console
font /BOOT/GRUB/UNIFONT.HEX
graphicsmode -1 1024
splashimage /BOOT/GRUB/BACK.BMP.GZ
terminal --font-spacing=0:3
setmenu --box x=16 w=200 y=5 h=40 l=0 --lang=zh --auto-num-on
setmenu --string=-200=-6=0x00FF33="date&time=yyyy-MM-dd  HH:mm:ss"
setmenu --string=32=3=0xffff00="Grub4DOS-Bios CD启动菜单"
configfile /BOOT/%grmenu%

:H3CDALL
#以下内容用于整体启动
timeout 15
default 1

color white/blue white/red yellow/blue white/magenta

title              __________Load %h3cd% _________
clear

title [1]--"map --mem /%h3cd%" at first\nNeed large memory and spend more time to load iso to memory,but support all function besides win7pe,don't use on usb1.x.
set ldiso=NO
pause --wait=0 Tring to load ISO to mem...
map --mem /BOOT/IMGS/FIRADISK.IMA (fd0) || map --mem /FIRADISK.IMA (fd0)
map --mem /%h3cd% (0xff) && set ldiso=YES
if %ldiso%==NO pause --wait=0 Tring to direct map link to ISO... && map /%h3cd% (0xff) && set ldiso=YES
if %ldiso%==YES map --e820cycles=3 && map --hook && rootnoverify (0xff) && chainloader (0xff)
boot

title [2]--"map /%h3cd%" at first\nNeedn't more memory and very fast,but the iso must be contig and can't support all function.
set ldiso=NO
pause --wait=0 Tring to direct map link to ISO...
map /%h3cd% (0xff) && set ldiso=YES
if %ldiso%==NO pause --wait=0  Tring to load ISO to mem... && map --mem /BOOT/IMGS/FIRADISK.IMA (fd0) || map --mem /FIRADISK.IMA (fd0)
if %ldiso%==NO map --mem /%h3cd% (0xff) && set ldiso=YES
if %ldiso%==YES map --e820cycles=3 && map --hook && rootnoverify (0xff) && chainloader (0xff)
boot

这是h3_gr2cd.lst的内容
  1. debug off
  2. timeout 30
  3. #setmenu  --string=32=3=0xffff00="Grub4DOS-Bios CD启动菜单"

  4. #不显示版本信息
  5. call Fn.0 0x40000 "!BAT\necho -P:0000 $[0000]\t\t\t\t\t\t\t\t\t\0" && initscript (md)0x200+1

  6. title 启动 WIN7 PE                 Boot Win7 PE\n含较新的磁盘控制器驱动,不支持USB3
  7. chainloader /BOOT/H3_MGRW7.BIN

  8. title 启动 WIN8 PE                 Boot Win8 PE\n支持USB3等新硬件
  9. chainloader /BOOT/H3_MGRW8.BIN

复制代码


setmenu  --string=32=3=0xffff00="Grub4DOS-Bios CD启动菜单"
这一条语句如果在主菜单中,则不能显示中文(注:字库无论是否简单或压缩),但如果在子菜单中则可以显示中文。

回复

使用道具 举报

12#
发表于 2021-4-8 15:13:02 | 显示全部楼层
2011yaya2007777 发表于 2021-4-8 12:39
font /BOOT/GRUB/UNIFONT.HEX
graphicsmode -1 1024

没什么用,我想应该不影响

回复

使用道具 举报

13#
发表于 2021-4-8 16:55:57 | 显示全部楼层
经过测试setmenu
1、自动编号功能只在当前菜单有效,不能传递到子菜单;
2、日期时间显示在g4d中14秒才跳一次数,g4e中为秒跳;
3、日期时间显示命令在自动编号前执行会不能显示,并且造成菜单卡顿;

另外1024分辨率时,屏幕宽高是不是128X48,各分辨率状态对应的屏幕宽高各是多少,如何换算的。
回复

使用道具 举报

14#
发表于 2021-4-8 20:02:47 | 显示全部楼层
2011yaya2007777 发表于 2021-4-8 19:12
1. 是这样的。
2及3.  是因为这句惹的祸  calc *0x8205=*0x8205|0x20 ,计时不能使用HLT指令。

哦,我试一下。
calc *0x8205=*0x8205|0x20这句啥意思啊,有什么用?以前的菜单不记得了
回复

使用道具 举报

15#
发表于 2021-4-8 21:11:15 | 显示全部楼层
2011yaya2007777 发表于 2021-4-8 20:16
使用HLT指令,减少cpu占用率。

已显示时钟了,用它已经没啥意义了,是吧
回复

使用道具 举报

16#
发表于 2021-4-9 11:07:54 | 显示全部楼层
现在G4D用精简字库,G4E用全字库,压缩后也就几百KB,可以暂时不纠结。
回复

使用道具 举报

17#
发表于 2021-5-6 19:22:36 | 显示全部楼层
2011yaya2007777 发表于 2021-5-1 09:40
混了头了。不好意思。
G4E是:
setmenu --hotkey -A [F4] commandline

换了这个不冲突了,能够用了。hotkey这个外部命令还应该强化
譬如: title ^Z [Z]返回EZBOOT主菜单
原则上应该写成这样的:
title [^Z]返回EZBOOT主菜单
或者
title 返回E^ZBOOT主菜单

即1、可以位于任何位置;2、不需要空格;3、^后的字母应该直接以预先定义的颜色显示(即热键的颜色可以自由定义)

回复

使用道具 举报

18#
发表于 2021-5-10 08:21:36 | 显示全部楼层
mygamexxx 发表于 2021-5-8 12:26
20210428中的hotkey外部命令还是有问题的。

这个带的hotkey确实有问题
回复

使用道具 举报

19#
发表于 2021-5-10 08:43:51 | 显示全部楼层

通过你这个文档,搞清了可以用[]来定义的问题,不过也有一些疑问
1、如果用^定义快捷键通用的方式应该是"^"后的第一个字母作为快捷键,现在是^后的字符不显示,似乎与通用的快捷键定义方式不符,不知当初是出于何种考虑;
2、用^来定义快捷键应该可以在菜单文本中的任何位置;
3、我理解如果字母单键快捷键用^来定义,譬如:title 返回E^ZBOOT主菜单;如果是组合键包括F1~12用[]来定义,譬如[Ctrl+A]/[f10]等
4、当然,希望文本中的快捷键可以由color命令来定义或者自动取文本颜色的对比色就更牛B了。
回复

使用道具 举报

20#
发表于 2021-8-16 18:18:45 | 显示全部楼层
yaya,有不有32位的外部命令的了?总觉得不够全

点评

别催了。没有。 目前32位外部命令无法从g4e获取正确的efi系统表和镜像句柄,所有要调用uefi功能的外部命令都没法用。 我也很怀疑是否有必要支持 IA32 UEFI。毕竟 win11 都不支持了。  详情 回复 发表于 2021-8-16 19:07
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-9 14:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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