学习 |
本帖最后由 窄口牛 于 2024-12-19 23:23 编辑 原因可能是菜单显示里的换行符 |
本帖最后由 不点 于 2024-12-19 16:24 编辑 窄口牛 发表于 2024-12-19 15:43 我个人比较关注 grub4dos 的 bug 问题。 官方网站确实有问题。姑且认为 qq 群共享的,也可接受吧,至少它有版本的日期。 我想,要排除 bug,就得有很多思路、方法。首先,要确定 bug 产生的时间,精确到日期。 所以,就要尝试不同时期的 grub4dos 版本,看看究竟是哪一天的改动,产生了新的问题。 比如说,用一个非常老的版本来试验(比如说,2020年的版本),看看问题是不是同样存在。 这个过程很辛苦。如果没有时间,或者没有兴趣,就不要去试验了,——可以等待另外一个人报告 bug(等待他能给出详细的排查结果)。 【补充】你说的 20240226 是 qq 群提供的 grub4dos 的版本日期吗?如果 qq 群提供的不是这个版本日期,那就不要用它(因为它肯定不是最新版)。自己再多找几个版本进行测试,直到能确定 bug 最早出现的日期为止。 当然了,这是假定 grub4dos 存在 bug。 另外,也可能是 menu.lst 文件中含有非法字符,由此带来的问题。 你可以彻底删除 menu.lst 文件。进入 grub4dos 命令行,手动敲入所需要的命令,看看 map --hook 命令能否得到执行。 只要多想想办法,总能挖出问题的根源。 |
楼主报告的情况,感觉很异常。正常情况下是不该出现的。 在没有提供更详细的信息之前,我暂且认为,这个 grub4dos 的来历不明。或者使用了开发者不推荐的、“容易产生不易排查的错误” 的方式、方法,比如 gfxmenu、message 之类的。一句话,不正常的前提条件,产生了不正常的结果。 grub4dos 本身出现这么大的 bug 的可能性有没有呢?当然有。但可能性不大。因此,我觉得没必要再关注这个话题了。 |
在控制台把那行删除,增加空行,重新写进去依然不行。 |
找一个VSCode之类的编辑器,拖进去看一下换行符是CRLF还是LF,原来你放map --hook那句的位置是不是有什么不可见字符,有的话删掉、换行符换成LF试试。 |
wangyibin 发表于 2024-12-18 23:10 grub4dos的代码给你改成grub2了…… |
来学习下 |
窄口牛 发表于 2024-12-19 12:03 你对你的情况最了解。比如,菜单是否有问题(包括存在不可见字符,等等),再比如你的 grub4dos 是从哪里获得的,是不是被某个第三方发行者修改过的?版本是新还是旧?等等,就不列举了。 我认为,不能写 map --hook 命令,这肯定属于不正常情况。不过,选择权完全掌握在你自己手上。比如说,如果你能够正常使用,没有出现别的问题,你可以忽略这个问题。又比如,如果你想折腾,你可以继续调试、定位、追查。 |
2011yaya2007777 发表于 2024-12-19 12:13 grub4dos 的扇区序列仿真,从一开始就支持任意大小。不存在 4G 限制的问题。 |
评论的才是高人 |
不从虚拟盘启动就不需要map--hook了,是吗? |
wintoflash 发表于 2024-12-19 08:51 只读取引导吧,全部加载的时候已经交给win 的引导了。 |
那就又不会了,怎么把它搞成一个分区呢,三个4g的。 |
2011yaya2007777 发表于 2024-12-19 07:52 vhd也不能超过4g吗? |
本帖最后由 不点 于 2024-12-19 10:32 编辑 2011yaya2007777 发表于 2024-12-19 07:52 碰巧我刚才抢先发帖了。 gz 是原始 grub legacy 支持的格式,那时的 grub 系统本身不考虑 64 位,只支持 32 位。这一点,在 grub4dos 中似乎仍然保持原样,未有改进。 但后来支持的 lzma 格式,是全新编写的,当然支持 64 位长度。岁数大了,记忆实在不好了。大约是 karyonix 编写的 lzma 支持代码。chenall 和 我貌似也进行了后期的补充完善。有可能阴差阳错,记不清了,抱歉。 |
谢谢分享 |
我自己从未用过 4G 以上的 gz 文件。你说的问题,也没见到其他人报告。确认是不是你的压缩工具有问题,或者与 grub4dos 不兼容?个人感觉 grub4dos 中的 gz 有可能存在 4G 问题。模糊的印象中,gz 在文件尾部保存原始未压缩文件的长度,而且只用 4 字节来保存,所以最大不超过 4G。 另外,gz 格式是有缺陷的(缺陷主要是文件头部没有原始未压缩文件的长度信息)。后来 grub4dos 支持了 lzma 的压缩格式,并建议用户尽量采用 lzma 压缩格式,取代 gz 格式。但是要注意,有些 LZMA 压缩工具生成的 lzma 文件的开头是 0xFFFFFFFFFFFFFFFF,这表示原始未压缩文件的长度未知(未填写)。这是不行的,不能够被 grub4dos 认可。 |
本帖最后由 窄口牛 于 2024-12-19 07:43 编辑 去掉map --hook这句就能用了,这是为什么? |
hdd.img.gz填高位内存,不是要一块一块填吗?![]() |
还发现12g的img打包为gz就只能用4g了,解压出来是真的12g。 换个什么打包方式呢? |
用AI给你修改了一下代码 你可以试试看 请先备份好你自己的代码 如果不行 好恢复。
函数封装:将重复的代码段封装成函数,提高可读性和维护性。 错误处理:增加了更多的错误检查和处理逻辑,确保在每一步出现问题时有适当的反馈和回退选项。 注释:添加了注释以解释每一步的目的。 启动项:将启动项分成两个部分,一个尝试从硬盘镜像启动,另一个直接尝试加载Windows,这样可以提供更多的选择和灵活性。 回退:增加了一个明确的回退选项,确保在任何情况下都能回到默认启动项。 请注意,这个脚本假设你已经正确设置了GRUB的环境变量和配置文件,并且你的系统支持所有用到的命令和功能。在实际应用中,可能需要根据具体的硬件和操作系统配置进行微调。 |
乱码,被视为命令,当然会报错了。 你的菜单里面含有非法字符? 你在语句之间插入 pause 之类的命令,跟踪一下,看看哪些命令执行了,而哪条命令还未执行。 这样,自己就知道哪里有错了。 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.