无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
1051#
发表于 2011-7-4 12:04:34 | 只看该作者
原帖由 zhaohj 于 2011-7-4 11:57 发表
正常了!
发现@root没有即时生效

一直就是这样。
回复

使用道具 举报

1052#
发表于 2011-7-4 12:07:52 | 只看该作者
to chenall

能否考虑将unifont 内置到grldr 里面去
回复

使用道具 举报

1053#
发表于 2011-7-4 12:12:13 | 只看该作者
原帖由 jianliulin 于 2011-7-4 12:07 发表
to chenall

能否考虑将unifont 内置到grldr 里面去

如考虑内置,建议将控制字符/b也处理一下。
回复

使用道具 举报

1054#
 楼主| 发表于 2011-7-4 12:21:27 | 只看该作者
发现下面语句永远成立而不管(fd0)是否存在:
geometry (fd0)
if exist (fd0)+1
-------------------
经过测试,只要bios中开启A,就这样;BIOS中关闭则正常
估计是不点修正CHS有关。

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

Snap1.jpg (26.81 KB, 下载次数: 133)

Snap1.jpg
回复

使用道具 举报

1055#
 楼主| 发表于 2011-7-4 13:19:45 | 只看该作者
建议如:%~dpnx0
%~d0返回小写,目前正常
%~pnx0返回大写,目前是小写。
%~f0按上面。

===============
set path=(bd)/BOOT/GRUB/
call :rootdir  %path%
返回的是rootdir=(bd)
能否根据当前boot环境,返回真实的路径,如(pd)


:rootdir
set rootdir=%~d1
exit

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

使用道具 举报

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

回复 #1058 zhaohj 的帖子

看起来是正常的呀

#1059
为什么要大写?只为了某个特定的环境?我觉得没有这个必要,而且只是徒增麻烦罢了。

返回真实的路径,这个正要修改。
回复

使用道具 举报

1057#
发表于 2011-7-4 20:46:57 | 只看该作者

回复 #1058 zhaohj 的帖子

实机无软驱,BIOS中禁止软驱,测试也是这样,if exist (fd0)成立,geometry (fd0)也成立。
回复

使用道具 举报

1058#
发表于 2011-7-4 22:40:18 | 只看该作者

回复 #1053 chenall 的帖子

grub4dos-0.4.5b-2011-07-04对%~d0,%~dp0替换的结果仍然不正确。
我是在简易启动测试器V4.0_Beta6和实机中测试的,使用我上次用的测试脚本test.bat,test,执行结果还是与上次一样。

我还做了一些其他的测试,我猜测可能与查找外部命令的顺序有关。对此,grub4dos-help-2011-05-27是这么描述的:
“查找外部命令的顺序如下:

如果是以 '(' 或 '/' 开头的FILE认为是一个绝对路径的文件.直接打开。

否则

1.先查找用INSMOD加载的命令。

2.使用默认位置里面的同名文件。

3.使用当前root下的同名文件。”


当我们执行外部命令时,就是在当前目录下执行的,此时[email=%dp0=%@root%/]%dp0=%@root%/[/email],然而实际上执行的是%@path%下的同名文件。也许交换两者的查找顺序可以解决此问题。

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

使用道具 举报

1059#
发表于 2011-7-4 22:52:46 | 只看该作者
原帖由 幸运的草 于 2011-7-4 20:46 发表
实机无软驱,BIOS中禁止软驱,测试也是这样,if exist (fd0)成立,geometry (fd0)也成立。

BIOS中禁止软驱后,我测试是正常的。
回复

使用道具 举报

1060#
发表于 2011-7-5 00:09:06 | 只看该作者
尝试解决%~d0,%~dp0的问题。

可以试试这个,如果没有意外的话应该是正常的。
比如test.bat放在commnad_path目录下。

直接执行tes.bat

这时获取到的%~dp0应该是command_path.

如果这个test.bat放在当前root,则获取到的%~dp0就是当前的@root.

注意:外部命令查找顺序,command_path目录里面的文件优先使用。

grldr.zip

140.53 KB, 下载次数: 26, 下载积分: 无忧币 -2

回复

使用道具 举报

1061#
发表于 2011-7-5 01:03:48 | 只看该作者

回复 #1064 chenall 的帖子

测试结果如下:
.
回复

使用道具 举报

1062#
发表于 2011-7-5 08:06:24 | 只看该作者

回复 #1063 zxw 的帖子

经过多台机测试,这个情况不是普遍存在,有的机关闭后不存在,有的机存在,好像和BIOS有关。因此,用上面两条语句判断是否存在(fd0)可能并不准确,建议改用其他方式判断较为合适。
回复

使用道具 举报

1063#
发表于 2011-7-5 14:14:43 | 只看该作者
这个应该比较完善了。
对于%~d0会自动处理成友好的形式。比如(hd0,x)或(fdx),(pd)之类的。

先放着试两天没有问题再更新源码。

grub4dos-0.4.5b-2011-07-05.7z

265.3 KB, 下载次数: 149, 下载积分: 无忧币 -2

回复

使用道具 举报

1064#
 楼主| 发表于 2011-7-5 15:29:18 | 只看该作者
测试正常,RUN模块可以简化了:
set run=%~0 && if /i "%~0"=="%~nx0" && delmod -l %~0 || set run=%@path%%%~0
=>
set run=%~f0 && delmod %~nx0

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

使用道具 举报

1065#
发表于 2011-7-5 17:41:32 | 只看该作者
测试正常。不过看补丁,这里有处笔误:
+  "\n\t--set-path 参数设置默认可执行文件搜索路径,若未设置默认是(bd)/grub"
回复

使用道具 举报

1066#
发表于 2011-7-5 17:45:19 | 只看该作者

回复 #1069 zxw 的帖子

中文提示忘了改了,,
回复

使用道具 举报

1067#
 楼主| 发表于 2011-7-5 18:06:30 | 只看该作者
map --folppies=M
M目前最大是2,能否开放点?
回复

使用道具 举报

1068#
发表于 2011-7-5 21:18:22 | 只看该作者
>>> 开放点?

开放多少?为什么要开放?支持开放的理由有哪些?不开放有什么坏处?
回复

使用道具 举报

1069#
 楼主| 发表于 2011-7-6 08:11:44 | 只看该作者
原帖由 不点 于 2011-7-5 21:18 发表
>>> 开放点?

开放多少?为什么要开放?支持开放的理由有哪些?不开放有什么坏处?


主要是考虑usb-zip启动配合srsf6安装系统或启动内核无SRS的PE1.x

zip占用(fd0),SRSF6生成仿真盘(fd0)、(fd1),目前只有先map (fd0) (hd)并生效才可以腾出(fd0);
------------
如果M=3
则可以先map (fd0) (fd2)并生效,SRSF6生成仿真盘(fd0)、(fd1),这样find可以找到(fd2)
回复

使用道具 举报

1070#
 楼主| 发表于 2011-7-6 08:24:01 | 只看该作者
map --mem (md)+2880 (fd0)
map --hook
fat mkfs (fd0)
===============
问C大,这样做出来的仿真盘(grub环境下读写都没有问题),不能被WINDOWS系统识别(F6阶段),目前的无菜单版SRSF6N就存在这个问题。
我换成f6.IMG生成的仿真盘就成功。
难道是FAT外部命令的问题?

[ 本帖最后由 zhaohj 于 2011-7-6 10:36 编辑 ]
回复

使用道具 举报

1071#
发表于 2011-7-6 18:32:07 | 只看该作者

回复 #1073 zhaohj 的帖子

>>> 这样find可以找到(fd2)

如果就这点好处的话,还是维持原状吧。

开放以后,将与以往不兼容。也就等于是,自己制造不兼容。虽然这个不兼容性所带来的影响可能不大,但不知道有多少人受影响。假如能够避免的话,还是应该避免。

操作系统 DOS 只承认有两个软盘。因此,实际上,BIOS 也最多只安排两个软盘。如果超出这个限制,很难说,具体的操作系统在启动时会不会出问题。

所以,即使允许 floppies=3 和 4,也应该在启动操作系统之前将 floppies 设定在 2 以内(不超过2,最大可以是2)。

我个人觉得,把 floppies 的上限设定为 4 也是可以的。不过,需要在文档中说明,用户在启动操作系统时,最好应该保证 floppies 不超过2。

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

还有一种解决办法。就是,不改变 BIOS 数据区中 floppies 的设定。但是,给 find 命令增加一个新的参数,让 find 查找的 floppies 的个数能够控制。比如说,可以让 find 找 8 个 floppies,甚至 16 个floppies(前提当然是,要保证这些 floppies 都存在,它们可以是虚拟的;否则对于某些 buggy 的 BIOS 有可能在访问不存在的磁盘时死机)。类似地,也可以让 find 查找的 harddrives 的个数能够控制。甚至还可以让 find 查找虚拟光盘 (hd32) 以及 (0xFF) 等。

以上两种方案,我觉得都是可以的,看看 chenall 的偏爱吧。

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

明确一下,floppies 和 harddrives 的值,是 BIOS 数据区中的。任何操作系统都能看见这些值,也都可能用某种方式来使用这些值。根据虚拟盘的设置情况,floppies 和 harddrives 的值应该作出相应的改动,以便让操作系统能够“看见”虚拟的磁盘。因此,floppies 和 harddrives 的值是很重要的,不应该搞错(这里主要是说,用户应该小心,不要搞错)。
回复

使用道具 举报

1072#
 楼主| 发表于 2011-7-6 18:53:28 | 只看该作者
可以这样,需要M>2的时候,一定要设置map --folppies=M
floppies 的上限设定为 4 就够了。
希望C大先来个测试版。
回复

使用道具 举报

1073#
发表于 2011-7-6 20:30:28 | 只看该作者

回复 #1075 不点 的帖子

我打算整理一份wee的help.txt文件,但是我搜不到是否支持下列命令参数:

root [DEVICE [HDBIAS]] HDBIAS磁盘偏移参数
command [--set-path=PATH]

经我测试command [--set-path=PATH]似乎无效。

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

使用道具 举报

1074#
发表于 2011-7-6 21:27:04 | 只看该作者
wee 的 root 命令很简单,只支持 root [ device ] 这样的格式。不过,和 grub4dos 一样,此处的 device 可以带有一个路径,表示设定当前目录。例如,root (hd0,0)/boot/grub 是可以的,设定 (hd0,0)/boot/grub/ 为当前目录。root (hd0,0) 其实设定当前目录为 (hd0,0)/,即(hd0,0)的根目录。

command 命令不支持 --set-path 参数。默认时,使用当前 root 设备(的当前目录)作为命令文件的路径。

举例:当你确信 root 为 (hd0,0) 时,敲入 ntldr 命令,则立即执行 (hd0,0)/ntldr 命令。
回复

使用道具 举报

1075#
发表于 2011-7-6 22:12:39 | 只看该作者

回复 #1078 不点 的帖子

我发现exit 命令好像有点多余,wee不支持脚本功能,而exit 命令却是脚本专用的,不知道可否删除以减少代码空间呢?

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

使用道具 举报

1076#
发表于 2011-7-6 23:01:29 | 只看该作者
exit 命令可以用来立即终止脚本运行。

exit 命令之后的命令,都不执行,就像注释掉了一样。

在将来,当一个外部命令调用内部的命令处理器进入命令行手动输入命令的时候,如果没有 exit 命令,则永远无法退回到外部命令中。有了 exit 命令,当前的命令处理就可以结束了,控制可以回到调用者。
回复

使用道具 举报

1077#
发表于 2011-7-6 23:37:31 | 只看该作者
多谢不点的解释,我想得太简单了。
回复

使用道具 举报

1078#
发表于 2011-7-7 16:33:56 | 只看该作者
关于不同版本的grldr加载NTBOOT,启动XP VHD 的问题:

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=190203&page=29#pid2271298

看下是不是有冲突和BUG。
回复

使用道具 举报

1079#
 楼主| 发表于 2011-7-7 17:03:09 | 只看该作者
7.5版本,命令行下:
uuid (hd0,0)
cat --hex (md)0x228+1
变量空间一片乱码?


===========
但set命令后,正常

?_UUID变量丢失,错写成?_WENV了

[ 本帖最后由 zhaohj 于 2011-7-7 17:09 编辑 ]

Snap1.jpg (22.09 KB, 下载次数: 134)

Snap1.jpg
回复

使用道具 举报

1080#
 楼主| 发表于 2011-7-7 17:33:54 | 只看该作者
哇,要这样啊?
set
uuid (hd0,0)
cat --hex (md)0x228+1
正常!

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

为何grub启动后不初始化一下变量空间?

[ 本帖最后由 zhaohj 于 2011-7-7 17:36 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-27 14:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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