无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 13596|回复: 55
打印 上一主题 下一主题

[讨论] g4d bug回报

[复制链接]
跳转到指定楼层
1#
发表于 2018-1-23 17:18:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2017-11-30 08:50 v0.4.6a
加入了这个bug
2017-11-18 23:01 v0.4.6a
还没有这个问题

会导致memtest86+5.01.bin无法启动
QEMU就能测试
QEMU下会直接程序报错
实机会重启
附上memtest86+5.01.bin的fba

test.7z

208.62 KB, 下载次数: 14, 下载积分: 无忧币 -2

2#
 楼主| 发表于 2018-1-23 22:46:13 | 只看该作者
yaya不在?
回复

使用道具 举报

3#
发表于 2018-1-23 22:55:57 | 只看该作者

你帮他找找毛病吧。yaya 好像不是天天都来的。

回复

使用道具 举报

4#
发表于 2018-1-24 06:22:30 来自手机 | 只看该作者
本帖最后由 2011yaya2007777 于 2018-1-24 10:18 编辑

知道了。请上传 img 格式的文件。
请上传 memtest86+5.01.bin 。解压缩错误。
回复

使用道具 举报

5#
 楼主| 发表于 2018-1-24 12:41:34 | 只看该作者
2011yaya2007777 发表于 2018-1-24 06:22
知道了。请上传 img 格式的文件。
请上传 memtest86+5.01.bin 。解压缩错误。

我这边7-zip解压没问题
我传个度盘吧
https://pan.baidu.com/s/1sniaKln
回复

使用道具 举报

6#
发表于 2018-1-24 17:39:23 | 只看该作者
memtest86+5.01.bin.lzma 不能解压缩。你如何使用 7-zip 解压?
度盘吧没有 memtest86+5.01.bin
回复

使用道具 举报

7#
发表于 2018-1-24 18:54:16 | 只看该作者
原来 memtest86+5.01.bin.lzma 就是 memtest86+5.01.bin
回复

使用道具 举报

8#
 楼主| 发表于 2018-1-25 08:33:26 | 只看该作者
2011yaya2007777 发表于 2018-1-24 18:54
原来 memtest86+5.01.bin.lzma 就是 memtest86+5.01.bin

对啊 我懒 解压后就没改名了
之前是以为是因为压缩了才不能运行
回复

使用道具 举报

9#
发表于 2018-1-29 10:13:50 | 只看该作者
这几天鼓捣菜单跳转,却无意间解决了楼主报告的bug。
bug可能是编译时堆栈占用空间引起的冲突。

现在在菜单中可以相批处理一样,使用 goto :label
例:
title test
echo This is a test string
set /p os=Please Input:
if /i %os%==1 && goto :label1
if /i %os%==2 && goto :label2
echo -e \nInvalid input
goto :aaa
:label1
echo -e \nThis is a label1
goto :aaa
:label2
echo -e \nThis is a label2
:aaa
set os=
pause

请测试

grldr.rar

162.99 KB, 下载次数: 3, 下载积分: 无忧币 -2

回复

使用道具 举报

10#
 楼主| 发表于 2018-1-29 12:15:00 | 只看该作者
2011yaya2007777 发表于 2018-1-29 10:13
这几天鼓捣菜单跳转,却无意间解决了楼主报告的bug。
bug可能是编译时堆栈占用空间引起的冲突。


测试好像通过了
回复

使用道具 举报

11#
发表于 2018-2-27 11:19:18 | 只看该作者
最新版本已经上传,编译环境改成gcc-4.6,我测试了启动memtest正常.你们再试试看
回复

使用道具 举报

12#
发表于 2018-2-27 17:40:56 | 只看该作者
确实可以了.
回复

使用道具 举报

13#
发表于 2018-2-27 20:26:35 | 只看该作者
如果是 gcc 版本的原因,那应该明确记录一下,比如说,写在 readme 里面,让大家都知道。

最好能试试最新版的 gcc,看看行不行。

还有一个思路,试试 clang,它完全兼容 gcc,我感觉 clang 非常棒。但我不知道 clang 能否用来编译 grub4dos (没试验过)。


回复

使用道具 举报

14#
 楼主| 发表于 2018-2-27 21:45:24 | 只看该作者
新版gcc的锅?
回复

使用道具 举报

15#
发表于 2018-2-28 09:44:19 | 只看该作者
grub4dos_dev内部是: gcc-4.8,git-1.6,binutils-2.22,libssl-0.9.8,linux-3.0.1_api_headers。
回复

使用道具 举报

16#
发表于 2018-2-28 11:54:20 | 只看该作者
2011yaya2007777 发表于 2018-2-28 09:44
grub4dos_dev内部是: gcc-4.8,git-1.6,binutils-2.22,libssl-0.9.8,linux-3.0.1_api_headers。


有问题的编译环境也是gcc-4.8 版本号是gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4

现在的编译环境使用的是https://travis-ci.org提供的.
回复

使用道具 举报

17#
 楼主| 发表于 2018-2-28 19:48:56 | 只看该作者
chenall 发表于 2018-2-28 11:54
有问题的编译环境也是gcc-4.8 版本号是gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4

现在的编译环境 ...

是GCC的BUG吗?
他们会修吗?
回复

使用道具 举报

18#
发表于 2018-2-28 22:28:14 | 只看该作者
求道者 发表于 2018-2-28 19:48
是GCC的BUG吗?
他们会修吗?

他们修不修,似乎与我们关系不大。我估计没什么人去报告 bug,就算有人想去报告,可能也不知道该怎么报告。

我建议 “试试”,就是说,我们以 “试验” 的方式,来判断哪个版本有问题。那些经过试验判断 “有错误” 的版本,肯定不好,就被淘汰掉。只留下 “没有暴露出问题” 的版本。

所以,我觉得应该试试 gcc 的最新版,以及 clang 的最新版。

有鉴于 gcc 总在出问题,因此我建议各位考虑逐步采纳 clang。
回复

使用道具 举报

19#
发表于 2018-3-1 00:53:42 | 只看该作者
我试着用clang编译,检测报错

configure: error: GRUB requires GAS .code16 addr32 support
回复

使用道具 举报

20#
发表于 2018-3-1 09:07:40 | 只看该作者
本帖最后由 不点 于 2018-3-1 09:17 编辑
chenall 发表于 2018-3-1 00:53
我试着用clang编译,检测报错

configure: error: GRUB requires GAS .code16 addr32 support


搜到一些知识或方法,说明如下:

We disabled clang's integrated assembler (and rely on gas for linking)

                Reason:
                           no .code16 support
                           inline assembly handling

  1. arch/x86/boot/Makefile
  2. +# For clang we need to rely on no-integrated-as for .code16
  3. +ifeq ($(COMPILER),clang)
  4. +KBUILD_CFLAGS  +=  -Wno-unused-value -Wno-unused-parameter \
  5. +                    -mno-sse   $(call cc-option,-no-integrated-as,)
  6. +endif
复制代码


这不是针对 grub,但他的方法可以借鉴。

至于说 data32 和 addr32,这好办,它们只是指令修饰符(指令前缀),分别改成

.byte   0x66
.byte   0x67

即可。


【补充】在 asm 方面,可能困难比较多,看来目前还不能用 clang 来编译。

暂时放弃 clang 吧,看看 gcc 最新版行不行。
回复

使用道具 举报

21#
发表于 2018-3-1 10:22:37 | 只看该作者
本帖最后由 chenall 于 2018-3-1 10:34 编辑

我测试了几个版本4.6-5.0,目前只有4.6的可以正常启动,其它版本都会异常.
回复

使用道具 举报

22#
发表于 2018-3-1 11:42:42 | 只看该作者
chenall 发表于 2018-3-1 10:22
我测试了几个版本4.6-5.0,目前只有4.6的可以正常启动,其它版本都会异常.

最新版的 gcc 是 7.3,有机会可以试试。
回复

使用道具 举报

23#
发表于 2018-3-1 12:56:21 | 只看该作者
chenall 发表于 2018-3-1 10:22
我测试了几个版本4.6-5.0,目前只有4.6的可以正常启动,其它版本都会异常.

我想请教 chenall 有关创建 cling 改进项目的问题。

cling 已经有 79 个 fork 了,我也不可能一个一个去检验 fork 以后的这 79 个版本是否有改进。

不过我也担心,假如我做了别人早就做好的工作,那是浪费。

我对 git 的东西也不是很熟,要学知识,而我确实懒惰,尤其到了我这岁数,更不想折腾。

目前我是有些纠结。

我看到 chenall 也很忙,因此,也不好意思总是给 chenall 添麻烦。

不过,如果 chenall 碰巧也对 cling 有兴趣的话,或许这不算太麻烦。

直说了吧,chenall 有没有可能开辟这个 cling 改造项目?

不需要经常更新,只要偶尔有空的时候,更新一下便可。我可以把补丁发在论坛上。

chenall 愿意投入时间进行开发,那最好了。如果不想投入开发,只要简单维护一下便可。

还有没有其他人愿意参加?都可以一起搞。

回复

使用道具 举报

24#
发表于 2018-3-1 12:57:22 | 只看该作者
如果最新版的gcc试过编译g4d仍然有问题,应该向gcc开发团队汇报bug,这也氏对gcc开发工作的支持。
大家都想用bug更少的编译噐,但只有汇报bug才有可能让开发团队解决问题啊。

回复

使用道具 举报

25#
发表于 2018-3-1 13:11:43 | 只看该作者
gnuxwy 发表于 2018-3-1 12:57
如果最新版的gcc试过编译g4d仍然有问题,应该向gcc开发团队汇报bug,这也氏对gcc开发工作的支持。
大家都 ...

bug 难以描述。定位 bug 很不容易。

先用 “试验” 的办法,看看最新版是否解决了。如果最新版没问题,那就 OK 了。

如果最新版也有问题,那就难了。有可能最终只能转向 clang。

还有一个办法,就是,永远只使用某个版本的 gcc 来编译 grub4dos。

恕我直言,我怀疑 gcc 里面混有间谍搞破坏。若干年前我都开始怀疑了。
回复

使用道具 举报

26#
发表于 2018-3-1 15:03:44 | 只看该作者
这个是用GCC-7编译的,大家可以先测测看有没有其它问题。

没有什么问题的话到时再把编译环境修改为gcc-7版本

grub4dos-0.4.6a-2018-03-01.7z

509.05 KB, 下载次数: 13, 下载积分: 无忧币 -2

回复

使用道具 举报

27#
发表于 2018-3-2 09:41:11 | 只看该作者
测试memtest86+5.01.bin正常.
回复

使用道具 举报

28#
发表于 2018-3-2 13:05:59 | 只看该作者
屮从未在g4d的命令行环境执行过memtest。
若要测试的话氏直接在命令行执行系列命令,还氏修改menu.lst加入多行命令。
grub4dos的范例菜单没有提供运行memtest86的命令,屮看了下grub2的菜单条,居然这么多条命令。

menuentry 'Memory test (memtest86+, serial console 115200)' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos8'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos8 --hint-efi=hd0,msdos8 --hint-baremetal=ahci0,msdos8  f30e6b8f-1999-41a1-98f9-256c644a0949
        else
          search --no-floppy --fs-uuid --set=root f30e6b8f-1999-41a1-98f9-256c644a0949
        fi
        linux16        /boot/memtest86+.bin console=ttyS0,115200n8
}
回复

使用道具 举报

29#
发表于 2018-3-2 18:38:41 | 只看该作者
gnuxwy 发表于 2018-3-2 13:05
屮从未在g4d的命令行环境执行过memtest。
若要测试的话氏直接在命令行执行系列命令,还氏修改menu.lst加入 ...

在百度搜 “grub4dos memtest86” 找到的第一个网页就是:

http://www.rmprepusb.com/tutorials/memtest86

它里面的菜单如下:

  1. title memtest86+ v4.10
  2. find --set-root /memtest.img
  3. map /memtest.img (fd0)
  4. map --hook
  5. chainloader (fd0)+1
  6. rootnoverify (fd0)
  7. map --floppies=1
复制代码
回复

使用道具 举报

30#
发表于 2018-3-3 12:09:37 | 只看该作者
管网又不能自动编译发布了!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-26 08:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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