无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
661#
 楼主| 发表于 2011-3-26 15:30:43 | 只看该作者
原帖由 chenall 于 2011-3-26 13:51 发表
OK,已经更新...

顺便把cat --replace的信息给隐藏了.默认不显示.用debug on来显示


早想回报这个事情呢,看来心灵相通!

如处理文本中引号",把"替换成!

cat --locate=\x22 --replace=\x21 %FILE%

[ 本帖最后由 zhaohj 于 2011-3-26 15:35 编辑 ]
回复

使用道具 举报

662#
发表于 2011-3-28 13:07:55 | 只看该作者
@chenall:
请关注一下含空格的路径文件问题的处理。
http://bbs.znpc.net/viewthread.php?tid=6070&extra=page%3D1&page=1

建议增强形如%~pnx1的用法,逢含有空格的路径及文件名作反斜杠处理。
回复

使用道具 举报

663#
发表于 2011-3-28 22:38:57 | 只看该作者
希望grub4dos的grldr.mbr可以引导ext4上的grldr。那样就可以抛开grub了。
回复

使用道具 举报

664#
发表于 2011-3-28 23:15:12 | 只看该作者
在硬盘上使用建议用WEE来代替GRLDR.MBR。
回复

使用道具 举报

665#
发表于 2011-3-31 11:29:58 | 只看该作者
%~1时不会处理,但%~p1时会处理。

这种不完全处理,在某些情形会出错。
回复

使用道具 举报

666#
发表于 2011-3-31 15:06:41 | 只看该作者
原帖由 zxw 于 2011-3-31 11:29 发表

这种不完全处理,在某些情形会出错。
116871


这个自己再想办法解决吧,如果要在程序内部实现,目前不划算(可能需要重写整个变量替换的代码)

目前的批处理参数替换代码个人感觉还是很繁琐的。

如果有人愿意改进一下可以提供一下补丁,当然是越简单越好。
回复

使用道具 举报

667#
 楼主| 发表于 2011-4-1 09:23:44 | 只看该作者
问C大,你的CSPE中把PECMD.EXE替换成新版后,没法出现桌面,怎么解决?

//兼容之前的PE版本(像老毛桃),这里为了防止冲突,配置文件改名为PECMD.INI
LOAD \%MPE%\PECMD.INI
FIND Explorer.EXE,!TEAM SHEL EXPLORER.EXE|LOGO|TEXT

`修改注册表和相关文件名以支持 Vista 安装
REGI HKLM\SYSTEM\CurrentControlSet\Control\MiniNT\!
EXEC !CMD.EXE /C "REN %WinDir%\SYSTEM32\HALACPI.DLL HAL.DLL"

`如果不能给 USB 移动存储设备迅速分配盘符或者关机缓慢,请尝试重启 AudioSrv 服务(对于部分 HD 声卡)
TEAM EXEC =PECMD SERV !AudioSrv|SERV AudioSrv

`杀掉无用进程并删掉 X: 盘可删除文件以节省空间
//pseudo 2008.09.28{
//TEAM WAIT 5000|KILL SMSS.EXE|KILL WINLOGON.EXE|FILE %WS%\SMSS.EXE|FILE %WS%\WINLOGON.EXE
TEAM WAIT 5000|KILL SMSS.EXE|KILL WINLOGON.EXE
EXEC !CMDX /C "KILL %CMD_PID%"
TEAM ENVI W=|ENVI WS=|ENVI WSD=|ENVI V0=|ENVI V1=|ENVI CMD_PID=|ENVI
//pseudo}
FIND Explorer.EXE,!EXEC %comspec% /K "echo.Shell Explorer.EXE启动失败,自动转入CMD命令行."
回复

使用道具 举报

668#
发表于 2011-4-1 12:17:36 | 只看该作者
@zhaohj
记得一直以来都不支持的。。。和0PE一样,不过好像0PE已经支持了,具体你可以请教一下P大看看。
回复

使用道具 举报

669#
 楼主| 发表于 2011-4-2 17:27:45 | 只看该作者
看了一下0PE的部分代码,cmdline改成winpeshl.exe /k Autorun_.cmd
但感觉winpeshl.exe就是cmd.exe
把cmd.exe复制一份给winpeshl.exe(wxpe\system32),pecmd.exe换成新版,还是进不了桌面。
P大的转向太多,没看明白,好晕!
C大抽空看一下。

Snap1.jpg (24.24 KB, 下载次数: 138)

Snap1.jpg
回复

使用道具 举报

670#
发表于 2011-4-2 17:30:29 | 只看该作者

回复 #669 zhaohj 的帖子

P大这个实际上就是cmd.exe,好象是九帅特许了的。
回复

使用道具 举报

671#
发表于 2011-4-2 22:58:39 | 只看该作者
原帖由 pseudo 于 2011-4-1 19:11 发表
回复 #3009 adef 的帖子
谢谢。很久以前的组件,应该没问题。

回复 #3010 zhaohj 的帖子
我用cmd.exe冒充。

回复 #3011 ones 的帖子
一般来说,看得到的文件都是独立可删的。
删之前,尽量了解一下有 ...

                                      
回复

使用道具 举报

672#
发表于 2011-4-3 10:15:12 | 只看该作者
@chenall:
能否将扇区系列表达法拓展到文件?以便动态截取需要部分。
当然可以映射到(rd)曲线解决,但总觉不爽;不知是否可行。

[ 本帖最后由 zxw 于 2011-4-3 12:02 编辑 ]
回复

使用道具 举报

673#
发表于 2011-4-3 22:02:39 | 只看该作者
原帖由 zxw 于 2011-4-3 10:15 发表
@chenall:
能否将扇区系列表达法拓展到文件?以便动态截取需要部分。
当然可以映射到(rd)曲线解决,但总觉不爽;不知是否可行。



我没有看明白具体是什么东西.....

本来所有的文件都可以用扇区列表来表示的.
回复

使用道具 举报

674#
发表于 2011-4-3 22:31:31 | 只看该作者

回复 #673 chenall 的帖子

抱歉,学艺不精。我印象当中好象只有设备可以用扇区列表来表示吧?
回复

使用道具 举报

675#
发表于 2011-4-3 22:41:22 | 只看该作者
所有的文件都可以使用扇区序列的方法来表示,否则就是BUG.

其实map操作的时候就是把一个文件路径转换成扇区的表示方法来直接访问这个文件的.

具体可以看一下blocklist命令的用法.
回复

使用道具 举报

676#
发表于 2011-4-4 10:06:14 | 只看该作者

回复 #675 chenall 的帖子

惭愧,太糊涂了。任何文件本来就是某设备下的一个扇区系列。忽然悟到了,谢谢指点。

不过,测试了一下blocklist命令。文件如放在一个非连续区域则无效,或文件本身含有\0字节则显示不准确。

[ 本帖最后由 zxw 于 2011-4-4 10:52 编辑 ]
回复

使用道具 举报

677#
发表于 2011-4-4 11:36:35 | 只看该作者
原帖由 zxw 于 2011-4-4 10:06 发表
惭愧,太糊涂了。任何文件本来就是某设备下的一个扇区系列。忽然悟到了,谢谢指点。

不过,测试了一下blocklist命令。文件如放在一个非连续区域则无效,或文件本身含有\0字节则显示不准确。


我还是没有看明白你的意思..
文件如放在一个非连续区域则无效,

如果文件是非连续的则就会是如下样子的块列表
(hda,b)x1+y1,x2+y2,,,,xn+yn
这样子的也是可以访问的.

或文件本身含有\0字节则显示不准确。
和文件内容怎么会有关系呢?不管文件内容如何,都是按同样的方式显示.
回复

使用道具 举报

678#
 楼主| 发表于 2011-4-4 14:05:26 | 只看该作者
可能zxw兄对文件的管理有点糊涂,文件以簇为单位分配,每个簇可以包括2、4、8、16、32或64个扇区。
    文件如放在一个非连续区域,用(hda,b)x1+y1,x2+y2,,,,xn+yn来表示
     文件如放在一个连续区域,用(hda,b)x+y来表示。
回复

使用道具 举报

679#
发表于 2011-4-4 16:17:28 | 只看该作者
可能是我的表述不对,请看这个图:


blocklist /wenv
返回应该是:
(hd96)155+45
吧?

[ 本帖最后由 zxw 于 2011-4-4 16:19 编辑 ]
回复

使用道具 举报

680#
发表于 2011-4-4 16:23:36 | 只看该作者
汗,,怎么能这样子算呢.

在文件系统中最小的单位是簇,不是扇区.

一个文件不管多大至少占用一个簇.

磁盘分区越大,它的簇一般也就越大,如果有很多小文件,则浪费的空间也越多.
回复

使用道具 举报

681#
发表于 2011-4-5 08:25:35 | 只看该作者
to chenall
我发你的邮件,你有收到吧?关于DBR引导代码的。另外,补充一点,对于FAT32系统,DBR 从0X52到0X56 取值一般是 46 41 54 33 32  (FAT32) 。
回复

使用道具 举报

682#
发表于 2011-4-6 09:48:33 | 只看该作者
原帖由 sgw888 于 2011-4-5 08:25 发表
to chenall
我发你的邮件,你有收到吧?关于DBR引导代码的。另外,补充一点,对于FAT32系统,DBR 从0X52到0X56 取值一般是 46 41 54 33 32  (FAT32) 。


你发哪个邮件地址?
回复

使用道具 举报

683#
发表于 2011-4-6 16:07:30 | 只看该作者
发到 wuyou@chenall.com 了,结果退信了,我重新发到你的QQ邮箱了。
回复

使用道具 举报

684#
 楼主| 发表于 2011-4-7 10:58:55 | 只看该作者
一台ASUS-P5B,双硬盘,1G内存
map时死机,P处理如下
=====
!BAT
set /a hd=*0x475&0xff+0x7f
:move
set /a hd1=%hd%+1
map (%hd%) (%hd1%)
set /a hd=%hd%-1
checkrange 0x7f calc %hd% || goto :move
exit
===============

命令行下测试,geometry (hd0) , geometry (hd1)都死机
但windows下读取硬盘数据都正常。

[ 本帖最后由 zhaohj 于 2011-4-7 14:47 编辑 ]

Snap1.jpg (79.53 KB, 下载次数: 137)

Snap1.jpg

Snap2.jpg (105.26 KB, 下载次数: 131)

Snap2.jpg
回复

使用道具 举报

685#
 楼主| 发表于 2011-4-7 15:02:19 | 只看该作者
哇,第二硬盘分区表有问题,真乱啊,数据太多

问题出来了,XP系统下读写盘都没有问题
grldr下访问硬盘就死机,我读取第一硬盘(这个分区表没有问题)也死机,如ls (hd0,0)/  死机
所有的全内置PE到滚动条结束后死机
所有的全外置死得更早,一碰到硬盘有关的命令死机。

[ 本帖最后由 zhaohj 于 2011-4-7 15:07 编辑 ]

Snap3.jpg (59.94 KB, 下载次数: 129)

Snap3.jpg
回复

使用道具 举报

686#
 楼主| 发表于 2011-4-7 15:14:29 | 只看该作者
再测试,
1)拔掉第二硬盘,pxe启动进入grub命令行,geometry (hd0)  死机;
2)拔掉第一硬盘,保留第二硬盘,pxe启动进入grub命令行,geometry (hd0)  死机;
3)拔掉所有硬盘,启动全内置PE,正常;
4)拔掉所有硬盘,启动CSPE,在DOS处理完毕启动grub.exe死机;
5)拔掉所有硬盘,启动0PE,在DOS处理完毕(cmdpe.gz解压后)启动grub.exe死机;

[ 本帖最后由 zhaohj 于 2011-4-7 15:25 编辑 ]
回复

使用道具 举报

687#
发表于 2011-4-7 17:15:24 | 只看该作者

回复 #679 zxw 的帖子

blocklist /wenv
返回应该是:
(hd96)155+45
吧?


你是在光盘上吧?

(hd96) 是 (0xE0),应该是你的 (cd) 设备。在光盘上,别忘了扇区大小是 2048 字节。就是说,光盘的一个扇区,相当于磁盘上的 4 个扇区。

因此,显示的 (hd96)155+12,是正确的。

11 个大扇区,相当于 44 个小扇区。第45个扇区也要占用光盘的一个大扇区。所以总共是 12 个大扇区,这完全正确。

chenall 在 680 楼的说法好像是不正确的。文件的分配是按簇来分配的,但 blocklist 的时候,仍然是按扇区来做的。比如,如果文件有一个字节,则 blocklist 会显示出一个扇区,而不是一个簇的大小。
回复

使用道具 举报

688#
发表于 2011-4-7 17:23:37 | 只看该作者

回复 #686 zhaohj 的帖子

问题很严重,请在时空论坛报告详情。

先说说机器是什么时候生产的。再说说各个硬盘的大小。

按照常规,用一个不带 config.sys 和 autoexec.bat 的 DOS 启动,然后运行 grub.exe 看看有什么情况。如果死机,换用 badgrub.exe 来测试。

然后再换用不同版本的 grub4dos 来测试。比如,换用 2009 年的试一试。
回复

使用道具 举报

689#
发表于 2011-4-7 18:33:33 | 只看该作者

回复 #687 不点 的帖子

谢谢不点指点,有点明白了。
不过,还是有个问题不解。
block /wenv      返回的是: (hd96)155+12
命令行中如输入(hd96)155+12 并回车,返回错误。
但如输入(hd96)155+45 回车,能正确显示wenv的帮助信息。

难道命令行中的运行,实际上是以在内存中的扇区大小为准?而不是(hd96)扇区的大小?
回复

使用道具 举报

690#
发表于 2011-4-7 18:46:58 | 只看该作者

回复 #689 zxw 的帖子

无论 (hd96)155+12 还是 (hd96)155+45 都不等于 wenv 文件。

这是因为,(hd96)155+12 和 (hd96)155+45 都是按照扇区对齐的,也就是说,它们的长度都是扇区的整数倍,即 2048 字节的整数倍。因此,无论你使用哪个,都是错误的。有可能你使用 45 时,正好满足了 grub4dos 可执行文件的条件而已。在另外一个环境下,就不一定这么凑巧了。

[ 本帖最后由 不点 于 2011-4-7 18:48 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-23 15:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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