无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: zhaohj
打印 上一主题 下一主题

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
181#
发表于 2013-5-14 00:30:08 | 显示全部楼层
zxw 发表于 2013-5-13 22:09
发现同是二级目录,只file文件下有此现象。灵机一动,试着将file下的文件夹转移,重建file文件夹。
此时, ...

文件系统自己的事。与 grub4dos 无关。

grub4dos 不能识别 DOS 8.3 格式的中文文件名。必须采用后来新版的 FAT 长文件名格式才行。FAT 长文件名采用 unicode 编码(grub4dos 用 UTF-8 格式来表示它),这才是 grub4dos 所支持的。

回复

使用道具 举报

182#
发表于 2013-5-23 08:59:58 | 显示全部楼层
本帖最后由 不点 于 2013-5-23 09:01 编辑

我感觉是你自己搞错什么了吧?

GRLDR 的开头 16 扇区,那是不会随便改动的。我印象中,有好长时间没有动它了。你自己看看更新记录。

一个没有改动的东西,怎么可能有时候成功,而有时候失败呢?难道又是编译器出错了?

回复

使用道具 举报

183#
发表于 2013-5-23 15:05:59 | 显示全部楼层
没错,grldr 的不同版本,在代码上肯定有差别。因为不同版本的 grldr 的文件长度也是不同的。就是说,引导扇区只能引导相同版本的 grldr。这是光盘特殊性决定的。

回复

使用道具 举报

184#
发表于 2013-5-24 02:16:50 | 显示全部楼层
怀疑是改grldr改的毛病。你没有试试不改,会不会就好了呢?
回复

使用道具 举报

185#
发表于 2013-5-24 09:42:46 | 显示全部楼层
2011yaya2007 发表于 2013-5-24 06:59
grldr 的长度,会间接反映在头部扇区。那里有测试标签的代码,用以判断是否全部加载了 grldr。
grldr 头部 ...

是的,0.4.6 的 CD 引导代码才是比较通用的。由于个人身体原因,至今没有研究 yaya 的代码。

不过,我在这里顺便说说旧的 0.4.5 的 CD 引导逻辑。

正如 yaya 所说,当 2048 字节(一个 CD 扇区)的引导代码接管控制后,它要在整个 CD 上查找 GRLDR 这个文件。查找的逻辑不是按照 ISO9660 文件系统的结构来的,因为旧的 0.4.5 引导代码不使用 iso9660 文件系统知识,0.4.6 是使用 iso9660 文件系统来查找的。

0.4.5 是按照扇区来查找。逐个读入 CD 的扇区(2048 字节),一旦发现有某个扇区与所装载的扇区相同,就继续装载后续的扇区,直到发现了这个文件在规定的字节处的 b0 02 1a ce 标志,就认为加载成功。如果没有发现 b0 02 1a ce 标志,或者 b0 02 1a ce 标志的位置不与此版本的 grldr 匹配,则认为当初的 2048 字节位置是假的(不是 grldr 的开始扇区),放弃它,继续读入下一个 CD 扇区,重复以上步骤。

回复

使用道具 举报

186#
发表于 2013-5-24 11:09:08 | 显示全部楼层
grub4dos 正式文档,没有提到可以截取 2048 字节作为 CD 引导的事情。

grub4dos 所支持的 ISO 制作软件是 mkisofs,遇到启动失败、异常,必须用 mkisofs 来试验。只有当 mkisofs 制作的 iso 也有同样的失败、异常时,这才认为是一个无可挑剔的、一个应该被接受的 bug 报告。

用户和 PE 开发者可以选择自己喜欢的任何方式来启动 GRLDR。但是,grub4dos 的开发者可能没有能力提供那么多的技术支持,换句话说,就是放弃对于某些使用方式提供技术支持。

回复

使用道具 举报

187#
发表于 2013-5-24 12:15:14 | 显示全部楼层
本帖最后由 不点 于 2013-5-24 18:43 编辑
chiannet 发表于 2013-5-24 10:16
不点大这么解释就让人明白了.不知道原来从哪里看到的所谓传闻,说可以截取GRLDR头2048作ISO的引导文件.看 ...


不过确实发现了 bug,请等待修复。

我已经上载了源代码到时空论坛。我自己目前没有编译环境。你等待 chenall 的编译结果吧。

回复

使用道具 举报

188#
发表于 2013-6-9 15:42:18 | 显示全部楼层
手动设置 blksize 为 1408,看看能否正常工作?

经由 bootmgr 启动之后,grldr 就不知道它是不是经由 PXE 而启动了。所以,自动探测 blksize 的步骤就没有执行。

因此,你可以试试在命令行敲入 pxe detect ,看看可否执行探测。

回复

使用道具 举报

189#
发表于 2013-6-9 17:03:00 | 显示全部楼层
如果在菜单 menu.lst 中执行 pxe detect,那肯定会反复执行 menu.lst 文件。这是因为 pxe detect 执行的时候,要自动寻找 menu.lst 并执行它。于是这就产生了无限循环。

pxe 带上一个非法的文件名作为参数,就阻止自动寻找 menu.lst 文件了。就是说,只是探测 blksize,不再查找 menu.lst 文件。

回复

使用道具 举报

190#
发表于 2013-6-16 07:28:03 | 显示全部楼层
pseudo 发表于 2013-6-16 00:15
可否考虑让g4d支持后台运行。
例如:出菜单后,在等待用户选菜单项那会儿,后台做个map --mem操作,使得选 ...

你说的属于多任务功能吧。grub4dos 像 dos 一样是单任务的,每次只能执行一个任务,任务完成之后,才能执行下一个任务。因此目前实现不了。
回复

使用道具 举报

191#
发表于 2013-7-9 10:24:33 | 显示全部楼层
thttht 发表于 2013-7-9 09:36
请教grub4dos 的 map 仿真磁盘是不是有大小的限制啊?
我在map /aa.img (hd0) 时直接报错,说文件不连续, ...

先用 grub4dos 的 blocklist /aa.img 命令,列出 aa.img 的碎块,看看是否只有一个碎块。如果只有一个碎块,那就是连续的。否则,就是不连续的。

WinContig 或许有 bug 呢?你再试试微软自己的 contig 命令。

回复

使用道具 举报

192#
发表于 2013-12-6 19:31:31 | 显示全部楼层
你得辛苦一下,确定成功与失败的分界线:在某日之前的版本都是成功的,之后都是失败的。如果不能精确定位,那就很难解决,无从下手。

点评

测试了。 网上 grub4dos-0.4.5b-2011-07-14.7z 及以前的版本能启动。 网上 grub4dos-0.4.5b-2011-07-24.7z 及以后的版本 不能 启动。 测试包: http://u.115.com/file/dnhpip54#毛桃PE迷你版3b1.fba (  详情 回复 发表于 2013-12-7 14:08
回复

使用道具 举报

193#
发表于 2013-12-7 16:30:05 | 显示全部楼层
本帖最后由 不点 于 2013-12-7 16:31 编辑

非常好,那就可以确定是怎么回事了。是 r199 的改动引起的。

(tinybit)added a map option --int15nolow. Some changes on handler.

你必须使用 map --int15nolow=1 命令来解决你的问题。这条命令应该位于 map --hook 之前,它在 map --hook 执行之后才起作用。以前有过介绍,你可以搜索以前的帖子。

技术原因是,你的 PE 有 bug,在特定主板下暴露出问题。老版本的 grub4dos 没有 int15nolow 的参数控制,实际执行的相当于新版的 map --int15nolow=1,所以,老版本的 grub4dos 可以工作。新版增加了 int15nolow 参数,并调整为 map --int15nolow=0 的默认值,这本来是正确的,但你的 PE 有 bug,不适应了。

所以你必须在 map --hook 之前使用 map --int15nolow=1 命令来解决你的问题。

点评

还是不行啊:菜单 menu\xppe.lst 改为 grub4dos-0.4.5b-2011-07-24\chinese 的grldr,失败  详情 回复 发表于 2013-12-7 21:50
回复

使用道具 举报

194#
发表于 2013-12-8 04:41:34 | 显示全部楼层
从你前面所说的测试结果来看,就只有 int15nolow 的改动了。根本没有图形显示方面的改动。

估计是你搞错了,比如把版本搞错,或者把菜单文件搞错,导致改动后的菜单文件根本没有被使用。

是不是你还有别的某个 grldr 是旧版的?比如说 xppe.iso 里面有个旧版的 grldr 在起作用?

你可以再试试最新版。

就这些了,别的我也无能为力了,无论成功与否,我就不再解决这个问题了。

回复

使用道具 举报

195#
发表于 2014-4-27 22:34:13 | 显示全部楼层
8PE 放在 ud 的可见区(FAT32格式),我觉得已经很完美了。整合到 ud 区,无非就是为了隐藏。我对隐藏没有多少认识。我认为不隐藏更好。启动相关的话题里面,启动成功率排第一位,而隐藏不隐藏,完全是第二、第三位的概念了。

我正打算给 pseudo 提建议,让他尝试我在前不久制作的 24M mbr 启动格式,用来作为 ud 的一个替代品。当然了,这个替代品不会再有 ud 之类的隐藏功能,但它优势的地方恰恰也在于此,即,它是普通 FAT32 格式,所有的操作系统都可以访问它的文件。

回复

使用道具 举报

196#
发表于 2014-4-28 14:46:53 | 显示全部楼层
原来讨论过 ud 改造的问题,兼容性难以解决。当然,可以不考虑兼容性,制作一个新的 ud 格式。然而编程的人恐怕难找了。这也是哲学。

bean 很早就脱离了,我也脱离了。chenall 目前好像也很少露面了。只有 yaya 还比较活跃。很明显,grub4dos 缺乏开发者。如果 jianliulin 能够参与的话,或许情况会有很大改观。

回复

使用道具 举报

197#
发表于 2014-6-11 08:18:28 | 显示全部楼层
无垠 发表于 2014-6-4 21:30
现在遇到的问题是:在有些老机上,把U盘识别为zip,用一下命令

chainloader (fd0,1)/bootmgr || chainlo ...

至少应该试试把软盘映射为硬盘,这是 “基本功”:

map (fd0) (hd0)        把软盘变成第一硬盘
map (hd0) (hd)         把第一硬盘变成最末尾的硬盘
map --hook
chainloader (hd0,0)/bootmgr
root (hd0,0)
boot

点评

加了个自动判断语句,多次实验终于能够fd/hd都能chainloader (hd0,0)/bootmgr进8PE系统了  详情 回复 发表于 2014-6-11 10:40
太好了,谢谢大师,我试试!  发表于 2014-6-11 08:22
回复

使用道具 举报

198#
发表于 2014-11-12 09:09:41 | 显示全部楼层
captain_g 发表于 2014-11-12 08:55
Tiny PXE Server 网启,用 grldr 作网启文件,试用了 2014-11-03 及 2014-11-10 0.46a 版的 grldr,网启后 ...

2014-11-02 这个版本你没有测试。请补充测试,以便定位出错的根源。另外,也请测试 0.4.5c 的情况,因为 0.4.5c 被作为稳定的 production 级的应用,而 0.4.6a 是前沿开发版本。

点评

谢谢 不点!我再找时间测试。  详情 回复 发表于 2014-11-12 11:14
回复

使用道具 举报

199#
发表于 2014-11-13 16:09:24 | 显示全部楼层
本帖最后由 不点 于 2014-11-13 16:16 编辑
captain_g 发表于 2014-11-13 11:11
@ 不点

昨晚在家测试了一下,使用了2014-10-29,2014-11-02/03/11的0.45c 和 0.46a个版本的grldr;


是你服务器端配置错误造成的。你的服务器端的菜单初始化命令当中不应该存在 pxe detect 命令,这条命令可以放在 title 命令之后,但不可以放在 title 命令之前的初始化命令里面,因为那样会造成 pxe detect 循环死机。内置菜单的菜单初始化命令中必须有 pxe detect 命令,它的作用是自动探测客户端 BIOS 所使用的 pxe block size 的大小,这个至关重要。就好比从 USB 启动必须探测 CHS(或采用 fbinst 技术)那样,这里的 pxe detect 命令(后面不带 blksize 参数)也起着同样的作用,就是自动探测客户端 pxe BIOS 的 block size 值。错误的 blksize 值会引起死机,恰如错误的 CHS 也会引起 USB 启动失败那样。

pxe detect 命令必须放在内置菜单的初始化命令中。其他场合通常用不着 pxe detect 命令。请检查你的配置文件。

点评

谢谢 不点 指点迷津! 菜单 title 命令之前确实 有一句:checkrange 0x21 read 0x8280 && pxe detect  详情 回复 发表于 2014-11-13 16:20
回复

使用道具 举报

200#
发表于 2014-11-13 16:27:38 | 显示全部楼层
captain_g 发表于 2014-11-13 16:20
谢谢 不点 指点迷津!

菜单 title 命令之前确实 有一句:checkrange 0x21 read 0x8280 && pxe detect

把这句删除掉就好了。就是,把一整行都删除掉。
回复

使用道具 举报

201#
发表于 2015-1-30 21:03:55 | 显示全部楼层
本帖最后由 不点 于 2015-1-30 22:15 编辑

我最初实现的是,由 map 命令自动增加软盘和硬盘个数,map --hook 和 --unhook 都不改变软盘和硬盘个数。

如果要改动,那就改成 map 命令不改变软盘和硬盘个数,而是延迟到 map --hook unhook rehook 时才改变其个数。

改动与否,由 chenall 来权衡和实施。

点评

zxw
>>如果要改动,那就改成 map 命令不改变软盘和硬盘个数,而是延迟到 map --hook unhook rehook 时才改变其个数。 嗯,这样我觉得更为合理。  详情 回复 发表于 2015-1-30 21:34
回复

使用道具 举报

202#
发表于 2015-9-24 16:14:30 | 显示全部楼层
xhwfq 发表于 2015-9-11 13:53
grub4dos 0.46a 2015-8-25 问题一只:

map --mem=0x10000 /pe.iso (rd)


你在 32M 处建立 rd,此 rd 的内容很容易被后续的命令破坏掉。

因为无论 grub4dos 的内核还是外部命令,都要使用 32M 附近处的内存。

由 chenall 增强了的 grub4dos,在内核中大量使用了 malloc 函数,这个函数会使用 32M 以上的内存,这很容易与你的 rd 产生冲突。
回复

使用道具 举报

203#
发表于 2016-1-15 21:19:38 | 显示全部楼层
2010nmb 发表于 2016-1-15 19:09
还原字体比例,再次截图:

对攻击者不能有胸怀;况且我本来就没有胸怀。

开发者很忙,我不想让他们浪费时间来处理虚假 bug 报告。

因此,我的目的只有一个,即,简单提醒他们,这不是一个正常的 bug 报告,而是虚假的 bug 报告。

无忧启动论坛最近几个月来太乱了,攻击力度在增加,网站处于瘫痪。

发布虚假 bug 报告,尚属首例,我个人判定这是攻击行为的一种。至于说网站管理者是否认定这是攻击,那我就不得而知了。

回复

使用道具 举报

204#
发表于 2016-6-21 09:29:16 | 显示全部楼层
2011grassll 发表于 2016-6-21 09:10
virtualbox中等待timeout时间时,占用cpu很高,0.4.5c从2012-10-02.7z起有问题,2012-06-19.7z是正常的,grub4d ...

这是已知问题,不能恢复到以前的状况。请把 timeout 设为 1 秒。

hlt 指令就是用于解决这个问题的。但是,hlt 指令会导致某些虚拟机死机。因此,为了不让死机发生,只好删除 hlt 指令。但是,不用 hlt 指令,就会在空闲时仍然占用 CPU。

无法解决。只能是尽量把 timeout 设置小一点。

回复

使用道具 举报

205#
发表于 2017-4-10 20:46:12 | 显示全部楼层
510819776 发表于 2017-4-10 20:00
不点大师
grub4dos的splashimage /1.bmp
在我的1920x1200分辨率的bmp图片上不好用了

新的图片显示,yaya 在做。以前旧的图片,不支持与屏幕分辨率不匹配的情况。

我猜你说的那些小黑花纹,是图片处理时带来的问题。你直接在论坛上开个新帖,好让 yaya 能够看到。这个 bug 报告专帖有很多垃圾(机器人,攻击者),实际上已经没人在这里面报告 bug 了。
回复

使用道具 举报

206#
发表于 2017-9-11 06:54:42 | 显示全部楼层
楼上的 yun2673436976,很抱歉,我解决不了你的问题。但是,我来给你泼一盆冷水,没准还对你有点用。

简单一句话:联想一体机就是 “trouble”的代名词。联想一体机本来就是为了制造麻烦的。我们公司里有好多联想一体机,维修过很多次,全都不正常。有一台联想一体机竟然不能以任何方式从 USB 启动(既不能用 BIOS 模式启动,也不能用 UEFI 模式启动)。它曾经可以从 USB 启动,后来就不行了。其他联想一体机也是无法正常使用,三天两头出问题,Windows 都出五花八门的问题,频繁死机。

希望你能看明白我的意思:别再浪费自己宝贵的时间和精力了。
回复

使用道具 举报

207#
发表于 2017-9-11 19:46:05 | 显示全部楼层
yun2673436976 发表于 2017-9-11 17:55
谢谢你的回复。不点大师请你仔细看图片旁边的标题,仔细看图片在回答问题。我用grub4对ntboot.iso win1 ...

我前面一帖是认真回复的。我已经看清楚了你的报告内容。依我看,根本无法解决。我自己遇到了一大堆联想一体机,而且我都可以上机调试的,然而,百般努力之后,个个都无法解决 :-( 。更何况你这台机器根本就不在我手边,那我就更难想象如何去解决了。这次我说清楚了吗?如果还含糊,那我总结一下:这个情况正好是我撞上的,我了解联想一体机的情况,因此,我判断——这台机器根本无法解决,一切努力都是白费。其实是这一批机器都无法解决。与 bug 无关。希望我这次说明白了。但不知道你能否读明白。

不厌其烦地再次声明,本人不是 grub4dos 的开发维护者,本人的任何言论,都只代表本人,不代表别的任何一个人。本人的任何答复,都不代表 grub4dos 开发维护者的答复。本人的任何意见,都不代表开发维护者的意见。

我认为 grub4dos 的 bug,可以在本论坛进行反馈。当然,你也可以到 chenall 所建立的 grub4dos 项目空间上提交 issue。开发维护者经常出现在本论坛,他们看到你的 bug 报告,肯定会重视的,我认为你不用担心他们不重视你的 bug 报告。我认为,他们不可能不重视。

但假如他们碰巧像我一样认为你这个问题根本无法解决,那也有可能就不予答复了。要知道,他们很忙。谢天谢地,那是缘分——他们能有兴趣坚持开发 grub4dos,这是非常不容易的。否则,假如他们像我一样退出开发团队,那么,你再想报告 bug,那就没人受理了,完全没人答理了。
回复

使用道具 举报

208#
发表于 2017-9-12 16:23:57 | 显示全部楼层
yun2673436976 发表于 2017-9-12 15:16
我是用你开发的grub4启动iso,我是用bootice1.3.3安装grub4到usb3.0移动硬盘。我在联想一体机上用grub4将is ...


chenall 工作很忙,不经常来这里。我来随便说说看法。

说不定正是由于联想电脑 “全球第一、全球最好”,它才可能让 grub4dos 转不起来呢。假如是一个杂牌货,说不定 grub4dos 还转得欢呢。

我有一个主意,不知对你是否有用:你可以让联想的销售人员替你解决这个问题。因为他们的电脑是全球最好的、不会比杂牌差,所以,他们应该很轻松地就给你解决了问题。grub4dos 是开源的,只要那些联想的销售人员(或他们的工程师)能够找出 grub4dos 的 bug,并打上补丁,我相信,chenall 会很乐意采纳的。

yaya 也在帮 chenall 维护 grub4dos。 最近 yaya 经常回答 github 上的问题,并解决 bug。

不过,我个人不希望 yaya 把宝贵的时间和精力用在这样一个 “不可能解决” 的问题上。

再次说明,本人只代表本人。本人讲的话,不管是对还是错,如果伤害到任何人,那都由本人负全责,不让其他人负任何责任。本人的行为是个人行为,与 grub4dos 开发团队无关。

根据我的判断,这个问题属于 “不可能解决” 的问题,或者说是不可能彻底解决的问题。基于这样一个判断,于是,我不希望 grub4dos 的开发者去花费宝贵的时间和精力。

前提条件讲明白了:我判断此问题 “不可能解决”。这判断是我个人做出的,不代表任何人(与别人的判断无关)。如果别人有不同的视角、不同的判断,那么结论也会不同。每个人都掌握着自己的真理。大家是自由的,谁也不可以对别人的思维、判断、言论、行为加以干涉或限制。

评分

参与人数 1无忧币 +1 收起 理由
yun2673436976 + 1 谢谢答复。

查看全部评分

回复

使用道具 举报

209#
发表于 2017-9-13 06:17:46 | 显示全部楼层
本帖最后由 不点 于 2017-9-13 06:23 编辑


我看得到你的图片。很详细的图片,按照常理,你这个报告属于非常好的 bug 报告。

但是,你撞上了一个 “不可能解决”的 bug。这 bug 是人力无法解决的,估计得烧香才行(甚至烧香都不一定行)。前面说了,再重复一次:我们公司有好几台这样的电脑,我亲自上阵,失败而归,根本无法解决问题。从技术细节上看,那些电脑出现的问题各不相同(五花八门)。但宏观上看,却似乎有共同点:都是不能正常使用(无一例外)。过了保修期,联想的售后服务人员都懒得再给我们提供服务了(给钱都不愿意来)。其中有一台严重的,Win7 系统不正常,想重装,却苦于无法从 USB 启动(既不支持 BIOS,也不支持 UEFI)(它曾经可以支持 BIOS 启动,原来曾经成功从 USB 启动过)。

你是年轻人,懂得尊重人,这一点很好。我感觉你的人际关系不会很差。不管干任何行业,都不可以“人际关系差”。这是首要的一件大事,是一切一切的前提条件。编程人员头脑通常比较聪敏。但这不代表很“精明”。有时候,过分的聪明反而是有害的(反被聪明误)。人际关系搞不好,会给自己的事业带来巨大的障碍,我有亲身体会(其实是惨痛的教训)(此处省略 5 万字)。因此我认为,不可以“只跟计算机打交道”。

世上没有真理。真理都在每个人手上攥着。硬件交流群的那位玩家所说的话,就是他所认识到的真理。你可能还会从别人那里获得别的忠告。你把这些知识汇总起来,加以分析判断,最后形成你自己的认识,那就是你的真理了。世上没有绝对的“对不对”,只有某个人在某一刻对某一事所认定的“对不对”;“对不对”是相对的。
回复

使用道具 举报

210#
发表于 2017-10-17 11:41:45 | 显示全部楼层
xhwfq 发表于 2017-10-17 07:36
我在acer一体机上使用grldr(4.5c,4.6a),bios里设置native ide,pxe启动找不到硬盘,而U盘启动能找到,是不是 ...

你得确定,是真的找不到硬盘吗?

有时候是自己弄错了,本来是能访问硬盘的,只是自己以为找不到而已。

需要给出证明。有图片也可,没有图片的话,能详细说明情况也可。

比如,执行以下命令,看看结果是啥?

geometry (fd0)
geometry (hd0)
geometry (fd1)
geometry (hd1)
geometry (hd2)
geometry (hd3)

root (fd0)
root (hd0,0)
root (hd0,1)
root (hd0,2)
root (hd0,3)
root (fd1)
root (hd1,0)
root (hd1,1)
root (hd1,2)
root (hd1,3)

ls (fd0)/
ls (hd0,0)/
ls (hd0,1)/
ls (hd0,2)/
ls (hd0,3)/
ls (fd1)/
ls (hd1,0)/
ls (hd1,1)/
ls (hd1,2)/
ls (hd1,3)/

cat  --hex   (fd0)+1
cat  --hex   (fd1)+1
cat  --hex   (hd0)+1
cat  --hex   (hd1)+1
cat  --hex   (hd2)+1
cat  --hex   (hd3)+1

以上是手动测试 “磁盘是否可访问” 的一些常规手段。

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-12 10:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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