Windows 启动管理器

来自 WinStory Wiki
跳转到导航 跳转到搜索
Windows 启动管理器
Microsoft Windows 的组件
文件:W11-26100.1742-Bootmgr.png
类型启动管理器
推出于Windows Vista Build 5048
取代
NTLDR

Windows 启动管理器(bootmgrbootmgfw)是自 Windows Vista 以来 Windows 操作系统的启动管理器。

开发

此功能是在 Windows Vista Build 5048 中引入的,以替代自 Windows NT 3.1 的初始版本以来一直存在且逐渐老化的 NTLDR 应用程序。在此早期状态下,Advanced Boot Options(高级引导选项)菜单和引导错误的背景颜色分别以蓝色和红色背景显示;这些背景颜色在 Build 5098 中删除。

最初使用与 NTLDR 相同的 boot.ini,它在 Build 5259 中过渡到引导配置数据(BCD)数据库。因此,MSConfig 也被重新调整为配置 BCD 数据库。尽管如此,Windows 引导管理器最初能够在需要时回退到使用 boot.ini 文件。这可以通过在 boot.ini 中的 timeout= 参数下键入 NOBCD 来跳过 BCD 设置来查看;此功能后来在 Windows 10 周年更新中删除。

在 Build 5098 中短暂实现了对在 32 位 EFI 环境中引导的支持,由于硬件制造商缺乏兴趣,在 Build 5219 之后立即删除。[1]此功能后面在 Windows 8 Build 7850 中重新引入。

体系结构

Windows 启动管理器是启动环境的入口点,启动环境是在固件(BIOS 或 EFI)API 上运行的小型环境。在环境中运行的应用程序称为 Windows 启动应用程序(启动管理器本身就是其中之一)。启动应用程序的核心组件是启动库,它提供用于显示、输入、存储、加载和启动可执行文件以及在内存中读取和写入配置的 API,以便可以使用这些 API 实现加载Windows所需的足够功能。启动库后来进行了扩展,以提供对功能和硬件模块的支持,例如 TPM(BitLocker,然后用于 Windows 7 中的测量启动)、VHD 装载(作为一种块设备)、安全启动(在 Windows 8)中,以及其他文件系统(包括 exFAT 和 ReFS)。

ntldr 的 OS 加载程序组件被拆分为单独的启动应用程序(winload.exe),现在是Windows安装本身的一部分,位于系统目录中。这允许将破坏性更改引入传递给内核入口点的数据结构,因为加载程序现在必须与内核可执行文件匹配。此外,加载程序不再需要保留对加载旧版本 Windows(如 ntldr)的支持。

Windows 启动管理器使用称为启动配置数据(BCD)的注册表配置单元来存储设置,而 ntldr 则使用名为 boot.ini 的文本文档。由于 BCD 是一个注册表配置单元,因此可以精细设置每个引导选项的权限,而不是在整个配置文件中拥有一组权限。BCD 可以使用内置的 bcdedit.exe 命令行实用程序进行编辑,尽管也开发了使用 GUI 的第三方替代方案。BCD 编辑可用于添加、编辑或删除新的引导条目,为引导条目或引导过程设置引导选项,例如打开 Hyper-V 虚拟机管理程序、禁用内核中的引导图形功能或修改引导条目的应用程序路径。如果安装在 EFI 设备上,它将在设备的 NVRAM 中显示为引导项。

功能

在 BIOS 系统上,Windows 启动管理器还可用于将其他作系统或启动管理器与现有 Windows 安装一起链加载,例如依赖于 NTLDR 应用程序或 Linux 发行版的旧版 Windows。当编译为 EFI 子系统应用程序时,引导管理器只能链加载其他 Windows 引导应用程序;唯一的例外是操作系统是从预引导执行环境(Preboot Execution Environment,PXE)服务器引导的。

Windows 启动管理器通常在 1024×768 px 图形模式下运行,并尽可能使用 EFI 固件定义的完整分辨率;如果图形适配器无法显示 800×600 像素、640×480 像素或 80×25 文本模式的分辨率,它将采用这些分辨率。

在 Windows 8 之前,如果在 Windows 开始引导之前按下 F8 键,则引导管理器最初能够调用高级引导选项。由于新引入的混合启动实现,此功能在 Windows 8 以来的 Windows 客户端版本中默认处于禁用状态,此外,通过设置应用使用新的网关到“高级启动选项”菜单,尽管可以通过禁用混合启动并修改启动菜单策略来回退到旧设计来重新启用它。

引用资料