For the complete documentation index, see llms.txt. This page is also available as Markdown.

21.5 阿里云轻量应用服务器安装 FreeBSD(UEFI 和 GPT 分区表)

本节演示在阿里云轻量应用服务器上通过 UEFI + GPT 方式安装 FreeBSD,以 Rocky Linux 9 为中间宿主系统完成部署。

服务器环境

Rocky Linux 9

将服务器系统重置为 Rocky Linux 9。该发行版在服务器市场占据主流地位,多数服务商均提供支持。

救援登录

配置救援登录。

Rocky Linux 9

本节所述大部分操作通过 VNC 连接(救援登录)完成。

Rocky Linux 9

为便于使用,可将救援登录临时设置为默认登录方式。

Rocky Linux 9

救援登录界面如上所示。可通过右上角的“复制命令”将较长的命令复制至终端执行。

验证服务器是否处于 UEFI 环境

本节针对 UEFI 启动环境和 GPT 分区表,因此必须首先确认服务器是否使用 UEFI 启动环境与 GPT 分区表。以下提供多种方法供参考。

  • 通过系统固件判断当前系统是以 UEFI 还是 BIOS 模式启动:

  • 通过 UEFI 启动工具判断启动模式:

服务器的磁盘分区情况

  • 通过文件系统类型与磁盘使用情况判断(同时请读者注意 /dev/vda2 挂载于 /boot/efi,这表明系统正使用 UEFI 模式):

  • 通过文件系统静态挂载配置判断:

  • 查看块设备的 UUID 和文件系统类型:

  • 探测指定块设备的文件系统信息:

BIOS Boot 分区用于兼容传统 BIOS 启动。

查看系统主机名及系统信息

查看网络信息

  • 显示所有网络接口及其 IP 地址信息:

  • 显示系统的路由表:

  • 列出所有 PCI 总线及其设备信息:

通过裸磁盘镜像安装 FreeBSD

阿里云轻量应用服务器支持通过裸磁盘镜像方式安装 FreeBSD,操作前请务必注意以下警告。

警告

此操作将丢失所有数据,请先行完成数据备份再操作。经过测试,操作后,快照可能无法正确回滚,但自定义镜像可间接还原。

下载并写入 FreeBSD ZFS 镜像到 /dev/vda

参数说明:

参数
说明

wget -qO- URL

-q 静默模式,不显示下载过程;-O- 将下载内容输出到标准输出(stdout)

xzcat

解压 xz 格式文件,并将解压后的内容输出到标准输出

dd of=/dev/vda

将输入写入 /dev/vda 设备(整块磁盘,不是某个分区)

bs=4M

设置块大小为 4 MB,提高写入效率

status=progress

显示 dd 的写入进度

写入 FreeBSD ZFS 镜像到整块硬盘

随后在阿里云管理控制台中依次选择“更多操作”和“重启”。

强制重启实例

勾选“强制重启实例”这一选项。

重启实例

执行强制重启以进入 FreeBSD。

根据读者反馈与实际测试,在半虚拟化平台上安装或升级 FreeBSD 时可能会遇到故障,例如阿里云的 VirtIO-BLK 存储设备驱动的问题。

初次启动的 FreeBSD 系统

此时,需在 FreeBSD 系统启动时,在启动器菜单界面(上图所示界面),按下 ESC 键进入命令提示符“OK”。

调整可调参数

请在该界面输入 set kern.maxphys=65536,设置内核最大物理 I/O 大小为 65536 字节(大块 I/O 有时会触发驱动或缓存问题),按回车键确认,再输入 boot 并按回车键方可正常启动。

随后正常执行安装流程,选择 ZFS 分区方式。

安装 FreeBSD 系统

待 FreeBSD 系统完全启动后,在引导加载程序配置文件中永久设置最大 I/O 缓冲区大小:

如果不进行上述设置,系统下次开机时仍可能停留在引导界面。

接下来列出 FreeBSD 系统磁盘分区表及分区信息:

观察发现,系统已自动扩展磁盘容量。

查看 FreeBSD 系统网络接口信息:

可通过 ping 常用网站,验证网络连接状态。

显示内核启动信息和内核日志:

通过 mfsBSD 间接安装 FreeBSD

mfsBSD 作为精简的 FreeBSD 内存盘镜像,支持 UEFI 和 ZFS 环境,可用于安装 FreeBSD 或充当急救盘等。mfsBSD 的下载地址为:mfsBSD and mfslinux

警告

请勿选择任何带后缀的版本,如 special editionmini edition。参见故障排除部分。

通过 WinSCP 将 mfsBSD ISO 镜像传输至 Rocky Linux:

WinSCP 传输文件

将 mfsBSD ISO 镜像写入 /dev/vda(块大小 4 MB,并显示进度):

强制重启实例,启动到 mfsBSD。进入启动菜单界面时,参照上节配置 kern.maxphys,否则无法正确识别硬盘。

警告

不可使用精简系统 mfsbsd-mini-14.2-RELEASE-amd64.iso 代替,无法调整可调参数 kern.maxphys,进而造成启动失败。

mfsbsd-mini 启动界面

手动指定可调参数后仍然失败。

mfsbsd-mini 启动界面

完全启动后,输入密码登录到 root 账户,默认密码为 mfsroot

观察 mfsBSD 磁盘分区情况:

可见,大部分分区已被标记为 [CORRUPT],会影响系统安装,因此必须先修复 GPT 分区表:

UFS 安装

执行 bsdinstall 开始安装,流程可参见本节其他相关内容。

UFS 安装

安装后,使用 JuiceSSH 连接 FreeBSD 机器:

UFS 安装

ZFS 安装

在 Shell 界面,执行以下命令,手动加载 ZFS 内核模块:

无任何信息输出则加载成功。

还可通过以下命令验证 ZFS 模块的加载情况:

如果有相关输出,则可继续输入命令 bsdinstall 以进入正常安装流程。

本次实验的机器仅有 1 GB 内存,在 mfsBSD 占用约 100 MB 后,可用内存不足 800 MB。因此指定 ZFS 安装会报错“Distribution extract failed”(分发文件解压失败):

Distribution extract failed

查看实际错误信息,按 Ctrl + C 键退回到 Shell 界面,通过以下命令观察:

“failed to reclaim memory”表示内存回收失败。解压进程 1562 被强制终止,这是内存不足所致。

待进一步测试,感兴趣的读者也可以在测试后提交 PR。

故障排除与未竟事宜

本节实际操作中尝试了若干方法,但最终只有两种方法相对成功。为了便于有意探索的读者进行研究,未完成的方法在此处列出,供后续研究参考。

安装过程中报错 sysctl: unknown oid 'vfs.zfs.min_auto_ashift'

分析报错信息:从字面看,该参数用于设置 ZFS 4K 对齐,报错指出该参数是未知的。因此首先将问题定位到 ZFS 模块。

通常是由于未预先手动加载 ZFS 内核模块引发的。

解决方法为按照上文所述,执行命令 kldload zfs 手动加载内核模块。

这可能是一个长期存在但难以复现的 Bug,参见:FreeBSD Project. Bug 249157 - installer reports sysctl: unknown oid 'vfs.zfs.min_auto_ashift' when ZFS module not loaded[EB/OL]. [2026-03-26]. https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=249157.

文件系统不支持在线缩小

EXT2、EXT3、EXT4 和 XFS 文件系统均不支持在线缩小(Btrfs 支持在线缩小,但可能存在稳定性问题)。目前对此尚无通用解决方案。

找不到 UEFI 启动项,启动后直接进入 UEFI Shell

找不到 UEFI 启动项

确认所选镜像确实支持 UEFI 启动,例如 mfslinux 和 TinyCore-current.iso 不支持 UEFI 启动。

找不到根分区

应将镜像写入整块磁盘(例如 /dev/vda),而非单个分区(例如 /dev/vda2),否则可能出现如下错误:

未写入整块磁盘,写入了 EFI 分区

即使手动指定根分区,仍可能出现如下错误:

未写入整块磁盘,写入了 EFI 分区

通过 Ventoy 安装 FreeBSD

Ventoy 是新一代多系统启动 U 盘解决方案,其项目官网地址为 Ventoy

基本思路是通过内存盘系统将 Ventoy 写入整块硬盘,随后将 Ventoy 创建的较大容量的磁盘分区挂载到内存盘,再将 FreeBSD 系统写入该磁盘分区。

随后强制重启实例,启动到 Ventoy 进行系统安装。

Ventoy 使用方法

从南京大学镜像站下载 Ventoy 的 Linux 压缩包:

在当前目录解压 Ventoy 的文件和目录:

安装 Ventoy 到硬盘:

Ventoy 安装界面

Ventoy2Disk.sh 参数说明:

  • -I:强制安装

  • -g:使用 GPT 分区表

通过命令来验证 Ventoy 安装情况:

验证 Ventoy 安装

读者可通过 Linux 系统安装 Ventoy —— 命令行界面 了解更多信息。

使用 Ventoy LiveCD 写入 Ventoy

Ventoy LiveCD 下载地址为 安装包

Ventoy LiveCD 并非 Ventoy 本体,而是用于安装 Ventoy 的内存盘系统镜像。参见:Ventoy 团队. Ventoy LiveCD 使用说明[EB/OL]. [2026-03-26]. https://www.ventoy.net/cn/doc_livecd.html.

在使用 dd 将镜像写入整块硬盘后,强制重启实例,Ventoy LiveCD 可以正常启动。

Ventoy LiveCD 启动界面

在配置选项中允许所有类型的磁盘。

Ventoy 配置选项

将 Ventoy 安装到整块磁盘中。

Ventoy 安装到磁盘

强制重启实例后,系统可以正确启动到 Ventoy。

Ventoy 启动菜单

Ventoy 目前不支持在线下载 ISO 镜像文件。

因此,该方法无法继续。

需要使用其他内存盘在启动 Ventoy 之前将镜像写入硬盘。

使用 TinyCorePure64 写入 Ventoy

TinyCorePure64 属于 Core 项目,该系统高度模块化,支持社区自定义构建。

TinyCorePure64 能够在启动后完全载入内存,同时重启后也将丢失所有数据。

TinyCorePure64 下载地址为 x86 Pure 64,进入页面后点击“Core Pure 64 Latest Build”选择“TinyCorePure64-16.2.iso”或类似版本进行下载。

注意

切勿错误地下载“CorePure64”,CorePure64 并不支持 UEFI 启动环境。

警告

dd 写入块设备将覆盖磁盘上所有现有数据,操作不可逆。请反复确认 of= 参数指定的设备路径正确无误。

强制重启实例以启动到 TinyCorePure64。

启动到 TinyCorePure64

选择最后一项“corew”,因为默认图形界面(tc)通过 VNC 执行命令时可能出现异常。同时,其图形用户界面下无法运行图形界面的 Ventoy,这是因为 libc 格式不兼容。

观察分区情况:

TinyCorePure64 分区情况

详细查看:

TinyCorePure64 分区详情

TinyCorePure64 是精简发行版,缺少许多 Ventoy 所需工具,因此需要手动安装。

配置 Tiny Core Linux 镜像源地址,指定使用网易开源镜像站作为下载源:

安装 exFAT 工具、分区工具、FAT 文件系统工具、Linux 工具集及证书组件:

注意

该包管理器无法在 root 权限下运行。

参照上述章节内容,将 Ventoy 安装到整块磁盘上。随后挂载 Ventoy 生成的磁盘到内存盘。

使用指定用户代理从镜像站下载 FreeBSD 15.0 Bootonly ISO 镜像至 Ventoy:

强制重启实例到 Ventoy。

Ventoy 启动菜单

在引导菜单中设置可调参数 kern.maxphys 后,继续启动 FreeBSD 系统。

列出磁盘分区情况:

磁盘分区情况

磁盘为只读状态,无法执行任何操作,包括删除分区表、格式化或使用 dd 写零。

上述操作均提示错误如下:

只读磁盘报错

因此无法执行任何安装操作。

附录:可能会用到的实用命令

卸载 EFI 分区示例:

将 EFI 分区重新格式化为 FAT32 文件系统:

警告

mkfs.vfat 将格式化指定分区,分区上现有数据将永久丢失。请确认设备路径正确无误。

查看 /dev/vda2 分区的文件系统类型:

参考文献

  • Ventoy. Ventoy — A New Bootable USB Solution[EB/OL]. [2026-04-17]. https://www.ventoy.net. Ventoy 项目主页,新一代多系统启动 U 盘解决方案,支持直接从 ISO 镜像启动。

  • FreeBSD Project. FreeBSD 15.0-RELEASE Release Notes[EB/OL]. [2026-04-17]. https://www.freebsd.org/releases/15.0R/relnotes/. FreeBSD 15.0 发行说明,包含 VirtIO 驱动改进与内核可调参数变更。

最后更新于