无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
211#
发表于 2011-3-2 11:41:55 | 显示全部楼层
嗯,只是限制单个命令文件不超过40K。

可以自己修改源码取消这个限制。

另外还有一个GRUB4DOS的限制,insmod使用了0xF0000字节内存。
即所有要加载到内存的模块解压后的总大小不可以超过0xf0000。超过了后面的就会加载失败了。

[ 本帖最后由 chenall 于 2011-3-2 11:45 编辑 ]
回复

使用道具 举报

212#
发表于 2011-3-2 13:09:00 | 显示全部楼层
嗯,就是没有图形界面。。
只是命令行的。

外部命令目前只能在linux下编译。
回复

使用道具 举报

213#
发表于 2011-3-2 14:16:18 | 显示全部楼层
原帖由 jianliulin 于 2011-3-2 13:22 发表
to chenall
   有没有什么标记可以判断某个文件是否是grub4dos 的外部命令文件?

grub4dos的外部命令文件有以下标志

文件未尾肯定是以下8个字节
05 18 05 03 BA A7 BA BC
回复

使用道具 举报

214#
发表于 2011-3-2 15:22:44 | 显示全部楼层
因为经过GZ压缩过了,,,用GZIP解压后肯定有。
回复

使用道具 举报

215#
发表于 2011-3-2 15:25:42 | 显示全部楼层
这个fat.mod是使用makemod生成的嗎?
擴展名為.mod的必須使用makemod生成,否則是不行的。。
回复

使用道具 举报

216#
发表于 2011-3-2 15:33:33 | 显示全部楼层
因為FAT比較大,所以在编译完成后就顺便压缩了一下,其它的命令都是没有压缩的。
回复

使用道具 举报

217#
发表于 2011-3-3 09:03:29 | 显示全部楼层
首先判断文件头

如果是GZIP那前两个字节的值会是以下其中一样(现在只要判断第一个就可以了)
#define GZIP_HDR_LE      0x8B1F
#define OLD_GZIP_HDR_LE  0x9E1F
若是GZ文件就解压,然后继续。

如果前面的4个字节的值是 0x54414221     //!BAT
则认为是批处理文件。

如果文件尾是GRUB4DOS的可执行文件签名,就认为是外部命令,否则非法。
回复

使用道具 举报

218#
发表于 2011-3-3 09:08:52 | 显示全部楼层
另外更新到最新版本,目前好像是按最近的日期依次查找的,这样如果长时间没有更新则可能要查找挺久的。

建议使用RSS来获取
RSS地址.
http://code.google.com/feeds/p/grub4dos-chenall/downloads/basic
回复

使用道具 举报

219#
发表于 2011-3-3 10:53:34 | 显示全部楼层
把批处理当成一个外部命令来处理就行了。
回复

使用道具 举报

220#
发表于 2011-3-3 17:17:56 | 显示全部楼层
小试了一下,一切正常。
不过,因为当初设计的原因。
实际文件名长度不可以超过11个字符(包括.号),最后一个用于结束字符串。

现在如果使用ABCDEFGH.123之类的文件名(即总长度超过11),打包进去后会出现异常。

所以还是要限制文件名长度不能超过11个字符。
回复

使用道具 举报

221#
发表于 2011-3-4 08:28:26 | 显示全部楼层
@Plantsoot
这样子虽然好,但我感觉没有必要改变,必竟使用太长的外部命令名称完全没有必要。
^_^,而且目前的方式比较方便编程。

一个命令一般8个字符以上就挺长的了。太长了不好书写。
回复

使用道具 举报

222#
发表于 2011-3-4 10:24:02 | 显示全部楼层
是的shift是一个伪命令
必须单行。
回复

使用道具 举报

223#
发表于 2011-3-4 10:45:11 | 显示全部楼层
这个以后再考虑看看,会比较麻烦。

我还没有想到好的办法让它可作为一个单独的命令。而且还要不影响使用。

如果谁有什么好的想法也可以提供一下。
回复

使用道具 举报

224#
发表于 2011-3-7 15:22:31 | 显示全部楼层
应该和分区格式有关系,具体的不太清楚。
回复

使用道具 举报

225#
发表于 2011-3-7 16:27:28 | 显示全部楼层
这个得空再研究下,可能会比较麻烦。呵呵,主要是我对这些不是很清楚。
回复

使用道具 举报

226#
发表于 2011-3-8 13:47:03 | 显示全部楼层
原帖由 jianliulin 于 2011-3-8 08:53 发表
chenall 你有空能不能写个修改mbr pbr 为nt5 ,nt6 的外置程序?

这个如果不考虑复杂情况的话比较简单.晚上再抽空看下.
回复

使用道具 举报

227#
发表于 2011-3-8 18:05:42 | 显示全部楼层
晕,看了一下,发现要写好,也不是一件容易的事,对于BPB还不是很了解,特别是NTFS的.

如果Pauly可以写一个那就再好不过了,他对这些比较熟悉.而且利用BOOTICE的现在代码来转换应该也不难.

这个就暂时先放着了.Sorry!
回复

使用道具 举报

228#
发表于 2011-3-11 14:03:18 | 显示全部楼层
原帖由 thttht 于 2011-3-9 11:57 发表
C大新版本的对lzma支持有问题!

之前grub4dos-0.4.5b-2010-11-30版本的没有问题,新版的在加载较大文件(我这里加载的是RamOS 的img文件 )。

加载到一部分后出现:disk read error 的错误提示!
        grub4 ...


lzma部份的源码我还没有去看.如果可能的话,你们可以帮忙查一下原因.

zhaohj

记得我之前好像就有说过了,检测中文版的可以用以下方法
help fontfile | set chinese=

if not defined chinese echo 这是英文版的GRUB4DOS

至于在内存中设置一个标志,好像不是很必要.


对于2-62清零确实是一件很简单的(不考虑非63扇区的情况)如下
echo -n > (hd0)1+62

其实,只要灵活应用,甚至不需要编写程序就可以达到修改MBR/DBR的目的的.
提示:通过批处理获取磁盘参数,再配合一个固定的MBR/DBR BIN文件.
确定了要写入的位置和长度,就可以通过DD命令从BIN文件中提取相应的部份写入.就达到目的了.

关键还是获取分区参数,MBR因为都是一个扇区,相对来说更简单.BPB就没有那么简单了.需要对BPB/DBR有一定的了解.


最近没有太多时间上来.

[ 本帖最后由 chenall 于 2011-3-11 14:06 编辑 ]
回复

使用道具 举报

229#
发表于 2011-3-14 19:48:53 | 显示全部楼层
不行哦,
不过可以变通一下,比如把外部命令和需要的文件全部打包到一个IMG镜像中.然后启动时加载这个镜像..
回复

使用道具 举报

230#
发表于 2011-3-14 23:57:52 | 显示全部楼层
原帖由 thttht 于 2011-3-14 23:32 发表
C大
C大新版本的对lzma支持有问题!
之前grub4dos-0.4.5b-2010-11-30版本的没有问题,新版的在加载较大文件(我这里加载的是RamOS 的img文件 )。
加载到一部分后出现:disk read error 的错误提示!
      ...


谢谢,我会抽空看一下.不过我最近没有多少时间.

可不可以麻烦多测试几个版本,看看是从哪一个版本开始引起的?

[ 本帖最后由 chenall 于 2011-3-15 00:05 编辑 ]
回复

使用道具 举报

231#
发表于 2011-3-15 23:49:17 | 显示全部楼层
看了一下,没能找到原因..怀疑可能是因为内存冲突.

再试了一下,发现有可能是LZMA的BUG.
谁英文比较好的,麻烦去reboot论坛找karyonix反应一下,可能是LZMA解压的BUG.

当启用进度条的时候LZMA解压就可能失败(大于8MB).如果不c进度(即一次性读完)它就正常.

[ 本帖最后由 chenall 于 2011-3-16 00:32 编辑 ]
回复

使用道具 举报

232#
发表于 2011-3-24 15:46:50 | 显示全部楼层
2011-03-24
        1.set /p功能增强(可能会和之前的版本不兼容),新增参数set /p:N
        主要变动:
                1).如果未输入不会清除原来的变量.(之前的版本会清除).
                2).新增支持默认时间没有输入自动退出.
                   set /p:N variable=prompt
                如果在N秒之内没有任何输入,则返回,并且不改变variable的值.

以下是不兼容的地方: 有使用这些特性的需要注意.

新的版本,如果在输入过程中按Esc或没有任何输入,则直接返回假,不修改变量的值.
之前的版本会清除变量.
回复

使用道具 举报

233#
发表于 2011-3-24 15:48:43 | 显示全部楼层
原帖由 frxshyx 于 2011-3-24 15:02 发表
我两台电脑间隔4年购买的,分别接了罗技wave无影手键鼠套装,开机按del键可进入BIOS设置进行调整,说明电脑是支持无线键盘的,然而进入GRUB4DOS菜单后无法控制,只能等倒计时结束选择默认选项。不巧的是有一次我 ...


这个也不一定是GRUB4DOS的问题,GRUB4DOS是直接调用BIOS的功能来使用键盘的,如果BIOS没有提供当然不行了.
有一些BIOS只提供在BIOS界面访问这些鼠标键盘的功能..,

另外BIOS里面有的还会有一个设置,你可以找找看,是允许在DOS下使用USB鼠标键盘之类的.


1.想办法进入DOS,看看你的键盘能不能使用.
2.使用其它引导软件,看看能不能使用.

[ 本帖最后由 chenall 于 2011-3-24 15:50 编辑 ]
回复

使用道具 举报

234#
发表于 2011-3-25 08:13:21 | 显示全部楼层
只影响内部的SET命令.
对WENV没有影响.
回复

使用道具 举报

235#
发表于 2011-3-26 13:10:41 | 显示全部楼层
嗯,这个建议不错,

当时是有考虑的,忘记了.呵呵.
回复

使用道具 举报

236#
发表于 2011-3-26 13:51:17 | 显示全部楼层
OK,已经更新...

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

使用道具 举报

237#
发表于 2011-3-28 23:15:12 | 显示全部楼层
在硬盘上使用建议用WEE来代替GRLDR.MBR。
回复

使用道具 举报

238#
发表于 2011-3-31 15:06:41 | 显示全部楼层
原帖由 zxw 于 2011-3-31 11:29 发表

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


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

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

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

使用道具 举报

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

使用道具 举报

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



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

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-12 07:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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