无忧启动论坛

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

GRUB4DOS硬盘工具箱(2011-09-18更新)

  [复制链接]
1#
发表于 2011-7-1 14:20:06 | 显示全部楼层

我对grub4dos做了一些修改:

我对grub4dos做了一些修改:
1. (bd)/BOOT/GRUB/menu.lst的第一句/BOOT/PRELOAD.BAT在某些情况下无法执行,将其修改为修改为root (bd) && ()/BOOT/PRELOAD.BAT。
       当configfile %mypath%/menu.lst执行时会自动将(bd)修改为menu.lst所在的分区。原版menu.lst的第一句/BOOT/PRELOAD.BAT存在漏洞,configfile会修改(bd),但是不会修改(),只有root命令会修改(),如果此时()不是menu.lst所在的分区,利如menu.lst在D盘(hd0,4),()是c盘,root=(hd0,0),那么/BOOT/PRELOAD.BAT将无法执行,而且PRELOAD.BAT内部用到了root变量,但是此时root变量却是错误的,只有root (bd) && ()/BOOT/PRELOAD.BAT才能正常工作,连(bd)/BOOT/PRELOAD.BAT都不行。
2. (bd)/BOOT/GRUB/menu.lst更名为(bd)/BOOT/GRUB/menu.g4d,PRELOAD.BAT中menu.lst全部替换为menu.g4d,MENU.LST全部替换为MENU.G4D。MENU.G4D即取
G4D工具箱菜单文件之意,简单明了,并且把(bd)/BOOT/GRUB/menu.lst这个文件留给终端用户使用。
3. PRELOAD.BAT中,SYS_MENU.LST全部替换为/BOOT/GRUB/MENU.LST,按照惯例,终端用户的菜单文件应当是(bd)/BOOT/GRUB/menu.lst,而不是,(bd)/BOOT/SYS_MENU.LST
4. F9键的密码改为qgho,简单明了,易记易用。
5. ADDONS全部替换为IMGS,即和zxw的run公用IMGS文件夹,并删除ADDONS文件夹。ADDONS文件夹是个空文件夹,原本是打算存放扩展工具的,而c大的run已经开启起了用(bd)/boot/imgs/存放扩展工具的惯例,并且为另两款run以及0pe等所沿用,我这么修改是为了回归惯例,并精简目录结构。
6. %~p0全部替换为/BOOT/,并删除所有的可扩展参数。grub4dos-0.4.5b-2011-07-05之前的版本对可扩展参数替换的结果不正确,只好删掉了。现在这个bug已经修复了,正在测试。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=180142&page=107#pid2270038

[ 本帖最后由 2011_dihuo0 于 2011-7-7 07:10 编辑 ]

boot.zip

3.68 KB, 下载次数: 43, 下载积分: 无忧币 -2

回复

使用道具 举报

2#
发表于 2011-7-6 19:21:28 | 显示全部楼层

回复 #147 zxw 的帖子

当时我发现grub4dos对可扩展参数替换的结果不正确,只好删掉了。移植性并没有弱化,SYS_TOOLS.rar解压到任何分区的根目录下都可以正常运行。
现在这个bug已经修复了,正在测试。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=180142&page=107#pid2270038

[ 本帖最后由 2011_dihuo0 于 2011-7-6 19:28 编辑 ]
回复

使用道具 举报

3#
发表于 2011-7-6 22:09:53 | 显示全部楼层
我明白你的意思,但是原版的GRUB4DOS硬盘工具箱就只能放在根目录下,删掉可扩展参数并没有弱化可移植性,grub4dos对可扩展参数替换的结果不正确,这是一个bug,为了避开这个bug不得已而为之。原版menu.lst的第一句是/BOOT/PRELOAD.BAT,这是硬编码,这是G4D工具箱可移植性降低的根本原因,但在这里是必须使用硬编码的。

[ 本帖最后由 2011_dihuo0 于 2011-7-6 22:34 编辑 ]
回复

使用道具 举报

4#
发表于 2011-7-7 01:35:38 | 显示全部楼层

回复 #152 zxw 的帖子

当configfile %mypath%/menu.lst执行时会自动将(bd)修改为menu.lst所在的分区,可移植性自动获得了保证。原版menu.lst的第一句/BOOT/PRELOAD.BAT存在漏洞,configfile会修改(bd),但是不会修改(),只有root命令会修改(),如果此时()不是menu.lst所在的分区,利如menu.lst在D盘(hd0,4),()是c盘,root=(hd0,0),那么/BOOT/PRELOAD.BAT将无法执行,而且PRELOAD.BAT内部用到了root变量,但是此时root变量却是错误的,只有root (bd) && ()/BOOT/PRELOAD.BAT才能正常工作,连(bd)/BOOT/PRELOAD.BAT都不行。G4D工具箱曾经在我的系统上出错,我费了老大的劲才找到根源所在。
        另外,if命令的子命令exist也存在bug,如果一个变量var直接或者间接引用了内部变量,那么exist就认定它是不存在的,正确的做法应该是if "%var%"==""。这也是很多脚本莫名其妙的出错却找不到根源的原因所在。
        在dos的批处理中经常会用%~p0和if exist,这是dos批处理下的习惯用法,并不是非用不可,然而dos正确的做法在grub4dos下未必正确。熟悉dos批处理既是一种财富,更是一种负担grub4dos毕竟不是dos!既然我们使用的是grub4dos,请让我们适应他习惯他,容忍他的bug,帮助他改进他。请认真审查我们在dos下养成的习惯,因为它可能是错的。我们在使用批处理时一定要小心,否则一旦出错查找原因将是一件很困难的工作。
        好好检查一下你的脚本吧,如果使用了这些有bug的命令,还是赶紧改正吧!
        对于一个软件来说,在我看来,安全性和正确性是最重要的,一个软件如果不能保证安全性和正确性,那么随时可能给它的用户带来灾难
        建议你好好看看最近的更新和建议帖。

[ 本帖最后由 2011_dihuo0 于 2011-7-7 07:48 编辑 ]
回复

使用道具 举报

5#
发表于 2011-7-7 17:26:28 | 显示全部楼层

回复 #155 chenall 的帖子

我是自己写菜单调用原版的menu.lst的,甚至曾经直接调用/boot/preload.bat,因此在使用的过程中发现一些问题和grub4dos的一些bug,于是就自己动手修改了,顺便提高终端用户的易用性。
我的修改有一些是回避bug的临时性的措施,将来还是要改回去的,开源软件提倡尽快地将修改返回上游,促进上游的改进,以减少重复劳动,和方便更多的用户使用。
grub4dos工具箱本来也只是c大自己使用的,只要能正常工作,能满足自己的要求也就可以了,没必要搞那么复杂。但是每个人的工作环境和要求不同的,免不了要做一些修改。将修改返回上游,促进上游的改进,以减少重复劳动,和方便更多的人使用,何乐而不为?
回复

使用道具 举报

6#
发表于 2011-7-7 17:41:15 | 显示全部楼层

回复 #154 zxw 的帖子

事实上我是打算在做合盘使用grub4dos工具箱代替dos工具箱,这一部分的改动比较大,我的水平不高,怕引入新的bug,所以这部分的修改我没有公开。

回复 #154 zxw 的帖子
昨晚的讨论我获益非浅,我以前并没有特别重视可移植性的问题,多谢了。

新版的试图修正这一问题,但是在我这儿表现不太稳定,时好时坏,我还不能重现,所以没有继续报告。
回复

使用道具 举报

7#
发表于 2011-7-7 23:49:12 | 显示全部楼层

回复 #158 chenall 的帖子

我前一段时间无忧启动论坛上不了,就算上了也是时断时续,发帖只能尽可能的简明扼要。最近网络才恢复正常。

[ 本帖最后由 2011_dihuo0 于 2011-7-8 00:07 编辑 ]
回复

使用道具 举报

8#
发表于 2011-7-8 00:05:32 | 显示全部楼层

回复 #159 zxw 的帖子

是的,作为一种编程风格,硬编码应当尽量少用,这样,无论是修改还是移植都是更方便的,也有利于应对变化。软件位置的自由性就是一种自然的结果。
我个人把安全性和正确性放在第一位,遇到bug首先解决它,其他的在我看来暂时都是次要的。
回复

使用道具 举报

9#
发表于 2011-9-3 12:24:11 | 显示全部楼层

回复 #200 135956 的帖子

“进入一键恢复的密码是366840202,可以自己修改,在PRELOAD.BAT中可以改。”编辑PRELOAD.BAT
回复

使用道具 举报

10#
发表于 2011-9-3 14:53:27 | 显示全部楼层

回复 #202 135956 的帖子

回复 #202 135956 的帖子
或者修改PRELOAD.BAT文件password命令的内容。

回复 #203 chenall 的帖子
PRELOAD.BAT文件变化大吗?我对旧版的做了一些修改,下载新版的工具箱后,就用修改的PRELOAD.BAT覆盖了新版的PRELOAD.BAT。
算了,不必回答了。我自己再研究修改一下源码吧。

[ 本帖最后由 2011_dihuo0 于 2011-9-3 15:06 编辑 ]
回复

使用道具 举报

11#
发表于 2011-9-9 21:54:11 | 显示全部楼层
报告一个问题,
我把扩展模块移动到了别的地方,并修改了ADDONS目录下#Slitaz.txt等相应文件的内容,没有修改文件名或者增减文件,结果再次重启后,menu.lst没有变化,加载扩展模块失败。查看源码,发现判断是否修改menu.lst依据是ls /boot/ADDONS/#的结果是否改变,这应该就是原因所在了,原来的代码没有能够反映扩展模块启动菜单的变化,建议先执行call :ADDONS,再把比较(rd)+1和menu.lst作为是否修改的依据。

[ 本帖最后由 2011_dihuo0 于 2011-9-9 22:31 编辑 ]
回复

使用道具 举报

12#
发表于 2011-9-9 22:06:54 | 显示全部楼层
这么一改后,我发现addons.lst不起任何作用了,似乎没没存在的必要了。
顺便祝chenall中秋节快乐。

[ 本帖最后由 2011_dihuo0 于 2011-9-9 22:11 编辑 ]
回复

使用道具 举报

13#
发表于 2011-9-9 22:26:19 | 显示全部楼层
受此启发,我想addons.lst可以删除了,menu.tmp能不能也删除呢。如果最后直接把(rd)+1作为启动菜单,而不写入menu.lst的话,那么menu.lst和menu.tmp就没有必要同时存在了。可以把menu.tmp更名为menu.lst,在PRELOAD.BAT里把menu.tmp替换为menu.lst,又可以减少一个文件了。
回复

使用道具 举报

14#
发表于 2011-9-9 23:16:32 | 显示全部楼层

回复 #219 chenall 的帖子

清空addons.lst的方法很多,但是都是手动修改的办法,我希望程序能够有一种自动检测文件改变的方案。
有没有办法记录文件的修改时间,以此作为重新扫描的依据。
回复

使用道具 举报

15#
发表于 2011-9-9 23:19:59 | 显示全部楼层
对了可以记录文件的大小,修改文件通常都会改变文件的大小,这是一个可行的方案,如果有文件的大小改变了,就重新扫描。

[ 本帖最后由 2011_dihuo0 于 2011-9-9 23:23 编辑 ]
回复

使用道具 举报

16#
发表于 2011-9-12 22:23:33 | 显示全部楼层
相对于旧版本,新版本都有哪些改变?我想研究一下两者的不同。
新版本问题似乎比较多,这两天没怎么用电脑,这只是一个初步的印象。
回复

使用道具 举报

17#
发表于 2011-9-13 08:02:08 | 显示全部楼层
抱歉,我昨天说的是0905版,后来我又下载了0911版,经初步测试,一切正常,没有什么问题。
回复

使用道具 举报

18#
发表于 2011-9-13 20:34:57 | 显示全部楼层
下载地址在哪儿?
找到了,是金山快盘。
http://www.kuaipan.cn/file/id_119657788903416.html

[ 本帖最后由 2011_dihuo0 于 2011-9-13 20:37 编辑 ]
回复

使用道具 举报

19#
发表于 2011-9-14 12:25:35 | 显示全部楼层
报告一个问题
测试环境:我的grub4dos工具箱部署在D盘(hd0,4)上,直接用新版的文件覆盖旧版的文件,最后一个分区是F盘。我的系统刚好出了点问题,我打算恢复一下系统,顺便测试QGHO。我把最近的一次备份移动到F:/QGHO/目录并更名为QGHO.GHO,重启系统,按F9,根据经验应该是如果存在GHO文件则恢复系统,否则备份系统。结果新版却是备份系统,把我的备份文件覆盖掉了。幸好我还有更早的备份,同样移动到F:/QGHO/目录并更名为QGHO.GHO,重启系统,按F10,启动MODBOOT进入QGHO,然后选择恢复,但是屏幕闪了一下又没动静了。不得已,只好重启进入pe恢复系统。
看来以后测试时还是应该在虚拟机中进行。
回复

使用道具 举报

20#
发表于 2011-9-15 08:03:59 | 显示全部楼层
最新版是不是有几处手误啊。PRELOAD.BAT中%BootDir%=%~d0/BOOT,在使用时%BootDir%后面应该加个斜线(/),有几处没有加。
按shift+F10后显示的只有扩展模块的菜单,没有前五项。都加上斜线后恢复正常。

[ 本帖最后由 2011_dihuo0 于 2011-9-15 08:06 编辑 ]
回复

使用道具 举报

21#
发表于 2011-9-16 22:24:13 | 显示全部楼层
噗!看到不点了,本来以为是长篇大论的,结果只有短短的几个字。
wee 最新版在这儿:
http://code.google.com/p/grubutils/downloads/list
回复

使用道具 举报

22#
发表于 2011-9-18 15:28:20 | 显示全部楼层

回复 #265 chenall 的帖子

据我的测试结果,也是只有QGHO.GHO,而没有uuid.gho。
回复

使用道具 举报

23#
发表于 2011-9-19 19:54:58 | 显示全部楼层
最新版里面是不是没有menu.lst文件了?
原来写入内置菜单了,建议还是外置吧,否则每次更新grub4dos都得修改内置菜单不太方便。

[ 本帖最后由 2011_dihuo0 于 2011-9-19 19:58 编辑 ]
回复

使用道具 举报

24#
发表于 2011-9-24 19:05:08 | 显示全部楼层

回复 #311 2011c0 的帖子

这个grub4dos工具箱很简单的,一般来说,直接解压倒根目录就可以了,无需修改任何文件,如果需要添加扩展模块,才需要在addons目录下增加几个txt文件,如下图所示

2011-09-24 18 54 07.png (2.32 KB, 下载次数: 93)

2011-09-24 18 54 07.png
回复

使用道具 举报

25#
发表于 2011-9-25 19:10:22 | 显示全部楼层

回复 #325 2011c0 的帖子

chenall可能忘了说最新版的工具箱没有menu.lst,也不会生成menu.lst,生成的是tools.lst,grldr必须使用工具箱自带的,不能使用grub4dos-0.4.5b-2011-09-18.7z中原版的,因为最新版的工具箱修改了内置菜单,如果使用原版的,需要把menu.ldr更名为menu.lst。
你在试试。
回复

使用道具 举报

26#
发表于 2011-9-25 19:58:37 | 显示全部楼层
回复 #329 chenall 的帖子
抱歉,我刚才没有细看帖子。

回复 #325 2011c0 的帖子
“用bootice将Wee63.mbr写入该激活的主分区D”
Wee63.mbr应该写入整个硬盘的mbr,而不是d盘的pbr
vbox虚拟机也可能有问题,换用vm虚拟机试试。
回复

使用道具 举报

27#
发表于 2011-9-25 20:38:44 | 显示全部楼层
回复 #334 2011c0 的帖子

下面附件是屏幕录像工具,下载后删除最后的后缀名“.7z”,用7z解压。
你可以用屏幕录像工具把你的操作过程录下来,让大家帮你分析一下操作过程。

[ 本帖最后由 dihuo0 于 2011-9-25 20:39 编辑 ]

屏幕录像SCREEN2EXE.7z.001.7z

292.97 KB, 下载次数: 19, 下载积分: 无忧币 -2

屏幕录像SCREEN2EXE.7z.002.7z

282.04 KB, 下载次数: 11, 下载积分: 无忧币 -2

回复

使用道具 举报

28#
发表于 2012-10-30 07:49:23 | 显示全部楼层
这是wee的内置菜单造成的问题,我以前也遇到过。
wee的内置菜单只查找/BOOT/GRUB/grldr,不查找/grldr。在工具箱的/BOOT/GRUB/的文件夹下有个grldr文件。
修改内置菜单就好了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-24 09:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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