无忧启动论坛

标题: 请解读一下GRUB4DOS启动XP故障恢复控制台的菜单中的write命令 [打印本页]

作者: yjqd    时间: 2017-5-11 19:46
标题: 请解读一下GRUB4DOS启动XP故障恢复控制台的菜单中的write命令
XP系统中安装了故障恢复控制台

boot.ini中故障恢复控制台启动项如下
C:\CMDCONS\BOOTSECT.DAT="Microsoft Windows XP Recovery Console" /cmdcons

(BOOTSECT.DAT其实就是从C分区提取的分区引导扇区得到的文件,被修改成搜索cmdldr)

在它下面增加了
C:\GRLDR="GRUB4DOS启动故障恢复控制台"


启动计算机,选择 Microsoft Windows XP Recovery Console,启动了故障恢复控制台
又启动计算机,选择 GRUB4DOS启动故障恢复控制台
在命令行中输入:
chainloader /cmdldr
boot

不能启动故障恢复控制台,提示txtsetup.sif无效或丢失


看了fujianabc的帖子
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=32602
用grub4dos加载setupldr.bin时,要加两句特殊语句

title cmdcons
chainloader (hd0,0)/setupldr.bin
write 0x7C03 0x63646D63
write 0x7C07 0x00736E6F


于是在命令行中输入:
chainloader /cmdldr
write 0x7C03 0x63646D63
write 0x7C07 0x00736E6F
boot

就成功启动了故障恢复控制台

下面的命令也可以:

chainloader /cmdcons/setupldr.bin
write 0x7C03 0x63646D63
write 0x7C07 0x00736E6F
boot

(上面的两个命令也可启动U盘中的故障恢复控制台)

write 0x7C03 0x63646D63
write 0x7C07 0x00736E6F
这两句是什么意思




另外:

如果加载BOOTSECT.DAT,也不能启动故障恢复控制台,提示txtsetup.sif无效或丢失,命令如下:

chainloader /cmdcons/BOOTSECT.DAT
write 0x7C03 0x63646D63
write 0x7C07 0x00736E6F
boot



chainloader /cmdcons/BOOTSECT.DAT
boot






作者: 不点    时间: 2017-5-11 21:29
write 0x7C03 0x63646D63
write 0x7C07 0x00736E6F
这两句是什么意思


0x63646D63 就是 cmdc

0x00736E6F 就是 ons\0

合起来就是 cmdcons\0。

用不着解释为什么吧?启动微软的东西,能启动就已经很不错了,要再去问个 “为什么”,是不是有点“贪”?
作者: 求道者    时间: 2017-5-11 21:46
难道有一天还能直接引导winload.exe?
作者: yjqd    时间: 2017-5-11 21:50
不点 发表于 2017-5-11 21:29
0x63646D63 就是 cmdc

0x00736E6F 就是 ons\0

谢谢回复

原来是写入cmdcons\0字符串,相当于指定了启动路径,就能启动故障恢复控制台了
作者: yjqd    时间: 2017-5-15 20:01
不点 发表于 2017-5-11 21:29
0x63646D63 就是 cmdc

0x00736E6F 就是 ons\0

今天把故障恢复控制台的cmldr换成GRLDR,重启计算机,选择 Microsoft Windows XP Recovery Console,启动了GRLDR,在命令行输入:

cat --hex (md)62+1

执行结果可看到偏移位置0x7C03处开始就有cmdcons字符

原来boot.ini中故障恢复控制台启动项的参数/cmdcons作在计算机启动过程中会在内存的0x7C03处写入了cmdcons字符




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