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

技巧

\t 是一个转义字符,表示按了一次 Tab 键,此处用于对齐分割,换成空格也是一样的效果。你也可以使用 ee 编辑器手动写入(ee /tmp/bsdinstall_etc/fstab)对应条目:

下同。

设置启动项与 UEFI

  • ①:\n 代表 Unix 换行。Windows 中每段结尾实际是 \r\n——即先回车再换行。此处等同于 ee /tmp/bsdinstall_etc/rc.conf,然后加入 zfs_enable="YES"

完成

这样我们就手动创建了一套与自动安装相同的结构(/home/用户名 分区除外)

参考文献

最后更新于

这有帮助吗?