无忧启动论坛

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

GRUB4DOS更新建议、bug反馈专帖

    [复制链接]
271#
 楼主| 发表于 2011-8-4 14:18:12 | 显示全部楼层
上传一个有线网卡驱动 for pe1.x,可用chkpci 外部命令查找合适的驱动。
驱动比较全,可作为全外置PE的必选。
下载地址(密码见置顶):
ftp://60.190.19.108/zhaohj/net
回复

使用道具 举报

272#
 楼主| 发表于 2011-8-9 13:48:50 | 显示全部楼层
原帖由 chiannet 于 2011-8-9 12:04 发表
由2011-7-9版grldr升级到2011-8-9版grldr后,在一台865PE芯片组的老机上变得不能启动了,表现为map --mem ISO到内存后,启动PE时黑屏失去响应。

原来的旧版本可正常启动。


这种情况正好可以测试新版G4D的map --e820cycles=-1后的memcheck,具体可以看看:
http://bbs.znpc.net/viewthread.php?tid=6146&page=6&fromuid=14583#pid48710
回复

使用道具 举报

273#
 楼主| 发表于 2011-8-9 15:44:54 | 显示全部楼层
原帖由 chiannet 于 2011-8-9 14:42 发表
title  Windows 2003 PE
checkrange 0x30001:-1 read 0x8298 && map --mem (bd)/AXPE/WINPE.ISO (0xff) ! map (bd)/AXPE/WINPE.ISO (0xff)
map --e820cycles=0
map --hook
chainloader (0xff)
以上会在那台 ...


你这种情况说明你的机器很正常!
默认情况下,map --e820cycles=-1
回复

使用道具 举报

274#
 楼主| 发表于 2011-8-10 15:50:06 | 显示全部楼层
map --e820cycles=-1适用于正常的机器(默认可不写);
对于bios有缺陷或bios严重bug、故意为之的变态产品,x是多少只能碰运气了。
回复

使用道具 举报

275#
 楼主| 发表于 2011-8-23 08:54:51 | 显示全部楼层
发现一个bug:取变量值后多出一个空格
8.9版本
-------------------
再次测试,改成set /a m=1就ok!
---------------------

!BAT
......
set m=1
echo disk%m%="S&R&S%m% Installation Disk",\disk,\  >> (fd1)/T.OEM
echo driver=disk%m%,%IDN%.sys,%IDN% >> (fd1)/T.OEM
echo inf=disk%m%,srs%m%.inf >> (fd1)/T.OEM

[ 本帖最后由 zhaohj 于 2011-8-23 09:21 编辑 ]

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

Snap1.jpg
回复

使用道具 举报

276#
 楼主| 发表于 2011-8-23 09:43:57 | 显示全部楼层
原帖由 zxw 于 2011-8-23 09:04 发表
set m=1
1后面有个空格吧?


可能是吧。不小心行尾加了个空格。但%m%是否应该去掉前后空格?
我记得以前是去掉前后空格的,不知什么时候开始变成目前这样了。
--------------
测试了一下,目前只会去掉前端空格。
肯定是bug,不过这样也挺不错的,哈哈。
---------
但这样行尾及连写的时候要特别小心了。
连写的时候两个空格其中一个空格会赋值给变量
set a=abcd  && set b=1 #&&前有两个空格
if "%a%"=="abcd" echo ok
不成功。

[ 本帖最后由 zhaohj 于 2011-8-23 10:03 编辑 ]
回复

使用道具 举报

277#
 楼主| 发表于 2011-9-7 16:59:44 | 显示全部楼层
一直来都是这样吧?!
还是用这样判断放心:if exist (0xff)+1
回复

使用道具 举报

278#
 楼主| 发表于 2011-9-8 08:15:08 | 显示全部楼层
dos批处理里面%i要改成%%i,WENV for /f ... %i 在批处理中也是可以的。G4D的批处理只是把两个%%变成一个%
他的问题主要是:
WENV for /F %i in ("%list%") do wenv_command
回复

使用道具 举报

279#
 楼主| 发表于 2011-9-8 22:56:47 | 显示全部楼层
9月7日的grldr中insmod支持指定名字,比如insmod fat.gz fat
意思是从grub4dos.mod(gz压缩)中加载指定的外部命令到内存吗?
测试了一下不成功,如
insmod /boot/grub/grub4dos.mod fat
显示成功但一运行fat死机。
回复

使用道具 举报

280#
 楼主| 发表于 2011-9-13 11:32:31 | 显示全部楼层
对虚拟光盘有个想法:
连续的硬盘、软盘(0、1),是支持find的,(0xa0)~(0xff)一般用在虚拟光盘即2KB的扇区,是否应该定义一个设备号?
map --mem /MYISO.ISO (0xa0) && map --hook
光盘数是否应该加一?
假如我们定义一个(cw0)代表(0xa0),(cw1)代表(0xa1),(cw)就可以象硬盘一样(hd)
这样find就可以解决虚拟光盘的查找问题。

[ 本帖最后由 zhaohj 于 2011-9-13 11:38 编辑 ]

Snap1.jpg (29.66 KB, 下载次数: 123)

Snap1.jpg
回复

使用道具 举报

281#
 楼主| 发表于 2011-9-14 11:32:14 | 显示全部楼层
原帖由 hhh333 于 2011-9-14 06:59 发表
我看现在g4d的功能已经很强大了,但我一直没有找到,让菜单条件显示的方法,譬如在预执行区根据某个条件来控制下面的菜单的隐藏或显示,或者使失效和可用?这个应该是很有用的。


你可以用动态生成菜单的方法。
回复

使用道具 举报

282#
 楼主| 发表于 2011-9-14 17:26:03 | 显示全部楼层
有点意思,根据条件显示或隐藏某个菜单项,还是有点实用价值的。
回复

使用道具 举报

283#
 楼主| 发表于 2011-9-15 15:43:35 | 显示全部楼层
原帖由 zxw 于 2011-9-15 14:37 发表
shift 连写的问题:


很久以前就碰到这种问题了。
与变量、参数有关的操作,分行写。
如:
!BAT
set /a x1=10
set /a x2=8
set /a x1=%x1%+%x2% && set /a x2=%x1%-%x2%
------------------
!BAT
set /a x1=10
set /a x2=8
set /a x1=%x1%+%x2%
set /a x2=%x1%-%x2%

是完全不同的结果。
回复

使用道具 举报

284#
 楼主| 发表于 2011-9-20 08:23:39 | 显示全部楼层
最简单可能是
echo -e TOM \&\& BOP | set a=
回复

使用道具 举报

285#
 楼主| 发表于 2011-9-30 09:03:01 | 显示全部楼层
@hhh333:
      你提出的问题,我以前同样也提出过,这是在引入变量之前。如configfile、(bd)等问题,在SRSF6返回模块DOS版本中,grldr->io.sys(DOS)->grub.exe尤为明显。
    后来引入了变量及setlocal、endlocal,configfile的问题(改变了(bd)及()设备),解决就变得简单了。
    我们也可以理解,(bd)很早就有的,为了保存兼容性,不可能做很大的改变,既然这样,就用现有的功能也是可以解决的。在SRSF6返回模块(菜单版)中有很多configfile,最新版就是通过setlocal、endlocal解决(bd)问题的。
------------
      开发者与使用者考虑问题的角度可能有些不一样,但兼容性与实用性要做到完全统一是不可能的。(bd)按照理论,就是启动设备,但我们(使用者)可能需要更进一步,想知道“是什么启动设备?”。理论都有了,怎样实践也有了,慢慢的也会变得局部统一。
回复

使用道具 举报

286#
 楼主| 发表于 2011-10-7 16:09:11 | 显示全部楼层
几天没来,变化挺大的。
问:?_Boot什么情况下会改变?
回复

使用道具 举报

287#
 楼主| 发表于 2011-10-7 16:50:58 | 显示全部楼层
呵呵,?_Boot感觉专门为hhh333设计的,不过有这个变量也很不错的。
?_WENV是大写的,?_BOOT还是建议大写,一个变量名大小写混合书写很不方便。另外也与?_WENV统一。
------------
@开头的是grub4dos的内置变量,不区分大小写;
做个记号吧:
@root、@path、@date、@time、@random、@retval
?_WENV、?_BOOT、?_UUID
回复

使用道具 举报

288#
 楼主| 发表于 2011-10-7 17:21:22 | 显示全部楼层
原帖由 zxw 于 2011-10-7 17:08 发表
启用ud区的grldr呢?未变吧


ud启动,再启动ud区的grldr,虽然经过变量初始化,?_BOOT还是(ud)。要说变也可以,不变也可以。

不过一个grldr再启动另一个grldr,没大必要。
虚拟机测试,grldr再启动grldr一般死机(chainloader --force /grldr)

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

Snap1.jpg
回复

使用道具 举报

289#
 楼主| 发表于 2011-10-7 22:08:48 | 显示全部楼层
原帖由 不点 于 2011-10-7 21:33 发表
chainloader 启动 grldr 会死机?

不太可能。

如果有这样的问题,那可是严重 bug。

请确认,未经更改的 grldr 会有这样的问题。测试很简单,启动 grldr 进入命令行,什么乱七八糟的都不要加载,直接 c ...


chainloader 启动 grldr 会死机,这是很久以前的事情了。不过是pxe启动下测试的。
PXE下我测试没有一次成功过。
回复

使用道具 举报

290#
 楼主| 发表于 2011-10-8 09:18:19 | 显示全部楼层
grub4dos中的根目录,可以通过root来重新指定。如:
root (hd0,0)/windows/
ls /                 <------- 显示(hd0,0)/windows/下的文件
ls /system32/   <------- 显示(hd0,0)/windows/system32/下的文件
这里不带()开头分区号的,都是相对root指定而言的。下面带()就不同了:
ls ()/               <------- 显示当前盘根下文件,即(hd0,0)/

相对目录的应用,最早C大的CSPE有应用,但本人建议尽量少用。
回复

使用道具 举报

291#
 楼主| 发表于 2011-10-9 14:27:59 | 显示全部楼层
原帖由 chenall 于 2011-10-9 11:39 发表
使用pxe keep再chainloader 就不会死了,或者在chainloader之后再执行root (hd0,0)之类的语句也不会死

因为没有pxe keep这时的启动盘还是(pd),启动时自动卸载PXE后再访问这个(pd)会出错,导致卡死(新的版本 ...


佩服C大分析问题及解决问题的能力!
目前这样可行:
checkrange 0x21 read 0x8280 && pxe keep
chainloader /grldr
boot
-------------------------
如果没有checkrange 0x21 read 0x8280 && pxe keep,只能启动到命令行模式,PXE丢失。

[ 本帖最后由 zhaohj 于 2011-10-10 08:23 编辑 ]
回复

使用道具 举报

292#
 楼主| 发表于 2011-10-13 08:09:29 | 显示全部楼层
有了nul 方便,与DOS接轨!
最好再设计一个空的敏感命令,等于kernel || clear
方便在菜单中使用。
回复

使用道具 举报

293#
 楼主| 发表于 2011-10-14 08:44:29 | 显示全部楼层
sratlf的报告看来已经找到问题的所在了。
其他不改,把下面这句:
map --heads=2 --sectors-per-track=18 --mem (md)0x800+4 (99)
改成
map --heads=2 --sectors-per-track=18 --mem (md)0x801+4 (99)

map --heads=2 --sectors-per-track=18 --mem (md)0x200+4 (99)
试试,以便避开1M处的55AA。反正不是1M开始就可以。

[ 本帖最后由 zhaohj 于 2011-10-14 08:59 编辑 ]
回复

使用道具 举报

294#
 楼主| 发表于 2011-10-14 11:40:21 | 显示全部楼层
sratlf 还没明白不点大的解释。
新版dd命令使用1M开始的64kb区域作为缓存,dd if=(fd1) of=(fd0) count=1,执行后在(md)0x800+1中缓存了(fd1)的MBR
map --heads=2 --sectors-per-track=18 --mem (md)0x800+4 (99)这里把dd的缓存即(fd1)的MBR也写进了(99)
这样导致读(99)盘出现问题,相当于(99)盘不起作用了。
map前清空就没问题了:echo -n > (md)0x800+1
回复

使用道具 举报

295#
 楼主| 发表于 2011-10-21 13:33:19 | 显示全部楼层
原帖由 tingyue-wu 于 2011-10-21 13:10 发表
用了新版的grldr后,zhaohj 的srsf6运行后找不到驱动文件。用回8月25日的grldr就可以找到驱动文件。


请重新下载新版,昨天刚上传的。
回复

使用道具 举报

296#
 楼主| 发表于 2011-10-21 14:04:21 | 显示全部楼层
原帖由 tingyue-wu 于 2011-10-21 13:40 发表
就是昨晚的新版呀  新的也不行 旧的也不行了。


奇怪,我这里测试没有问题啊。能上传你测试机器的ID吗?怎么调用的?
-----------
请转到SRSF6的主题讨论吧!

[ 本帖最后由 zhaohj 于 2011-10-21 14:45 编辑 ]
回复

使用道具 举报

297#
 楼主| 发表于 2011-10-21 15:35:26 | 显示全部楼层
问C大,上面时候?_BOOT变量值会丢失?
我运行SRSF6N后,发现?_BOOT变量值丢失。SRSF6N也没有改变过它,是否是setlocal没有保护的原因?
回复

使用道具 举报

298#
 楼主| 发表于 2011-10-21 15:44:53 | 显示全部楼层
C大刚上传的新版本解决问题了!
回复

使用道具 举报

299#
 楼主| 发表于 2011-10-21 17:01:08 | 显示全部楼层
vbe下echo $[ABCD]颜色失效
-------
刚看到C大回复,看来这个是为VBE将来打算的。

[ 本帖最后由 zhaohj 于 2011-10-21 17:03 编辑 ]
回复

使用道具 举报

300#
 楼主| 发表于 2011-10-23 16:28:03 | 显示全部楼层
我10.9版的G4D运行CSPE都正常(已修过临时内存到32M以上);
同样虚拟机环境,PXE启动,grub.exe升级到10.9
10.21/10.22的G4D这几个版本运行CSPE,能到PE桌面,但没有了B盘,当然其他什么也没有了。
我估计是fat copy出问题了。
我上传到ftp://60.190.19.108/zhaohj/cspe
C大帮分析一下

[ 本帖最后由 zhaohj 于 2011-10-23 16:39 编辑 ]

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

10.9 G4D启动CSPE

10.9 G4D启动CSPE

Snap2.jpg (39.64 KB, 下载次数: 117)

10.22 G4D启动CSPE

10.22 G4D启动CSPE
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-12 23:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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