nttwqz 发表于 2018-12-31 19:48:10

菜单无法显示完整内容

本帖最后由 nttwqz 于 2019-1-2 20:18 编辑



从之前的菜单里复制粘贴到最新版,然后就不正常了,恢复旧版grldr也不正常,原来一切正常,哪里错了?


问题已解决,内置菜单太长,超过了4K,去掉嵌入字模后压缩保存正常了,现在已改为外置菜单。


default 0
timeout 10
hotkey
graphicsmode -1 640:1024 480:768 24:32
font /unifont.hex.gz

# 背景图片
# splashimage=/boot/grub/splashimage.jpg
# 开启字符轮廓显示模式。当背景图片启用,菜单字体显示不清时建议开启
# outline on
# 设置菜单语言为中文,字间距1,行间距10,整行高亮,版本号显示关
setmenu --lang=zh --font-spacing=1:10 --highlight-full --ver-off
# color 未选菜单 被选菜单 帮助 标题,(前景色/背景色) ,顺序不可乱,不设置可用n替换
color light-gray/black black/light-gray white/black white/black

# 列数=图像水平像素/(字符宽+字符间距)   字符宽=8
# 行数=图像垂直像素/(字符高+行间距)       字符高=10
# setmenu --box x= y= w= h= l= 菜单项标题起始列,起始行,每行最大字符数,最大菜单项数,菜单框线条宽度(像素)
# 注:w=0 表示水平居中。此时 w 应当在 x 之后;l=0 表示不显示菜单框;
# 按黄金分割比例设置菜单框宽度:1024/(8+1)=113.78;113*0.618=70.31 70/2=35,故居中时x=35
setmenu --box x=35 y=6 w=0 l=0
# 居中位置计算:例如1024宽,列数:1024/(8+1)=113.78,“DOS菜单”应该是7个字符,(113-7)/2=53,故--string=53
# 2018-3-15后,省略x自动居中
setmenu --string==3=0xffffff="DOS菜单" --timeout=75=5=0xffff00


title ^F1 F1MHDD硬盘坏道检测 \n
        map --floppies=1
        find --set-root /Boot/GRUB/mhdd46.img
        map --mem /Boot/GRUB/mhdd46.img (fd0)
        map --hook
        chainloader (fd0)+1
        rootnoverify (fd0)

title ^F2 F2HDDReg硬盘再生器 \n
        map --floppies=1
        find --set-root /Boot/GRUB/HDDREG2013.img
        map --mem /Boot/GRUB/HDDREG2013.img (fd0)
        map --hook
        chainloader (fd0)+1
        rootnoverify (fd0)

title ^F3 F3DiskGenius \n
        map --floppies=1
        find --set-root /Boot/GRUB/DiskGenius.img
        map --mem /Boot/GRUB/DiskGenius.img (fd0)
        map --hook
        chainloader (fd0)+1
        rootnoverify (fd0)

title ^F4 F4DOS 7.1 \n纯DOS环境
        map --floppies=1
        find --set-root /Boot/GRUB/DiskGenius.img
        map --mem /Boot/GRUB/MSDOS71B.img (fd0)
        map --hook
        chainloader (fd0)+1
        rootnoverify (fd0)

title ^F5 F5DOSTOOLS \nDOS工具集
        map --floppies=1
        find --set-root /Boot/GRUB/DOSTOOLS.img
        map --mem /Boot/GRUB/DOSTOOLS.img (fd0)
        map --hook
        chainloader (fd0)+1
        rootnoverify (fd0)

title ^F6 F6内存测试 \nmemtest86+ 5.01内存测试工具\n内存测试时间一般十分漫长,慎用!
        find --set-root /Boot/GRUB/memtest86+-5.01.iso
        map --mem /Boot/GRUB/memtest86+-5.01.iso (0xff)
        map --hook
        chainloader (0xff)
        boot

title ^F7 F7Windows账户工具 \nchntp.iso,支持Win10,请优先使用PE中的NTPWEdit\n密码重置、更改组、禁用启用,注册表编辑
        find --set-root /Boot/GRUB/chntp.iso
        map --mem /Boot/GRUB/chntp.iso (0xff)
        map --hook
        chainloader (0xff)
        boot

# title ^F7 F7重置Windows登录密码 \npassword.img,可能不支持Win8以上系统\n请优先使用PE中的NTPWEdit
        map --floppies=1
        find --set-root /Boot/GRUB/password.img
        map --mem /Boot/GRUB/password.img (fd0)
        map --hook
        chainloader (fd0)+1
        rootnoverify (fd0)

title ^F8 F8绕过Windows登录密码 \nPassPass自动检测\n永久绕过,支持WinXP~Win8
        find --set-root /Boot/GRUB/PassPass
        insmod /Boot/GRUB/PassPass
        insmod /Boot/GRUB/wenv
        /Boot/GRUB/PassPass
        boot

title ^F9 F9临时绕过Windows登录密码,重启失效 \nKonBoot\n支持Win10
        map --floppies=1
        find --set-root /Boot/GRUB/konboot.img
        map --mem /Boot/GRUB/konboot.img (fd0)
        map --hook
        chainloader (fd0)+1
        map (hd1) (hd0)
        map --hook
        rootnoverify (fd0)

title ^F10 F10 03PE \n支持256M内存
        errorcheck off
        find --set-root /crystal.sys
        pause --wait=3 三秒内按 空格键 加载USB2.0驱动
        if "%@retval%"=="32" usb --init
        chainloader /ldrxpe || chainloader setupldr.bin
        boot

title ^F11 F11 保护系统系列 \n进入保护系统系列子菜单
        find --set-root /crystal.sys
        configfile /edumenu.lst

title ^F12 F12 加载USB驱动并返回 \n提高加载速度,加载USB驱动并返回Windows 启动管理器
        usb --init
        find --set-root /crystal.sys
        chainloader /bootmgr
        boot

# 当[]内的条件成立时显示菜单,否则不显示
iftitle Android-x86 \n
        find --set-root /android.iso
        map --mem /android.iso (0xff)
        map --hook
        chainloader (0xff)
        boot

# 仅当根目录下存在temp.iso时此菜单才会显示
iftitle 启动temp.iso \n加载根目录下的temp.iso到内存(如果能的话)并引导启动 \n
        find --set-root /temp.iso
        map --mem /temp.iso (0xff) || map /temp.iso (0xff)
        map --hook
        chainloader (0xff)
        boot

title
        clear

title ^Q Q 返回 \n返回Windows 启动管理器
        find --set-root /crystal.sys
        chainloader /bootmgr

title ^R R 重启 \n
        reboot

title ^S S 关机 \n
        halt --no-apm || halt --force-sci || halt --no-acpi

不点 发表于 2018-12-31 20:05:39

怀疑你在其他地方有个 menu.lst 抢先执行了。图片显示的是那个抢先执行的 menu.lst 的情况。

chishingchan 发表于 2018-12-31 20:29:52

会不会跟文件编码格式有关?

nttwqz 发表于 2018-12-31 22:08:16

本帖最后由 nttwqz 于 2018-12-31 22:26 编辑

不点 发表于 2018-12-31 20:05
怀疑你在其他地方有个 menu.lst 抢先执行了。图片显示的是那个抢先执行的 menu.lst 的情况。

可是,菜单最前面没有configfile,这个外置带单也会优先于内置有效?

关键是,根本就没有menu.lst,更没有完全一样的,这样的菜单只有这一个。虽然电脑的隐藏分区也有个grldr,但是那个下面也有返回重启关机,即使错误定位的话,也显示不正确,何况我这个U盘的菜单和电脑的不同,什么都没动就不正常了。

这个情况已经出现过好几次了,不知道是不是重了MBR之类的病毒所致,上次连快捷键都失效了,中文也显示异常,最后重建mbr好了,这次外置命令快捷键能载入,但是依然不正常,杀毒软件用的国外的Avast,没有查到此类病毒(开机全盘查杀)。内置外置都试了,都一样,好神奇,之前明明是好好的。

nttwqz 发表于 2018-12-31 22:08:54

chishingchan 发表于 2018-12-31 20:29
会不会跟文件编码格式有关?

都试过了,无效,如果这么简单我就不发帖了。。。

不点 发表于 2019-1-1 01:11:00

可能性太多了,只有你,通过各种试验研究,才能知道究竟是哪种问题。比如说,有可能某个隐藏的 grldr 在起作用。

你用 qemu 也能重现你的问题?究竟是真实机出问题了,还是虚拟机里面出问题了?

虚拟机里面也有病毒?不太可能吧?

2011yaya2007777 发表于 2019-1-1 11:48:52

如果图像分辨率低,菜单项又多,当然一屏显示不全。当移动到尾项时会滚屏,显示后续菜单项。

graphicsmode -1 640:1024 480:768 24:32
这样设置的好处是适应性强。缺点是分辨率不同时,菜单可能不一样。

setmenu --box x=35 y=6 w=0 l=0
你可以减少y试一试。

--font-spacing=1:10
你可以改变比例试一试。比如1:2.

nttwqz 发表于 2019-1-1 12:52:35

2011yaya2007777 发表于 2019-1-1 11:48
如果图像分辨率低,菜单项又多,当然一屏显示不全。当移动到尾项时会滚屏,显示后续菜单项。

graphicsmo ...

同一台电脑和显示器,之前能,现在不能,不应该是分辨率问题,因为无法滚屏

将下面的全部删掉也无法显示完整,发帖前试过了
# 背景图片
# splashimage=/boot/grub/splashimage.jpg
# 开启字符轮廓显示模式。当背景图片启用,菜单字体显示不清时建议开启
# outline on
# 设置菜单语言为中文,字间距1,行间距10,整行高亮,版本号显示关
setmenu --lang=zh --font-spacing=1:10 --highlight-full --ver-off
# color 未选菜单 被选菜单 帮助 标题,(前景色/背景色) ,顺序不可乱,不设置可用n替换
color light-gray/black black/light-gray white/black white/black

# 列数=图像水平像素/(字符宽+字符间距)   字符宽=8
# 行数=图像垂直像素/(字符高+行间距)       字符高=10
# setmenu --box x= y= w= h= l= 菜单项标题起始列,起始行,每行最大字符数,最大菜单项数,菜单框线条宽度(像素)
# 注:w=0 表示水平居中。此时 w 应当在 x 之后;l=0 表示不显示菜单框;
# 按黄金分割比例设置菜单框宽度:1024/(8+1)=113.78;113*0.618=70.31 70/2=35,故居中时x=35
setmenu --box x=35 y=6 w=0 l=0
# 居中位置计算:例如1024宽,列数:1024/(8+1)=113.78,“DOS菜单”应该是7个字符,(113-7)/2=53,故--string=53
# 2018-3-15后,省略x自动居中
setmenu --string==3=0xffffff="DOS菜单" --timeout=75=5=0xffff00

不点 发表于 2019-1-1 12:53:46

frg521 发表于 2018-12-31 23:36
...

最后再告知1件事GHOST 使用后会破坏 MBR一些扇区数据   - 同理其他 磁盘工具也有这种破坏的可能性。
谢谢这个告知。


不要动不动就病毒。病毒都想活久些弄坏启动没好处。
谢谢提供这个合乎逻辑的精彩分析。学到了。

2011yaya2007777 发表于 2019-1-1 13:27:15

你是内置菜单吧。请把grldr传上来。

nttwqz 发表于 2019-1-1 14:12:25

本帖最后由 nttwqz 于 2019-1-1 14:17 编辑

2011yaya2007777 发表于 2019-1-1 13:27
你是内置菜单吧。请把grldr传上来。

已上传!附件在1楼顶部。

问题已解决,但原因未知!

重新分区格式化,清除引导扇区,重建MBR,后问题依旧。U盘使用BOOTMGR引导,故从PE的ISO内复制所有相关引导文件到U盘,并重新下载编辑grldr文件,现在正常了,菜单内容未改动。如果不是病毒的话,那怀疑可能是bootmgr相关文件被破环所致。U盘插拔次数过多,估计是伤着了,有时候需要动动才认。

弱弱的问一句,更推荐优先使用内置还是外置菜单?

2011yaya2007777 发表于 2019-1-1 14:21:51

普通菜单就用外置菜单吧,修改方便。

nttwqz 发表于 2019-1-1 14:27:30

2011yaya2007777 发表于 2019-1-1 14:21
普通菜单就用外置菜单吧,修改方便。

哪些情况下建议使用内置菜单呢?

2011yaya2007777 发表于 2019-1-1 14:42:29

本帖最后由 2011yaya2007777 于 2019-1-1 15:05 编辑

这纯粹是个人习惯。怎样都行。我觉得比如超过4k大段的批处理,并且压缩。或者是不想让人修改或解读的菜单。

你上传的 grldr 有问题。就如1#附图显示的那样,不全,且不能滚屏。
你最好还是使用外置菜单吧。

与 BOOTMGR 毫无关系。测试就一个文件 grldr。

2011yaya2007777 发表于 2019-1-1 16:13:29

本帖最后由 2011yaya2007777 于 2019-1-1 16:14 编辑

你的内置菜单长度超过4k,菜单从4k处截断!!!!!
必须压缩!!!!!

nttwqz 发表于 2019-1-1 22:09:05

2011yaya2007777 发表于 2019-1-1 16:13
你的内置菜单长度超过4k,菜单从4k处截断!!!!!
必须压缩!!!!!

这是测试的缘故,好久之前好过教程,忘了是什么原因,必须使用UTF-8 LMZA压缩保存,后来就一直是这样保存的,直到出了问题(不排除是点错了),让后就测试,看是不是压缩的缘故。记得之前测试过,用原始的grldr重新编辑压缩保存然后也显示不全,或许是默认嵌入字模的缘故,反正有外置字库,以后如果用内置取消嵌入。

nttwqz 发表于 2019-1-1 22:24:31

frg521 发表于 2019-1-1 15:59
...

如果使用数字快捷键,超过10项时,比如11,12,怎么按?我试过,快速按两下1不管用。

2011yaya2007777 发表于 2019-1-2 06:12:47

应当可以
页: [1]
查看完整版本: 菜单无法显示完整内容