无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3824|回复: 9
打印 上一主题 下一主题

[求助] if "%key%"=="0x5000" && set key=+ &&死锁

[复制链接]
跳转到指定楼层
1#
发表于 2013-1-18 18:38:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
:QGHO_BOOT
setlocal
::call Fn.0 0 0x4ff00 调用内置函数0(sprintf),相当于
::sprintf((char *)0,(char *)0x4ff00),打印内存0x4ff00处的字符串
(1)/BOOT/GRUB/diskid %QGHO.SRC%
call Fn.0 0 0x4ff00 | set SRC.ID=
(1)/BOOT/GRUB/diskid %QGHO.DST%
call Fn.0 0 0x4ff00 | set DST.ID=
set ifs.dsk=%?%
echo %@TIME% Saving configuration....
set key=
:boot_info
call :BOOT_%mode%
call Fn.6
call Fn.5 0 20
echo $[0102]屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯 HardDisk Info 屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯
(1)/BOOT/GRUB/diskid info
call Fn.5 3 2
echo $[0105]       %gho_info%
echo $[0102]       QGHO: $[0104]%Q_MODE%  $[0107]CFG_FILE:%QGHO.CFG% $[0103]%QGHO.OS%
if exist GHO.PWD && echo -pwd=%GHO.PWD% >> (md)0x3000+2
echo $[0102]============================== qgho.ini ==============================
cat (md)0x3000+2
echo -P:1310 $[0105]Press $[1107]ESC$[0105] to quit, any other keys to continue...
call Fn.5 0 1
call Fn.70 0
pause --test-key --wait=18
set /A key=%@retval%
if "%key%"=="0x11B" && exit 3
if /i "%mode%"=="pload" && goto :save_boot
if "%key%"=="0x4800" && set key=- && goto :boot_info
if "%key%"=="0x5000" && set key=+ && goto :boot_info


以上怎么理解?
尤其是if "%key%"=="0x4800" && set key=- && goto :boot_info
if "%key%"=="0x5000" && set key=+ && goto :boot_info
一执行就死锁,只好重启。是新版本grldr改了热键了,还是什么错误引起的?用debug 3 也没找出来。
2#
发表于 2013-1-19 09:25:10 | 只看该作者
0x4800 is Up Arrow;
0x5000 is Down Arrow。
上下键肯定没问题的,你查一下goto :boot_info后的情况
回复

使用道具 举报

3#
 楼主| 发表于 2013-1-19 10:50:21 | 只看该作者

回复 #2 zhaohj 的帖子

:boot_info也在上面,既然不是热键问题。应该是 :boot_info循环应用出错了。
我看chenall老大的qgho的设置好像是,默认备份c盘到最后一个磁盘,按+或-号后会再次载入备份设置,但是目标盘就前移或后移一个。这样的循环应用在被我该在fd镜像后可能那个变量出错了(原本是只能安装在硬盘的),我找不出错误之处。zhaohj老大帮我找找错误在哪?
镜像文件在这http://pan.baidu.com/share/link?shareid=187716&uk=201379052
菜单
map --mem ()/BOOT/IMGS/10.IMG (fd1) || find --set-root /BOOT/IMGS/10.IMG && map --mem ()/BOOT/IMGS/10.IMG (fd1)
map --hook
command (fd1)/BOOT/PRELOAD.BAT
回复

使用道具 举报

4#
发表于 2013-1-19 12:03:40 | 只看该作者
我跟踪了一下,发现下面死循环了,是不是缺少文件?

Snap0.jpg (74.53 KB, 下载次数: 89)

Snap0.jpg
回复

使用道具 举报

5#
 楼主| 发表于 2013-1-19 12:17:58 | 只看该作者

回复 #4 zhaohj 的帖子

缺menu.lst文件吗?
不是if语句吗,没有的话应该也不影响啊。

[ 本帖最后由 tingyue-wu 于 2013-1-19 12:20 编辑 ]
回复

使用道具 举报

6#
 楼主| 发表于 2013-1-19 12:32:05 | 只看该作者
这是没有修改前的原文
:default
if exist %BootDir%/OEMSLIC.BIN && %BootDir%/GRUB/SLIC %BootDir%/OEMSLIC.BIN
if exist %BootDir%/SYS_MENU.LST && configfile %BootDir%/SYS_MENU.LST
if "%QGHO.OS%"=="Unknown" && goto :0x4200
echo Default Boot: $[0102]%QGHO.OS% on %QGHO.SRC%
if exist QGHO.SRC && chainloader %QGHO.SRC%+1 ! chainloader (hd0)1+1
boot
exit

SYS_MENU.LST文件在目录下本来就没有的。因此不是这个问题吧。
我不知道缺什么文件了。能打开的批处理文件都打开了,没看到还要调用什么文件。
回复

使用道具 举报

7#
 楼主| 发表于 2013-1-19 12:43:12 | 只看该作者

回复 #4 zhaohj 的帖子

会不会不是缺文件,而是经过一个循环到了这里找不到硬盘系统了(因为现在是在fd1中),如果是这样的话在此处添个什么语句重新定位到硬盘是根启动,然后再自动回到这里执行下去。

是这样造成的。因为原来我把文件打包后,又从文件中把涉及到grub文件夹下的几个外部命令和DEFSYS.BAT文件拷贝到硬盘的grub目录下,那时候加载img后是可以+-切换目标磁盘的。
现在我修改了批处理中外部命令的路径,不再需要读取硬盘上的文件,就出现了卡死的情况。
你看这一句是关键if "%QGHO.OS%"=="Unknown" && goto :0x4200
第一次启动时从c盘菜单进入img,所以%QGHO.OS%是有操作系统信息的,不会死循环,现在第二次到这里,没有经过c盘,自然unknown,所以死循环了。

[ 本帖最后由 tingyue-wu 于 2013-1-19 15:14 编辑 ]
回复

使用道具 举报

8#
发表于 2013-1-19 17:14:06 | 只看该作者
这个是要安装到硬盘使用的,而不是软盘虚拟的。
你放在硬盘就没问题了。
回复

使用道具 举报

9#
 楼主| 发表于 2013-1-19 17:17:37 | 只看该作者

回复 #8 zhaohj 的帖子

就是要改成软盘启动呀。不然折腾干嘛
回复

使用道具 举报

10#
 楼主| 发表于 2013-1-20 12:37:12 | 只看该作者
我的在这里形成死循环
call Fn.0 0 0x4ff00 | set DST.ID=
if %DST.ID%==%SRC.ID% && goto :chgpart
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-2 07:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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