bootmgr和grub4dos都是很好启动管理器,两者都能相互调用,功能互相补充。grub4dos很强大,讲怎么用它引导的文章已经很多了,这里就不讨论了。下面讲一下通过bcdedit编辑bcd文件来实现bootmgr引导dos,nt5(xp/xpe包括winpe1.X版本),nt6(vista/2008/win7包括winpe2.0及以后的版本,wim和vhd文件),和grub4dos(以及linux和iso文件)等。google了一下,网上似乎没有较全面的应用文章,这里总结一下常用的几种,方便初学的网友,都是很基础的东西。
以用bootmgr为主引导程序的启动光盘为例,假设在C:\Downloads\pe\dvd目录,此目录下必须有bootmgr程序和boot文件夹及font文件,要想显示中文,需要还需要mui文件,设置bcd文件路径
set bcd_path= C:\Downloads\pe\dvd\BOOT\bcd
1 bootmgr引导dos启动盘
bootmgr不能直接引导dos启动盘,必须借助于bootsector模式通过其他的途径来解决。比如,要引导\boot\dos.img 文件,我们可以借助easyboot,新建一个菜单,命令为run dos.img。这样在easyboot的ezboot文件夹下会生成2个文件,一个2048字节大小loader.bin文件,一个cdmenu.ezb的文件。将此两文件分别改名为dos.bin和dos.ezb,连同启动盘dos.img一同放入\boot文件夹。运行
bcdedit /store %bcd_path% /create /d "启动 DOS" /application bootsector//返回:项 {41ac9c34-1fd8-11e0-8355-a4badbfc7822} 成功创建。请自行更改GUID。bcdedit /store %bcd_path% /set {41ac9c34-1fd8-11e0-8355-a4badbfc7822} device bootbcdedit /store %bcd_path% /set {41ac9c34-1fd8-11e0-8355-a4badbfc7822} path \boot\dos.binbcdedit /store %bcd_path% /displayorder {41ac9c34-1fd8-11e0-8355-a4badbfc7822} /addlast
这样便可以即由bootmgr引导dos启动盘了,easyboot设置的时候可以全用黑色,默认停留时间1秒,这样启动的时候就不会跳出来easyboot的菜单,看起来就像bootmgr直接进入dos一样。当然ezboot可以用grub代替,后面会讲。
2 bootmgr引导xp/xpe包括winpe1.X版本(nt5)
这个很常见了,我以前也写过 为了完整性这里再重复写一下。其实很简单,创建{ntldr}项,配置device和path一下就可以了。
bcdedit /store %bcd_path% /create {ntldr} /d “安装 Windows XP”bcdedit /store %bcd_path% /set {ntldr} device bootbcdedit /store %bcd_path% /set {ntldr} path \i386\SETUPLDR.BIN
以上是安装xp的例子启动xp和xpe的引导类似。
3 bootmgr引导vista/2008/win7包括winpe2.0及以后的版本,wim和vhd文件(nt6)
直接的引导可以参见 第二部分。bootmgr本来就是nt6时代的产物,各种引导都是大同小异,比如引导wim文件(pe2.0及以后版本)
bcdedit /store %bcd_path% /create {ramdiskoptions} /d "启动 Windows 7 PE"bcdedit /store %bcd_path% /set {ramdiskoptions} ramdisksdidevice bootbcdedit /store %bcd_path% /set {ramdiskoptions} ramdisksdipath \boot\boot.sdibcdedit /store %bcd_path% /create /d "启动 Windows 7 PE" /application osloader//返回:项 {cb942a73-1fe1-11e0-8355-a4badbfc7822} 成功创建。请自行更改GUID。bcdedit /store %bcd_path% /set {cb942a73-1fe1-11e0-8355-a4badbfc7822} device ramdisk=[boot]\boot\winpe.wim,{ramdiskoptions}bcdedit /store %bcd_path% /set {cb942a73-1fe1-11e0-8355-a4badbfc7822} path \windows\system32\boot\winload.exebcdedit /store %bcd_path% /set {cb942a73-1fe1-11e0-8355-a4badbfc7822} osdevice ramdisk=[boot]\boot\winpe.wim,{ramdiskoptions}bcdedit /store %bcd_path% /set {cb942a73-1fe1-11e0-8355-a4badbfc7822} systemroot \windowsbcdedit /store %bcd_path% /set {cb942a73-1fe1-11e0-8355-a4badbfc7822} winpe yesbcdedit /store %bcd_path% /set {cb942a73-1fe1-11e0-8355-a4badbfc7822} detecthal yesbcdedit /store %bcd_path% /displayorder {cb942a73-1fe1-11e0-8355-a4badbfc7822} /addlast
bootmrg引导vhd文件也是类似,将device ramdisk改为device vhd 就行了,比如
device vhd=[boot]\winpe\pe.vhd
当然,别忘了其他的配置项。
4 bootmgr引导grub4dos以及linux和iso文件
这个也可以通过bootsector模式来实现,bootmgr-〉grldr.mbr-〉GRLDR
bcdedit /store %bcd_path% /create /d "GRUB4DOS" /application bootsector//返回:项 {366d296e-1fdf-11e0-8355-a4badbfc7822} 成功创建。请自行更改GUID。bcdedit /store %bcd_path% /set {366d296e-1fdf-11e0-8355-a4badbfc7822} device bootbcdedit /store %bcd_path% /set {366d296e-1fdf-11e0-8355-a4badbfc7822} path \grldr.mbrbcdedit /store %bcd_path% /displayorder {366d296e-1fdf-11e0-8355-a4badbfc7822} /addlast
这一步实现后,一切都好办了,bootmgr可以引导linux以及iso文件了,当然也可以这样引导dos启动盘。
这里的例子是光盘,其实硬盘和u盘启动也是类似的,只需要注意device选项,将 device boot 改成对应的盘符就可以了,比如 device partition=C: 。 相应的路径[boot]\boot要改为[C:]\boot 。光盘的引导文件可以直接用win7安装盘提取的bif文件,硬盘和u盘可以用bootsect强制写入引导信息
bootsect /nt60 c: /force /mbr
另外,很多网友在多启动光盘的合盘设置以及u盘启动上遇到了麻烦,这些问题自己多试几次倒也可以解决。不过我想在这里写一下,免得大家在同一个问题上无谓的浪费时间。呵呵,如果有要想折腾的网友也可以自己试一下,非常欢迎你能反馈一下情况,很多问题没有经历过确实不懂。
最后,光盘有xp安装的时候ISO的不能用UDF格式,ultraiso写入u盘启动的时候也有问题。相关文章在这里 照着设置就可以了。如果加入grub4dos后,光盘又有新问题,比如,允许小写字母,禁用Joliet,文件名格式Max(221)等。感谢crow网友的讨论, 在这里 可以看到详细的讨论。
我做了一个多启动入口的光盘模板,里面的入口如下图
不过这只是一个模板,考虑到大小,里面只有dos入口是可用的,大家直接添加就可以了。
下载地址:
若有问题,或是地址失效后请留言。
2011/1/17 另附上crow网友的作品,非常强大的启动盘,有问题大家可以看他的readme.txt
相关文章07/16/2010 --08/09/2008 --01/04/2011 --07/17/2010 --06/25/2008 --05/09/2008 --03/31/2008 --01/06/2007 --12/31/2006 --02/23/2011 --
标签: , , , ,