# 3.1 安装双系统（先安装 FreeBSD）

本节介绍在同一物理设备上部署 FreeBSD 与 Windows 双系统，先安装 FreeBSD，再安装 Windows。

## 安装 FreeBSD 14.2-RELEASE

首先安装 FreeBSD 14.2-RELEASE 系统，未作特别说明时均采用默认设置与参数。

![FreeBSD 安装界面](/files/go7MEm8bmkMYEdeB8mTA)

![FreeBSD 安装界面](/files/ZX0aowTrs1FR54qDjK0F)

> **技巧**
>
> 如果在此处设置 `P Partition Scheme` 为 `GPT (UEFI)` 而非其他（仅较早的计算机才需选择 `GPT (BIOS+UEFI)` 等选项），后续分区与系统更新过程更为简便，同时可实现 4K 对齐。

![分区方案选择](/files/Vstx3uqazj5AyKK6RQPs)

此处需要设置较大的临时交换分区，该数值应为计划中的交换分区与 Windows 系统分区容量之和。如此设置是为了后续安装 Windows 时能够直接使用这部分空间，避免额外分区操作。在本节中，交换分区（swap）大小为 8 GB，其余 200 GB 空间预留给 Windows。请修改 `S Swap Size` 的大小。

![交换分区大小设置](/files/fPmY0w5zdQWPnvnDJkHC)

列出系统磁盘分区情况：

```sh
# gpart show
=>     9  639659  cd0  MBR  (1.2G)
       9  639659       - free -  (1.2G)

=>     9  639659  iso9660/14_2_RELEASE_AMD64_CD  MBR  (1.2G)
       9  639659                                 - free -  (1.2G)

=>       40  629145520  nda0 GPT  (300G)
         40     532480    1  efi  (260M)
     532520       1024    2  freebsd-boot  (512K)
     533544        984       - free -  (492K)
     534528  436207616    3  freebsd-swap  (208G)
  436742144  192401408    4  freebsd-zfs  (92G)
  629143552       2008       - free -  (1.0M)

```

显示交换分区和交换文件的使用情况（单位为 MB/GB）：

```sh
# swapinfo -mh
Device              Size     Used    Avail Capacity
/dev/nda0p3          208G       0B     208G     0%
```

可以看到交换分区的大小是所设定的 208 GB（其中 200 GB 预留给 Windows 操作系统）。

编辑 **/etc/fstab** 文件，在 swap 对应行的行首添加 `#` 注释该行。本例中该行是第三行，以避免系统启动时挂载此交换分区，为后续安装 Windows 作准备：

```sh
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/gpt/efiboot0               /boot/efi       msdosfs rw              2       2
#/dev/nda0p3             none    swap    sw              0       0
```

## 安装 Windows 11

FreeBSD 安装完成后，安装 Windows 系统。

插入 Windows 启动盘，设置 BIOS 从该启动盘启动，开始安装 Windows。此时系统会识别到这块硬盘上的现有分区结构，只需要使用之前预留的空间。

![Windows 安装分区界面](/files/scKlYnhWsb1OjeRzqRlw)

在分区时，删除（Delete Partition）整个 208 GB 的交换分区（本例中为“磁盘 0 分区 3”），因为这部分空间正是为 Windows 预留的。

![删除交换分区](/files/PxqEHNaG32FdfaveIvrD)

然后点击创建分区（Create Partition），如果提示出错，点击刷新（Refresh）。Windows 安装程序会自动在未分配空间上创建所需的分区，包括 MSR 分区、系统分区和恢复分区。

然后选中 208 GB 的“磁盘 0 未分配空间”，点击“下一步”安装。

![选择未分配空间安装 Windows](/files/M4HFb7PIiX2FS8Lgul4Q)

## 还原交换分区（swap）

Windows 安装完成后，还原 FreeBSD 的交换分区。此前预留了 208 GB 空间，其中 8 GB 用于交换分区。接下来使用工具 [DiskGenius](https://www.diskgenius.com/)。

![DiskGenius 主界面](/files/zEAtnxacqlF1OEbd7tjq)

打开 DiskGenius，压缩 C 盘，释放 8 GB 的未分配空间。Windows 系统安装完成后，C 盘占用了之前预留的大部分空间，只需从 C 盘末尾压缩出 8 GB 即可。

![压缩 C 盘](/files/jGgKqTVbtMeyt3QtyCJR)

将这 8 GB 空间格式化为 `FreeBSD Swap partition` 类型，然后点击“保存更改”。此步骤将新创建的交换分区标记为 FreeBSD 可以识别的类型。

![格式化交换分区](/files/jZaOhCMxwty0rWGAOsiJ)

![保存分区更改](/files/LJ5pWrKSDV2gZGQRiAFK)

回到 FreeBSD，查看磁盘分区情况：

```sh
# gpart show
=>       34  629145533  nda0  GPT  (300G)
         34          6        - free -  (3.0K)
         40     532480     1  efi  (260M)
     532520       1024     2  freebsd-boot  (512K)
     533544        984        - free -  (492K)
     534528      32768     3  ms-reserved  (16M)
     567296  417953792     4  ms-basic-data  (199G)
  418521088   16777216     5  freebsd-swap  (8.0G)
  435298304    1441792     6  ms-recovery  (704M)
  436740096       2048        - free -  (1.0M)
  436742144  192401408     7  freebsd-zfs  (92G)
  629143552       2015        - free -  (1.0M)

```

可以看到，`nda0p5`（分区 5）即为新建的交换分区。接下来测试启用指定交换分区 **/dev/nda0p5**：

```sh
# swapon /dev/nda0p5
```

未产生错误，亦无任何提示，表明操作成功，系统已经可以正常识别并使用这个新的交换分区。

编辑 **/etc/fstab** 文件，在 swap 对应行的行首删去注释符号 `#`，并将分区改为正确的值。本例中的配置如下第三行：

```sh
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/gpt/efiboot0               /boot/efi       msdosfs rw              2       2
/dev/nda0p5             none    swap    sw              0       0
```

重启后再次查看当前交换分区情况：

```sh
# swapinfo -mh
Device              Size     Used    Avail Capacity
/dev/nda0p5         8.0G       0B     8.0G     0%
```

列出系统中所有 ZFS 池及其状态：

```sh
# zpool list
NAME    SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zroot  91.5G   922M  90.6G        -         -     0%     0%  1.00x    ONLINE  -
# zfs list
NAME                 USED  AVAIL  REFER  MOUNTPOINT
zroot                922M  87.8G    96K  /zroot
zroot/ROOT           919M  87.8G    96K  none
zroot/ROOT/default   919M  87.8G   919M  /
zroot/home           224K  87.8G    96K  /home
zroot/home/ykla      128K  87.8G   128K  /home/ykla
zroot/tmp            104K  87.8G   104K  /tmp
zroot/usr            288K  87.8G    96K  /usr
zroot/usr/ports       96K  87.8G    96K  /usr/ports
zroot/usr/src         96K  87.8G    96K  /usr/src
zroot/var            668K  87.8G    96K  /var
zroot/var/audit       96K  87.8G    96K  /var/audit
zroot/var/crash       96K  87.8G    96K  /var/crash
zroot/var/log        188K  87.8G   188K  /var/log
zroot/var/mail        96K  87.8G    96K  /var/mail
zroot/var/tmp         96K  87.8G    96K  /var/tmp
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/di-3-zhang-freebsd-gao-ji-an-zhuang/di-3.1-jie-an-zhuang-shuang-xi-tong-xian-an-zhuang-freebsd.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
