无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
241#
 楼主| 发表于 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 编辑 ]
回复

使用道具 举报

242#
 楼主| 发表于 2011-7-5 18:06:30 | 显示全部楼层
map --folppies=M
M目前最大是2,能否开放点?
回复

使用道具 举报

243#
 楼主| 发表于 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)
回复

使用道具 举报

244#
 楼主| 发表于 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 编辑 ]
回复

使用道具 举报

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

使用道具 举报

246#
 楼主| 发表于 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
回复

使用道具 举报

247#
 楼主| 发表于 2011-7-7 17:33:54 | 显示全部楼层
哇,要这样啊?
set
uuid (hd0,0)
cat --hex (md)0x228+1
正常!

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

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

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

使用道具 举报

248#
 楼主| 发表于 2011-7-8 00:11:27 | 显示全部楼层
今天一不小心,在P处理中goto跳转,如:
:start
...
goto :start
----------
我在goto :start后面加了一个空格,跳转失败。
我认为这要处理一下。
回复

使用道具 举报

249#
 楼主| 发表于 2011-7-9 19:37:13 | 显示全部楼层
一个很小的文件,比如小于512字节的文件,下面语言会出错:
map --mem=0xb000 /srs/sif/txtsetup.sif (rd)

因为不知道文件大小,放到内存中中转一下COPY比较快。

================
经过测试,小于512字节会出错,大于512正常。

[ 本帖最后由 zhaohj 于 2011-7-9 19:40 编辑 ]
回复

使用道具 举报

250#
 楼主| 发表于 2011-7-10 12:09:36 | 显示全部楼层
对%~d1有点疑问:
按我的理解,象这样的路径是绝对路径,如:
(bd)/boot/srs/
()/boot/srs/
(pd)/boot/srs/

/boot/srs/应该没有盘符的
----------------

Snap1.jpg (20.8 KB, 下载次数: 119)

Snap1.jpg
回复

使用道具 举报

251#
 楼主| 发表于 2011-7-10 13:33:17 | 显示全部楼层
原帖由 zxw 于 2011-7-10 13:03 发表
糊涂了吧?此时,%~d1为root设备。


%~d1为root设备的理解也正确,从当前设备取值。
但从需求上来说,更偏向不带(*)的路径是没有盘符的。

你们都没有错,我只提出点想法。

扩展一下也可以,如:%~D1
/test/test.bat /boot/srs/

得到:
%~d1=(pd)
%~D1=

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

使用道具 举报

252#
 楼主| 发表于 2011-7-10 18:36:23 | 显示全部楼层
新版本引入了新的bug,估计是处理空格字符引起的,导致WENV判断失误
下面文件是(fd1)/oem
id        =        "PCI\VEN_104B&DEV_1040", "VMscsi"
------------
WENV for /f "tokens=1-3 delims==," %i in ( (fd1)/OEM ) do (set a=$u,%i ; set b=%u,%j ; set c=%k ; check $${a)==ID echo $${b}=$${c})
结果b="PCI\VEN_104B&DEV_1040"   <---前面有空格导致的
      c=VMscsi                                  <--前面没有空格正常
---------------
经过测试,空格是tab键空格

[ 本帖最后由 zhaohj 于 2011-7-10 19:24 编辑 ]

Snap1.jpg (15.05 KB, 下载次数: 114)

Snap1.jpg
回复

使用道具 举报

253#
 楼主| 发表于 2011-7-10 19:26:16 | 显示全部楼层
原帖由 chenall 于 2011-7-10 19:23 发表
这个应该是WENV的原因吧,最近我所做的修改都和这个没有任何的关系。

你可以换下最近的几个版本,看看哪个版本开始这样子的。


测试过了,是wenv的问题,不会去掉tab键空格。wenv把tab键空格作为字符处理了。
回复

使用道具 举报

254#
 楼主| 发表于 2011-7-11 12:00:56 | 显示全部楼层
下面的菜单是运行一个P处理后做下一步:
title TEST Bat command “exit 1"
/boot/test.bat
echo Bat command already finish
commandline
--------------------------
test.bat 内容:
!BAT
echo test
exit 1
-------------------
选中菜单后运行
出现:
command /boot/test.bat
press any key to  continue...

按任何键直接返回到原菜单,而没有执行下面两个命令。
----------------------
也就是说,P处理中的exit 1命令会跳过菜单中后续的命令。
回复

使用道具 举报

255#
 楼主| 发表于 2011-7-11 15:09:20 | 显示全部楼层
原帖由 chenall 于 2011-7-11 14:30 发表
因为exit 1会使得errnum的值大于0,以后的版本中会进行改进。

为了方便,下个版本准备添加简易的setlocal和endlocal命令。
用于保存、恢复当前环境
保存的内容暂定为如下
boot_drive;
install_partition ...


哇,这样太好了。
1:启动设备(bd)  0x8280,0x8208
2:当前设备()     0x82a0,0x829c
3:当前目录,这个不常用,一般都用根
4:@path
5:变量 (md)0x228+65

另外,把debug状态也保存一下。
回复

使用道具 举报

256#
 楼主| 发表于 2011-7-11 15:57:11 | 显示全部楼层
想知道一下,执行一次需要的33K内存,是动态分配的吧?!
测试了一下,变量恢复很正常。

---------------------
又一想,需要变量传递的地方需要小心。
回复

使用道具 举报

257#
 楼主| 发表于 2011-7-11 17:31:37 | 显示全部楼层
P处理一复杂后比较难用,特别是goto很多的情况,比如P处理中间判断后goto到开始位置的情况。
主要是endlocal要对应好setlocal
如果能加标记就好了
setlocal  1
...
endlocal 1  <-------如果没有setlocal  1就不执行这个endlocal

而且第二次执行setlocal  1会覆盖先前的设置的setlocal  1

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

使用道具 举报

258#
 楼主| 发表于 2011-7-12 00:12:34 | 显示全部楼层
改造SRSF6N(无菜单版)不成功。

运行过程,发现与wenv冲突,但不提示出错。
只要我一运行wenv for /L 就会乱。
比如(fd1)/OEM中是原始文件,执行call :cclear(目的是清理注释等)后,发现(fd1)/OEM是空。
另我临时使用了32M处的内存,不知有关?

C大测试看看

7.12早上重新上传了下。

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

SRSF6N.7z

51.26 KB, 下载次数: 27, 下载积分: 无忧币 -2

回复

使用道具 举报

259#
 楼主| 发表于 2011-7-12 08:48:48 | 显示全部楼层
确实存在这种情况,这个情况很难处理。

目前只有实现WENV设置的变量同步这种方式才能实现。
不然太混了。

-------------------
想到一个办法:wenv (set AA=BB ; call set AA=${AA})

调用内部命令set生成。

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

使用道具 举报

260#
 楼主| 发表于 2011-7-12 11:07:38 | 显示全部楼层
有成功的实例了,但内存变量被破坏

Snap1.jpg (31.85 KB, 下载次数: 122)

Snap1.jpg
回复

使用道具 举报

261#
 楼主| 发表于 2011-7-12 16:16:05 | 显示全部楼层
初步测试,全部正常!万分感谢C大!
回复

使用道具 举报

262#
 楼主| 发表于 2011-7-12 17:18:37 | 显示全部楼层
问C大,setlocal等在菜单中能否使用?
回复

使用道具 举报

263#
 楼主| 发表于 2011-7-13 00:17:37 | 显示全部楼层
终于搞定了configfile恢复环境的问题。
这个问题是以前一直困扰我的问题,这次终于搞定了。
回复

使用道具 举报

264#
 楼主| 发表于 2011-7-13 11:06:37 | 显示全部楼层
“注:在批处理中出现setlocal @则在批处理中setlocal @之前的setlocal命令会全部失效。
      所以setlocal @有必要的使用的话一般要放在批处理最前面。”
------------------
测试结果(SRSF6菜单版):
set test=test
setlocal
set srs=/SRS/
setlocal @
configfile /menusrs.lst
....
--------------
menusrs.lst 内容:
endlocal @
setlocal @
title 1
/menu.bat
...
-------------
menu.bat 内容:
endlocal @
endlocal
set

-------------------
返回后查看变量:
test=test 是存在的。
这个结果虽然与上面不相符,但需要的就是这个结果。
回复

使用道具 举报

265#
 楼主| 发表于 2011-7-16 14:11:55 | 显示全部楼层
发现shift存在bug
shift n
目前只有默认是 shift 1 时正常;大于或等于2都是错误的。
------------

难道是我理解有误?!

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

Snap1.jpg (18.36 KB, 下载次数: 104)

Snap1.jpg

Snap2.jpg (8.95 KB, 下载次数: 106)

Snap2.jpg
回复

使用道具 举报

266#
 楼主| 发表于 2011-7-16 17:02:05 | 显示全部楼层
想用cat --locate=string来定位,并找到匹配的最后的位置。
取最后一个数的问题,现在效率太低
:get_last
if "%1"=="" exit
shift
if "%1"=="" set last=%0
goto :get_last
exit
----------------------
比如说查到有1000个匹配,0x4cb00中是1000(最新版grub好像在此处@retval的值是1,不知返回值@retval是成功标志吗)
希望在此处0x4cb00或@retva改成l返回locate位置。
回复

使用道具 举报

267#
 楼主| 发表于 2011-7-18 18:03:36 | 显示全部楼层
原帖由 chenall 于 2011-7-18 16:52 发表
cat --locate

返回值是找到的数量。@retval=*0x4cb00


确实0x4cb00和@retval是数量
----------------
能否修改一下,使返回值成功的话是最后找到的值

或者把成功获取的最后值放到?_WENV

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

使用道具 举报

268#
 楼主| 发表于 2011-7-22 09:01:48 | 显示全部楼层
新版?_WENV已设置为last,感谢C大的支持!

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

Snap1.jpg (69.79 KB, 下载次数: 111)

Snap1.jpg

Snap2.jpg (34.22 KB, 下载次数: 121)

Snap2.jpg
回复

使用道具 举报

269#
 楼主| 发表于 2011-7-22 19:17:20 | 显示全部楼层
请C大方便的时候,更新一下inifile的/remove,把原来的[;改成[_
[; window安装驱动会报错
回复

使用道具 举报

270#
 楼主| 发表于 2011-7-25 07:50:05 | 显示全部楼层
原帖由 chenall 于 2011-7-24 23:27 发表
改成[*了
你可以再试一下看会不会有问题.


改成 [* 测试ok!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-13 09:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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