无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
2899#
发表于 2013-12-7 21:50:15 | 只看该作者
本帖最后由 mdyblog 于 2013-12-7 21:57 编辑
不点 发表于 2013-12-7 16:30
非常好,那就可以确定是怎么回事了。是 r199 的改动引起的。

(tinybit)added a map option --int15nolow ...


还是不行啊:菜单 menu\xppe.lst 改为 (ANSI保存)
timeout 5
default 0

title 以兼容优先模式启动
    echo $[1106] loading winxp pe, please wait ...
    map (ud)/xppe.iso (0xff) || find --set-root /xppe.iso && map /xppe.iso (0xff)
    map --int15nolow=1
    map --hook
    chainloader (0xff)

title 以速度优先模式启动
    echo $[1106] loading winxp pe, please wait ...
    map --mem (ud)/xppe.iso (0xff) || find --set-root /xppe.iso && map --mem /xppe.iso (0xff)
    map --int15nolow=1
    map --hook
    chainloader (0xff)

title 返回主菜单  
    configfile (md)4+8
grub4dos-0.4.5b-2011-07-24\chinese  的grldr,失败


回复

使用道具 举报

2898#
发表于 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
回复

使用道具 举报

2897#
发表于 2013-12-7 14:08:44 | 只看该作者
本帖最后由 mdyblog 于 2013-12-7 14:19 编辑

不点 发表于 2013-12-6 19: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   (77M)

包含缩小FBA 的测试包(38M):http://pan.baidu.com/s/1rdm9P#grldr-XPPE-视屏不能初始化测试包.7z

上面去掉FBA的小测试包(530K):http://pan.baidu.com/s/1EdOQJ#grldr-XPPE-视屏不能初始化测试包-无FBA.7z

测试说明.txt:
测试 FBA 写到U盘或硬盘,
   启动选择: 运行老毛桃WinXP PE迷你系统  =》 以兼容优先模式启动

包内的是 7-14, 能启动
   另外 7-24及以后 的chinese-grldr 不能启动



测试机器:  Acer  ASPIRE  4750G    500G硬盘(设为SATA模式)

回复

使用道具 举报

2896#
发表于 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
回复

使用道具 举报

2895#
发表于 2013-12-6 18:36:49 | 只看该作者
反映一个奇怪的 BUG;
0.45b-UNICODE版 0.45c 0.46a  均有。

在SATA 的笔记本 上 启动 XPPE, 出现器官的错误:
Video dricver failed to init....
就是显卡出示华失败。

哪跟哪??? 错的也太奇怪了。


     为此我枪毙 了 很多XPPE/03PE 。 我以位新笔记本不能运行XPPE 03PE了。
直到最近 直接用U盘 启动   “经典再现——改进的老毛桃扬州PE UD版” , 不用硬盘上的 新版 GRUB 来加载。
发现 能启动成功。 后来把 其中的  XPPE.ISO 还成 我以前的XPPE 也能成功。硬盘上的更新后就能启动。
(此处省略200字)
研究了半天, 发现 用旧版的 grub4dos-0.4.5b-2011-06-28.sfx.zip  就能启动。硬盘上GRUB的更新后就能启动。
     这个版本不是UNICODE字体。 没有特别的 Video Driver.

我分析原因可能是 新版GRUB 用UNICODE字体, 开启了视频卡驱动, 用完 后没有善后恢复,就直接启动了系统。
   这样XPPE 检测到的是一个 被强奸的 的显卡。 不能按普通的 流程初始化。
能否象 PXE 一样, 启动系统前可以 关闭 Video服务,以善后恢复显卡。   

回复

使用道具 举报

2894#
发表于 2013-9-2 18:18:48 | 只看该作者
学习了!!
回复

使用道具 举报

2893#
发表于 2013-8-19 11:07:16 | 只看该作者
本帖最后由 kcyou 于 2013-8-19 11:36 编辑
kcyou 发表于 2013-8-19 10:01
怪哉!昨天试了一下把tools打包,map ()/boot/tools.iso时 用7月24日的grldr结果虚拟出来的光驱把TOOLS目录 ...

可能表达不清楚。
换6月30日的正常了。

   6月30日grldr ,按上图TOOLS.ISO  map后正常

7月24日grldr 需按上图制作TOOLS.ISO才map正常
否则虚拟出的光驱里没有TOOLS目录,直接看到的
是工具分类目录。
对不起,可能是UD的问题,属于偶然现象,将U盘格式化重新制作仍用7月24日的grldr又可以了.
回复

使用道具 举报

2892#
发表于 2013-8-19 10:01:01 | 只看该作者
怪哉!昨天试了一下把tools打包,map ()/boot/tools.iso时 用7月24日的grldr结果虚拟出来的光驱把TOOLS目录吞掉了,把TOOLS.ISO里面搞两重TOOLS目录可以了。而换grldr为2012年的正常。
map  ()/BOOT/TOOLS.ISO (0xfb))
map ()/MINIPE/WINPE.ISO (0xff)
map --hook
chainloader (0xff)/WXPE/SETUPLDR.BIN

点评

可能表达不清楚。 换6月30日的正常了。  详情 回复 发表于 2013-8-19 11:07
对不起,我中文理解力有限,看不懂问题描述。  发表于 2013-8-19 10:13
回复

使用道具 举报

2891#
发表于 2013-7-9 11:42:45 | 只看该作者
本帖最后由 thttht 于 2013-7-9 16:04 编辑

好的,那我用你的方法在试试!得晚上报告结果了!

我试了,的确是还有碎片!加在1.5gb的img成功!不好意思!!!
回复

使用道具 举报

2890#
发表于 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 命令。

回复

使用道具 举报

2889#
发表于 2013-7-9 09:36:01 | 只看该作者
请教grub4dos 的 map 仿真磁盘是不是有大小的限制啊?
我在map /aa.img (hd0) 时直接报错,说文件不连续,aa.img这个文件为1.2GB大小。文件已经用WinContig整理了,显示为连续文件了。
我把aa.img文件改成1GB大小没有问题,是不是map 文件不能大于1GB啊?
我用的是最近的几个版本,都这样
回复

使用道具 举报

2888#
发表于 2013-6-17 14:38:26 | 只看该作者
jianliulin 发表于 2013-6-16 21:42
grub4dos 在github 上的源码是不是最新的??

??,应该是一样的吧,和Google Code上的一样,基本上是同步更新的.
github上没有0.4.6a版本.
回复

使用道具 举报

2887#
发表于 2013-6-16 21:42:06 | 只看该作者
grub4dos 在github 上的源码是不是最新的??
回复

使用道具 举报

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

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

使用道具 举报

2885#
发表于 2013-6-16 00:15:56 | 只看该作者
可否考虑让g4d支持后台运行。
例如:出菜单后,在等待用户选菜单项那会儿,后台做个map --mem操作,使得选完菜单项后许多工作已准备就绪。

点评

你说的属于多任务功能吧。grub4dos 像 dos 一样是单任务的,每次只能执行一个任务,任务完成之后,才能执行下一个任务。因此目前实现不了。  详情 回复 发表于 2013-6-16 07:28
回复

使用道具 举报

2884#
 楼主| 发表于 2013-6-13 15:50:08 | 只看该作者
今天测试c大的replace.bat,发觉对特殊字符不灵。
如:set a=abcd\ABCD  想把\替换成/
replace.bat a \ /      失败
replace.bat a \\  /   变成a=abcd/BCD
回复

使用道具 举报

2883#
 楼主| 发表于 2013-6-13 09:00:45 | 只看该作者
请C大排查下面WENV的问题
http://bbs.wuyou.net/forum.php?m ... 07&fromuid=1835

点评

WENV 已经不再维护,你可以自己尝试修改源码解决  发表于 2013-6-13 09:08
回复

使用道具 举报

2882#
发表于 2013-6-12 22:50:26 | 只看该作者

@ chenall  

可否把 grub4dos 源码中build文件的147行 if ! 7z a ../${RELEASE}.7z grub4dos-${VER} ; then  改为 if ! 7zr a ../${RELEASE}.7z grub4dos-${VER} ; then 这样安装了p7zip包就可以压缩为7z格式, 目前还则需要再安装4M多的 p7zip-full 包才可以,否则就是用zip压缩


回复

使用道具 举报

2881#
 楼主| 发表于 2013-6-12 16:58:51 | 只看该作者
本帖最后由 zhaohj 于 2013-6-12 17:22 编辑

C大,WENV原来的临时内存位置是6M,如
char *f_buf = (char*)0x610000; //默认文件读取缓存位置
char *P=(char *)0x600000;        // 6M

建议改一下,发觉现在也有人在用WENV,但出现莫名问题。
回复

使用道具 举报

2880#
 楼主| 发表于 2013-6-12 10:49:58 | 只看该作者
表达方式是错误的,C语言没有字符串变量的说法(可以字符数组表示),只有字符常量与变量。
char b[ ]="  ";
------------------------
我的意思很简单,怎么把一个空格字符赋值给一个变量?或把多个空格赋值给字符串变量?
回复

使用道具 举报

2879#
 楼主| 发表于 2013-6-11 09:33:41 | 只看该作者
对空格字符(字符串)无法赋值,是一大遗憾。如
char a=' ' //一个空格字符
char b="  " //二个及以上空格字符
目前对数值可以用set /a赋给数值变量,能否改进对字符型变量的赋值方法。

点评

没看明白,有点不着头脑?? char b=" "语法这是错误的吧.  发表于 2013-6-11 17:02
回复

使用道具 举报

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

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

回复

使用道具 举报

2877#
 楼主| 发表于 2013-6-9 16:23:42 | 只看该作者
本帖最后由 zhaohj 于 2013-6-9 16:30 编辑

手动执行pxe detect正常,blksize是1408
我试着在外部配置文件menu.lst中加入pxe detect
出现:
-------------------
menu.lst中加入pxe detect not exist
正常了。好像这个是pseudo的原创命令,官方未见说明。

Snap0.jpg (19.01 KB, 下载次数: 135)

Snap0.jpg
回复

使用道具 举报

2876#
发表于 2013-6-9 15:42:18 | 只看该作者
手动设置 blksize 为 1408,看看能否正常工作?

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

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

回复

使用道具 举报

2875#
 楼主| 发表于 2013-6-9 09:21:01 | 只看该作者
本帖最后由 zhaohj 于 2013-6-9 09:22 编辑

pxe启动win8的pxeboot.n12-bootmgr.exe->grldr
发现blksize一直是512,纯千兆的网络环境测试也一样。
而pxe直接引导grldr目前是1408.
回复

使用道具 举报

2874#
发表于 2013-5-25 09:14:40 | 只看该作者
0.4.6a 版本,原来头部有从目录查查找 grldr 的代码,即头部 2048 字节与 grldr_cd.bin 相同,可以作为 CD 的引导代码。
后来支持 udf 格式,头部放不下代码,故又恢复到原 0.4.5c 状态。所以“所谓传闻”不是空穴来风。
回复

使用道具 举报

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


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

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

回复

使用道具 举报

2872#
发表于 2013-5-24 11:09:08 | 只看该作者
grub4dos 正式文档,没有提到可以截取 2048 字节作为 CD 引导的事情。

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

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

回复

使用道具 举报

2871#
发表于 2013-5-24 10:16:37 | 只看该作者
不点 发表于 2013-5-24 09:42
是的,0.4.6 的 CD 引导代码才是比较通用的。由于个人身体原因,至今没有研究 yaya 的代码。

不过,我 ...

不点大这么解释就让人明白了.不知道原来从哪里看到的所谓传闻,说可以截取GRLDR头2048作ISO的引导文件.看来此法并不十分靠谱。


用GRLDR整体作引导也有问题,例如用下面的语句创建所谓适用于BIOS的GRUB+UEFI双引导ISO后,

OSCDimg.exe -lmyiso -h -m -o -d -g -c -n -bootdata:2#p00,e,b"D:\mycddir\grldr"#pEF,e,b"d:\aaa\UEFI.BIN" "D:\mycddir" "D:\abc.ISO"

有可能无法启动!出现无法启动时,我们用ultraISO提取出D:\abc.ISO的引导文件为abc.bin,会发现abc.bin与指定的D:\mycddir\grldr二进制值不一致,查看abc.bin 的内置菜单,居然与D:\mycddir\grldr内置菜单不一致,可能是被OSCDimg.exe截取了。


现在我只好用BCDW中介暂时解决此问题:load.bin(iso引导文件)--->bcdw--->bcdw.ini-->grldr(与版本无关)。

OSCDimg.exe -lmyiso -h -m -o -d -g -c -n -bootdata:2#p00,e,b"D:\aaa\load.bin"#pEF,e,b"d:\aaa\UEFI.BIN" "D:\mycddir" "D:\abc.ISO"


修改BCDW.ini的内容,GRLDR可随意改名.
回复

使用道具 举报

2870#
发表于 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 扇区,重复以上步骤。

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-3 11:44

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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