无忧启动论坛

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

[求助] ntboot如何动态传启动文件名称、目录等参数给BCD以启动nt5x.wim的问题-诚请网友指点

[复制链接]
跳转到指定楼层
1#
发表于 2014-2-24 09:29:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qj_tzy 于 2014-2-25 11:38 编辑


我在http://bbs.wuyou.net/forum.php?mod=viewthread&tid=326439&fromuid=349593(出处: 无忧启动论坛)下载了xp.wim、03.wim,及经该贴楼主修改过的bootmgr、bcd、boot.sdi,均置于某分区\xp03\目录下,按该贴的启动方法是:grub4dos启动\xp03\bootmgr→bootmgr读取\xp03\bcd→bcd再启动xp.wim或03.wim,启动时要读取\xp03\boot.sdi文件。按该法启动成功。

现在的问题是:不想受BCD文件中对xp或03.wim、boot.sdi等所在分区、目录、名称等的限制,即可将xp或03.wim置于任意分区、任意目录、改为任意名称,传参数给ntboot,由其启动系统。
但我用grub4dos+ntboot按下法启动未成功,即使用wimtool将xp.wim或03.wim中的\windows\system32\winload.exe,拷入\windows\system32\boot\目录下也是如此:

/boot/ntboot/ntboot pe1=(hd0,x)\xp03\xp.wim  
#上句是按ntboot中启动nt5x.wim的启动方法


/boot/ntboot/ntboot nt6=(hd0,x)\xp03\xp.wim
#上句是考虑到nt5x.wim是按bootmgr+bcd+BOOT.SDI方式制作的

同时用最新版的xorboot 7.1也未启动xp或03.wim成功。

解决思路是:
1.修改ntboot或用类似的方法。
2.修改xp.wim或03.wim,以适应ntboot。
3.或是其他方法。

现诚请各位网友指点、讨论,以共同解决此一问题,谢谢!


如何动态传参数的提问,请移驾6楼。
2#
发表于 2014-2-24 13:22:44 | 只看该作者
支持一个。希望群策群力,尽可能解决该WIM系统的实用性问题。另外热备份工具已出,请测试并反馈。
回复

使用道具 举报

3#
 楼主| 发表于 2014-2-25 09:19:52 | 只看该作者
本帖最后由 qj_tzy 于 2014-2-25 09:42 编辑

若能得到chenall、527104427等众位高手的指点,就太好了。

关键是不知如何修改ntboot?
回复

使用道具 举报

4#
发表于 2014-2-25 10:04:18 | 只看该作者
这个不是ROMOS吗?好像C大改好了:

command %NTBOOT% NT6=/boot/boot.wim nodetecthal

点评

谢谢指点,我用了NTBOOT_2012.06.27版_之2013-04-02修改版、NTBOOT-2013-08-11修改版作了测试,测试方法是:解压到启动分区根目录,目录名称为ntboot,其下有NTBOOT文件,及NTBOOT.IMG、NTBOOT.LST、NTBOOT.MOD等目  详情 回复 发表于 2014-2-25 10:38
回复

使用道具 举报

5#
 楼主| 发表于 2014-2-25 10:38:19 | 只看该作者
本帖最后由 qj_tzy 于 2014-2-25 11:58 编辑
527104427 发表于 2014-2-25 10:04
这个不是ROMOS吗?好像C大改好了:

command %NTBOOT% NT6=/boot/boot.wim nodetecthal


谢谢指点,我用了NTBOOT_2012.06.27版_之2013-04-02修改版、NTBOOT-2013-08-11修改版作了测试,测试方法是:解压到启动分区根目录,目录名称为ntboot,其下有NTBOOT文件,及NTBOOT.IMG、NTBOOT.LST、NTBOOT.MOD等目录,在grub4dos中,用以下命令之一启动,均在加载文件完成后出现以下错误,见下图:
/boot/ntboot/ntboot pe1=(hd0,x)\xp03\xp.wim  

/boot/ntboot/ntboot nt6=(hd0,x)\xp03\xp.wim

/boot/ntboot/ntboot nt6=(hd0,x)\xp03\xp.wim  nodetecthal

以上未用command命令也可吧

另:我解开NTBOOT.NT6进行查看,是否其中的boot.sdi与在1楼提到的boot.sdi不同造成的,但其大小均为3096字节、日期却不同。
但我用winhex工具比较两个boot.sdi,未发现不同字节。

点评

另: 我解开NTBOOT.NT6进行查看,发现其中的BCD文件未指定要启动的WIM文件的名称、所在目录与分区等,这就意谓着ntboot是通过参数方式,动态将启动分区(hdx,y)、目录/dir/、启动文件sys.wim等传给BCD启动的,这是如  详情 回复 发表于 2014-2-25 11:03
回复

使用道具 举报

6#
 楼主| 发表于 2014-2-25 11:03:51 | 只看该作者
本帖最后由 qj_tzy 于 2014-2-25 11:39 编辑
qj_tzy 发表于 2014-2-25 10:38
谢谢指点,我用了NTBOOT_2012.06.27版_之2013-04-02修改版、NTBOOT-2013-08-11修改版作了测试,测试方 ...


另:
我解开NTBOOT.NT6进行查看,发现其中的BCD文件未指定要启动的WIM文件的名称、所在目录与分区等,这就意谓着ntboot是通过参数方式,动态将启动分区(hdx,y)、目录/dir/、启动文件sys.wim等传给BCD启动的,这是如何做到的呢? 这是我一直未搞明白的,我解开ntboot,发现其是一个grub4dos的批文件,但未看明白,望请高手指点迷津,谢谢!
回复

使用道具 举报

7#
发表于 2014-2-25 15:57:53 | 只看该作者
本帖最后由 chenall 于 2014-2-25 15:59 编辑

因为这个RAM系统使用的是特殊的BOOTMGR文件,

我估计替换NTBOOT的NTBOOT.NT6里面的BOOTMGR就可以用以下方法启动了

/boot/ntboot/ntboot nt6=(hd0,x)\xp03\xp.wim

替换的时候需要注意,因为这个BOOTMGR有修改过,所以你需要先恢复原来的路径

把BOOTMGR里面的XP03全部修改为BOOT

点评

看了http://bbs.wuyou.com/forum.php?mod=viewthread&tid=326439&fromuid=349593帖子的最新回复,确定是因为采用了winvista的bootmgr修改而来,若用win7/win8的bootmgr则不能启动xp/03.wim  详情 回复 发表于 2014-2-25 16:42
回复

使用道具 举报

8#
 楼主| 发表于 2014-2-25 16:42:41 | 只看该作者
chenall 发表于 2014-2-25 15:57
因为这个RAM系统使用的是特殊的BOOTMGR文件,

我估计替换NTBOOT的NTBOOT.NT6里面的BOOTMGR就可以用以下 ...

看了http://bbs.wuyou.net/forum.php?m ... &fromuid=349593帖子的最新回复,确定是因为采用了winvista的bootmgr修改而来,若用win7/win8的bootmgr则不能启动xp/03.wim
回复

使用道具 举报

9#
发表于 2014-2-25 17:28:55 | 只看该作者
那直接换一个WINVISTA的BOOTMGR替换进去应该就可以了吧。

点评

但将vista的boomgr定制版替换进去后,又不能启动win7/win8了,所以只有另想他法。  详情 回复 发表于 2014-2-25 17:33
回复

使用道具 举报

10#
 楼主| 发表于 2014-2-25 17:33:12 | 只看该作者
chenall 发表于 2014-2-25 17:28
那直接换一个WINVISTA的BOOTMGR替换进去应该就可以了吧。

但将vista的boomgr定制版替换进去后,又不能启动win7/win8了,所以只有另想他法。

点评

帮不上忙,顶多给你几个原版的BOOTMGR  详情 回复 发表于 2014-2-25 19:59
回复

使用道具 举报

11#
发表于 2014-2-25 19:23:58 | 只看该作者
只要替换进去之后可以可能启动,那一切不是变得很简单吗?

顶多就是给NTBOOT增加一个参数,让它使用指定的BOOTMGR这不就完事了。

点评

按照http://bbs.wuyou.com/forum.php?m ... &fromuid=349593的说明,启动xp/03.wim需要定制版的bootmgr来启动老版本的winloa.exe,为此,若想在ntboot中加一个定制版的bootmgr,可否这样: 1.在解压ntboot.nt6后的n  详情 回复 发表于 2014-2-26 11:07
回复chenall 、527104427 : 我下载vista的bootmgr,回家测试一下,把NTBOOT中的bootmgr替换为vista的后能否xp/03.wim,因这台电脑暂不能启动xp/03.wim  详情 回复 发表于 2014-2-26 08:49
回复

使用道具 举报

12#
发表于 2014-2-25 19:59:31 | 只看该作者
qj_tzy 发表于 2014-2-25 17:33
但将vista的boomgr定制版替换进去后,又不能启动win7/win8了,所以只有另想他法。

帮不上忙,顶多给你几个原版的BOOTMGR

vista_bootmgr.7z

421.69 KB, 下载次数: 7, 下载积分: 无忧币 -2

点评

该贴http://bbs.wuyou.com/forum.php?mod=viewthread&tid=326439&fromuid=349593是用winvista SP0的bootmgr制作的,若您有这一版本的bootmgr,请传一下,谢谢!  详情 回复 发表于 2014-2-26 10:43
回复

使用道具 举报

13#
 楼主| 发表于 2014-2-26 08:49:25 | 只看该作者
chenall 发表于 2014-2-25 19:23
只要替换进去之后可以可能启动,那一切不是变得很简单吗?

顶多就是给NTBOOT增加一个参数,让它使用指定 ...

回复chenall 、527104427 :
我下载vista的bootmgr,回家测试一下,把NTBOOT中的bootmgr替换为vista的后能否xp/03.wim,因这台电脑暂不能启动xp/03.wim
回复

使用道具 举报

14#
 楼主| 发表于 2014-2-26 10:43:11 | 只看该作者
527104427 发表于 2014-2-25 19:59
帮不上忙,顶多给你几个原版的BOOTMGR

该贴http://bbs.wuyou.net/forum.php?m ... &fromuid=349593是用winvista SP0的bootmgr制作的,若您有这一版本的bootmgr,请传一下,谢谢!
回复

使用道具 举报

15#
 楼主| 发表于 2014-2-26 11:07:34 | 只看该作者
chenall 发表于 2014-2-25 19:23
只要替换进去之后可以可能启动,那一切不是变得很简单吗?

顶多就是给NTBOOT增加一个参数,让它使用指定 ...

按照http://bbs.wuyou.net/forum.php?m ... &fromuid=349593的说明,启动xp/03.wim需要定制版的bootmgr来启动老版本的winloa.exe,为此,若想在ntboot中加一个定制版的bootmgr,可否这样:
1.在解压ntboot.nt6后的ntboot.img中新建一文件夹如为nt5wim,将定制版的bootmgr复制到该目录下,再压缩得到ntboot.nt6,覆盖原ntboot.nt6。
2.在 NT5|NT6=root|file 参数后加一个选项如bootmgrver=nt5wim
修改ntboot解压后的ntboot.bat文件,将原这一句chainloader (fd0)/BOOTMGR改为:
if ??==nt5wim && chainloader (fd0)/nt5wim/BOOTMGR || chainloader (fd0)/BOOTMGR

但问题是:如何将选项bootmgrver=nt5wim加进去,并在上述??处如何表达,想请您指点一下,谢谢!


点评

NTBOOT是一个grub4dos batch script,语法很像cmd批处理。参数也就是对 %1、%2、……、%n的处理。如果你想自己改批处理,还是要大体读懂NTBOOT处理参数的代码。  详情 回复 发表于 2014-2-26 11:35
回复

使用道具 举报

16#
发表于 2014-2-26 11:17:01 | 只看该作者
我因为一般在忙,除关注自己的贴子,未怎么注意其它贴子内容。首先还是非常佩服楼主打破砂锅问到底的精神,世上就怕认真二字不是吗!

我觉得正如 chenall 大所说,给NTBOOT加一个形如 /bootmgr=abcde 的参数就行了。

sp0的附件已回复给楼主了。
回复

使用道具 举报

17#
发表于 2014-2-26 11:31:15 | 只看该作者
首先需要测试替换之后能否启动?这一个测试通过之后再去考虑其它问题,否则一切都是白费功夫。

能启动的话只需要稍微修改一下批处理脚本,直接使用外置的BOOTMGR就行了。

而且BOOTMGR不需要做任何改动,直接用原版的。NTBOOT也不需要做很大改动,就只是改一下批处理,允许自定义BOOTMGR文件位置就行了。

点评

我回家测试的结果是: 1.用winvista sp0的原版bootmgr+boot目录下的BCD+boot目录下的boot.sdi成功启动xp/03.wim。 2.但将该bootmgr用WinImage工具打开ntboot.img替换bootmgr,用7ZIP打包为ntboot.nt6.gz,再改名  详情 回复 发表于 2014-2-26 14:00
回复

使用道具 举报

18#
发表于 2014-2-26 11:35:55 | 只看该作者
qj_tzy 发表于 2014-2-26 11:07
按照http://bbs.wuyou.net/forum.php?m ... &fromuid=349593的说明,启动xp/03.wim需要定制版的bootmgr来 ...

NTBOOT是一个grub4dos batch script,语法很像cmd批处理。参数也就是对 %1、%2、……、%n的处理。如果你想自己改批处理,还是要大体读懂NTBOOT处理参数的代码。
回复

使用道具 举报

19#
发表于 2014-2-26 12:53:01 | 只看该作者
本帖最后由 2013_top398 于 2014-2-26 13:00 编辑

查看 NTBOOT.MOD\ 下存在
NTBOOT.NT5
NTBOOT.NT6
NTBOOT.PE1
等文件,对应 PE1/NT5/NT6 启动方式。

我觉得针对WIM-XP/03,可以加一个模块,姑且名为NTBOOT.WIM5,里面是所需的启动文件,也就是我那个XP03里面的文件。当然NTBOOT脚本里要增加对 WIM5 启动方式的处理。

最终用法类似:
command %NTBOOT% WIM5=/BOOT/xp.wim

这个还得请 chenall 大出手了。

点评

这应该说是个好主意!  详情 回复 发表于 2014-2-26 14:01
回复

使用道具 举报

20#
 楼主| 发表于 2014-2-26 14:00:31 | 只看该作者
chenall 发表于 2014-2-26 11:31
首先需要测试替换之后能否启动?这一个测试通过之后再去考虑其它问题,否则一切都是白费功夫。

能启动的 ...

我回家测试的结果是:

1.用winvista sp0的原版bootmgr+boot目录下的BCD+boot目录下的boot.sdi成功启动xp/03.wim。
2.但将该bootmgr用WinImage工具打开ntboot.img替换bootmgr,用7ZIP打包为ntboot.nt6.gz,再改名为ntboot.nt6,替换ntboot中的ntboot.nt6,用ntboot nt6=(hd0,4)/ramos/winxp.wim启动时,出现0xc000000f的错误代码。
回复

使用道具 举报

21#
 楼主| 发表于 2014-2-26 14:01:42 | 只看该作者
2013_top398 发表于 2014-2-26 12:53
查看 NTBOOT.MOD\ 下存在
NTBOOT.NT5
NTBOOT.NT6

这应该说是个好主意!
回复

使用道具 举报

22#
发表于 2014-2-26 23:07:06 | 只看该作者
跟着大大们好好学习一下,机会难得呀,这个一定要顶一下!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-8-4 23:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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