g4d bug回报
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 yaya不在? 求道者 发表于 2018-1-23 22:46
yaya不在?
你帮他找找毛病吧。yaya 好像不是天天都来的。
本帖最后由 2011yaya2007777 于 2018-1-24 10:18 编辑
知道了。请上传 img 格式的文件。
请上传 memtest86+5.01.bin 。解压缩错误。 2011yaya2007777 发表于 2018-1-24 06:22
知道了。请上传 img 格式的文件。
请上传 memtest86+5.01.bin 。解压缩错误。
我这边7-zip解压没问题
我传个度盘吧
https://pan.baidu.com/s/1sniaKln memtest86+5.01.bin.lzma 不能解压缩。你如何使用 7-zip 解压?
度盘吧没有 memtest86+5.01.bin 原来 memtest86+5.01.bin.lzma 就是 memtest86+5.01.bin 2011yaya2007777 发表于 2018-1-24 18:54
原来 memtest86+5.01.bin.lzma 就是 memtest86+5.01.bin
对啊 我懒 解压后就没改名了
之前是以为是因为压缩了才不能运行 这几天鼓捣菜单跳转,却无意间解决了楼主报告的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
请测试
2011yaya2007777 发表于 2018-1-29 10:13
这几天鼓捣菜单跳转,却无意间解决了楼主报告的bug。
bug可能是编译时堆栈占用空间引起的冲突。
测试好像通过了 最新版本已经上传,编译环境改成gcc-4.6,我测试了启动memtest正常.你们再试试看 确实可以了.{:1_194:} 如果是 gcc 版本的原因,那应该明确记录一下,比如说,写在 readme 里面,让大家都知道。
最好能试试最新版的 gcc,看看行不行。
还有一个思路,试试 clang,它完全兼容 gcc,我感觉 clang 非常棒。但我不知道 clang 能否用来编译 grub4dos (没试验过)。
新版gcc的锅? grub4dos_dev内部是: gcc-4.8,git-1.6,binutils-2.22,libssl-0.9.8,linux-3.0.1_api_headers。 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提供的. chenall 发表于 2018-2-28 11:54
有问题的编译环境也是gcc-4.8 版本号是gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
现在的编译环境 ...
是GCC的BUG吗?
他们会修吗? 求道者 发表于 2018-2-28 19:48
是GCC的BUG吗?
他们会修吗?
他们修不修,似乎与我们关系不大。我估计没什么人去报告 bug,就算有人想去报告,可能也不知道该怎么报告。
我建议 “试试”,就是说,我们以 “试验” 的方式,来判断哪个版本有问题。那些经过试验判断 “有错误” 的版本,肯定不好,就被淘汰掉。只留下 “没有暴露出问题” 的版本。
所以,我觉得应该试试 gcc 的最新版,以及 clang 的最新版。
有鉴于 gcc 总在出问题,因此我建议各位考虑逐步采纳 clang。
我试着用clang编译,检测报错
configure: error: GRUB requires GAS .code16 addr32 support
本帖最后由 不点 于 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
arch/x86/boot/Makefile
+# For clang we need to rely on no-integrated-as for .code16
+ifeq ($(COMPILER),clang)
+KBUILD_CFLAGS+=-Wno-unused-value -Wno-unused-parameter \
+ -mno-sse $(call cc-option,-no-integrated-as,)
+endif
这不是针对 grub,但他的方法可以借鉴。
至于说 data32 和 addr32,这好办,它们只是指令修饰符(指令前缀),分别改成
.byte 0x66
.byte 0x67
即可。
【补充】在 asm 方面,可能困难比较多,看来目前还不能用 clang 来编译。
暂时放弃 clang 吧,看看 gcc 最新版行不行。
本帖最后由 chenall 于 2018-3-1 10:34 编辑
我测试了几个版本4.6-5.0,目前只有4.6的可以正常启动,其它版本都会异常. chenall 发表于 2018-3-1 10:22
我测试了几个版本4.6-5.0,目前只有4.6的可以正常启动,其它版本都会异常.
最新版的 gcc 是 7.3,有机会可以试试。 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 愿意投入时间进行开发,那最好了。如果不想投入开发,只要简单维护一下便可。
还有没有其他人愿意参加?都可以一起搞。
如果最新版的gcc试过编译g4d仍然有问题,应该向gcc开发团队汇报bug,这也氏对gcc开发工作的支持。
大家都想用bug更少的编译噐,但只有汇报bug才有可能让开发团队解决问题啊。
gnuxwy 发表于 2018-3-1 12:57
如果最新版的gcc试过编译g4d仍然有问题,应该向gcc开发团队汇报bug,这也氏对gcc开发工作的支持。
大家都 ...
bug 难以描述。定位 bug 很不容易。
先用 “试验” 的办法,看看最新版是否解决了。如果最新版没问题,那就 OK 了。
如果最新版也有问题,那就难了。有可能最终只能转向 clang。
还有一个办法,就是,永远只使用某个版本的 gcc 来编译 grub4dos。
恕我直言,我怀疑 gcc 里面混有间谍搞破坏。若干年前我都开始怀疑了。
这个是用GCC-7编译的,大家可以先测测看有没有其它问题。
没有什么问题的话到时再把编译环境修改为gcc-7版本 测试memtest86+5.01.bin正常. 屮从未在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,msdos8f30e6b8f-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
}
gnuxwy 发表于 2018-3-2 13:05
屮从未在g4d的命令行环境执行过memtest。
若要测试的话氏直接在命令行执行系列命令,还氏修改menu.lst加入 ...
在百度搜 “grub4dos memtest86” 找到的第一个网页就是:
http://www.rmprepusb.com/tutorials/memtest86
它里面的菜单如下:
title memtest86+ v4.10
find --set-root /memtest.img
map /memtest.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1 管网又不能自动编译发布了!
页:
[1]
2