|
|
发表于 2019-5-5 07:36:43
|
显示全部楼层
本帖最后由 不点 于 2019-5-6 15:03 编辑
bootmgr 好像并不支持直接启动 XP。它需要先加载 NTLDR,而由 NTLDR 来启动 XP。因此,你需要添加 NTLDR 的启动项。添加 NTLDR 启动项以后,还需要更改默认启动项目。还可以更改启动菜单超时。
这里有个 BCDEDIT 的教程:
http://www.diddy.boot-land.net/bcdedit/
主要内容摘录如下:(特别说明:为了避免损坏系统中的 \Boot\BCD,我特意更改为 \Boot_test\BCD_test)
Create a new (empty) store
bcdedit.exe /createstore C:\Boot_test\BCD_test
执行上述命令之前,首先需要建立 C:\Boot_test 文件夹,否则会失败。另外,执行 bcdedit 命令需要管理员身份。
执行完上述命令,可以试试用
bcdedit.exe /store C:\Boot_test\BCD_test
来列出 BCD_test 里面的信息,发现没有内容,是空的。
Create {bootmgr} entry
bcdedit.exe /store C:\Boot_test\BCD_test /create {bootmgr}
bcdedit.exe /store C:\Boot_test\BCD_test /set {bootmgr} description "Boot Manager"
bcdedit.exe /store C:\Boot_test\BCD_test /set {bootmgr} device boot
bcdedit.exe /store C:\Boot_test\BCD_test /set {bootmgr} timeout 5
这个 {bootmgr} 好像是必须有的。执行完了,列出 BCD_test 里面的信息,发现没有内容,仍然是空的。不要紧,其实它已经起作用了。
Create {ntldr} entry
bcdedit.exe /store C:\Boot_test\BCD_test /create {ntldr}
bcdedit.exe /store C:\Boot_test\BCD_test /set {ntldr} device boot
bcdedit.exe /store C:\Boot_test\BCD_test /set {ntldr} path \ntldr
bcdedit.exe /store C:\Boot_test\BCD_test /set {ntldr} description "NTLDR (via bootmgr)"
bcdedit.exe /store C:\Boot_test\BCD_test /displayorder {ntldr} /addlast
bcdedit.exe /store C:\Boot_test\BCD_test /default {ntldr}
注意,device boot 的意思是在启动盘上,也就是与 bootmgr 在同一个分区上。下同。
Create entry for GRLDR
bcdedit.exe /store C:\Boot_test\BCD_test /create /application bootsector
Running this first command will return a Globally Unique IDentifier (GUID) value - e.g. {e05b4c23-618a-11df-89c6-001d925a73cf}. In all subsequent commands replace {guid} with this value -
bcdedit.exe /store C:\Boot_test\BCD_test /set {guid} device boot
bcdedit.exe /store C:\Boot_test\BCD_test /set {guid} path \grldr
bcdedit.exe /store C:\Boot_test\BCD_test /set {guid} description "grldr (via bootmgr)"
bcdedit.exe /store C:\Boot_test\BCD_test /displayorder {guid} /addlast
这就创建了 grldr 启动项。用相同的步骤,可以创建 grub.exe 以及 wee63.mbr 的启动项。
当所有的启动项添加完之后,试试用
bcdedit.exe /store C:\Boot_test\BCD_test
来列出 BCD_test 里面的信息,看看是否正常。如果不正常,还可以修改。如果正常,那么把 BCD_test 改名为 BCD,复制到 bootmgr 所在分区的 \Boot 文件夹下,大功告成。
附件中是我制作的 BCD 文件,把它放在与 NTLDR 和 BOOTMGR 相同的分区,但在 \Boot\BCD 的位置,就可以起作用了。当然还需要一个能够支持 BOOT.INI 文件的 bootmgr 才行。bootmgr 只要能支持 boot.ini,越新越好。bootmgr 与 NTLDR 放在一起,都在根目录下。Boot 子目录下只要有一个 BCD 文件就行,其它文件都不需要。这个 BCD 文件已经添加了 NTLDR 的启动项。并且也把 NTLDR 启动项设置为默认启动项,把 bootmgr 的菜单超时设置为 5 秒。启动时,生办法把控制权交给 bootmgr,它就会启动 NTLDR。如果有 BOOT.INI,则 bootmgr 会显示 bootmgr 的菜单,而当 NTLDR 接管控制时会再次显示 XP 自己的菜单(就是说,菜单会显示两次,不要对此感到奇怪)。在 BOOT.INI 中,你可以添加很多个启动项,包括 C:\GRLDR="grldr" 或 c:\grub.exe="grub.exe" 之类的。
附件中的 BCD 只是用于只有 XP 而没有 Win7、8、10 的情况。如果你已经有 Win7、8、10 了,那么系统中已经有 BCD 了。系统中的 BCD 是不可以随便覆盖掉的,否则你就无法启动 Windows 了。你需要为系统中的 BCD 添加 ntldr 启动项(它可能已经有 NTLDR 的启动项了,这种情况就不需要你再去添加了)。无论有没有 NTLDR 启动项,你只需要创建一个具有合法格式的 BOOT.INI 文件,在其中添加一行 C:\GRLDR="grldr" 或 c:\grub.exe="grub.exe",就可以启动 grub4dos 了。
更改默认启动项
若要将默认启动项目更改为多重引导计算机上早期 Windows 操作系统加载程序,设置*<ID>* 到 {ntldr},这是 GUID 的保留的名称,与 Ntldr 相关联。 根据 Boot.ini 文件中的条目,这可能会呈现另一个菜单。
bcdedit /default {ntldr}
更改启动菜单超时
例如,若要指定 15 秒的超时值:
bcdedit /timeout 15
更新:附件中的 BCD-grldr-grub-wee.rar 解压后也是一个 BCD 文件。它含有 ntldr、grldr、grub.exe 和 wee63.mbr 的启动项(默认启动 ntldr)。 |
-
-
BCD.rar
1.21 KB, 下载次数: 8, 下载积分: 无忧币 -2
专用于 XP 的 BCD 文件,只有 NTLDR 的启动,没有其它启动项
-
-
BCD-grldr-grub-wee.rar
2.05 KB, 下载次数: 9, 下载积分: 无忧币 -2
专用于 XP 的 BCD 文件,默认启动 NTLDR,也添加了 grldr、grub.exe 以及 wee63.mbr 的启动项
|