无忧启动论坛
标题:
if "%key%"=="0x5000" && set key=+ &&死锁
[打印本页]
作者:
tingyue-wu
时间:
2013-1-18 18:38
标题:
if "%key%"=="0x5000" && set key=+ &&死锁
: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 也没找出来。
作者:
zhaohj
时间:
2013-1-19 09:25
0x4800 is Up Arrow;
0x5000 is Down Arrow。
上下键肯定没问题的,你查一下goto :boot_info后的情况
作者:
tingyue-wu
时间:
2013-1-19 10:50
标题:
回复 #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
作者:
zhaohj
时间:
2013-1-19 12:03
我跟踪了一下,发现下面死循环了,是不是缺少文件?
Snap0.jpg
(74.53 KB, 下载次数: 99)
下载附件
2013-1-19 12:04 上传
作者:
tingyue-wu
时间:
2013-1-19 12:17
标题:
回复 #4 zhaohj 的帖子
缺menu.lst文件吗?
不是if语句吗,没有的话应该也不影响啊。
[
本帖最后由 tingyue-wu 于 2013-1-19 12:20 编辑
]
作者:
tingyue-wu
时间:
2013-1-19 12:32
这是没有修改前的原文
: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文件在目录下本来就没有的。因此不是这个问题吧。
我不知道缺什么文件了。能打开的批处理文件都打开了,没看到还要调用什么文件。
作者:
tingyue-wu
时间:
2013-1-19 12:43
标题:
回复 #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 编辑
]
作者:
zhaohj
时间:
2013-1-19 17:14
这个是要安装到硬盘使用的,而不是软盘虚拟的。
你放在硬盘就没问题了。
作者:
tingyue-wu
时间:
2013-1-19 17:17
标题:
回复 #8 zhaohj 的帖子
就是要改成软盘启动呀。不然折腾干嘛
作者:
tingyue-wu
时间:
2013-1-20 12:37
我的在这里形成死循环
call Fn.0 0 0x4ff00 | set DST.ID=
if %DST.ID%==%SRC.ID% && goto :chgpart
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/)
Powered by Discuz! X3.3