> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/release/freebsd-2.0-release/2.0-install.md).

# FreeBSD 2.0-RELEASE 安装指南

欢迎使用 FreeBSD 2.0，这是面向 Intel（或兼容）PC 的完整 4.4 BSD Lite 操作系统。

软盘上附有若干文档和在线帮助屏幕，可在安装过程中为你提供很大帮助。尽管如此，初步用户测试表明，其中使用的一些术语对 UN\*X 新手来说可能难以理解，因此我们准备了这份分步指南，解释典型的安装过程。你可能会发现，在安装过程中将其打印出来放在手边会很有用，或者至少仔细通读一遍，这样你遇到的一些提示和问题就不会完全出乎意料。

在开始之前，请用 **floppies/** 目录中的两个镜像文件制作两张 1.44MB 软盘——boot.flp 和 cpio.flp。如果你在 DOS 下阅读本文档，可以用 1 个简单步骤完成，如果由于某种奇怪原因不成功，则用 3 个步骤：

1. 如果你是在输入 `go` 后阅读此文件，只需按 ESC 退回片刻，选择 `makeflp` 批处理文件来制作两张软盘。这将调用 DOS 格式化程序格式化软盘，然后尝试将两个磁盘镜像写入其中。如果此方法不成功，请按步骤 2 至 4 操作：
2. 使用 DOS 命令 `format` 格式化 2 张新软盘。许多人使用旧的和有缺陷的软盘导致了许多问题，只需使用新的或至少可信赖的介质，就能省去大量麻烦。
3. 插入第一张软盘并输入：

   ```sh
   tools\dos-tool\rawrite floppies\boot.flp a:
   ```
4. 插入第二张软盘并输入：

   ```sh
   tools\dos-tool\rawrite floppies\cpio.flp a:
   ```

现在你已准备好从启动软盘引导并开始安装。

安装从以下屏幕开始：

```sh
+-------------------------- Welcome to FreeBSD! ---------------------------+
| Use ALT-F2 and ALT-F1 to toggle between debugging                        |
| information screen (ALT-F2) or this dialog screen (ALT-F1)               |
|                                                                          |
| Please select one of the following options:                              |
| +----------------------------------------------------------------------+ |
| | 1. README               READ THIS FIRST.                             | |
| | 2. Release Notes        Read the 2.0 Release Notes (recommended).    | |
| | 3. Troubleshooting      Read this in case of trouble.                | |
| | 4. Partitions and MBRs  Verbose description of how these work.       | |
| | 5. COPYRIGHT            Read FreeBSD Copyright Information.          | |
| | 6. Install              Proceed with full installation.              | |
| | 7. Fixit                Repair existing installation (`fixit' mode). | |
| | 8. Quit                 Don't do anything, just reboot.              | |
| +----------------------------------------------------------------------+ |
+--------------------------------------------------------------------------+
|                          <  OK  >      <Cancel>                          |
+--------------------------------------------------------------------------+
```

你可以使用上下箭头键高亮各个选项，当某行被高亮时按回车键即可选择。你也可以直接输入想要的选项编号（1-7）并按回车。建议你至少阅读 README，发行说明也很有帮助。这看起来可能需要读很多内容，但如果你是 FreeBSD 新手，这些说明对于解释系统非常有价值，强烈推荐阅读。

阅读完文档后，选择 Install（5）进入下一个屏幕。

下一个屏幕是磁盘编辑器屏幕，如下所示：

```sh
------------------------------------------------------------------------------
FreeBSD 2.0-RELEASE Installation -- Diskspace editor

Disks         Total   FreeBSD                    |You should now assign some
                                                 |space to root, swap, and
 0: sd0     2006 MB      0 MB                    |(optionally) /usr partitions
 1: sd1      496 MB      0 MB                    |Root (/) should be a minimum
                                                 |of 18MB with a 30MB /usr
Filesystems  Type        Size  Action Mountpoint |or 50MB without a /usr.
                                                 |Swap space should be a
                                                 |minimum of 12MB or RAM * 2
                                                 |Be sure to also (A)ssign a
                                                 |mount point to each one or
                                                 |it will NOT be enabled.
                                                 |
                                                 |We suggest that you invoke
                                                 |(F)disk, (W)rite the bootcode
                                                 |then (D)isklabel your disk.
                                                 |If installing on a drive
                                                 |other than 0, also read the
                                                 |TROUBLESHOOTING doc first
Commands available:
(H)elp  (T)utorial  (F)disk  (D)isklabel  (P)roceed  (Q)uit

Enter Command>

------------------------------------------------------------------------------
```

如我们所见，该系统有两块硬盘 sd0 和 sd1。在 IDE 系统上，它们会显示为 wd0 和 wd1（在单硬盘系统上则只有 sd0 或 wd0）。可以看到两块硬盘都没有为 FreeBSD 分配任何空间（FreeBSD 列下均显示 0MB），因此我们按照屏幕右侧的说明，输入 `f` 调用 (F)disk 编辑器：

```sh
Enter Command> F
```

系统提示输入要进行 (F)disk 的驱动器编号，我们输入 0 选择第一块硬盘：

```sh
Enter number of disk to Fdisk> 0
```

现在进入 FDISK 编辑器屏幕，如下所示：

```sh
------------------------------------------------------------------------------
FreeBSD 2.0-RELEASE Installation -- Diskspace editor -- FDISK

Disk: sd0   Geometry:  2006 Cyl * 32 Hd * 64 Sect = 2006Mb = 4108600 Sect

1 Boot?="No"    Type="Primary" 'big' DOS (> 32MB)
  Phys=(c0/h1/s1..c299/h63/s32)   Sector=(32..614399)
  Size="300" MB, 299 Cylinders + 31 Tracks + 32 Sectors

2 Unused


3 Unused


4 Unused


Commands available:
(H)elp   (T)utorial   (D)elete   (E)dit   (R)eread   (W)rite MBR   (Q)uit
(U)se entire disk for FreeBSD   (G)eometry   Write MBR (B)ootcode
Enter Command>

------------------------------------------------------------------------------
```

可以看到驱动器 0 上有一个 300MB 的 DOS 分区（在 FreeBSD 术语中称为“slice”，以区别于 FreeBSD 分区）。不要担心你看到的数字比这些小得多——我有一块相当大的 2.1GB 磁盘！:-) 假设我们想把剩余空间分配给 FreeBSD，因此需要 (E)dit 其中一个现有 slice。我们看到 2、3 和 4 未使用，所以选择第一个未使用的，即 2（如果想用 FreeBSD 替换现有操作系统的 slice，则选择其编号）。首先输入 `E` 编辑一个 slice 条目：

```sh
Enter Command> E
```

系统提示选择要编辑的 slice，输入 2：

```sh
Edit which Slice> 2
```

现在系统提示输入新 slice 的大小，默认值为磁盘上所有剩余空间。假设我们不想分配磁盘上的全部空间，想保留 400MB 给其他未来的操作系统。剩余空闲空间总量为 1706MB，这是为我们选择的默认值，所以我们退格删除它并输入 1306：

```sh
Size of slice in MB> 1306
```

接下来系统询问 slice 的类型。类型用于告诉 PC 这是什么类型的 slice。例如，DOS 主 slice 的类型为 6。FreeBSD slice 的类型为 0xa5（十六进制）。如果我们想在此为 Linux 或 OS/2 等其他类型的操作系统预留空间，并且知道它们的 slice 类型（如果你感兴趣的话，Linux 为 0x82，OS/2 为 0x0A），也可以在此编辑器中完成，但目前我们只关心 FreeBSD，所以接受默认值。

```sh
Type of slice (0xa5="FreeBSD")> 0xa5
```

下一个提示询问是否要将此 slice 设为默认可引导，我们接受默认值：

```sh
Bootflag (0x80 for YES)> 0x80
```

此时返回主屏幕，现在显示 slice 2 的新条目：

```sh
------------------------------------------------------------------------------
FreeBSD 2.0-RELEASE Installation -- Diskspace editor -- FDISK

Disk: sd0   Geometry:  2006 Cyl * 32 Hd * 64 Sect = 2006Mb = 4108600 Sect

1 Boot?="No"    Type="Primary" 'big' DOS (> 32MB)
  Phys=(c0/h1/s1..c299/h63/s32)   Sector=(32..614399)
  Size="300" MB, 299 Cylinders + 31 Tracks + 32 Sectors

2 Boot?="Yes"   Type="FreeBSD"/NetBSD/386BSD
  Phys=(c300/h0/s1..c1023/h31/s0)   Sector=(614400..3289087)
  Size="1306" MB, 1306 Cylinders

3 Unused



4 Unused



Commands available:
(H)elp   (T)utorial   (D)elete   (E)dit   (R)eread   (W)rite MBR   (Q)uit
(U)se entire disk for FreeBSD   (G)eometry   Write MBR (B)ootcode
Enter Command>

------------------------------------------------------------------------------
```

此时我们对第一块硬盘上的 slice 感到满意，输入 `w` 将新信息写入。系统还会提示确认我们确实要执行此操作，所以退格删除默认的 `N` 并输入 `y`<回车>。此时，我们还可以决定是否安装“boot manager”。boot manager 是一个小工具，每次重置或开机时都会提示你选择要启动的操作系统，它可以是在 FreeBSD 和其他操作系统（如 Linux 或 DOS）之间共享计算机的便捷方式。我们决定需要此功能，输入 `b` 将特殊的 MBR (B)ootcode 写入磁盘。这不会损害磁盘上的任何其他操作系统，因为它写入的是一个特殊区域。现在输入 `q` 退出此屏幕。

返回主提示符。如果想在其他硬盘上分配额外的 slice，可以再次输入 `f` 调用 (F)disk 编辑器并在提示符下输入不同的驱动器编号，但目前我们假设只有一块硬盘并继续。输入 `d` 进入 (D)isklabel 屏幕，与 FDISK 编辑器一样，系统会提示要写入 disklabel 的驱动器。输入 `0` 选择第一块硬盘并按回车。进入 DISKLABEL 编辑器屏幕，如下所示：

```sh
------------------------------------------------------------------------------
FreeBSD 2.0-RELEASE Installation -- Diskspace editor -- DISKLABEL

Part  Start       End    Blocks     MB  Type    Action  Mountpoint
a         0         0         0      0  unused
b         0         0         0      0  unused
c   1433600   4108287   2674688   1306  unused          <Entire FreeBSD slice>
d         0   4108599   4108600   2006  unused          <Entire Disk>
e         0         0         0      0  unused
f         0         0         0      0  unused
g         0         0         0      0  unused
h        32    614399    614368    300  MSDOS




Total size:       2674688 blocks   1306Mb
Space allocated:        0 blocks      0Mb

Commands available:
(H)elp  (T)utorial  (E)dit  (A)ssign  (D)elete  (R)eread  (W)rite  (Q)uit
(P)reserve  (S)lice
Enter Command>

------------------------------------------------------------------------------
```

BSD 分区 a 到 h 是 FreeBSD 将物理 slice 划分为多个文件系统的方式。每个 FreeBSD 系统至少应分配根文件系统和交换分区。根文件系统称为“/”，按惯例通常放在分区 `a` 上。交换分区总是放在 `b` 上，而 `c` 和 `d` 分区是特殊的，分别指向整个 FreeBSD slice 和整个磁盘。`c` 和 `d` 不能也不应分配给实际的文件系统。

我们还看到分区 h 恰好指向 DOS slice，我们也可以将其分配到文件系统层次结构中的某个位置，以方便地在 FreeBSD 和 DOS 之间共享文件。稍后详述。

典型的文件系统布局如下：

```sh
/   20MB
swap    32MB
/usr    120MB
```

/（根文件系统）包含系统文件和一些临时空间。它的大小至少应为 18MB，多一些也无妨。交换空间属于“多多益善”的类型，但如果你的系统使用不太频繁，那么拥有大量交换空间可能并不那么重要。交换空间的经验法则是：最小需要 12MB，总体计算应为内存量乘以 2。也就是说，如果你有 16MB 内存，那么 32MB 交换空间是合适的。

如果你有多块硬盘，还可以在每块硬盘上分配一些交换空间以分散负载。在我个人的系统上，我有 32MB 主内存和两块硬盘各 64MB 交换空间，总共 128MB 交换空间。这为我提供了 4 倍内存的总程序交换能力，使我能够运行一些相当大的程序！Emacs 和 X Window System 尤其可能是真正的交换空间大户。

无论如何，我们假设目前仍在配置理想系统，将使用 MEM \* 2 公式分配 64MB 交换空间。如果你只有 8MB 内存，则应分配 16MB 交换空间。

第二个重要文件系统是 /usr，包含更多系统二进制文件和所有捆绑的用户二进制文件。/usr 至少应为 80MB 以容纳所有重要二进制文件，但如果你计划使用大的 /usr/local 或加载 X Window System（也称为 XFree86 3.1）发行版，则应为它们创建单独的文件系统，或者使 /usr 大得多。

也可以完全跳过创建 /usr，简单地制作一个大的根（/）文件系统。由于 /usr 位于 / “之下”，如果 / 足够大以容纳两者的内容，则缺少 /usr 不会造成任何问题。无论如何，这是用户的决定，往往更多由惯例驱动。在本安装指南中，我们假设 /usr 为 200MB，100MB 空间用于本地二进制文件（挂载在 /usr/local），其余用于用户主目录（挂载在 /usr/users）。不要被这些数字的大小吓到！你可以让系统适应更小的空间，但既然我们是在划分理想的 2GB 梦想磁盘，不妨做得到位！;-)

回到 DISKLABEL 屏幕的相关部分，我们记得它看起来是这样的：

```sh
Part  Start       End    Blocks     MB  Type    Action  Mountpoint
a         0         0         0      0  unused
b         0         0         0      0  unused
c   1433600   4108287   2674688   1306  unused          <Entire FreeBSD slice>
d         0   4108599   4108600   2006  unused          <Entire Disk>
e         0         0         0      0  unused
f         0         0         0      0  unused
g         0         0         0      0  unused
h        32    614399    614368    300  MSDOS
```

首先，输入 `e`（即 (E)dit partition）在分区 `a` 上为根分区分配空间。系统询问我们要更改哪个分区的大小，输入 `a`：

```sh
Change size of which partition> a
```

系统提示输入空间大小，我们选择 20MB 作为舒适的根文件系统：

```sh
Size of partition in MB> 20
```

现在显示变为：

```sh
Part  Start       End    Blocks     MB  Type    Action  Mountpoint
a   1433600   1474559     40960     20  4.2BSD
...
```

系统显示了分区的起始和结束位置，并指明它是 4.2BSD 文件系统，这是正确的（实际上它是 4.4 BSD 文件系统，但两者足够相似，可以共享相同的标签）。

同样，输入 `e` 修改 `b` 分区，填入 64 作为大小，分配 64MB 交换空间。

最后，记住 `c` 和 `d` 是特殊的，不供我们使用，将 `e` 的大小改为 200 用于未来的 /usr，`f` 改为 100 用于 /usr/local，`g` 改为磁盘剩余空间用于 /usr/users。完成后，disklabel 屏幕顶部应如下所示：

```sh
Part  Start       End    Blocks     MB  Type    Action  Mountpoint
a   1433600   1474559     40960     20  4.2BSD
b   1474560   1605631    131072     64  swap
c   1433600   4108287   2674688   1306  unused          <Entire FreeBSD slice>
d         0   4108599   4108600   2006  unused          <Entire Disk>
e   1605632   2015231    409600    200  4.2BSD
f   2015232   2220031    204800    100  4.2BSD
g   2220032   4108287   1888256    922  4.2BSD
h        32    614399    614368    300  MSDOS
```

我们保留了 `h` 不变，因为我们实际上希望能够与 DOS 分区共享文件。此时，输入 `w`（即 (W)rite）将新的大小信息写入磁盘。

你可能还注意到，我们一直谈论的“/”、“/usr”和其他文件系统名称没有出现在上述列表中的任何地方。它们在哪里？这就引出了下一阶段，即将新分区分配到实际的文件系统挂载点。FreeBSD 中的文件系统在被“挂载”到某个位置之前实际上不会出现在任何地方，这是从早期的惯例延续下来的，当时磁盘实际上是大型可更换盘组，由系统操作员物理地安装到洗衣机大小的磁盘驱动器主轴上！如你所见，今天并没有太大变化！:-)

然后我们从顶部开始，输入 `a`（即 (A)ssign）将第一个分区分配给根文件系统（/），然后再输入 `a` 选择分区 a：

```sh
Assign which partition> a
```

当系统询问挂载点名称时，输入 /：

```sh
Directory mountpoint> /
```

显示相应调整以显示新状态：

```sh
Part  Start       End    Blocks     MB  Type    Action  Mountpoint
a   1433600   1474559     40960     20  4.2BSD  newfs   /
...
```

Action 字段现在还显示“newfs”，这意味着分区将被重新创建。对于根文件系统，这是默认值且无法更改，但其他分区可以通过输入 `p`（即 (P)reserve）选择性地“保留”。在极少数情况下我们可能需要这样做，例如，如果我们要从旧 FreeBSD 机器上安装一块磁盘，想将其挂载到新系统中但不想擦除，可以这样做。目前，假设这是一个新安装，我们希望所有文件系统都从头创建。然后我们继续将其余文件系统分配到各自的 /usr、/usr/local 和 /usr/users 挂载点。我们还要分配 `b` 分区，它不接受挂载点（当我们 (A)ssign 时也不会提示输入），但需要我们告诉它已准备好用作交换空间。

完成后，屏幕顶部应如下所示：

```sh
Part  Start       End    Blocks     MB  Type    Action  Mountpoint
a   1433600   1474559     40960     20  4.2BSD  newfs   /
b   1474560   1605631    131072     64  swap    swap    swap
c   1433600   4108287   2674688   1306  unused          <Entire FreeBSD slice>
d         0   4108599   4108600   2006  unused          <Entire Disk>
e   1605632   2015231    409600    200  4.2BSD  newfs   /usr
f   2015232   2220031    204800    100  4.2BSD  newfs   /usr/local
g   2220032   4108287   1888256    922  4.2BSD  newfs   /usr/users
h        32    614399    614368    300  MSDOS
```

作为最后的额外操作，我们将 DOS 分区分配挂载到 /dos。像其他分区一样使用 (A)ssign，我们还注意到系统足够智能，能够看出它不是 FreeBSD 分区，我们不想对其执行 newfs，只想简单地挂载它：

```sh
h        32    614399    614368    300  MSDOS   mount   /dos
```

此时，我们的系统已全部设置完毕，准备就绪！

输入 `q` 返回主菜单，然后输入 `p`（即 (P)roceed）进入下一阶段安装。

系统给我们最后一次退出的机会，如果确定则按回车，否则按 选择“No”并按回车，在继续之前再次考虑设置。

安装的其余部分基本上是不言自明的。在文件系统初始创建和填充后，系统会提示你从硬盘重启。请照做并在要求时提供 cpio 软盘。

当初始的一阵欢迎和信息提示平息后，你将看到一个要求加载一个或多个发行版的屏幕。至少选择“bindist”以加载基本系统。如果从 CDROM 以外的介质加载，请按照安装过程中的相应路径操作。

如果从 CDROM 加载，选择 CDROM 作为介质类型并选择你的 CDROM 类型（SCSI 或 Mitsumi）。当系统询问安装子目录时，如果你使用的是 Walnut Creek CDROM 的 2.0 CD，只需按回车。你可以在 bindist 解压后选择额外的可选软件包加载，前提是你有足够的空间。不时使用“?diskfree”菜单选项来关注可用空间。完成后，系统会再问几个基本问题，然后就完成了！你的硬盘上已安装了 FreeBSD。

如果以后需要分区另一块硬盘或安装其他软件包，可以通过输入 **/sbin/sysinstall** 重新调用 sysinstall 程序。随后会出现同样熟悉的提示。

祝你好运！

```ini
Jordan Hubbard
for Walnut Creek CDROM
and the FreeBSD Project.
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://book.bsdcn.org/release/freebsd-2.0-release/2.0-install.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
