无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
2581#
发表于 2012-5-22 19:50:14 | 只看该作者

回复 #2584 不点 的帖子

0.4.5C和0.4.6A 同日期的2012-05-22版本有什么区别?
回复

使用道具 举报

2582#
发表于 2012-5-22 19:56:32 | 只看该作者
原帖由 不点 于 2012-5-22 18:41 发表
请 xianglang 测试这个版本,看看硬盘 map 大文件有无加速。

zhaohj 说的现象,容我想想再回复。


速度一样。这次感觉没有前两天MAP 1.5GB的WIN7的VHD快,但是也比以前版本快,以前看到是8MB一跳,现在快了一倍多。另外,刚才我MAP --MEM一个WIN2003镜像,并没有使用MAP --HOOK就启动进入WIN2003(硬盘的第三个主分区装了WIN2003,启动进入2003是用FIND --SET-ROOT /NTLDR然后引导NTLDR的),结果启动进入的WIN2003系统不是硬盘上的,而是VHD中的RAMOS的2003!另外,MAP --MEM的一个红旗LINUX的ISO镜像,WIN2003(装有WINVBLOCK驱动)也认到了,不过现在再看,ISO的光驱消失了,而VHD的镜像盘还在!奇怪了,不是要HOOK了之后才起作用的么,怎么不HOOK也会启动MAP了的VHD中的系统?

注:刚才MAP --MEM的两个文件,VHD的是600MB,ISO是近1GB的。

[ 本帖最后由 xianglang 于 2012-5-22 19:57 编辑 ]
回复

使用道具 举报

2583#
发表于 2012-5-22 20:44:11 | 只看该作者

回复 #2583 zhaohj 的帖子

你的 Windows 程序运行慢或快,与 grub4dos 没有什么关系。

@hotdll

这里是我的测试版,chenall 主站上是稳定版。不一样。0.4.5c 是处于发布候选阶段。0.4.6a 处于 alpha 测试阶段。

0.4.5c 和 0.4.6a 的差别:0.4.6 系列改造了 grldr 的启动程序,在启动方面增加了一些功能,其他方面都与 0.4.5 系列相同。

@xianglang

适时执行 --hook 是必须的。如果省略,其效果可能与你的预期不同。

请你再换一个较大的文件进行 map --mem,用秒表对比一下刚才的版本与前几天的版本有没有速度差异。
回复

使用道具 举报

2584#
发表于 2012-5-22 21:02:26 | 只看该作者

回复 #2587 不点 的帖子

我测试了下,速度好像差不多。看来需要map一个1G以上的ISO才行。。。

暂时没这么大的ISO WIN7的太大了。内存不够。。。。。

等xianglang测试
回复

使用道具 举报

2585#
发表于 2012-5-22 23:17:57 | 只看该作者
看来新版 map --mem 比旧版快,是一个美丽的误会。刚才试过用2011-12-22、2012-05-16、2012-05-22(不点测试版)三个不同的版本去MAP一个放在第二个主分区(138GB)的1500MB的WIN7.VHD镜像,用手机秒表计时都是45秒;同样放在第二主分区的600MB的WIN2003.VHD镜像,用时都是11秒左右。但是前几天(刚才查了一下,是2012-05-17)在给HOTDLL做WINVBLOCK测试时,MAP一个放在第一主分区(10GB)里的1500MB的WIN7.VHD文件,速度确实很快,也就十几秒不到20秒的时间而已,和MAP放在第二主分区的WIN2003.VHD感觉慢不了多少——据此推测,可能是文件放在不同分区(第一主分区在硬盘最开始处)的读盘速度差异造成的,而并不关G4D事。

特别说明:WIN7.VHD 文件要比 WIN2003.VHD 文件更靠近硬盘的尾部,都用WINCOTIG整理过,是连续存放的。

[ 本帖最后由 xianglang 于 2012-5-22 23:19 编辑 ]
回复

使用道具 举报

2586#
发表于 2012-5-23 10:15:27 | 只看该作者
文件放在时空论坛了,准备让大家广泛测试。

速度有没有变化都无所谓。
回复

使用道具 举报

2587#
 楼主| 发表于 2012-5-23 15:27:26 | 只看该作者
话说pxe blksize n
目前的pxe detect ,一般情况下blksize=1408,最大是1432。
这个是grub4dos的限制还是pxe-rom的bios限制,理论值应该可以大于1432
测试了一下,使用pxe blksize 1433(注,大于1432)命令成功,但加载镜像都失败。
在网络不断发展的今天,tftp还这么陈旧吗?
回复

使用道具 举报

2588#
发表于 2012-5-23 16:00:06 | 只看该作者
服务器端应该没什么大问题,因为服务器可以使用虚拟机,而 tftp 的服务器是软件,可以不断修改完善。

但客户是真实机(排除虚拟机的情况,因为虚拟机只是用来测试而已。你去给人修理机器的时候,肯定是真实机)。

这个真实机的 BIOS 就可以 “ 要多糟糕,有多糟糕 ”。既可以是 bug,也可以是陷阱。bug 是无意的,陷阱是故意设置的。

我个人认为,这与网络硬件的发展速度无关。USB 启动经历了 N 多年的发展,依旧 bug 不断。

网络启动和 USB 启动,具有同等的危险性。假如这不受控制, “ 跑飞了 ”,那么在控制者看来,这是无法接受的,它会认为那是巨大的失败。

所以,网络启动也必须不顺畅才行。

目前的pxe detect ,一般情况下blksize=1408,最大是1432。
这个是grub4dos的限制还是pxe-rom的bios限制,理论值应该可以大于1432


你可以认为那是 grub4dos 的限制。grub4dos 为了保证兼容性,为了保证启动不死机,它于是就采取了保守的参数。

我曾经遇到一台机器,它只接受 blksize=512。其它值都不接受。意思是,如果你用 pxe blksize 设置一个别的值,它依旧只按 512 字节传输,结果你得到的文件是缺少字节的,或者是跳过一些空白的。这样,文件内容也就废掉了,导致死机啊之类的情况发生。

pxe detect 命令能够探测到这种情况,即,自动把 blksize 设定为正确的 512 字节。所以,pxe detect 命令要在 grldr 的内置菜单中出现。否则,如果内置菜单没有这条 pxe detect 命令,那么启动很可能在最初阶段就失败了,或死机了。

[ 本帖最后由 不点 于 2012-5-23 16:51 编辑 ]
回复

使用道具 举报

2589#
发表于 2012-5-24 17:59:13 | 只看该作者
遇妻一个很奇怪的问题,将稀饭放姜的Native WIN7PE放到UD合盘中,以后只要向UD合盘是添加或删除过文件,稀饭放姜的Native WIN7PE快进入桌面时必重启,不知是i不是grldr的问题。
回复

使用道具 举报

2590#
发表于 2012-5-25 04:01:23 | 只看该作者
使用grub4dos-0.4.5c-2012-05-16.7z及以前的遇到问题,在我07年浪潮台式机(cpu2140 内存1g via主板)上,用新版grldr,可以执行iftitle [if exist (hd0)/grldr] 菜单的判断语句,但开机启动出现英文到出现启动菜单画面,足足等了3分钟。

换用旧版的grldr,可以很快到菜单画面,但不能执行判断语句iftitle [if exist (hd0)/grldr] (写有这个判断语句的菜单条根本不出现)!

虽然这块与915同期的板子较老,但它也把zip识别为hdd。其它机子未遇到此问题。

grldr.7z (130.3 KB, 下载次数: 35)

附件是老的grldr,启动老机快,但不支持iftitle语句。

[ 本帖最后由 一望无垠 于 2012-5-25 08:02 编辑 ]
回复

使用道具 举报

2591#
发表于 2012-5-25 08:42:57 | 只看该作者

回复 #2594 一望无垠 的帖子

最好贴出你的menu.lst,供老大们分析
回复

使用道具 举报

2592#
发表于 2012-5-25 10:26:32 | 只看该作者
一望无垠的menu.lst

timeout 90
default 8
gfxmenu (ud)/boot/grub/message
configfile (md)4+8
iftitle [if exist (hd0)/grldr]         [1]  运行极速Xppe系统  
(ud)/boot/grub/F6IMG
echo $[1106] booting Fast xppe, please wait ...
map (ud)/NVXPPE.ISO (0xfa)
map --mem (ud)/boot.iso (0xff)
map --e820cycles=3
map --hook
chainloader (0xff)/WXPE/SETUPLDR.BIN
iftitle [if exist (fd0)/grldr]         [1]  运行极速Xppe系统  
echo $[1106] booting Fast xppe, please wait ...
map (ud)/NVXPPE.ISO (0xfa)
map --mem (ud)/boot.iso (0xff)
map --hook
chainloader (0xff)/WXPE/SETUPLDR.BIN
title         [2]  运行  Uepon 7 系统
echo $[1106] booting Fast Win7pe, please wait ...
map (ud)/win7.ISO (0xff) || map --mem (ud)/win7.ISO (0xff)
map --hook
chainloader (0xff)
title         [3]  运行  Gho 备份还原      
echo $[1106] loading ghost image, please wait ...
map --mem (ud)/imgs/ghost.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title         [4]  运行 adds分区管理     
echo $[1106] loading ADDS image, please wait ...
map (ud)/imgs/ADDS.gz (fd0) || map --mem (ud)/imgs/ADDS.gz (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title         [5]  运行  DiskGen 工具     
echo $[1106] Loading DiskGenius Image, Please Wait ...
map --mem (ud)/imgs/dg.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title         [6]  运行  Win 密码清除      
echo $[1106] Loading apc Image, Please Wait ...
map --mem (ud)/imgs/apc.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title         [7]  运行Win7内存检测
map --mem (ud)/imgs/W7MT.GZ (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title         [8]  进入 系统 二级菜单
configfile (ud)/boot/grub/m.lst
title         [9]  从 硬盘启动 计算机         
find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /ntldr || find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /ntldr || chainloader /bootmgr

[ 本帖最后由 2012zhd 于 2012-5-25 10:42 编辑 ]
回复

使用道具 举报

2593#
发表于 2012-5-25 11:27:46 | 只看该作者
我看到这个了:if exist (fd0)/grldr

这不就是在访问软驱吗?只记得把 find 命令加上 --ignore-floppies --ignore-cd,却忘了不只是 find 会访问软驱,其他很多命令都可能访问软驱。比如,

root (fd0),chainloader (fd0)+1 等命令,都要去访问软驱。如果 fd0 是虚拟的软盘,那样当然不会有问题,因为这样的 find、root 和 chainloader 命令,都是访问虚拟软驱,不是访问真实软驱。

不要死背教条,而要抓住本质,活学活用。本质是什么?本质就是,访问软驱就死机(假死也算作死机)。这样,你就会明白,不只是把 find 加上 --ignore-floppies --ignore-cd 就 “ 万事大吉 ” 了。而是:任何访问软驱的途径都要杜绝,这才可以保证安全。
回复

使用道具 举报

2594#
发表于 2012-5-25 16:32:35 | 只看该作者
原帖由 不点 于 2012-5-25 11:27 发表
我看到这个了:if exist (fd0)/grldr

这不就是在访问软驱吗?只记得把 find 命令加上 --ignore-floppies --ignore-cd,却忘了不只是 find 会访问软驱,其他很多命令都可能访问软驱。比如,

root (fd0),c ...


就是,我把bios中的软驱关掉。并改写语句。新版的grldr 引导应该也快了吧



iftitle [if exist (fd0) --ignore-floppies --ignore-cd /grldr]  这样写对吗? 谢谢!

[ 本帖最后由 一望无垠 于 2012-5-25 16:37 编辑 ]
回复

使用道具 举报

2595#
发表于 2012-5-25 16:59:39 | 只看该作者
原帖由 一望无垠 于 2012-5-25 16:32 发表


就是,我把bios中的软驱关掉。并改写语句。新版的grldr 引导应该也快了吧



iftitle   这样写对吗? 谢谢!

--ignore-floppies --ignore-cd只能用于find中。
最好不要访问软驱
有一个变通的方法:
iftitle [if /i "%@root%"=="(fd0)"] 1.xxxxxxxx
这样既不会死机也可以判断

EDIT 1:
缺陷:这样假设你用过root之类的语句,那么就不准确了

想起一个方法:
set /A bootcur=*0x8280
……
iftitle [if "%bootcur%"=="0x0" || if "%bootcur%"=="0x1"] 1.xxxxxxxx

[ 本帖最后由 2011czmxbb52 于 2012-5-25 17:08 编辑 ]
回复

使用道具 举报

2596#
发表于 2012-5-25 17:07:56 | 只看该作者
原帖由 2011czmxbb52 于 2012-5-25 16:59 发表

--ignore-floppies --ignore-cd只能用于find中。
最好不要访问软驱
有一个变通的方法:
iftitle  1.xxxxxxxx
这样既不会死机也可以判断


谢谢,您的合盘菜单

title [2] 启动XP微型PE ISO内核 用F6IMG
command (0xff)/F6IMG (0xff)/SRS
#下面两句把我们虚拟的资源盘(0xff)消掉,否则会在PE里看到,不美观还费内存
map --unmap=0xff
map --rehook
chainloader ()/MKRL/ldrisope


能不能移植到UD版? 也可能与菜单无关,Uepon 3.3 win7。iso 用grldr引导 启动后就不显其它虚拟盘,只有X盘才129M。其它的iso怎么试也 消不掉虚拟盘。
回复

使用道具 举报

2597#
发表于 2012-5-25 17:11:39 | 只看该作者
原帖由 一望无垠 于 2012-5-25 17:07 发表


谢谢,您的合盘菜单

title [2] 启动XP微型PE ISO内核 用F6IMG
command (0xff)/F6IMG (0xff)/SRS
#下面两句把我们虚拟的资源盘(0xff)消掉,否则会在PE里看到,不美观还费内存
map --unmap=0xff
map  ...


没错,因为那我的个虚拟盘跟启动无关(只是用来存放背景图和字库之类的),所以可以用unmap消掉。但是有些虚拟盘跟启动有关(比如说上面有启动文件),就没办法消掉
估计是他在启动时把盘符抹掉,变成隐藏的,然后照样可以挂WIM(还有,他那个是全内置的!)

[ 本帖最后由 2011czmxbb52 于 2012-5-25 17:13 编辑 ]
回复

使用道具 举报

2598#
发表于 2012-5-26 11:40:01 | 只看该作者
原帖由 不点 于 2012-5-25 11:27 发表
我看到这个了:if exist (fd0)/grldr

这不就是在访问软驱吗?只记得把 find 命令加上 --ignore-floppies --ignore-cd,却忘了不只是 find 会访问软驱,其他很多命令都可能访问软驱。比如,

root (fd0),c ...

好像不是菜单的事,还没执行菜单呢。是没出现启动画面前的时间(出现两行英文后)
回复

使用道具 举报

2599#
发表于 2012-5-26 12:31:42 | 只看该作者
cat --length=0 命令是否存在bug  文件名含有()时ls可以列出来  但是cat --length=0会提示file not found  自动补全也提示找不到

test.png (8.33 KB, 下载次数: 325)

test.png
回复

使用道具 举报

2600#
发表于 2012-5-26 13:58:09 | 只看该作者
你可以试试给每个括号也加上反斜杠:menu\ \(2\).pd

这方面的问题,由 chenall 来处理吧。怀疑 chenall 把括号当作语法字符来处理了。
回复

使用道具 举报

2601#
发表于 2012-5-26 14:05:33 | 只看该作者

回复 #2602 一望无垠 的帖子

你能肯定不是那句的问题?你试验了?如果试验证实了,请明确一下,不要含糊。

iftitle 本来就是 “条件title”,它在显示菜单之前就要确定是否该显示了。所以,其中的条件很早就开始解析了。

你把那 fd0 换成 hd0,不访问软驱,试试还有死机(假死)现象吗?

[ 本帖最后由 不点 于 2012-5-26 14:09 编辑 ]
回复

使用道具 举报

2602#
发表于 2012-5-26 14:31:03 | 只看该作者

回复 #2604 不点 的帖子

试了下还是file not found  那等c大看下吧
回复

使用道具 举报

2603#
发表于 2012-5-26 14:54:52 | 只看该作者
原帖由 一望无垠 于 2012-5-26 11:40 发表

好像不是菜单的事,还没执行菜单呢。是没出现启动画面前的时间(出现两行英文后)

参考这里的写法:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210640&page=1#pid2448137

如果要条件判断,试试看改为下面的行不?


  1. iftitle [if exist  /BOOT/GRUB/F6IMG && if exist  /TANGO/XPBOOT.ISO] 1. 启动 Native Tango XPPE \n 启动Tango 风格的 XPE \n DIY自逆天使的TangoPE
  2. command /BOOT/GRUB/F6IMG
  3. map /TANGO/XPBOOT.ISO (0xff)
  4. calc *0x82b9&0xff && map /TANGO/TWO.ISO (0xfa) ! map --mem /TANGO/TWO.ISO (0xfa)
  5. map --hook
  6. chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN
复制代码
回复

使用道具 举报

2604#
发表于 2012-5-26 17:39:52 | 只看该作者

回复 #2604 不点 的帖子

我试了一下一切正常,怀疑是自己的使用问题。

建议用自动补全功能获取文件名看看。

[ 本帖最后由 chenall 于 2012-5-26 17:42 编辑 ]

20120526173800689.png (3.69 KB, 下载次数: 128)

20120526173800689.png
回复

使用道具 举报

2605#
发表于 2012-5-26 17:46:28 | 只看该作者

回复 #2608 chenall 的帖子

#2603  前两个cat都是自动补全的  第二个cat是输入的 cat --length=0 /t/menu\  然后按的tab  提示找不到

我试试0523的版本以及放在硬盘上的情况  #2603是放在cd上的情况
回复

使用道具 举报

2606#
发表于 2012-5-26 18:14:38 | 只看该作者

回复 #2608 chenall 的帖子

貌似只有在cd上有问题  同样的文件放在hdd上就可以

test.png (10.92 KB, 下载次数: 317)

test.png

test2.png (7.01 KB, 下载次数: 284)

test2.png
回复

使用道具 举报

2607#
发表于 2012-5-27 09:29:19 | 只看该作者

回复 #2610 sratlf 的帖子

这样就清楚了,看了一下源码,发现处理光盘的文件系统时有一个BUG,没有处理转义符,所以只要出现转义符都会失败。并不是因为().
回复

使用道具 举报

2608#
发表于 2012-5-27 10:04:19 | 只看该作者
原帖由 chenall 于 2012-5-27 09:29 发表
这样就清楚了,看了一下源码,发现处理光盘的文件系统时有一个BUG,没有处理转义符,所以只要出现转义符都会失败。并不是因为().

请教C大,这种情况是否正常:

CD和hd0,4根目录各有一个BOOT目录
if exist (cd)/boot 找不到BOOT目录
if exist (hd0,4)/boot 可以找到BOOT目录

1.png (9.21 KB, 下载次数: 196)

1.png
回复

使用道具 举报

2609#
发表于 2012-5-27 10:31:31 | 只看该作者

回复 #2612 527104427 的帖子

if exist要求目标是一个文件,所以如果对目录使用if exist失败属正常现象。

因为ntfs分区上的目录也是属于一个文件(大小为0字节),所以就以上面的情况了。

要判断目录可以考虑使用ls命令。(但是并不保证成功)
回复

使用道具 举报

2610#
发表于 2012-5-27 10:41:07 | 只看该作者

回复 #2613 chenall 的帖子

明白了~~~~~~~
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-3 15:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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