无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 3601|回复: 5
打印 上一主题 下一主题

[求助] grub4dos如何修改内存中的BCD文件,以动态启动某分区某目录下的某VHD或WIM文件

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

grub4dos如何修改内存中的BCD文件,以动态启动某分区某目录下的某VHD或WIM文件

若将bootmgr、bcd、boot.sdi三个文件拷入\boot\目录下,并将其打包为nt6.img,用grub4dos的map --mem 命令将nt6.img装入内存后,grub4dos的主文件将分区(hdx,y)、目录/dir/、VHD或WIM文件名如sys.wim等参数,传给一grub4dos的批文件,动态修改内存中的BCD文件后,读取nt6.img中的boot.sdi,并启动参数指定的VHD或WIM文件。

我知道chenall等发布的ntboot早已实现此功能,我也经常在用。我现在因需要,要自己手动编这一grub4dos批文件,解开ntboot后又未看明白。

诚请各位网友指点,谢谢!
2#
发表于 2014-2-25 15:33:25 | 只看该作者
NTBOOT的做法如下,供参考

首先在需要指定文件目录的项目随意指定一个足够长的路径。

比如
device                  ramdisk=[boot]\xp03\03.wim

\xp03\03.wim,可以随意设置一个很长的路径,
比如
修改以上的值为 ramdisk=[boot]\RAMDISK_FILE_PATH\AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCDA

之后就可以用WINHEX之类的软件打开这个BCD,查找RAMDISK_FILE_PATH字符串,就可以看到这个路径的位置了。记录下来(一般会有好几处)

最终就可以在GRUB4DOS下,使用类似如下的方法写入。。
write --offset=XXXXX path/bcd   \\xp03\\03.wim\0

因为这个路径是UNICODE编码的,写入时需要自己转换一下,英文的转换比较简单,在每个字符后面加上\0就行了。中文的很麻烦,所以NTBOOT也不支持非英文的路径。

点评

还有一问题: 启动时要读取的boot.sdi文件,已经map --mem /xp03_wim.img (fd0)命令加载到(fd0)中了,但winxp.wim却在(hd0,4)/ramos/目录中, 1.boot.sdi与winxp.wim不在同一分区 2.如何在BCD中指定分区,即要把(  详情 回复 发表于 2014-2-25 17:12
谢谢,我马上动手,不清楚时再向您请教。  详情 回复 发表于 2014-2-25 15:42
回复

使用道具 举报

3#
 楼主| 发表于 2014-2-25 15:42:01 | 只看该作者
chenall 发表于 2014-2-25 15:33
NTBOOT的做法如下,供参考

首先在需要指定文件目录的项目随意指定一个足够长的路径。

谢谢,我马上动手,不清楚时再向您请教。
回复

使用道具 举报

4#
 楼主| 发表于 2014-2-25 17:12:29 | 只看该作者
chenall 发表于 2014-2-25 15:33
NTBOOT的做法如下,供参考

首先在需要指定文件目录的项目随意指定一个足够长的路径。

还有一问题:
启动时要读取的boot.sdi文件,已经map --mem /xp03_wim.img (fd0)命令加载到(fd0)中了,但winxp.wim却在(hd0,4)/ramos/目录中,
1.boot.sdi与winxp.wim不在同一分区
2.如何在BCD中指定分区,即要把(hd0,4)转为bcd识别的分区格式,并写入,如何才能做到

谢谢!
回复

使用道具 举报

5#
发表于 2014-2-25 17:28:05 | 只看该作者
(hd0,4)在bcd中的写法很麻烦的。。

着先是(hd0),通过磁盘签到名确定。。。0X1B8处的4个字节。在BCD里面有对应的信息。。

然后(hd0,4),通过磁盘分区的偏移来确定,,,即这个磁盘的起始位置。。

这些你没有处理好,做好的BCD就只能在你的电脑上使用。。

对于这些的处理在NTBOOT中都有,建议通读一下NTBOOT的批处理源码。一个语句一个语句理解过去,若是只看其中某一部份基本上是看不出为什么要这样做的。。

点评

好的,谢谢  详情 回复 发表于 2014-2-25 17:30
回复

使用道具 举报

6#
 楼主| 发表于 2014-2-25 17:30:51 | 只看该作者
chenall 发表于 2014-2-25 17:28
(hd0,4)在bcd中的写法很麻烦的。。

着先是(hd0),通过磁盘签到名确定。。。0X1B8处的4个字节。在BCD里面 ...

好的,谢谢
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-7 03:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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