解决 iPXE 退出后 BIOS 停止的问题¶
概述¶
iPXE 用户经常需要出于各种原因退出 iPXE 并继续按 BIOS 启动顺序启动。对于想要把操作系统直接安装到 SAN 设备上的人来说,这通常是必需的。不幸的是,许多系统 BIOS 在 iPXE 退出并交还启动过程控制权后,不会继续其启动顺序。
在大多数此类场景中,可以使用指向本地磁盘的 sanboot 命令来达到与 BIOS 继续下一个启动设备相同的效果。但当这不起作用时,启动本地驱动器的一个更可靠的选项是使用 iPXE 简单地链式加载另一个更适合处理本地磁盘的引导加载程序。
使用 GRUB4DOS¶
GRUB4DOS 能够链式加载本地磁盘的 MBR,可以直接从 FAT、NTFS 或 EXT 卷执行第二阶段引导加载程序[^1],并包含用于链式加载 CD/DVD 驱动器的 ATAPI 驱动程序。
设置¶
- 在 SourceForge 上下载最新版本的 GRUB4DOS 二进制文件(撰写本文时(2013 年 1 月)为 grub4dos 0.4.4)。
- 把归档中的 grub.exe 文件放在 HTTP/FTP/TFTP 服务器上,以便用 iPXE 链式加载它。
用法¶
grub.exe 像 iPXE 可以把控制权传递给的任何其他内核镜像一样加载,iPXE 可以向它传递命令行参数,以提供配置文件或一串简单的命令。
为简单起见,我们使用基于命令的方法:
chain http://server/grub4dos/grub.exe --config-file="command1;command2;commandN"
示例¶
启动硬盘 0¶
chain http://server/grub4dos/grub.exe --config-file="root (hd0,0);chainloader +1"
启动 CD/DVD 0¶
chain http://server/grub4dos/grub.exe --config-file="cdrom --init;map --hook;root (cd0);chainloader (cd0)"
查找并加载 Windows 启动管理器¶
- 注:当你不知道 Windows 的磁盘编号时,这很适合用于启动 Windows。
chain http://server/grub4dos/grub.exe --config-file="find --set-root /BOOTMGR;chainloader /BOOTMGR"
查找文件,并启动它所在的磁盘¶
- 注:与 BOOTMGR 示例不同,这将加载磁盘的 MBR,然后由它链式加载你的第二阶段引导加载程序。
chain http://server/grub4dos/grub.exe --config-file="find --set-root /filename;chainloader +1"
[^1]: 例如 Windows 启动管理器