linux修改BCD文件,更改bootmgr启动路径\\boot\\bcd-yugliu-ChinaUnix博客

上网搜了好多帖子,目前只实现了更改 \boot\bcd 中最后的2个字符“CD”,限制还是很大的,也不够完美。

经过一个星期专研,我最终实现可以更改 \boot\bcd 中任意字符,方法见下。

0. bootmgr 说明

bootmgr 版本必须用 vista sp0, 即原始的,没打过补丁的 vista 的 bootmgr

原因:

目前bootmgr的版本有

Window 7 sp1   CRC32:DE51A3C4

Window 7 sp0   CRC32:EE471B58

Vista    sp2   CRC32:E6CDE422

Vista    sp1   CRC32:6442A4AD

Vista    sp0   CRC32:543E715A

Vista sp0的bootmgr由2部分组成,16位的引导,和32位的bootmgr.exe

vista sp1,sp2,Window 7 sp0,sp1的bootmgr由3部分组成,16位的引导,32位的资源,32位的bootmgr.exe,而且,关键的是,这个32位的bootmgr.exe是经过压缩的,也因此大家最多只能改 \boot\bcd 中最后的2个字符“CD”,其他的字符经过压缩算法,早已面目全非。MS 使用的压缩算法是其内部算法,非公开,目前没有找到能 uncompress/compress 的程序。所以,不能使用这几个版本的 bootmgr

而 Vista sp0 的 bootmgr 中的 bootmgr.exe 是非压缩的,可以清楚看到 \boot\bcd 字样,可以任意更改这几个字符。

1. 文件

将所有W7PE的文件放到目录下

我的目录是 \W7PE

BCD

bcdedit.exe

BOOT.SDI

BOOT.WIM

BOOTMGR

MEMTEST.EXE

2. Vista sp0 的 bootmgr 的修改

a. 去除 checksum

位置 0xE28 ,将 7403 改为 EB08

b. \boot\bcd 路径

位置 0x54B6C ,随意改,但需注意,其字符是unicode编码,显示为".",16进制值为"00"的地方不能改

例如,我的改为 \W7PE\BCD

3. 修改 BCD 的内容

注意,如果只做了第2步,没有做这步,仍然不能启动成功

bcdedit /store bcd /enum all    先查看一下配置,然后依次更改

a. 去除签名

bcdedit /store BCD /set {bootmgr} nointegritychecks yes

b. boot.sdi位置

bcdedit /store BCD /set {your_sdi_id} ramdisksdipath \W7PE\boot.sdi

c. device 和 osdivice

bcdedit /store BCD /set {default} device ramdisk=[boot]\W7PE\boot.wim,{your_sdi_id}

bcdedit /store BCD /set {default} osdevice ramdisk=[boot]\W7PE\boot.wim,{your_sdi_id}

最后运行bcdedit /store bcd /enum all 检查

4. 我用的syslinux引导

LABEL W7PE

MENU LABEL  Win7 PE

KERNEL chain.c32 ntldr=/W7PE/BOOTMGR

完成

阅读(6819) | 评论(0) | 转发(0) |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值