13.1 启动引导器及配置文件(loader.conf)

loader.conf 的功能定位与文件结构

根据 loader.conf(5)arrow-up-right 手册页所述,loader.conf 是 FreeBSD 系统引导过程中的核心配置文件。该文件在引导加载器 loader(8) 阶段被读取,用于指定要启动的内核、传递给内核的参数以及需要加载的附加模块,同时可设置 loader(8) 支持的所有变量。

loader.conf(5) 相关的文件结构如下:

/
└── boot/ 操作系统引导过程中使用的程序和配置文件
     ├── loader.conf 用户定义设置
     ├── loader.conf.lua 使用 Lua 编写的用户定义设置(默认不存在)
     ├── loader.conf.d/ 用户定义设置的子目录(默认为空)
         ├── *.conf 拆分成多个文件的用户定义设置(默认不存在)
         └── *.lua 使用 Lua 编写并拆分成多个文件的用户定义设置(默认不存在)
     ├── loader.conf.local 机器特定设置,可覆盖其它配置文件中的设置(默认不存在)
     └── defaults/ 存放默认引导配置文件
          └── loader.conf 默认设置文件(请勿直接修改),参见 loader.conf(5)

loader.conf 是系统启动配置的关键文件,位于 /boot/loader.conf。写入此处的配置比 rc.conf 更早生效,但不当配置可能会妨碍系统正常启动。详细说明请参考 loader.confarrow-up-right 手册页。

技巧

不建议直接修改 /boot/defaults/loader.conf 文件。如需自定义配置,应使用 /boot/loader.conf/boot/loader.conf.local 进行本地配置扩展。其中 /boot/loader.conf.local 优先级最高,专门用于机器特定设置。

ZFS 标准安装场景下的 loader.conf 配置内容

在 ZFS 标准安装方案中,/boot/loader.conf 文件通常包含以下配置内容(以 15.0-RELEASE 为例):

该文件由 bsdinstall(8) 安装程序在系统安装过程中自动写入。具体而言,usr.sbin/bsdinstall/scripts/zfsbootarrow-up-right 脚本会分别写入 kern.geom.label.disk_ident.enable="0"kern.geom.label.gptid.enable="0"zfs_enable="YES" 这三行配置。因此在使用 ZFS 标准安装方案的系统中,这三行即是 /boot/loader.conf 文件的全部初始内容。

默认配置文件的内容结构与说明

默认配置文件位于源代码中的 stand/defaults/loader.confarrow-up-right。以下内容基于版本 loader.conf.5: "console" setting does not document multi-value possiblityarrow-up-right

引导选择界面等待时间的配置方法

引导选择界面的等待时间由 autoboot_delay 参数控制,该参数定义了系统在自动启动默认内核前等待用户干预的时长。通过修改此参数,可以根据实际需求调整启动流程的用户交互窗口。

要调整等待时间,编辑 /boot/loader.conf 文件并新增以下条目:

参数说明:2 表示设置系统启动自动引导延迟为 2 秒。

启动输出信息精简化配置

精简系统启动输出信息可以使启动过程更加简洁。这可以通过多维度配置实现:在引导器层面减少内核加载信息,在服务启动阶段关闭状态提示,在网络配置中优化等待逻辑。以下配置从引导到多用户启动阶段逐步减少输出信息。

如图 13-1 所示,设置后可看到 FreeBSD 启动 Logo。

freebsd boot logo

图 13-1 FreeBSD 启动 Logo

参考文献:

控制台屏幕保护程序的配置与应用

默认情况下,控制台驱动程序在屏幕空闲时不会执行任何特殊处理。如果预计长时间让显示器保持开启并处于空闲状态,应启用屏幕保护程序以防止烧屏。

使用 bsdconfig 配置屏幕保护程序

可以通过 bsdconfig 工具配置屏幕保护程序:

执行命令后,将显示如下界面:

菜单
解释

1 None Disable the screensaver

1 无 禁用屏幕保护程序

2 Blank Blank screen

2 空白 显示空白屏幕

3 Beastie "BSD Daemon" animated screen saver (graphics)

3 Beastie "BSD Daemon" 动画屏幕保护程序(图形)

4 Daemon "BSD Daemon" animated screen saver (text)

4 Daemon "BSD Daemon" 动画屏幕保护程序(文字)

5 Dragon Dragon screensaver (graphics)

5 龙 动画屏幕保护程序(图形)

6 Fade Fade out effect screen saver

6 淡出 屏幕保护程序淡出效果

7 Fire Flames effect screen saver

7 火焰 火焰效果屏幕保护程序

8 Green "Green" power saving mode (if supported by monitor)

8 绿色“绿色”省电模式(如果显示器支持)

9 Logo FreeBSD "logo" animated screen saver (graphics)

9 标志 FreeBSD“logo”动画屏幕保护程序(图形)

a Rain Rain drops screen saver

a 雨滴 雨滴屏幕保护程序

b Snake Draw a FreeBSD "snake" on your screen

b 蛇 在屏幕上绘制 FreeBSD“蛇”

c Star A "twinkling stars" effect

c 星星 闪烁星星效果

d Warp A "stars warping" effect

d 扭曲 星星扭曲效果

Timeout Set the screen saver timeout interval

超时 设置屏幕保护程序超时时间

选择屏保图片:在主菜单中选择 7 Console,然后选择 5 Saver Configure the screen saver,此处选择 3 Beastie "BSD Daemon" animated screen saver (graphics)

设定屏幕超时时间:在主菜单中选择 7 Console,然后选择 5 Saver Configure the screen saver,再选择 Timeout Set the screen saver timeout interval,单位是秒。

手动写入配置

也可以通过手动编辑配置文件来设置屏幕保护程序。编辑 /etc/rc.conf 文件,添加以下配置:

可选择的屏幕保护图片模块如下:

调整引导界面和 TTY 分辨率

修改“gop”(通用方法)

在出现 FreeBSD 菜单时,按 ESC 键退出引导,出现提示符 OK。输入 gop list 可查看所有支持的分辨率列表:

此处选择 mode 0 进行效果测试:

效果会立即显示。

确认效果合适后,继续引导:

该命令表示操作确认或进入菜单界面。

将该配置写入 /boot/loader.conf 文件,设置 GOP 模式为 0:

efi_max_resolution(UEFI)或 vbe_max_resolution(BIOS)

也可以通过配置文件设置 UEFI 或 BIOS 下的分辨率。根据文档 LOADER.CONF(5)arrow-up-right,这两个变量可接受以下值:

本文测试使用 efi_max_resolution 变量:

efi_max_resolution="1080p" 写入 /boot/loader.conf,重启后效果与 gop 方法一致。

参考文献

可以自定义引导加载程序的 Logo 以个性化系统启动界面。根据 man 页面 BEASTIE.4TH(8)arrow-up-right,默认有几种 Logo 可选:

  • fbsdbw

  • beastie

  • beastiebw

  • orb(14.2 中默认,UEFI 下)

  • orbbw

  • none(无 Logo)

fbsdbw 为例,在 /boot/loader.conf 中写入:

重启后效果如下:

fbsdbw
beastie
beastiebw
orb
orbbw
none

参考文献

课后习题

  1. 修改 autoboot_delay 为 0 并启用 boot_mute,对比两次系统启动的输出差异,分析引导器这种设计如何在用户体验和调试需求之间做权衡。

  2. 查找 /boot/loader.conf.d/ 目录的加载机制源码,创建一个自定义配置文件并验证其优先级,思考这种分散配置设计如何影响系统管理员的控制权。

  3. 自定义一张 BMP 格式的启动 Logo,尝试替代默认 Logo 并分析加载过程,记载到本文。

最后更新于