无忧启动论坛
标题:
用最新版grub及wenv修改ntboot引导VHD时的错误
[打印本页]
作者:
xiaoy
时间:
2011-1-13 11:46
标题:
用最新版grub及wenv修改ntboot引导VHD时的错误
因要整合部分功能,需用到新版的Grub及11.29版的wenv
所以一直想把C大的ntboot.img 中引导VHD的部分升级一下
现修改菜单如下
debug off
command --set-path=(fd0)/grub/
fontfile (fd0)/grub/fonts
default 0
timeout 3
menuset 15 15 15 15 15 21 20 40 5 3 10
insmod (fd0)/grub/WENV
wenv set win7dir=win7
wenv set default=win7
title 启动您的Win7VHD系统 \n\t请输入您的系统名称。
wenv set name=$input,请输入您的系统名称(直接回车启动公用版本):
wenv get name || wenv set name=${default}
wenv set tmp=/${win7dir}/${name}.vhd
wenv call find --set-root --devices=h ${tmp} || fallback --go 3
write --offset=0x4E74 (fd0)/boot/bcd b
wenv get tmp=0x600000
cat --locate=\\x2F --replace=\\x5C (md)0x3000+3
wenv call write --offset=0x7D72 (fd0)/boot/bcd *0x600000$
wenv call write --offset=0x82EA (fd0)/boot/bcd *0x600000$
WENV calc cur_drv=*0x82A0 & 127
WENV calc cur_pri=*0x829C>>16 & 65535
wenv call pause --wait=1 正在启动${name}的Win7VHD系统. .
write 0x60000 0
WENV calc cur_drv=*0x82A0 & 127
wenv call dd if=(hd${cur_drv})+1 of=(md) bs=1 count=4 skip=0x1b8 seek=0x60000
cat --length=0 ()-1
dd if=(md) of=(md) bs=1 count=8 skip=0x8290 seek=0x60008
cat --locate=\x2E\xB5\x41\x7D --replace=*0x60000 (fd0)/boot/bcd
cat --locate=\0\x7E\0\0 --replace=*0x60008 (fd0)/boot/bcd
pause
chainloader (fd0)/boot/bootmgr
boot
老是引导不成功
测试如图
20-21-09.jpg
(179.47 KB, 下载次数: 91)
下载附件
2011-1-13 11:52 上传
C大原版的调试图为
20-23-09.jpg
(64.44 KB, 下载次数: 79)
下载附件
2011-1-13 11:52 上传
两图中不同部分可能与这
wenv get tmp=0x600000
cat --locate=\\x2F --replace=\\x5C (md)0x3000+3
wenv call write --offset=0x7D72 (fd0)/boot/bcd *0x600000
三句有关 ,但不知如何修改 麻烦各位大大帮忙
[
本帖最后由 xiaoy 于 2011-1-13 21:02 编辑
]
作者:
zxw
时间:
2011-1-15 00:20
恭喜恭喜,楼主又有心得了。
作者:
chenall
时间:
2011-1-15 10:10
你可以对比一下写入的内容。。。
在write命令之前显示一下写入的内容,看看有没有什么区别。
以前的NTBOOT有些复杂。近期有空准备改成新版的批处理方式。
[
本帖最后由 chenall 于 2011-1-15 10:12 编辑
]
作者:
xiaoy
时间:
2011-1-15 13:19
已经解决了 就上面的代码可以正常启动了 少了个$造成的错误
欢迎光临 无忧启动论坛 (http://wuyou.net/)
Powered by Discuz! X3.3