grub4dos-0.4.6a-2023-06-09,grub4dos-0.4.6a-2023-06-10无法出现菜单menu.lst 问题
本帖最后由 liuzhaoyzz 于 2023-6-11 14:44 编辑--\grldr,menu.lst
|--boot<dir>
|--grub
|--grub4
|--grub_menu<mainmenu.lst>(1024x768)
|--grub_menu<windows7.lst>(1024x768)
|--grub_menu<windows10.lst> (1024x768)
|--grub_menu<windows11.lst> (1024x768)
***note
1.使用下列版本menu.lst 无法读取到mainmenu.lst,无显示画面
grub4dos-0.4.6a-2023-02-23, grub4dos-0.4.6a-2023-02-28, grub4dos-0.4.6a-2023-03-01, grub4dos-0.4.6a-2023-03-06, grub4dos-0.4.6a-2023-03-29
2.使用下列版本menu.lst(無字) 不讀取mainmenu.lst的顯示
grub4dos-0.4.6a-2023-02-23, grub4dos-0.4.6a-2023-02-28, grub4dos-0.4.6a-2023-03-01, grub4dos-0.4.6a-2023-03-06, grub4dos-0.4.6a-2023-03-29
3.使用下列版本menu.lst(有字) 不讀取mainmenu.lst的顯示
grub4dos-0.4.6a-2022-11-28, grub4dos-0.4.6a-2022-12-22
4使用下列版本menu.lst 读取到mainmenu.lst, windows7.lst,windows10.lst,windows11,lst解析会变成800x600,回到mainmenu.lst解析会变成800x600
grub4dos-0.4.6a-2022-11-28, grub4dos-0.4.6a-2022-12-22
5.使用下列版本menu.lst 读取到mainmenu.lst ,無上述狀況
grub4dos-0.4.6a-2022-10-26
感谢分享 超级给力,{:1_191:} --\grldr,menu.lst
|--boot<dir>
|--grub
|--grub4
|--grub_menu<mainmenu.lst>(1024x768)
|--grub_menu<windows7.lst>(1024x768)
|--grub_menu<windows10.lst> (1024x768)
|--grub_menu<windows11.lst> (1024x768)
***note
1.使用下列版本menu.lst 无法读取到mainmenu.lst,无显示画面
grub4dos-0.4.6a-2023-06-09,grub4dos-0.4.6a-2023-06-10无法读取到mainmenu.lst 说了这么多,没有说到点子上。主菜单是怎么调用子菜单的?贴上来。 我觉得有必要发个贴子,置顶,告诉反馈问题的朋友,开发者需要了解哪些方面的问题,比如g4d/g4e版本,主菜单,硬盘MBR/GPT情况(若有必要)。这方面,我感觉英国人steve6375,还有那个JP95Git,那个墨西哥的alacran(Taviruni),反馈问题都超级棒,感觉给开发者节省了大量的时间和精力。
为啥中国人开发的引导器,国外网友反馈问题到位,国内的一些网友指向性精准反馈并能帮助开发者定位问题的人,太少了。
本帖最后由 alex20092009 于 2023-6-11 09:43 编辑
2011yaya2007777 发表于 2023-6-10 21:24
说了这么多,没有说到点子上。主菜单是怎么调用子菜单的?贴上来。
|--\grldr , menu.lst
|--boot
|--grub
|--grub4
|--grub_menu<mainmenu.lst>(1024x768)
|--grub_menu<windows7.lst>(1024x768)
|--grub_menu<windows10.lst> (1024x768)
|--grub_menu<windows11.lst> (1024x768)
1. 使用下列版本menu.lst 读取到mainmenu.lst ,無上述狀況
grub4dos-0.4.6a-2022-10-26
2. 从grub4dos-0.4.6a-2022-10-26版本开始以后都会在根目录menu.lst无法去读取\boot\grub4\grub_menu\mainmenu.lst
menu.lst
find --set-root --ignore-floppies --ignore-cd --devices=hf /boot/grub4/grub_menu/mainmenu.lst && configfile /boot/grub4/grub_menu/mainmenu.lst
#title \n
#root
title \n
root
#title Command-Line
#commandline
title Reboot Computer
savedefault --wait=2
reboot
title Turn Off Computer
savedefault --wait=2
halt
mainmenu.lst
title \n
root
title [ Microsoft Windows Operating System Installation Manager ]\n
root
title Microsoft Windows XP with Service Pack 3 (multi-language)
#iftitle Microsoft Windows XP with Service Pack 3 (multi-edition)
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/winxp_all.lst
title \n
root
title Microsoft Windows 7with Service Pack 1 (multi-language)
#iftitle Microsoft Windows 7 with Service Pack 1 (multi-edition)
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/win7_multi.lst
title Microsoft Windows 7with Service Pack 1 (multi-language) Tu
#iftitle Microsoft Windows 7 with Service Pack 1 (multi-edition)
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/win7_multi_Tu.lst
title Microsoft Windows 7with Service Pack 1 (multi-language) Tut
#iftitle Microsoft Windows 7 with Service Pack 1 (multi-edition)
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/win7_multi_Tut.lst
title \n
root
title Microsoft Windows 10 version 22h2 updated march 2023 (multi-language)
#iftitle Microsoft Windows 10 version 22h2 updated march 2023 (multi-edition)
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/win10_multi_menu.lst
title \n
root
title Microsoft Windows 11 version 22h2 updated march 2023 (multi-language)
#iftitle Microsoft Windows 11 version 22h2 updated march 2023 (multi-edition)
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/win11_multi_menu.lst
#title \n
#root
#title Microsoft Windows Server 2016 editions version (multi-language)
##iftitle Microsoft Windows Server 2016 editions version (multi-edition)
#find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
#configfile /boot/grub4/grub_menu/winsvr.lst
title \n
root
title [ Hardware with Diskette Manager ]\n
root
title Hardware Test Function
#iftitle Hardware Test Function
find --set-root --devices=hf /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/hwtest.lst
title Hardware Tool Function
#iftitle Hardware Tool Function
find --set-root --devices=hf /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/hwtool.lst
title DiskGenius
#iftitle DiskGenius
find--set-root /boot/program/DGDOS_ISO.iso
map /boot/program/DGDOS_ISO.iso (0xff) || map --mem /boot/program/DGDOS_ISO.iso
map --hook
chainloader (0xff)
savedefault --wait=2
title \n
root
title [ Repair Diskette with Diskette Bootable Manager ]\n
root
title Diskette Bootable System
#iftitle Diskette Bootable System
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/bootdisk.lst
#if %?_BOOT%==(cd) configfile /boot/grub4/grub_menu/bootdisk.lst || configfile /boot/grub4/grub_menu/bootdisk.lst
title Parted Magic with PC CMOS Cleaner
#iftitle PC CMOS Cleaner with Parted Magic
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/pmagic.lst
title \n
root
title [ Diskette Backup with Recovery Manager ]\n
root
#title Acronis Diskette Backup with Recovery
#iftitle Acronis Diskette Backup with Recovery
#find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
#configfile /boot/grub4/grub_menu/acronis.lst
#if %?_BOOT%==(cd) configfile /boot/grub4/grub_menu/acronis.lst || configfile/boot/grub4/grub_menu/acronis.lst
title Acronis Cyber Protect Home Office for PC
#iftitle Acronis Cyber Protect Home Office for PC
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/acronis_cyber.lst
#if %?_BOOT%==(cd) configfile /boot/grub4/grub_menu/acronis_cyber.lst || configfile/boot/grub4/grub_menu/acronis_cyber.lst.lst
title \n
root
title [ Microsoft Windows PE ]\n
root
title Microsoft Windows PE
#iftitle Microsoft Windows PE
find --set-root /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/windows_pe.lst
## configfile prefix_dir1/windows_pe.lst
#if %?_BOOT%==(cd) configfile /boot/grub4/grub_menu/windows_pe.lst || configfile /boot/grub4/grub_menu/windows_pe.lst
title \n
root
title [ Linux-Live CD/DVD ]\n
root
title Linux-Live CD/DVD boot
#iftitle Linix Live CD / DVD
find --set-root --ignore-floppies --ignore-cd --devices=hf /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_lnx/lnxlive.lst
#if %?_BOOT%==(cd) configfile /boot/grub4/grub_lnx/lnuxlive.lst || configfile /boot/grub4/grub_lnx/lnuxlive.lst
title \n
root
title [ GNU GRUB Manager ]\n
root
title GNU GRUB Setting
find --set-root --ignore-floppies --ignore-cd --devices=hf /boot/grub4/grub_tag/usbdrive.tag > nul
configfile /boot/grub4/grub_menu/grub_setting.lst
##title GNU GRUB Display RGB colours
##find --set-root --ignore-floppies --ignore-cd --devices=hf /boot/grub4/grub_tag/usbdrive.tag > nul
##configfile /boot/grub4/grub_menu/RGB_colours.mnu
##title GNU GRUB Display RGB colours
我测试没有问题。
你确认‘grub_menu’是目录吗?mainmenu.lst等等子菜单是在这个目录下吗?
在命令行执行以下操作,截图看看:
ls /boot/grub4/grub_menu/ 感觉楼主的报告,属于比较详细的了。至少楼主是很辛苦的,能够拍照,能够测试不同版本,并且确定了出问题的版本。
我觉得,开发者是开发者,用户是用户。不可以要求用户都有开发经验,都能够猜到开发者想要的是啥。
报告问题时,开发者很不容易了解用户那边究竟哪里有错,电脑不是开发者的,所以,困难就在于,开发者没法亲自进行调试。
所以,用户端,还真的存在一个“报告技巧”的问题。
可以先用一个简化的菜单,来反复测试,看看究竟是哪一句命令没有得到正确执行。
如果自己不懂命令行,也没关系,
可以在菜单项中插入 pause 之类的命令,
这样,用户自己也就能够确定,
到底是什么命令没有得到正确的执行了。
如此一来,就可以给开发者提供更有价值的信息,
节省了开发者的排错时间。 楼主最后一张图片,很能说明问题。
在准备处理 mainmenu.lst时,死机了。
有可能是 mainmenu.lst 中有某个命令导致新版本死机了。
楼主可以把 mainmenu.lst 简化,比如说,把 mainmenu.lst 文件清空,看看还死机吗?
这是一个调试思路,目的是帮助楼主,走捷径,进行快速调试和定位,而不需要费太多的脑筋。 不点大师,我是原样照抄的mainmenu.lst,可以出现子菜单界面。 2011yaya2007777 发表于 2023-6-11 11:05
我测试没有问题。
你确认‘grub_menu’是目录吗?mainmenu.lst等等子菜单是在这个目录下吗?
在命令行执 ...
1. mainmenu.lst子菜单是在这个\boot\grub4\grub_menu\目录下
2. 原以为是usb中毒,重新diskpart clean, usb重制问题相同
3. 尝试 usb fat32, usb ntfs 格式问题相同
4. usb ntfs 用 bootice 重制0.4.5c, 0.4.6a 问题相同
5. 经多日测试发现mainmenu.lst ,放至在\boot\grub\mainmenu.lst 画面可正常出现.
6. 试着不点方法简化问题相同
7. 试着 文件存档UTF-8, UTF-8 BOM问题相同 本帖最后由 alex20092009 于 2023-6-11 12:55 编辑
1. mainmenu.lst子菜单是在这个\boot\grub4\grub_menu\目录下
2. 原以为是usb中毒,重新diskpart clean, usb重制问题相同
3. 尝试 usb fat32, usb ntfs 格式问题相同
4. usb ntfs 用 bootice 重制0.4.5c, 0.4.6a 问题相同
5. 经多日测试发现mainmenu.lst ,放至在\boot\grub\mainmenu.lst 画面可正常出现.
6. 试着不点方法简化问题相同
7. 试着 文件存档UTF-8, UTF-8 BOM问题相同
2011yaya2007777 发表于 2023-6-11 11:05
我测试没有问题。
你确认‘grub_menu’是目录吗?mainmenu.lst等等子菜单是在这个目录下吗?
在命令行执 ...
所有测试方法未用windows 虚拟机器测试 14#的截图已经说明问题。在grub_menu目录下,只有main_menu.lst和_mainmenu.lst,而没有mainmenu.lst。犯了一个低级错误。 2011yaya2007777 发表于 2023-6-11 13:08
14#的截图已经说明问题。在grub_menu目录下,只有main_menu.lst和_mainmenu.lst,而没有mainmenu.lst。犯了 ...
你好:
因無法讀取mainmenu.lst 會出現procesing 畫面才rename file 本帖最后由 alex20092009 于 2023-6-11 13:16 编辑
你好:
因無法讀取mainmenu.lst 會出現procesing 畫面才rename file
2011yaya2007777 发表于 2023-6-11 13:08
14#的截图已经说明问题。在grub_menu目录下,只有main_menu.lst和_mainmenu.lst,而没有mainmenu.lst。犯了 ...
你好:
2011yaya2007777如果真的找不到问题点,我在试多几台PC/NB 找出问题点, Thanks alex20092009 发表于 2023-6-11 13:32
你好:
2011yaya2007777如果真的找不到问题点,我在试多几台PC/NB 找出问题点, Thanks
感谢测试。开发者已给出“比如g4d/g4e版本,主菜单,硬盘MBR/GPT情况(若有必要)”思路。
方法得当,事半功倍。
祝顺利。 本帖最后由 liuzhaoyzz 于 2023-6-11 15:27 编辑
2011yaya2007777 发表于 2023-6-11 13:08
14#的截图已经说明问题。在grub_menu目录下,只有main_menu.lst和_mainmenu.lst,而没有mainmenu.lst。犯了 ...
实测楼主反馈的问题属实。为了简化问题,实测结果如下:
grub4dos-0.4.6a-2023-06-10版本,menu.lst
title mainmenu.lst
find --set-root --ignore-floppies --ignore-cd --devices=hf /boot/grub4/grub_menu/mainmenu.lst
configfile /boot/grub4/grub_menu/mainmenu.lst
/boot/grub4/grub_menu/mainmenu.lst菜单,我确定存在,UTF-8无BOM格式。
title DiskGenius
find--set-root /boot/program/DGDOS_ISO.iso
map /boot/program/DGDOS_ISO.iso (0xff) || map --mem /boot/program/DGDOS_ISO.iso
map --hook
chainloader (0xff)
vmware虚拟机测试,从主菜单进入子菜单直接死机了。
手工输入命令也是一样。
我感觉是configfile命令有问题。我记得原来sunsea超版针对g4e也提出过类似的问题,还有之前在高版本的ubuntu环境下编译,yaya自己也提出过类似的问题,不清楚是否与编译环境有关,不清楚yaya是否修复了该问题,请再次确认下。
http://bbs.wuyou.net/forum.php?m ... 5896&fromuid=298214
grub4dos-0.4.6a-2016-12-23版本测试,正常。√
grub4dos-0.4.6a-2023-03-29版本测试,死机。
grub4dos-0.4.6a-2023-03-06版本测试,死机。
grub4dos-0.4.6a-2023-03-01版本测试,死机。
grub4dos-0.4.6a-2023-02-28版本测试,死机。
grub4dos-0.4.6a-2023-02-23版本测试,死机。
grub4dos-0.4.6a-2022-12-22版本测试,正常。√
grub4dos-0.4.6a-2022-11-28版本测试,正常。√
grub4dos-0.4.6a-2022-10-26版本测试,正常。√
很显然,2023年之后的版本,从grub4dos-0.4.6a-2023-02-23开始,应该是引入了bug。
看了下changelog:
grub4dos-0.4.6a-2023-02-23.7z
发表于 2023-02-23
更新信息(update log):
2023-02-23 7173aed@yaya . 增加外部定时器。(应用之一,外部命令进度条ProgressBar)。
修正压缩菜单最后一行没有换行符而缺失的问题。
修正切换视频模式菜导致单框失误的问题。
调整函数的内存使用,解决屏幕分辨率大于1600*1200时覆盖字库的问题。现在字体尺寸、屏幕分辨率都不受限制。
好像有问题。
2011yaya2007777如果真的找不到问题点,我在试多几台PC/NB 找出问题点, Thanks
问题已经重现。
qemu虚拟机测试,执行:
configfile/boot/grub4/grub_menu/mainmenu.lst
闪退。
目前你就把mainmenu.lst放在/boot/grub4/吧。
可能搜索4级目录有问题。
谢谢反馈! 2011yaya2007777 发表于 2023-6-11 15:20
问题已经重现。
qemu虚拟机测试,执行:
configfile/boot/grub4/grub_menu/mainmenu.lst
UEFI版本:
grub4dos-for_UEFI-2022-12-27测试正常√
grub4dos-for_UEFI-2023-02-23虚拟机测试死机,提示异常并重启。
情况应该跟g4d类似,是configfile引入了bug。
很显然,2023年之后的版本,从grub4dos-0.4.6a-2023-02-23开始,应该是引入了bug。
感谢liuzhaoyzz超级版主的精准定位。确实是由于增加外部定时器,挤占了配置文件的空间。配置文件+路径超过一定的字节,会出问题。现在可以确定,最长字节是52。位置有限,不可能再增大了。超出52字节会报错。
g4e 与 g4d 情况相同。
2011yaya2007777 发表于 2023-6-11 11:35
不点大师,我是原样照抄的mainmenu.lst,可以出现子菜单界面。
在 legacy bios 的情况,grub4dos 里面的许多处理,我是比较了解的。
相关的问题,我觉得,有必要给您解释一下。
iftitle 命令是 chenall 添加的。它比 title 命令更灵活方便。但带来的问题也很棘手。
与 iftitle 相比,原来的 title 命令,我在这里就称之为 “静态 title 命令”。
静态的 title 命令,是直接处理,无需访问磁盘,所以,不会出问题。
而带有 if 的动态 title 命令,它有 “条件” 需要判断,而执行条件判断的时候,就可能是要访问磁盘了。而在访问磁盘时,是有可能死机的。
这里有个误区,就是,“我测试正常啊?怎么会死机呢?”
死机会发生在那一类 “不友好” 的电脑上。并非统统死机。
所以,用户会碰到不正常,然后用户来报告。
开发者不能够以 “自己的测试正常”,然后就认为没问题。
正确的代码,不一定能够正确地运行。这是以前多年来得到的经验教训吧。
其实这绝大多数都是封杀行为,就是,硬件故意设计成让某个软件转不起来。
由于 iftitle 命令有可能导致死机(在执行条件命令的时候因访问磁盘而死机),所以,我在准备处理菜单之前,先打印一条消息(英文的,中文意思是:)“正在处理 某某某 菜单……”
如果此时死机,那么,这条消息就能够被用户拍照,然后,开发者就知道,是处理菜单时死机了。也就是说,configfile 所指定的那个菜单,根本就无法处理。
如果没有死机,上述消息很快就消失了,用户通常也看不见,除非那电脑慢如蜗牛。
并非只有 iftitle 命令会导致死机。在那些有问题的电脑上,任何访问磁盘的命令,都可能导致死机。
iftitle 的特殊性在于,还没显示菜单,就已经死机了。
此时,用户甚至都无法用 pause 命令!因为 pause 命令(以及其他命令)
是在菜单显示之后才可能开始处理的。
所以,请大家尽量不要使用 iftitle 命令。虽然 “恶意攻击” 的电脑数量不太多,但那是存在的。使用 iftitle 命令,就会带来这种风险。任何一种有可能 “丧失启动成功率” 的做法,都是得不偿失的。
我写得长了,阅读起来,可能费劲。请各位在空闲的时候,仔细阅读,慢慢品味。 不点 发表于 2023-6-12 11:30
在 legacy bios 的情况,grub4dos 里面的许多处理,我是比较了解的。
相关的问题,我觉得,有必要给您 ...
不太像是iftitle引起的问题呀?
title DiskGenius
find--set-root /boot/program/DGDOS_ISO.iso
map /boot/program/DGDOS_ISO.iso (0xff) || map --mem /boot/program/DGDOS_ISO.iso
map --hook
chainloader (0xff)
我在21楼给的简化菜单,就是为了排除这样子的特殊菜单问题,没有采用iftitle,照样死机啊。
liuzhaoyzz 发表于 2023-6-12 12:01
不太像是iftitle引起的问题呀?
title DiskGenius
版主大人辛苦啦!您在 grub4dos 上的贡献,是无可替代的。深表敬意!
我没能讲清楚。其实,iftitle 只是导致死机的一种可能性。
死机的可能性有很多,不一定是 iftitle 导致的。
我只是说,请大家尽量不要使用 iftitle 命令,免得出了问题却毫无头绪。
无论是哪种可能性引起的死机,用户都可以看到 Processing menu ........
这条消息。
我看到 yaya 已经从技术层面定位了这个问题。您们都很辛苦,祝贺! 2011yaya2007777 发表于 2023-6-12 11:06
感谢liuzhaoyzz超级版主的精准定位。确实是由于增加外部定时器,挤占了配置文件的空间。配置文件+路径超 ...
用这个版本,我测了下,g4d可以进菜单了,还没有深度测试,我要开会了。 本帖最后由 liuzhaoyzz 于 2023-6-13 18:28 编辑
不点 发表于 2023-6-12 12:35
版主大人辛苦啦!您在 grub4dos 上的贡献,是无可替代的。深表敬意!
我没能讲清楚。其实,iftitle 只 ...
不点大太客气了,绵薄之力不足挂齿,开发者们才是贡献最大,付出最多的啊。
不点2003年创立了g4d分支,很多年了一直在与各种buggy主板作斗争。
bean让bootmgr支持直接启动grldr.mbr,还有很多贡献,比如NTFS驱动支持,pxe等,用fbinst加强了USB-CHS模式下启动成功率,完善了g4d的中文说明文档。
chenall给g4d带来了丰富的批处理扩展,改进了pxe/ipxe支持。现在从前台转向了后台,也在做贡献。
2007yaya7777一个人抗下了很多开发维护任务,多线作战,run模块/g4d/g4e。
wintoflash为g4e写了wimboot/NTLOADER,方便直接启动pe.iso/wim/vhd/RAMOS,将g4d/g4e带入了高版本gcc编译器,引入EFI handover协议让kernel/initrd可以启动linux,引入了loadfile2协议,为未来linux高版本内核做好了准备。
......
使用2011yaya2007777上传grldr.rar 读取mainmenu.lst画面正常显示
liuzhaoyzz 发表于 2023-6-12 14:18
不点大太客气了,绵薄之力不足挂齿,开发者们才是贡献最大,付出最多的啊。
开发者们确实很尽力,很有水平,当然在某种程度上都是不可替代的。Gandalf 和 Roy 两位大神也亲自主持过开发维护工作【记忆力不好,可能会有遗忘】。我觉得,不同的人,在不同的时间,不同的地点,做了不同的事情。不管他是开发者、维护者,还是支持者、帮助者(问题报告者就属于支持者、帮助者),他都可能展现出他的智慧、水平。他都可能达到某种艺术的境界,都有着不可替代性。以前有个时空论坛,里面有很多高手,报告问题,帮我排错。那水平不是一般的,都是出神入化的境界。pseudo 对于 grub4dos 技巧的挖掘,我感觉,我作为开发者,都没有他对于 grub4dos 的理解有那么深入,确实很佩服。大家可能都有着某个共同的目标,或者有共同的需求,大家都很尽力。就像现实中的一个真正的家庭一样,每个成员,都在为家庭做贡献。
页:
[1]
2