Skip to content

3.7 KVM、QEMU 等平台安装 FreeBSD(传统引导和 MBR 分区表)

在 KVM/QEMU 等硬件辅助虚拟化平台上,通过传统 BIOS + MBR 方式安装 FreeBSD 适用于不直接提供 FreeBSD 镜像的云服务环境。此方法不支持 UEFI 引导,也不适用于 OpenVZ、LXC 等容器化平台。

注意

因为容器化技术本质上不属于完整的虚拟化解决方案,宿主机与客户机共享内核,此方法不支持 OpenVZ、LXC 等容器化技术。内核已经是 Linux,无法运行 FreeBSD 系统。

此方法不支持 UEFI 引导模式(BIOS + GPT 分区表同样不支持),仅支持传统 BIOS + MBR 引导方式,请确保环境符合要求。

警告

请注意数据安全,以下教程具有一定风险,且要求操作者具备相应的操作能力与系统管理知识。

3.7.1 概述

本节介绍在 KVM、QEMU 等平台上安装 FreeBSD 的方法。多数采用 KVM、QEMU 虚拟化架构的服务商不直接提供 FreeBSD 系统支持,只能通过特殊方法手动安装。

这些服务商虽然在某些机型上提供 FreeBSD 系统镜像,但支持并不完善,例如自带镜像默认未启用 BBR,而某些机型则完全不提供 FreeBSD 支持。

本方法无需使用 mfsLinux 作为安装介质,也无需通过 dd 命令安装。

mfsBSD 是一款完全载入内存的 FreeBSD 系统,类似于 Windows PE(Preinstallation Environment)系统。

本节通过 GRUB2 借助 MEMDISK 模块将 mfsBSD 载入内存盘,并从中启动,然后通过 mfsBSD 中的 bsdinstall 命令安装 FreeBSD。

3.7.2 获取现有网络配置

部分服务器可能未启用 DHCP 服务,而需要手动指定 IP,多见于小型厂商的服务器。

安装前,请在原 Linux 系统中确认 IP 地址和子网掩码。

可以使用命令 ip addrip route show 查看网关信息。

3.7.3 准备 mfsBSD

需要下载 mfsBSD。可以下载到本地计算机,再通过 SCP、SFTP 或 WinSCP 等工具上传至服务器;也可以直接在服务器上使用命令行下载。

注意

因为 mfsBSD 的下载地址不支持 IPv6 网络,仅支持 IPv6 的服务器无法通过命令行下载。

针对该问题,已通过邮件与作者沟通,但截至发稿时尚未收到回应。

3.7.3.1 内存 ≤ 512 MB

下载 mfsBSD Mini 14.1-RELEASE ISO 镜像:

sh
# wget https://mfsbsd.vx.sk/files/iso/14/amd64/mfsbsd-mini-14.1-RELEASE-amd64.iso

校验和(官网链接指向错误,已反馈但未获回复):checksums

注意

内存小于或等于 4 GB 的机器不建议使用 ZFS 文件系统。

同时,mfsBSD Mini 可能无法正常加载 zfs 内核模块。

此情况下仅可使用 UFS 文件系统。

3.7.3.2 内存 > 512 MB

下载 mfsBSD 14.2-RELEASE AMD64 ISO 镜像:

sh
# wget https://mfsbsd.vx.sk/files/iso/14/amd64/mfsbsd-14.2-RELEASE-amd64.iso

校验和:checksums

3.7.3.3 准备 mfsBSD.iso

将下载的 mfsBSD 重命名为 mfsbsd.iso,并放在 /boot 目录中(否则可能因 LVM 导致硬盘分区无法识别)。

3.7.4 获取 memdisk

memdisk 是 syslinux 软件提供的工具,用于将 ISO 镜像加载到内存中。

警告

请注意,GRUB2 自带的 memdisk.mod 模块并非此处所需的 MEMDISK。

memdisk 必须通过包管理器安装的 syslinux 软件提供。

3.7.4.1 安装 syslinux

不同 Linux 发行版安装 syslinux 的命令有所不同。

  • Debian/Ubuntu
bash
# apt install syslinux
  • Rocky Linux
bash
# dnf install syslinux

3.7.4.2 提取 memdisk

从已安装的 syslinux 包中提取 memdisk 文件到 /boot

sh
# cp /usr/lib/syslinux/memdisk /boot/

3.7.5 取消隐藏的 GRUB 菜单

取消 GRUB2 菜单自动隐藏设置:

bash
# grub2-editenv - unset menu_auto_hide

3.7.6 启动 mfsBSD

重启并进入 GRUB 菜单后,按 c 键进入命令行模式:

在此界面按 C

Grub 命令行界面

sh
ls # 显示磁盘。如果显示的磁盘为 (hd0,gptxxx),说明该平台不支持本节方法。
ls (hd0,msdos2)/
linux16 (hd0,msdos2)/memdisk iso
initrd (hd0,msdos2)/mfsbsd.iso
boot # 输入 boot 后按回车从 mfsBSD 继续启动

技巧

如果遇到问题,可尝试切换到串口控制台(console=comconsole),或检查镜像完整性。

在 Proxmox 中,可直接点击界面上的 xterm.js 按钮进入串口控制台排查问题。

选择 xterm.js 按钮

进入 xterm.js 排查

3.7.7 为 mfsBSD 配置网络

mfsBSD 的 root 默认密码为 mfsroot。可以使用 SSH 工具连接后安装。

技巧

如果平台支持 DHCP 自动获取网络配置,可跳过本节。

重启进入 mfsBSD 后,配置网络。

以接口 vtnet0 为例,配置 IPv4:

警告

请将下面的示例替换为实际 IP 地址和路由信息。

sh
# ifconfig vtnet0 inet 192.0.2.123/24 # 为网卡 vtnet0 设置 IPv4
# route add -inet default 192.0.2.1 # 设置默认网关/路由

检查网络配置:

sh
# ifconfig vtnet0 # 显示网卡接口 vtnet0 的网络信息
# route -n show -inet6 # 显示 IPv6 的路由表

3.7.8 开始安装

使用 kldload zfs 加载 ZFS 模块,然后运行 bsdinstall

该步骤可参照其他章节的方法安装。

3.7.9 故障排除与未竟事宜

3.7.9.1 GPT 分区表下如何安装?

可参考以下资料:

此问题有待进一步研究。

3.7.9.2 VMware、VirtualBox 无法按照此方法安装

VirtualBox 用户可尝试将虚拟化引擎选择为“KVM”后再次引导,但可能因环境而异(测试环境未能成功引导)。

VirtualBox 选择虚拟化

3.7.9.3 待尝试的方案

以下方案尚未经过验证,供读者参考尝试。

能进入 BootLoader,但启动失败

思路:在该界面可使用 ? 命令查看磁盘信息,有望继续完成引导。

  • 通过 mfsLinux dd mfsBSD

无法进入 BootLoader

此问题尚待验证。

3.7.10 参考文献