无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
12
返回列表 发新帖
楼主: chiannet
打印 上一主题 下一主题

[已解决] UD识别为USB-zip时如何引导可见区PE!HHH333一语点破玄机。zhaohj进一步完善。

[复制链接]
31#
发表于 2011-6-11 11:54:23 | 只看该作者
从我自己测试过程看,可能是&&操作符不起作用,如果不用操作符,完全执行每条命令无此问题。不过为什么move中使用了map --hook生效后,再map (fd0) (hd0)然后map --hook,可在命令行下查看到map成功,但为什么PE启动会出错?

不过无多硬盘条件无法测试move的多硬盘效果。

目前成功的过程:
(ud)/move 的内容:
!BAT
set /a hd=*0x475&0xff+0x7f
if %hd%==127 exit
:move
set /a hd1=%hd%+1
map (%hd%) (%hd1%)
set /a hd=%hd%-1
checkrange 0x7f calc %hd% || goto :move
exit

fd(0,0)启动的菜单:
title   启动 WINPE
(ud)/move
map (fd0) (hd0)
map --hook
root (hd0,0)
chainloader /boot/ldrxpe

这样U盘可见分区上的pe3.0和pe1.X启动均成功

[ 本帖最后由 mygamexxx 于 2011-6-11 12:24 编辑 ]
回复

使用道具 举报

32#
 楼主| 发表于 2011-6-11 12:45:54 | 只看该作者

回复 #31 mygamexxx 的帖子

25楼test3说明与操作符“&&”没有关系

是不是(ud)/move没有执行到合理的结果,导致其后的&&的内容没执行?

[ 本帖最后由 chiannet 于 2011-6-11 12:47 编辑 ]
回复

使用道具 举报

33#
发表于 2011-6-11 12:54:01 | 只看该作者
是不是(ud)/move没有执行到合理的结果,导致其后的&&的内容没执行?

经测试,确定如此,只要有move后面的&&就不会执行。

(ud)/move 的内容:
!BAT
set /a hd=*0x475&0xff+0x7f
if %hd%==127 exit
:move
set /a hd1=%hd%+1
map (%hd%) (%hd1%)
set /a hd=%hd%-1
checkrange 0x7f calc %hd% || goto :move
exit

fd(0,0)启动的菜单:
title   启动 WINPE
(ud)/move
map (fd0) (hd0) && map --hook && root (hd0,0) && chainloader /boot/ldrxpe

启动成功,会不会是批处理执行后不返回成功与否的信息?因为批处理中无论什么情况最后执行的都是exit。

再测试
(ud)/move || map (fd0) (hd0) && map --hook && root (hd0,0) && chainloader /boot/ldrxpe
启动成功,(hd0)成功变成了(hd1),(fd0)成功变成了(hd0)
(ud)/move && map (fd0) (hd0) && map --hook && root (hd0,0) && chainloader /boot/ldrxpe
启动不成功,move后面全部未执行。

哈哈,move 执行结果信息刚好相反。至此,问题应该全部解决了!!!

[ 本帖最后由 mygamexxx 于 2011-6-11 13:45 编辑 ]
回复

使用道具 举报

34#
 楼主| 发表于 2011-6-11 13:22:12 | 只看该作者

回复 #33 mygamexxx 的帖子

(ud)/move 的内容:
  1. !BAT
  2. set /a hd=*0x475&0xff+0x7f
  3. if %hd%==127 exit
  4. :move
  5. set /a hd1=%hd%+1
  6. map (%hd%) (%hd1%)
  7. set /a hd=%hd%-1
  8. checkrange 0x7f calc %hd% || goto :move
复制代码



  1. title  2003PE (非UD区)
  2. find --set-root /AXPE/SETUPLDR.BIN
  3. if "%@root%"=="(fd0,0)" (ud)/move && map (fd0) (hd0) && map --hook && map --rehook &&  rootnoverify (hd0,0)
  4. chainloader /AXPE/SETUPLDR.BIN
复制代码



成功了!!!!!!!
回复

使用道具 举报

35#
发表于 2011-6-11 13:27:23 | 只看该作者

回复 #34 chiannet 的帖子

还是有点小疑问,如果去掉exit(或者不去掉exit),出现无硬盘或多硬盘的情况不知会不会执行正常?
因为批处理中有 if %hd%==127 exit 这一句。这需要 zhaohj 大大来下结论。

[ 本帖最后由 mygamexxx 于 2011-6-11 13:30 编辑 ]
回复

使用道具 举报

36#
发表于 2011-6-11 13:30:35 | 只看该作者
下面分析move是否成功
1:把move改成map后生效:
!BAT
set /a hd=*0x475&0xff+0x7f
if %hd%==127 exit
:move
set /a hd1=%hd%+1
map (%hd%) (%hd1%)
set /a hd=%hd%-1
checkrange 0x7f calc %hd% || goto :move
map --rehook
exit
2:move前后对比:

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

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

move前硬盘状态

move前硬盘状态

Snap2.jpg (41.36 KB, 下载次数: 144)

move后硬盘状态

move后硬盘状态
回复

使用道具 举报

37#
发表于 2011-6-11 13:40:47 | 只看该作者

回复 #36 zhaohj 的帖子

move 中如果生效(无论使用map --hook还是map --rehook),后面再进行map (fd0) (hd0),启动PE时均会提示setupldr:can't open multi(0)disk(0)rdisk(0)partition(1)
回复

使用道具 举报

38#
 楼主| 发表于 2011-6-11 13:41:12 | 只看该作者
(ud)/movv 的内容:


  1. !BAT
  2. set /a hd=*0x475&0xff+0x7f
  3. if %hd%==127 exit
  4. :move
  5. set /a hd1=%hd%+1
  6. map (%hd%) (%hd1%)
  7. set /a hd=%hd%-1
  8. checkrange 0x7f calc %hd% || goto :move
  9. map --rehook
  10. exit
复制代码
以下两次pause,得到的结果与27楼图片一样。

  1. timeout 10
  2. default 3
  3. gfxmenu (bd)/IMGS/MESSAGE
  4. title  test
  5. find --set-root /AXPE/SETUPLDR.BIN
  6. map --status
  7. ls  (hd0,0)/
  8. pause
  9. if "%@root%"=="(fd0,0)" (ud)/movv && map (fd0) (hd0) && map --hook && map --rehook
  10. map --status
  11. ls  (hd0,0)/
  12. pause
复制代码
回复

使用道具 举报

39#
 楼主| 发表于 2011-6-11 13:45:51 | 只看该作者
(ud)/movv 的内容:
  1. !BAT
  2. set /a hd=*0x475&0xff+0x7f
  3. if %hd%==127 exit
  4. :move
  5. set /a hd1=%hd%+1
  6. map (%hd%) (%hd1%)
  7. set /a hd=%hd%-1
  8. checkrange 0x7f calc %hd% || goto :move
复制代码
以下两次pause,

第一次ls  (hd0,0)/是本地硬盘的内容。
第二次ls  (hd0,0)/是USB可见区的内容。
  1. timeout 10
  2. default 3
  3. gfxmenu (bd)/IMGS/MESSAGE
  4. title  test
  5. find --set-root /AXPE/SETUPLDR.BIN
  6. map --status
  7. ls  (hd0,0)/
  8. pause
  9. if "%@root%"=="(fd0,0)" (ud)/movv && map (fd0) (hd0) && map --hook && map --rehook
  10. map --status
  11. ls  (hd0,0)/
  12. pause
复制代码

[ 本帖最后由 chiannet 于 2011-6-11 13:49 编辑 ]
回复

使用道具 举报

40#
发表于 2011-6-11 13:47:21 | 只看该作者
再进一步测试,发现if ....运行P处理后&& 后面的语句没有执行:
我是pxe启动的,move成功执行了,但后面的语句没运行
if '%@root%"=="(pd)" /test/move.bat && uuid && echo ok

==================
1:把P处理改成以前一样 (不要map --kook)

2:
title  2003PE (非UD区)
find --set-root /AXPE/SETUPLDR.BIN
if "%@root%"=="(fd0,0)" (ud)/move
if "%@root%"=="(fd0,0)"  map (fd0) (hd0) && map --hook &&  rootnoverify (hd0,0)
chainloader /AXPE/SETUPLDR.BIN

不过建议把map --hook改成map --rehook比较好

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

Snap3.jpg (21.71 KB, 下载次数: 149)

Snap3.jpg
回复

使用道具 举报

41#
 楼主| 发表于 2011-6-11 13:52:26 | 只看该作者

回复 #40 zhaohj 的帖子

好,你给个适用于·解决此问题的标准move和应用代码吧。好结束此帖。
回复

使用道具 举报

42#
发表于 2011-6-11 13:53:40 | 只看该作者

回复 #40 zhaohj 的帖子

改成if '%@root%"=="(pd)" /test/move.bat || uuid && echo ok肯定能执行。同时请看一下37楼是什么原因。

[ 本帖最后由 mygamexxx 于 2011-6-11 13:55 编辑 ]
回复

使用道具 举报

43#
发表于 2011-6-11 14:07:22 | 只看该作者
问题的原因找到了,是用在P处理的exit命令导致的,把P处理改一下,这个问题结贴:
move:
!BAT
set /a hd=*0x475&0xff+0x7f
if %hd%==127 goto :eof
:move
set /a hd1=%hd%+1
map (%hd%) (%hd1%)
set /a hd=%hd%-1
checkrange 0x7f calc %hd% || goto :move

-------------
title  2003PE (非UD区)
find --set-root /AXPE/SETUPLDR.BIN
if "%@root%"=="(fd0,0)"  (ud)/move && map (fd0) (hd0) && map --rehook &&  rootnoverify (hd0,0)
chainloader /AXPE/SETUPLDR.BIN
回复

使用道具 举报

44#
 楼主| 发表于 2011-6-11 14:25:22 | 只看该作者

回复 #43 zhaohj 的帖子

是的,43楼是可以的。
move:
  1. !BAT
  2. set /a hd=*0x475&0xff+0x7f
  3. if %hd%==127 goto :eof
  4. :move
  5. set /a hd1=%hd%+1
  6. map (%hd%) (%hd1%)
  7. set /a hd=%hd%-1
  8. checkrange 0x7f calc %hd% || goto :move
  9. map --rehook
复制代码


这样也不行,会提示disk read error




所以43楼是标准兼最佳答案!
回复

使用道具 举报

45#
发表于 2011-6-11 14:37:42 | 只看该作者
关于plpbt问题,你先测试一下运行前后的uuid状态,今天有空看看能否解决
uuid
usb2加速器
uuid
你把前后结果贴个图
回复

使用道具 举报

46#
 楼主| 发表于 2011-6-11 14:40:56 | 只看该作者
好的。我正好准备提此问题的。我估计不一定是plpbt本身,也许是P大的USB_ACC.0pe调整所致。我在备料。
回复

使用道具 举报

47#
 楼主| 发表于 2011-6-11 14:56:36 | 只看该作者

  1. timeout 10
  2. default 3
  3. gfxmenu (bd)/IMGS/MESSAGE

  4. title  test
  5. uuid
  6. pause
  7. (ud)/USB_ACC.0PE
复制代码
我运行时(ud)/USB_ACC.0PE,是输入0,即选择5.10版驱动。
USB_ACC.0PE有个特性,加载了驱动后,会立即自动再次加载grldr菜单,图一是加载前,图二是加载后。







[ 本帖最后由 chiannet 于 2011-6-11 14:57 编辑 ]
回复

使用道具 举报

48#
发表于 2011-6-11 15:16:25 | 只看该作者
从上图可以看出,USB_ACC.0PE运行后,把第一硬盘覆盖了。
下面我们来分析一下
1:加载USB2.0加快老机器运行速度
因为USB_ACC.0PE要覆盖第一硬盘,先move(当然这个move后面要加map --hook)
(ud)/MOVE
(ud)/USB_ACC.0PE
如果原来有一个硬盘,则变成 (hd0) (hd1),其中的(hd1)是原来的第一硬盘,(hd0)是USB_ACC.0PE生成的。

move:
!BAT
set /a hd=*0x475&0xff+0x7f
if %hd%==127 goto :eof
:move
set /a hd1=%hd%+1
map (%hd%) (%hd1%)
set /a hd=%hd%-1
checkrange 0x7f calc %hd% || goto :move
map --hook

你先看看这个结果是否正确?即在命令行下uuid
另,我很怀疑第二幅图,P大不会不考虑覆盖第一硬盘的情况。

[ 本帖最后由 zhaohj 于 2011-6-11 15:24 编辑 ]
回复

使用道具 举报

49#
发表于 2011-6-11 15:28:57 | 只看该作者

回复 #48 zhaohj 的帖子

5.10版有此情况(原(hd0)硬盘看不到),以后的版本改进了,但不如5.10版好用。先move应能解决此问题。
使用加速器后在我的机器上启动pe1.x会在pe启动过程中黑屏很长时间(十几分钟,但不是死机,最后可成功启动),可能是硬盘检测?启动pe3.0倒没有异常。

[ 本帖最后由 mygamexxx 于 2011-6-11 15:33 编辑 ]
回复

使用道具 举报

50#
发表于 2011-6-11 15:36:13 | 只看该作者
原帖由 mygamexxx 于 2011-6-11 15:28 发表
5.10版有此情况(原(hd0)硬盘看不到),以后的版本改进了,但不如5.10版好用。先move应能解决此问题。


如果这样,先判断这个版本是5.10,是就先move

另,这个(hd0,0)有什么内容?是否一定要占用不放(即不能再动它的位置)?
回复

使用道具 举报

51#
发表于 2011-6-11 15:39:50 | 只看该作者

回复 #50 zhaohj 的帖子

(hd0,0)就是U盘可见分区内容。
回复

使用道具 举报

52#
发表于 2011-6-11 15:45:47 | 只看该作者
原帖由 mygamexxx 于 2011-6-11 15:39 发表
(hd0,0)就是U盘可见分区内容。


这是个好消息啊
如果是usb-zip,即可见区识别为(fd0,0)的情况会怎样?
--------------
如果(hd0,0)就是U盘可见分区内容,那就简单了。
回复

使用道具 举报

53#
 楼主| 发表于 2011-6-11 15:49:52 | 只看该作者
25楼test2test4启动PE还是没事,就是找不到USB鼠标,怎么解释?

[ 本帖最后由 chiannet 于 2011-6-11 15:51 编辑 ]
回复

使用道具 举报

54#
发表于 2011-6-11 15:54:24 | 只看该作者
(fd0,0)运行加速器后会变成(hd0,0),plpbt加载后可能设置与USB鼠标等有冲突,杯具啊,刚才测试,在用FBINSTTOOL拖入文件时突然U盘数据全部丢失,变成未格式化,只好重新格式化。还好,U盘没坏掉。我是读卡器加TF卡,上次插到别人的电脑中,正在拷贝东西,突然坏掉,竟然是读卡器坏掉,还好TF卡没坏。
第一种情况
加载5.10版plpbt,后进入G4D命令行,U盘可见分区(fd0,0)变成(hd0,0), 原(hd0,0)被覆盖。
加载5,12版plpbt,后进入G4D命令行,U盘可见分区(fd0,0)变成(hd0,0), 原(hd0,0)变成(hd1,0)。
第二种情况
加载5.10版plpbt,后进入G4D命令行,U盘可见分区(hd0,0)还是(hd0,0), 本地硬盘可能是(hd1,0)。
加载5,12版plpbt,后进入G4D命令行,U盘可见分区(hd0,0)还是(hd0,0), 本地硬盘可能是(hd1,0)。

[ 本帖最后由 mygamexxx 于 2011-6-11 16:11 编辑 ]
回复

使用道具 举报

55#
 楼主| 发表于 2011-6-11 16:05:34 | 只看该作者

回复 #48 zhaohj 的帖子

先move,再加速,原Hd0成了hd1。HD0的内容就是47楼图二拿一行





[ 本帖最后由 chiannet 于 2011-6-11 16:10 编辑 ]
回复

使用道具 举报

56#
发表于 2011-6-11 16:31:12 | 只看该作者
plpbt的问题,你们自己处理吧。
运行加速器后,给个标志,后面就不用move了。usb键鼠标问题,那肯定是加速器造成的。

如果你们认为5.1的plpbt比较好,那我可以改进一下P大的这个加速器。

你可以上传到此。

[ 本帖最后由 zhaohj 于 2011-6-11 16:43 编辑 ]
回复

使用道具 举报

57#
发表于 2011-6-22 22:25:49 | 只看该作者

求教

研究了chiannet大的自由天空UD版菜单,发现 "%@root%"=="(fd0,0)",写法,查阅帮助文件找不到"%@root%"的解释,求教各位老大,谢谢!
回复

使用道具 举报

58#
发表于 2011-9-23 13:23:24 | 只看该作者
同问
另外,一个只支持USB-ZIP的机器,用sbinst格式化的U盘,启动到GRUB4DOS菜单时,按E进入编辑一个条目,再编辑其他条目包括再回过来编辑此条目时,发现 "%@root%"的值由(fd0,0)变为(ud),为什么?
真心求教,多谢
回复

使用道具 举报

59#
发表于 2012-2-18 08:22:15 | 只看该作者
看不懂啊看不懂
老大教我代码怎么用啊?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-10 19:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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