跳转至

wimboot

wimboot 是一个用于 Windows 镜像格式(.wim)文件的引导加载器。它让你能够引导进入 Windows PE(WinPE)部署或恢复环境。

你可以把 wimbootiPXE 配合使用,通过 HTTP 引导 Windows PE。在千兆以太网环境下,一个典型的 WinPE 镜像只需几秒钟就能下载完成。

优势

A light bulb

速度

wimboot 可以使用 HTTP 而不是 TFTP,因此能以你的网络所支持的全速下载镜像。

效率

wimboot 允许 Windows 重用原本用于存放 RAM 磁盘镜像的内存;没有任何内存被浪费。

易用性

wimboot 直接处理 .wim 镜像文件;无需把你的 .wim 包装进 ISO 或 FAT 文件系统镜像。

BIOS/UEFI 兼容性

wimboot 让你可以用同一套配置和文件,同时在 BIOS 和 UEFI 环境下引导。

下载

你可以从 https://github.com/ipxe/wimboot/releases/latest/download/wimboot 下载最新版本的 wimboot 二进制文件。这是一个混合型二进制文件,在 BIOS 和 64 位 UEFI 系统(包括启用了 Secure Boot 的 UEFI 系统)上都能工作。

你也可以从 https://github.com/ipxe/wimboot/releases/latest 下载其他二进制文件(例如用于 32 位 UEFI 系统的版本)。

旧版本可从 https://github.com/ipxe/wimboot/releases 获取。

源代码维护在 https://github.com/ipxe/wimbootgit 仓库中。

快速上手

如果你有一张 Windows 安装 DVD-ROM(Vista、Server 2008 或更新版本),以及一台 Web 服务器(例如 Apache 或 IIS),那么你就具备了开始使用 wimboot 所需的一切。

提取 Windows 引导文件

A CD-ROM

把 Windows 安装 DVD-ROM 的内容复制到 Web 服务器上的某个目录(例如 Apache 用 /var/www/win7,IIS 用 C:\inetpub\wwwroot\win7)。

如果磁盘空间不足以复制 DVD-ROM 的全部内容,可以只复制以下文件:

  /sources/boot.wim

下载 wimboot

下载最新版本的 wimboot,并保存到 Web 服务器上的同一目录。

创建 iPXE 脚本

在 Web 服务器上的同一目录中创建文本文件 boot.ipxe,内容如下:

  #!ipxe

  kernel wimboot
  initrd sources/boot.wim boot.wim
  boot

引导

使用 iPXE 从你的 iPXE 脚本的 URL 引导,例如 http://my.web.server/win7/boot.ipxe。你应该会看到 iPXE 通过 HTTP 下载你的 Windows 引导文件,并引导进入 Windows 安装程序:

wimboot booting Windows 7

Windows 7 installer booted via wimboot

后续步骤

你可以用 wimboot 引导任何可引导的 .wim 镜像。关于如何创建和定制自己的 .wim 镜像,请参见 Windows PE 教程

许可证

wimboot 是采用 GNU GPL 许可的自由开源软件。

赞助方

wimboot 的部分开发工作由以下机构赞助:

Jump Trading

2Pint Software

Digital Intelligence

高级主题

Some books

多镜像 WIM 文件

一个 WIM 文件可以包含多个可引导镜像。你可以使用 index=<N> 命令行选项选择要引导的镜像。例如:

  kernel wimboot index=2

注入文件

你可以向 wimboot 提供额外的文件。这些文件会出现在 X:\Windows\System32 目录中。例如:

  kernel wimboot
  initrd winpeshl.ini     winpeshl.ini
  initrd startup.bat      startup.bat
  initrd sources/boot.wim boot.wim
  boot

你可以利用这一点来控制 Windows PE 启动后的引导过程。例如,可以使用启动批处理文件从网络共享自动启动 Windows 安装程序。

你可以使用 rawwim 命令行选项禁用这一行为。例如:

  kernel wimboot rawwim

自定义引导管理器

wimboot 会尝试从 WIM 文件中提取合适的引导管理器(例如 bootmgrbootmgr.exebootmgfw.efi),以及引导配置数据(BCD)。

你可以通过显式提供一组合适的引导管理器文件来禁用这一行为。例如:

  kernel wimboot
  initrd bootmgr              bootmgr
  initrd bcd                  bcd
  initrd efi/boot/bootx64.efi bootx64.efi

禁用自动 BCD 修改

wimboot 会自动修补标准的 BIOS 兼容引导配置数据(BCD)文件,把所有出现的 ".exe" 字符串替换为 ".efi",使其能在 UEFI 系统上使用。

你可以使用 rawbcd 命令行选项禁用这一行为。例如:

  kernel wimboot rawbcd

禁用调试消息

wimboot 默认会显示一些调试消息,以帮助诊断引导过程中可能出现的问题。

你可以使用 quiet 命令行选项禁用这些调试消息。例如:

  kernel wimboot quiet

显示图形化引导消息

wimboot 会强制 Windows 引导管理器以文本模式显示错误消息。这样做是为了绕过某些版本 Windows 引导管理器的一个 bug——否则除非提供合适的字体文件,否则无法显示错误消息。

你可以使用 gui 命令行选项禁用这一行为。例如:

  kernel wimboot gui

禁用分页

wimboot 会尽可能自动使用分页机制把数据文件重定位到 4GB 以上,以便在 BIOS 系统上使用较大的 .wim 文件。

你可以使用 linear 命令行选项禁用这一行为。例如:

  kernel wimboot linear

内部原理

关于 wimboot 内部工作原理的更多详细信息,请参见 wimboot 架构指南

故障排除

可以尝试在 iPXE 脚本中加入 imgstatprompt 命令,以便检查所有文件是否都已正确加载。例如:

  #!ipxe
  kernel wimboot
  initrd sources/boot.wim boot.wim
  imgstat
  prompt
  boot

检查列表中是否只有预期的文件。你可能需要使用 imgfree 命令丢弃不需要的文件。

你也可以尝试给 wimboot 加上 pause 命令行选项。例如:

  kernel wimboot pause

这会让 wimboot 在引导 Windows 之前等待一次按键,让你有更多机会观察可能显示的任何消息。

如果无法解决你的问题,可以联系 iPXE 开发者和其他 iPXE 用户。