3.5 手动安装双系统(后安装 FreeBSD)
本文基于 FreeBSD-14.2-RELEASE-amd64-disc1.iso,演示在 UEFI 环境下,FreeBSD 14.2 RELEASE 与 Windows 11 24H2 的双系统安装。
技巧
本文示例要求先安装其他操作系统,再安装 FreeBSD。
简单方法(无众多数据集)
注意
以此部分所述方法,在使用 ZFS 时,只会创建一个名为
root的 zpool,并且直接挂载到/。并不会像自动安装那样创建zroot/ROOT/default以及众多的数据集。你可以以后再创建数据集进行替换操作,但如果你想在安装开始就使用与自动安装相同的布局,请跳转到本节 Shell 分区部分。
首先需要为 FreeBSD 在硬盘留出空间:不一定要求是硬盘末尾,硬盘中间也可以,因为正常的 Windows 安装最后一个分区(本例中为 nda0p4)是恢复分区。分区完成后在 FreeBSD 下,看起来就是这样的:
# gpart show
=> 34 419430333 nda0 GPT (200G)
34 2014 - free - (1.0M)
2048 204800 1 efi (100M) # EFI 分区
206848 32768 2 ms-reserved (16M) # MSR 分区
239616 207992832 3 ms-basic-data (99G) # 这个是 C 盘,原先有 200G 这么大。现在 C 盘和恢复分区之间空余了 100G
417947648 1478656 4 ms-recovery (722M) # 恢复分区
419426304 4063 - free - (100G)你应关闭安全启动和快速启动——或者你还可以从 Windows 设置——> Windows 更新——> 高级选项——> 恢复——> 高级启动选择从 U 盘设备启动。然后正常引导 FreeBSD 进行安装流程,直至分区选择。

此处选择 Manual
技巧
其实这里调用的是软件
sade(sysadmins disk editor,系统管理员磁盘编辑器),bsdconfig亦同。
这里可以看到硬盘分区。仅有一块硬盘:有 300M 的 EFI 系统分区、16M 的 MSR 分区、64G 的 Windows 系统分区(即 C 盘)以及未显示空闲空间。直接选择 Create(创建)。

此处,第一行输入分区类型(即下方会列出的 Filesystem type)。如要添加 swap 分区,请首先添加,后添加难以控制分区大小。在添加 UFS、ZFS 时,需在 Mountpoint 处添加 /,表示将分区挂载到 /。Label 是 FreeBSD 的卷标,方便识别分区,可以根据情况填或不填。此处使用 ZFS,不添加 swap 分区,并且填入卷标 zroot。

用 TAB 键 选择到 OK 按回车键。

这里会警告 ZFS 分区无法启动,但经过实测是可以正常启动的,选择 Yes 忽略:

注意
请将 Windows 创建的 300M 的 EFI 的挂载点设置为
/boot/efi。
选择 Finish(完成)

选择 Commit(确认)

之后会进入正常安装的流程。安装完成后:
进入系统后可以看到,仅有一个 root 数据集。可以手动将数据集改为自动安装的样子,亦可参照下文在安装时进入 shell 进行分区。
Shell 分区
仍然进行到分区选择,选择 Shell

之后会进入 TTY:

执行以下命令。
加载 ZFS 内核模块
配置 ZFS 对齐方式(只影响新创建的硬盘分区)
技巧
12即 2^12 = 4096 字节(4KB)的扇区大小。默认参数(命令sysctl vfs.zfs.vdev.min_auto_ashift可看到 ISO 的默认参数)是9,即 2^9 = 512 字节。
思考题
若你使用 NVMe,则正常新装系统(UEFI+GPT,不带 freebsd-boot 分区)默认参数应是
12。但是 4K 对齐究竟对齐的是什么?因为 SSD 固态硬盘并没有所谓扇区。
创建分区
查看分区情况
挂载临时文件系统准备安装
创建 ZFS 池
创建 ZFS 数据集
技巧
上述参数来着自 bsdinstall(8)。你也可以在安装好的系统里用命令
zfs get exec,setuid,mountpoint进行查看。代码位于 src/usr.sbin/bsdinstall/scripts/zfsboot。
修改文件夹权限
设置交换分区到 fstab
fstab技巧
\t是一个转义字符,表示按了一次 Tab 键,此处用于对齐分割,换成空格也是一样的效果。你也可以使用 ee 编辑器手动写入(ee /tmp/bsdinstall_etc/fstab)对应条目:下同。
设置启动项与 UEFI
①:
\n代表 Unix 换行。Windows 中每段结尾实际是\r\n——即先回车再换行。此处等同于ee /tmp/bsdinstall_etc/rc.conf,然后加入zfs_enable="YES"。
完成
这样我们就手动创建了一套与自动安装相同的结构(/home/用户名 分区除外)
参考文献
最后更新于
这有帮助吗?