无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 4671|回复: 3

Grubutil FAT outdated?

[复制链接]
发表于 2020-4-22 09:32:59 | 显示全部楼层 |阅读模式
英文论坛上有人提问,不知 chenall 或 yaya 能否去回答一下。

http://reboot.pro/topic/22279-grubutil-fat-outdated/

I have following question about Grubutil fat.

If I set debug on and using fat on the command-line I get following warning: Warning! The program is outdated!

Fat works fine for me. :unsure: Any clue?

I am using latest version I could find (fat 2015-02-15) and Grub4Dos 2019-09-09.
发表于 2020-4-22 10:22:21 | 显示全部楼层
翻译
  1. 我有以下关于Grubutil fat的问题。

  2. 如果我在命令行中设置调试并使用fat,我得到以下警告。警告! 该程序已经过期了!

  3. Fat对我来说很好,:不确定。有什么线索吗?

  4. 我使用的是我能找到的最新版本(fat 2015-02-15)和Grub4Dos 2019-09-09-09。
复制代码
回复

使用道具 举报

发表于 2020-4-22 11:28:52 | 显示全部楼层
在 grub4dos 的 builtins.c 文件里,有相关的一段语句:
        if (*end_signature == 0xBCBAA7BA03051805ULL)        //hotkey
        {
                if (*(unsigned long long *)(program + prog_len - 0x20) == 0x646E655F6E69616D) /* main_end New Version*/
                {
                        char * tmp1;
                        char * program1;
                        unsigned long *bss_end = (unsigned long *)(program + prog_len - 0x24);
                        if (prog_len != *bss_end){
                                grub_free(tmp);
                                prog_len = *bss_end;
                                tmp1 = (char *)grub_malloc(prog_len + 4096 + 16 + psp_len);
                                if (tmp1 == NULL)
                                {
                                        goto fail;
                                }
                                program1 = (char *)((int)(tmp1 + 4095) & ~4095); /* 4K align the program */
                                if (tmp1 != tmp)
                                {
                                        grub_memmove (program1, program, (unsigned long)filemax);
                                        program = program1;
                                        tmp = tmp1;
                                }
                                psp = (char *)((int)(program + prog_len + 16) & ~0x0F);
                        }
                } else {//the old program
                        char *program1;
                        printf_warning ("\nWarning! The program is outdated!\n");
                        psp = (char *)grub_malloc(prog_len + 4096 + 16 + psp_len);
                        grub_free(tmp);
                        if (psp == NULL)
                        {
                                goto fail;
                        }
                        program1 = psp + psp_len;
                        grub_memmove (program1, program, prog_len);
                        program = program1;
                        tmp = psp;
                }
        }
看来是与热键有关。
0xBCBAA7BA03051805ULL 是热键文件结束签名。
0x646E655F6E69616D 这个没有查到,grub4dos,hotkey,fat 文件里都没有找到。
看代码,只是提出警告,并没有退出程序,而是进行了有效的处理。
回复

使用道具 举报

发表于 2020-10-10 17:59:21 | 显示全部楼层
很不错,收藏起来备用
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 15:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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