启动环境解决什么问题

bectl 管理 ZFS 根文件系统的可启动克隆。它适合在系统升级、内核或关键包变更前保留可选的系统状态;不包含所有独立数据集,也不能替代异机备份。

bectl check
bectl list
bectl create before-upgrade
bectl list

名称应包含变更目的和日期,避免一堆无法判断来源的 backup1

临时激活优先

bectl activate -t new-environment
shutdown -r now

-t 只影响下一次启动。若新环境失败,后续启动应回到原默认环境;这比立即永久切换更保守。确认网络、服务、包、Jail/VM 和业务后,再不带 -t 永久激活。

从 loader 恢复

系统无法进入用户态时,从 loader 菜单选择旧 Boot Environment 或旧内核。提前确认控制台键盘、串口或带外管理能实际到达菜单。远程主机没有控制台时,启动环境并不自动消除失败启动风险。

GENERIC 与自定义内核

freebsd-update 只自动更新 GENERIC。自定义内核主机升级前应保留匹配当前系统的 /boot/GENERIC,并确认其中包含启动磁盘和管理网卡所需驱动。不要在不了解模块依赖时把自定义内核简单复制成 GENERIC。

sysctl kern.bootfile
ls -ld /boot/kernel /boot/GENERIC
nextboot -l

nextboot 可安排下一次启动的内核;使用前阅读当前 nextboot(8) 并确认失败后的控制台路径。

引导代码不是每次更新都自动完成

UEFI loader、GPT bootcode 与 ZFS bootcode 的升级路径依赖实际分区布局。先用 gpart show 和挂载信息识别 EFI System Partition,再按目标 Release Notes 与 loader.efi(8)gptboot(8)gptzfsboot(8) 操作。本站不提供脱离磁盘布局的通用写盘命令,因为错误目标会直接造成不可启动。

清理旧环境

只有在新环境经历完整验证、备份恢复可用且回退窗口结束后才删除旧环境。先 bectl list -a 查看挂载和快照关系;删除前再次确认它不是当前、活动或唯一已知可启动环境。