Windows Server 2008里面引入了很多新的特性,其中就包括新的引导模式。对于一台计算机来说,操作系统的启动是很关键的一 个步骤,对于目前占据了大量桌面计算机市场领域的Microsoft Windows操作系统来说,其能否正常的启动会影响所有使用Microsoft Windows操作系统的用户。众所周知, Windows 的引导方式前前后后经历过多次的变动,基本上是每换一代Windows操作系统,Windows的启动方式均要发生一次变动。Windows Server 2008作为第6代Windows操作 系统,其启动方式再次发生了变动。
在Windows Server 2008 以及Windows Vista 里面,无论是早期的从纯DOS模式下引导还是现在Windows 2000/XP/Server 2003采用的ntldr+ntdetect.com 的引导方式, 均被抛弃了。一种被称为Boot Manager的组件取代了ntldr+ntdetect.com 的引导方式,成为Microsoft在Windows Server 2008 以及Windows Vista里面采用的Windows引导 方式。
在Windows Server 2008 以及Windows Vista中,微软引入了一种全新的boot loader架构, Windows Boot Manager (Bootmgr.exe)。与Ntldr严重地依赖于硬件不同的是 ,Windows Server 2008中的新架构可以实现完整的硬件独立性,且能够与多种操作系统无缝结合,让Windows Server 2008的启动/引导过程更加快速与安全。同时,将之前 Windows 系统中由Boot.ini管理的内容移交给新的Boot Configuration Data (BCD : 启动设置数据),当然,也提供了新的启动选项编辑工具,BCDEdit (BCDEdit.exe),来 管理启动设置。对于安装了Windows Server 2008的机器,Microsoft将修改被激活的主分区的启动扇区(Windows 安装程序将在磁盘的第一个扇区里面写入MBR内容),使用 新的启动扇区内容替代原有的启动扇区的内容。经典的错误提示信息:“Ntldr is missing”将被“Bootmgr is missing” 所取代。
什么是BCD 存储
Boot Configuration Data (BCD)用来存储启动配置参数并且控制Windows Server 2008 以及Windows Vista系统如何启动。这些参数在之前的操作系统中是被存储在 Boot.ini文件之中(存在于基于BIOS的操作系统)或者是记录在非易失性的RAM上(NVRAM)。用户可以使用Bcdedit.exe这个命令行工具来控制在预操作系统环境下运行的 Windows code,从而实现对BDC存储的添加,删除,编辑以及加载等操作。
Bcdedit.exe工具存放在Windows Vista分区的\Windows\System32目录下。对于基于BIOS的操作系统,BCD的注册文件存储在主分区的\Boot\Bcd目录下。而对于基于EFI的 操作系统,BCD注册文件则是定位在EFI的系统分区上。只有拥有管理员权限的用户才可以修改BCD。
C:\Boot\BCD 文件就是整个 BCD 数据库。在Windows Vista 运行的时候,这个文件是不能够被删除或者改名的,这是因为系统一直占用它。如果用户将这个文件删除, 且已经安装了Boot Manager,那么用户的系统将不能够启动,因为 Boot Manger 无法找到合适的BCD数据文件来使用。
为什么Boot.ini要升级为BCD?
BCD的诞生主要是为了描述启动配置数据提供了一种新的改进的机制。随着新的固件模型的发展(例如,扩展固件接口(EFI)),用户需要为底层固件抽象提供一个可扩 展的通用接口。这一全新的设计将为Windows Server 2008 以及Windows Vista的许多新特性提供必要的支持(例如,启动恢复工具以及多用户安装快照)。