无忧启动论坛

标题: 如何实现用UD引导时转从本地硬盘启动? [打印本页]

作者: 2012hotmail    时间: 2012-7-20 11:42
标题: 如何实现用UD引导时转从本地硬盘启动?
用了chiannet 的 实现转从本地硬盘启动的一个方法。 暂时还没发现问题。


  1. title                        从本地硬盘启动
  2. checkrange 0x80 read 0x8280 && map (hd1) (hd0)  && map (hd0) (hd1) && map --hook
  3. rootnoverify (hd0,0)
  4. makeactive
  5. chainloader +1
复制代码
在UD被识别为(hd0)时,用上面的代码无法实现从UD转从本地硬盘启动,执行后继续从UD启动?应该怎么修改?

[ 本帖最后由 2012hotmail 于 2012-7-23 20:34 编辑 ]
作者: chenall    时间: 2012-7-20 11:54
不需要用map映射直接用最新版的一个命令
boot -1
应该就可以了.
作者: 青青草    时间: 2012-7-20 11:55
title 从本地硬盘启动
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr || rootnoverify (hd0) && chainloader +1
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --devices=h /ntldr || find --set-root --devices=h /bootmgr
chainloader /ntldr || chainloader /bootmgr

[ 本帖最后由 2011phzhc 于 2012-7-20 11:56 编辑 ]
作者: 2012hotmail    时间: 2012-7-20 11:59
标题: 回复 #3 2011phzhc 的帖子
这个有局限性,万一本地硬盘是linux或DOS就没辙。
作者: 2012hotmail    时间: 2012-7-20 12:07
标题: 回复 #2 chenall 的帖子

  1. boot -1
复制代码
转从PXE引导了。。。。

[ 本帖最后由 2012hotmail 于 2012-7-20 12:10 编辑 ]

XP工作环境-2012-07-20-12-09-03.png (5.43 KB, 下载次数: 173)

XP工作环境-2012-07-20-12-09-03.png

作者: 青青草    时间: 2012-7-20 12:27
title [o] 从硬盘启动计算机    \n
boot -1


从硬盘启动计算机成功!
作者: chenall    时间: 2012-7-20 13:51
标题: 回复 #5 2012hotmail 的帖子
看截图,因为你的启动顺序是U盘->PXE->XXXX

后面的提示,操作系统没有找到...可能是硬盘的引导的问题.

也有可能是有多硬盘.

在BIOS上设置好正确的启动顺序就可以了.

boot -1是根据BIOS设置的启动顺序进行启动的.
作者: 2012hotmail    时间: 2012-7-20 14:08
标题: 回复 #7 chenall 的帖子
谢大帅。

截图是在VM虚拟机里,虚拟机的硬盘上是有一个可启动的windows XP的。虚拟机的bios启动顺序是:本地硬盘(hdd-PXE-CDROM等)、该UD被识别为HDD类。


在实机测试BOOT -1后,居然出现:

f1 ...
F2 ...
f5 进入bios设置   


这些F1、F2、F5都是BIOS的一些错误处理提示信息(DELL optiplex 台式机)。

此时按f1或f2,又从UD引导了,再执行BOOT -1菜单项,依旧从UD引导。


按f5,进入了BIOS设置,不做任何修改,退出BIOS设置,此时机器依旧为UD引导,再执行BOOT -1菜单项,奇迹发生了,实现了从本地硬盘启动。



BOOT -1还是不太可靠?

[ 本帖最后由 2012hotmail 于 2012-7-20 14:11 编辑 ]
作者: 2012hotmail    时间: 2012-7-20 14:16
boot -1是根据BIOS设置的启动顺序进行启动的。


已经进入UD,没进入本地硬盘,说明本机bios的设定的确是从UD优先,而不是设定为本地硬盘优先。现在想通过boot -1 实现从本地硬盘优先,是不是有矛盾?
作者: chenall    时间: 2012-7-20 14:32
boot -1
和你BIOS设置的启动顺序有关系.你可以自己查看一下启动顺序.

如果你是USB->硬盘.
从USB启动后
boot -1就会从硬盘启动.
如果是USB->PXE-硬盘.
第一次转到PXE启动.这时如果启动的还是GRLDR,再次执行就会转硬盘启动.

这个功能完全依赖BIOS.没有任何选择的余地.只要你的BIOS正常(设置还有功能),就是正常的,反之,就......
作者: xianglang    时间: 2012-7-20 18:30
如果UD被识别为HDD时,有些BIOS是在硬盘中选择硬盘(真实的硬盘、被识别为HDD的U盘)进行启动的,而它的启动顺序依然是硬盘(实际上是U盘,而永远不会是真实的硬盘)。比如设置的顺序是移动设备-硬盘-PXE,而在硬盘启动项中,会出现让你选择真实硬盘或者是被识别为硬盘的U盘进行启动;如果选择了硬盘中的U盘启动的话,只要那个被识别为硬盘的U盘没拔下,就永远不会从真实的硬盘启动——这或者是 BOOT -1 失败的原因所在。
作者: 2011aaaaa0808    时间: 2012-7-20 19:09
标题: 回复 #2 chenall 的帖子
电脑启动顺序是:移动盘-硬盘-光驱-网启

现U盘被当成硬盘,无移动盘,无光驱,
从U盘启动后用boot -1无法从本地硬盘启动,提示无法init18之类的东西,请问是啥原因?

[ 本帖最后由 2011aaaaa0808 于 2012-7-20 19:11 编辑 ]
作者: 2012hotmail    时间: 2012-7-21 14:30
标题: 回复 #11 xianglang 的帖子
为什么map也不成功呢?
作者: xianglang    时间: 2012-7-22 13:47
我想应该不是MAP不成功,而是CHECKRANGE的问题。试试直接在命令行下MAP进行交换,看能不能成功。
作者: xianglang    时间: 2012-7-22 13:53
还有,如果U盘是做成UD盘而又被识别为HDD的话,checkrange 0x80 read 0x8280 读到的值可能不会是 0x80,而是0x23,这样MAP的条件不成立,就自然没有进行过MAP的动作了。
作者: 2012hotmail    时间: 2012-7-22 16:21
标题: 回复 #15 xianglang 的帖子
哦,原来如此!!!!
我改成下面的试试。

  1. title                        从本地硬盘启动
  2. checkrange 0x80 read 0x8280 set sw=yes
  3. checkrange 0x23 read 0x8280 set sw=yes
  4. if "%sw%"=="yes" map (hd1) (hd0)  && map (hd0) (hd1) && map --hook
  5. rootnoverify (hd0,0)
  6. makeactive
  7. chainloader +1
复制代码

[ 本帖最后由 2012hotmail 于 2012-7-22 16:26 编辑 ]
作者: chiannet    时间: 2012-7-22 17:26
  1. title                        从本地硬盘启动
  2. checkrange 0x80 read 0x8280 && if exist (hd0)/fb.cfg && set sw=yes
  3. checkrange 0x23 read 0x8280 && if not exist (fd0)/fb.cfg && set sw=yes
  4. set /a hdn=*0x475&0xff
  5. if %hdn%>=2 && if "%sw%"=="yes" && map --unmap=0:0xff && map (hd1) (hd0)  && map (hd0) (hd1) && map --rehook
  6. rootnoverify (hd0,0)
  7. chainloader +1
复制代码


我略加修改,上面的代码在本人的机器上倒是成功了。
作者: chiannet    时间: 2012-7-22 17:39
我的机器是单一硬盘,主活跃分区是第一分区。

万一主活跃分区是(hdx,y)   (其中x<>0且y<>0),该怎么自动实现?貌似很麻烦?
作者: sunsea    时间: 2012-7-23 05:23
原帖由 chiannet 于 2012-7-22 17:39 发表
我的机器是单一硬盘,主活跃分区是第一分区。

万一主活跃分区是(hdx,y)   (其中x0且y0),该怎么自动实现?貌似很麻烦?

用find搜索启动文件,设为root,然后按正常判断交换,然后再搜索一次,照样设成root,再chainloader /xxx或者kernel /xxx再initrd /xxx
作者: chiannet    时间: 2012-7-23 05:47
标题: 回复 #19 2011czmxbb52 的帖子
用find搜索启动文件的方法,例如find bootmgr,最大的缺陷是某些软激活的盗版windows 7/vista的激活方式被无效了!!又要重新软激活。为了1秒快活,带来几十秒麻烦。
作者: chenall    时间: 2012-7-23 12:07
rootnoverify (hd0,0)
chainloader +1

改成
chainloader (hd0)+1
作者: fyq    时间: 2012-7-23 23:22
我的启动硬盘系统的菜单,还没有发现不能启动的,包括双硬盘。这是我心如水PE的菜单

map (hd1) (hd0)
root (hd1,0)
chainloader +1
作者: 2012hotmail    时间: 2012-7-24 05:52
标题: 回复 #22 fyq 的帖子
呵呵,就这三句?

刚才已测试用你的这三句代码:在UD识别为HDD时不能实现转从本地硬盘启动,表现为黑屏无动静。谢谢回复。
作者: 2010hktk    时间: 2012-7-24 09:25
title   →        硬盘启动 USB
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader +1
title   →        硬盘启动 CD
chainloader (hd0)+1
作者: sunsea    时间: 2012-7-24 11:56
原帖由 chiannet 于 2012-7-23 05:47 发表
用find搜索启动文件的方法,例如find bootmgr,最大的缺陷是某些软激活的盗版windows 7/vista的激活方式被无效了!!又要重新软激活。为了1秒快活,带来几十秒麻烦。

那就find bootmgr再交换磁盘再chainloader ()+1再rootnoverify ()
作者: sunsea    时间: 2012-7-24 11:56
对不起,用手机发重复了。。。

[ 本帖最后由 2011czmxbb52 于 2012-7-24 11:58 编辑 ]
作者: canmao    时间: 2012-7-27 16:58
  1. title [0] Start LOCAL NT5x
  2. find --set-root --devices=h /ntldr || echo 该机器上未安装 NT5x 系统 && pause --wait=3 && exit
  3. if not "%@root:~,4%"=="(hd0" set sw=%@root:~,4%)
  4. if exist sw map (hd0) %sw% && map %sw% (hd0) && map --rehook && rootnoverify (hd0,%@root:~-2%
  5. chainloader +1

  6. title [0] Start LOCAL NT6x
  7. find --set-root --devices=h /bootmgr || echo 该机器上未安装 NT6x 系统 && pause --wait=3 && exit
  8. chainloader +1
复制代码


我测试,启动 bootmgr 不必交换磁盘就可顺利进系统,且上面的代码不影响软激活。

另菜单中是不支持 exit 命令的,出错后会返回主菜单。
请教G4D菜单项执行判错后,如何直接返回? 不用 configfile 命令。
作者: 不点    时间: 2012-7-27 18:13
标题: 回复 #27 canmao 的帖子
你可以使用 goto 命令来做。比如:

find --set-root --devices=h /bootmgr || goto .....
chainloader +1

goto 命令需要另外一个 title 段,专门处理错误的。你可以参考 pseudo  的 grub4dos 菜单,主要学习命令的用法。
作者: canmao    时间: 2012-7-27 19:51
标题: 回复 #28 不点 的帖子
谢谢不点!

很早前啃过 pseudo 的 0pe 中各种脚本。后来主要关注7pe,所以好久都没看过 0pe 的脚本了。

我就是想返回(重显)主菜单。我希望这个 “exit” 是 “return menu”
作者: 2012kwoklee    时间: 2012-8-27 22:25
这个比较有用,多硬盘时试一下
作者: nytc006    时间: 2012-9-3 23:44
原帖由 <i>chiannet</i> 于 2012-7-23 05:47 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2534717&ptid=255083" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
用find搜索启动文件的方法,例如find bootmgr,最大的缺陷是某些软激活的盗版windows 7/vista的激活方式被无效了!!又要重新软激活。为了1秒快活,带来几十秒麻烦。
<br />

这个情况我遇到过几次了,真烦人啊,,,无奈,我现在都修改u盘默认启动项为从下一设备启动了,但是又遇到下面的的这个问题:

原帖由 <i>xianglang</i> 于 2012-7-20 18:30 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2533020&ptid=255083" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
如果UD被识别为HDD时,有些BIOS是在硬盘中选择硬盘(真实的硬盘、被识别为HDD的U盘)进行启动的,而它的启动顺序依然是硬盘(实际上是U盘,而永远不会是真实的硬盘)。比如设置的顺序是移动设备-硬盘-PXE,而在 ...
<br />
真是悲剧,,,。。。。。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3