Board logo

标题: 连续区块文件创建工具 FDefrag for grub [打印本页]

作者: cavvie     时间: 2003-11-20 00:00    标题: 连续区块文件创建工具 FDefrag for grub

感谢不点兄和lyh728兄的工作,grub for dos和Vfloppy为我们带来了很多的方便:)

不点兄提到让grub去支持不连续区块的文件不太可行,刚好lyh728兄提供了一个连续区块的测试工具blklst.exe,我就利用blklst顺手写了一个创建连续区块文件的批处理,很简单,主要思想就是通过不停地复制文件并且测试是否已经连续。

在Windows XP下测试通过,在Win98和Dos下可能是Djgpp的环境问题,我的blklstds.exe无法正常工作(我已经按照Djgpp的说明进行了安装),如果blklstds.exe在你们的Win98和Dos下能够正常工作,把FDefrag.bat中的blklst替换为blklstds就应该可以在win98或dos下工作了。

使用方法:
FDefrag File_To_Be_Defrag
如:FDefrag super.img

下载:
打开附件
作者: 不点     时间: 2003-11-21 00:00
谢谢. 关注中.....希望谁能直接编写一个 FDefrag 程序(而不是用拷贝+测试的办法), 来仅仅把一个文件进行整理.

首先, 搜索一下看看是否已经有这类东东了.
作者: cavvie     时间: 2003-11-22 00:00
正如你所说的,编写磁盘整理程序需要对文件系统有深刻的了解,并且从效率上来说,磁盘整理的速度要比复制测试的速度慢多了。

如果是引导小的镜像文件并且磁盘有相对较大的剩余空间,还是建议使用这种复制测试的方式。
另外System.Mechanic.Professional.v4.0c.WinALL.Incl.Keygen.READ.NFO-ViRiLiTY
支持对单个文件的碎片整理


希望lyh728能再测验一下dos下的blklstds.exe,那样就可以写一个dos和windows下都通用的FDefrag脚本了。
作者: 不点     时间: 2003-11-22 00:00
谢谢 cavvie 兄。

正如您提到的,复制测试的方法仅适用于小文件,对于大的文件例如 ISO 光盘镜像文件或者硬盘镜像文件(可以以 G 来度量)不太适合。

所以,如果用这种复制测试的办法,最终都不是一个完整的解决方案,最终还得有人从文件系统入手来解决。与其如此,还不如现在就采用这种终极的解决方案,也避免了白白花费力气【我是说,如果有人从文件系统入手解决了这个问题,那么复制+测试就是白费力气了】。

您上面提到的软件管用吗?看来是商业软件。如果管用,暂时就用它得了。


作者: Wengier     时间: 2003-11-22 00:00
不知那个“System.Mechanic.Professional.v4.0c.WinALL.Incl.Keygen.READ.NFO-ViRiLiTY”能在哪些平台下运行?希望能在DOS下运行的话就好了,因为GRUB for DOS等本来就都是在DOS下运行的。
作者: cavvie     时间: 2003-11-22 00:00
System.Mechanic.Professional.v4.0c.WinALL.Incl.Keygen.READ.NFO-ViRiLiTY
到我的ftp下载吧:
ftp://219.223.194.139/

不过可惜只能在windows使用

[此贴子已经被作者于2003-11-22 10:08:17编辑过]



作者: 不点     时间: 2003-11-22 00:00
唉!我也搜索到一个 windows 下的整理工具,很小,只有 92K。

如果谁能把它改造成 DOS 下的就好了,呵呵。

网页说明在这里:UNFRAG文件碎片整理工具:
http://www.mcadtools.net/show.asp?id=290

下载:

http://www.mcadtools.net/old/down/unfrag.zip

运行环境:Windows 95/NT4.0


作者: 不点     时间: 2003-11-22 00:00
又是一个 winNT 下的东东,DefragMentor Lite 1.0,也是很小,140K,但下载不了它:

http://www.zjbbs.he.cninfo.net/softdown/soft.asp?id=701
http://zj-www.he.cninfo.net/soft/defragml.zip

另外,从

http://ftp.ncnu.edu.tw/cpatch/arc/unfrag/

得到的文档说,unfrag 有源程序可以下载。这下子方便了吧?

补充:在 http://www.google.com/ 中搜索 unfrag source 可以找到一切想要的源程序。

[此贴子已经被作者于2003-11-22 23:41:01编辑过]



作者: 不点     时间: 2003-11-22 00:00
OK,这里是又一个名字叫做 Fraginator 的工具,有源程序下载:

http://www.wsu.edu/~rolo/Fraginator.html

它是 FOR WIN2000/XP 的。


作者: cavvie     时间: 2003-11-23 00:00
Fraginator只是unfrag的Gui前端
unfrag的源代码我已经用google找遍了都找不到

另外,我安装了你给我的stage2文件到mbr中,引导大多数的msdos启动盘都可以了,但是引导Wengier的“超级通用msdos 7.1启动盘”还是有问题
map (hd0,0)/msdos711.img (fd0)
chainloader (hd0,0)/msdos711.img
boot
结果只是显示
stage1
就没有显示了。
因为Wengier的“超级通用msdos 7.1启动盘”也是用grub引导的,不知道是不是grub不能重入呢?
作者: 不点     时间: 2003-11-23 00:00
不应当是 GRUB 不能重入。GRUB 是可以重入的,我就用 GRUB 引导过 GRUB 软盘映像。

这里的问题似乎与 GRUB 的版本匹配有关。“超级通用msdos 7.1启动盘” 中的 GRUB 版本太老了。

关于 unfrag 源码,应当有的吧?我再找找看。我负责找,你负责编程,这样分工如何?:-)


====================

更正,刚才说的不对,有些牵强附会。应当是属于 GRUB 的 BUG。如果在我的机器上能够重现这个毛病,就可能把这个 BUG 揪出来。



[此贴子已经被作者于2003-11-23 3:25:31编辑过]



作者: Wengier     时间: 2003-11-23 00:00
不点:关于GRUB的重入的问题,我的测试结果是这样的:

1:GNU GRUB可以重入GNU GRUB或GRUB for DOS;

2:GRUB for DOS多数情况下可以重入GNU GRUB,但却不能重入GRUB for DOS,否则会死机或出现以下提示:

Sorry! Currently supported DOS versions are: MS-DOS 3.30 and later; FreeDOS
kernel build 2029 and 2032, and, hopefully, any later FreeDOS versions.

Programs such as TSRs and device drivers may also change the BIOS interrupt
vector table. Make sure those programs are not running, then try again.

事实上,都是在MS-DOS环境下使用的,而不是其它DOS,而且CONFIG.SYS/AUTOEXEC.BAT等文件也没有修改过。

至于“超级MS-DOS 7.10启动盘”中的GNU GRUB的版本比较旧,则是为了节省空间,因为新版的GNU GRUB中的stage2文件比这个版本中的stage2文件大不少。而上次做的另一个DOS启动盘则是用的最新版的GNU GRUB。
作者: 不点     时间: 2003-11-23 00:00
好的,有时间我再看看程序有什么毛病。

=========

太幸运了,刚刚找到。我找到的 UNFRAG 源码在这个包里面:

http://www.lanet.lv/ftp/simtelnet/msdos/pcmag/v16n22.zip

我的任务圆满完成了。:-)

如果再幸运的话,我甚至还可以超额完成任务,再多找几个出来。

---------------

又找到一个 CHKFRAG:

http://www.lanet.lv/ftp/simtelnet/msdos/pcmag/v16n22.zip

和一个 DEFRAG:

http://www.lanet.lv/ftp/simtelnet/msdos/pcmag/v12n04.zip

呵呵,真的超额完成任务了。:-)

----------------

哎哟!修正一下,刚才找到的 UNFRAG 软件可能没有用处,因为它似乎是用来压缩 word 和 excel 文件的,不是整理文件物理碎片的【它整理文件的逻辑碎片并压缩文件】。

但是 DeFrag 和 CHKFrag 应当是有用的。



[此贴子已经被作者于2003-11-23 7:58:03编辑过]



作者: cavvie     时间: 2003-11-23 00:00
呵呵,这个defrag是for fat16的,不是for fat32的呢
作者: 不点     时间: 2003-11-23 00:00
FAT16 和 FAT32 没有多少差别。在 FAT表中,FAT16的项目占用 2 个字节,FAT32 的表项是占用 4 字节。如此而已。有了源程序,总可以修改的,应当比一切从头来要好吧。可别打退堂鼓啊 :-)

准备工作要充分,您再搜索一下 FAT 文件系统结构的文章看看,就可以开始干了。
作者: Wengier     时间: 2003-11-23 00:00
支持支持!对了,它支持长文件名吗?

[此贴子已经被作者于2003-11-23 12:00:21编辑过]



作者: 不点     时间: 2003-11-23 00:00
不可能啊。

它连 FAT32 都不支持,估计编程时间很早了,大约在 95 年以前了。

其实我们要的不就是这个吗?越早的,我们越喜欢,越晚的,功能越是强大的,就越发像微软一样不支持 DOS 了。很可惜,那些有名的公司生产出来的软件,不能在纯 DOS 下使用!!可悲,可叹!


作者: Wengier     时间: 2003-11-23 00:00
唉,其实DOS版的Norton NDD 2002、DISKEDIT 2002、UNERASE 2002、GHOST 2002等都有,唯独没有用于DEFRAG的SpeedDisk 2002。另外,FreeDOS中的DEFRAG也是open-source的,可惜它目前也不支持FAT32和长文件名,不过其作者可能也在努力加入这些支持的。。。这儿是它的下载(包括源代码):

http://savannah.nongnu.org/download/free-defrag/

[此贴子已经被作者于2003-11-23 12:11:47编辑过]



作者: cavvie     时间: 2003-11-23 00:00
呵呵,fat32和fat16的差别并不只是你所说的这么简单
个人感觉引导过大的硬盘镜像是不太现实的

因为如果硬盘镜像安装的是windows xp或linux操作系统,可能还会有更多比现在的
“保护模式磁盘寻址”更复杂的问题(当然,只是个人猜测,没有根据:)),并且有可能这些新的问题是grub不可能解决的

grub能够引导img文件,能够让dos这类简单的系统跑起来就已经很伟大了:),我想目前我们大家大多是使用grub for dos来引导dos的img文件进行一些系统的紧急维护的吧,应该没有多少人是想通过它来虚拟硬盘运行复杂的操作系统的吧

让grub支持引导 iso 文件是我目前所期盼的,但是我已经可以预见这一工作的艰巨性了,
毕竟引导 iso 文件就能够启动很多程序了,包括现在的windows pe,ERDcommander以及各种系统的安装程序,难保不会出现比现在测试win98所遇到的更复杂的问题。
我始终觉得,如果grub要最终解决这些问题,一个方向是写入到 bios 中,就是基于 bios 级别的虚拟硬盘,虚拟光盘,虚拟软盘,因为我现在用的 LSI 的 SCSI Raid控制器就是这样的,它们在bios的级别 把 Raid 阵列给重新分割为你自己定义的虚拟硬盘,你在操作系统的环境下,看到的就是虚拟的硬盘,并不是用于建立磁盘阵列之前的硬盘。操作系统在这种级别的虚拟硬盘上就跑得很好,不会出现什么问题。

另外,现在的硬盘空间越来越大,我们完全可以留出几个G的空间,分成几个逻辑分区,每回要引导镜像之前先格式化一下这些逻辑分区,把img文件拷贝进去,不就可以保证img文件的连续性了吗(呵呵,大家不会都还停留在硬盘只有几个G的年代吧)

呵呵,说了一些话,希望没有打击不点兄的士气,说实话,我收藏和使用的程序很多很多,grub for dos是其中最棒的之一(感觉就像我第一回使用vmware一样),希望grub for dos能够越做越好,远远超越我的想象 ^_^

  Quote:
以下是引用不点在2003-11-23 11:27:17的发言:
FAT16 和 FAT32 没有多少差别。在 FAT表中,FAT16的项目占用 2 个字节,FAT32 的表项是占用 4 字节。如此而已。有了源程序,总可以修改的,应当比一切从头来要好吧。可别打退堂鼓啊 :-)

准备工作要充分,您再搜索一下 FAT 文件系统结构的文章看看,就可以开始干了。


作者: 不点     时间: 2003-11-24 00:00
cavvie 兄说的棒极了! GRUB FOR DOS 的 int13 仿真本来就没有打算解决不用 BIOS 的那些操作系统例如WIN2000/LINUX 等等的问题, 由于 win98 是一个衔接型的操作系统, 既可以支持 BIOS , 又可以支持保护模式的磁盘访问, 所以, 才希望能够尽量很好地支持 win98. 通过解决 win98 中出现的问题, 或许可以让我们更了解 win98. 这是一种挑战, 也是一种兴趣, 并不是一定得完成的任务. 我们尽力做到我们所能达到的极限, 就没有任何后悔了.

关于大硬盘的 img , 现在就已经可以很好的支持了, 只要用 DOS, 就没问题. 大硬盘仿真确实很少能用到, 不过仅仅是顺便把它实现了而已, 本来是为了实现任意格式的软盘仿真, 发现大硬盘的仿真完全类似, 所以一并实现了. 用户用不用, 是无关紧要的, 或许用户也有想用的时候, 那时候他就会觉得方便.

关于 DEFRAG 的问题, 老兄慢慢做吧. 确实是不容易做好, 因为这个东东也有危险性呢. 我对此强烈关注和支持!!