gptboot.8

GPTBOOT(8)

GPTBOOT(8)

FreeBSD System Manager's Manual

GPTBOOT(8)

gptboot

基于 BIOS 的计算机上 UFS 的 GPT 引导代码

gptboot 在基于 BIOS 的计算机上用于从 GPT 分区磁盘上的 UFS 分区引导。 gptboot 使用 gpart(8) 安装在 freebsd-boot 分区中。

当它启动时, gptboot 首先读取 GPT 并确定从哪个驱动器和分区启动,如下面的 BOOTING 中所述。 如果它没有找到符合条件的分区,或者如果用户在三秒内按下了一个键, gptboot 就会从自动引导切换到交互模式。 交互模式允许手动选择磁盘、分区、文件名和引导选项标志,如 boot(8) 中所述。

GPT 标准允许可变数量的分区,但 gptboot 仅从具有 128 个或更少分区的表引导。

gptboot 检查和管理 GPT UFS 分区的几个属性。

bootme

尝试从此分区启动。 如果多个分区设置了 bootme 属性, gptboot 将尝试引导每个分区,直到成功。

bootonce

仅尝试从该分区引导一次。 使用 gpart(8) 设置此属性也会自动设置 bootme 属性。 多个分区可能设置了 bootoncebootme 属性。

bootfailed

bootfailed 属性标记了设置了 bootonce 属性但无法引导的分区。 该属性由系统管理。 有关详细信息,请参阅下面的 BOOTINGPOST-BOOT ACTIONS

对于正常使用,用户不必设置或管理任何分区属性。 gptboot 将从找到的第一个 UFS 分区启动。

bootonce 属性可用于在已经运行的计算机上测试升级的操作系统。 现有系统分区保持不变,待测试操作系统的新版本安装在另一个分区上。 bootonce 属性是在新的测试分区上设置的。 尝试从测试分区进行下一次引导。 成功或失败将显示在系统日志文件中。 成功启动测试分区后,用户脚本可以检查日志并更改 bootme 属性,以便测试分区成为新的系统分区。 因为 bootonce 属性在尝试引导后被清除,所以失败的引导不会让系统尝试从永远不会成功的分区引导。 相反,系统将从旧的、已知工作的、尚未修改的操作系统引导。 如果在任何分区上设置了 bootme 属性,将首先尝试从它们进行引导。 如果没有找到具有 bootme 属性的分区,则将从找到的第一个 UFS 分区尝试引导。

gptboot 首先读取分区表。 所有只设置了 bootonce 属性(表示引导失败)的 freebsd-ufs 分区都设置为 bootfailed 。 然后 gptboot 扫描所有的 freebsd-ufs 分区。 引导行为取决于在这些分区上设置的 bootmebootonce 属性的组合。

bootonce + bootme

最高优先级:尝试从具有这两个属性的每个 freebsd-ufs 分区进行引导。 在每个分区上,都会删除 bootme 属性并尝试引导。

bootme

中优先级:尝试从具有 bootme 属性的每个 freebsd-ufs 分区进行引导。

如果在任何分区上都找不到 bootoncebootme 属性,则尝试从磁盘上的第一个 freebsd-ufs 分区进行引导。

启动脚本 /etc/rc.d/gptboot 检查所有 GPT 磁盘上的 freebsd-ufs 分区的属性。 具有 bootfailed 属性的分区会生成 “boot from X failed” 系统日志消息。 仅具有 bootonce 属性的分区(指示成功引导的分区)会生成 “boot from X succeeded” 系统日志消息。 从所有分区中清除 bootfailed 的属性。 bootonce 属性会从成功引导的分区中清除。 通常只有其中之一。

/boot/gptboot

引导码二进制

/boot.config

引导块的参数(可选) (optional)

gptboot 安装在 freebsd-boot 分区中,通常是磁盘上的第一个分区。 “protective MBR” (参见 gpart(8)) 通常与 gptboot 一起安装。

在 ada0 驱动器上安装 gptboot :

gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0

gptboot 也可以在没有 PMBR 的情况下安装:

gpart bootcode -p /boot/gptboot -i 1 ada0

设置分区 2 的 bootme 属性:

gpart set -a bootme -i 2 ada0

为分区 2 设置 bootonce 属性,同时自动设置 bootme 属性:

gpart set -a bootonce -i 2 ada0

boot.config(5), rc.conf(5), boot(8), gpart(8)

gptboot 出现在 FreeBSD 7.1 中。

本手册页由 Warren Block ⟨wblock@FreeBSD.org⟩ 编写。

April 30, 2019

FreeBSD 13.1-RELEASE

最后更新于

FreeBSD 中文社区