---
title: 第 3 章 安装 FreeBSD（适用于 9.x 及以后版本）
part: 部分 I. 起步
prev: books/handbook/install
next: books/handbook/basics
---

[[bsdinstall]]
= 安装 FreeBSD（适用于 9.x 及以后版本）
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:skip-front-matter:
:toc-title: 目录
:table-caption: 表
:figure-caption: 图
:example-caption: 例
:xrefstyle: basic
:relfileprefix: ../
:outfilesuffix:
:sectnumoffset: 3

ifeval::["{backend}" == "html5"]
:imagesdir: ../../../../images/books/handbook/bsdinstall/
endif::[]

ifeval::["{backend}" == "pdf"]
:imagesdir: ../../../../static/images/books/handbook/bsdinstall/
endif::[]

ifeval::["{backend}" == "epub3"]
:imagesdir: ../../../../static/images/books/handbook/bsdinstall/
endif::[]

include::shared/authors.adoc[]
include::shared/releases.adoc[]
include::shared/zh-cn/mailing-lists.adoc[]
include::shared/zh-cn/teams.adoc[]
include::shared/zh-cn/urls.adoc[]

toc::[]

[[bsdinstall-synopsis]]
== 概述

FreeBSD 提供了一个以文字为主、 便于使用的安装程序： 从 FreeBSD 9.0-RELEASE 开始是指 bsdinstall， 而在之前则是指 sysinstall。 本章介绍 bsdinstall 的使用， 有关 sysinstall 的使用参见 crossref:install[install,安装 FreeBSD]。

学习完本章之后， 您将知道：

* 如何创建 FreeBSD 安装介质。
* FreeBSD 如何划分目标硬盘。
* 如何启动 bsdinstall。
* 运行 bsdinstall 时需要回答的问题， 问题的具体含义， 以及应该如何回答。

阅读本章之前， 您应该：

* 查看将要安装的 FreeBSD 版本所附的硬件支持列表， 以确定您的硬件能够被支持。

[NOTE]
====
一般来说， 此安装说明是针对 i386(TM)（"`PC 兼容机`"） 架构的计算机； 同时也会尽可能地对其他架构下的安装予以说明。 虽然本文档经常更新， 但仍可能与所安装版本上附带的说明文档有些许出入， 因此建议您仅将其作为常规的安装指导。
====

[[bsdinstall-hardware]]
== 硬件需求

[[bsdinstall-hardware-minimal]]
=== 最低配置

安装 FreeBSD 所需的最低配置， 随版本及硬件架构而有所不同。

以下几节对这些信息进行了总结。 根据所选的安装方式， 可能需要使用 FreeBSD 支持的 CDROM 或网络适配器， 详见 <<bsdinstall-installation-media>>。

==== FreeBSD/i386

FreeBSD/i386 需要 486 或更快的处理器， 最小 64 MB 的内存， 以及至少 1.1 GB 的硬盘空间。

[NOTE]
====
通常情况下对于老旧的计算机而言， 安装更大的内存和腾出更多的硬盘空间， 会比使用更快的处理器对性能的提升更加明显。
====

==== FreeBSD/amd64

FreeBSD/amd64 支持两种处理器。 第一种是 AMD64 处理器， 包括 AMD Athlon(TM)64、 AMD Athlon(TM)64-FX、 AMD Opteron(TM) 以及更高级别的处理器。

能够使用 FreeBSD/amd64 的另一种处理器是采用了 Intel(R) EM64 架构的处理器。 这类处理器包括 Intel(R) Core(TM) 2 Duo、 Quad 和 Extreme 家族， 还包括 Intel(R) Xeon(TM) 3000、 5000 和 7000 系列， 以及 Intel(R) Core(TM) i3、 i5 和 i7。

对于使用了 nVidia nForce3 Pro-150 的机器， _必须_ 在 BIOS 设置中禁用 IO APIC， 如果没有这样的选项就只能转而禁用 ACPI。 因为 Pro-150 芯片组存在 bug，而目前还没有能够规避此问题的方法。

==== FreeBSD/powerpc Apple(R) Macintosh(R)

支持所有内建 USB 的 New World Apple(R) Macintosh(R) 系统， 同时也为配置多 CPU 的机器提供 SMP 支持。

注意 32 位的内核只能使用内存的前 2 GB，而 PowerMac G3 蓝白机上的 FireWire(R) 也不被支持。

==== FreeBSD/sparc64

有关 FreeBSD/sparc64 的系统支持， 详见 http://www.freebsd.org/platforms/sparc/[FreeBSD/sparc64] 项目。

FreeBSD/sparc64 需要独占一块磁盘。 目前还不支持与其他操作系统共享同一块磁盘。

[[bsdinstall-hardware-supported]]
=== 支持的硬件

FreeBSD 发行版所支持的硬件架构及设备会列在硬件兼容说明文件中， 此文件通常名为 [.filename]#HARDWARE.TXT#， 位于发行版介质的根目录下。 这些内容也可以在 FreeBSD 网站的 http://www.FreeBSD.org/releases/index.html[发行版信息] 页面上找到。

[[bsdinstall-pre]]
== 安装前的准备工作

=== 备份您的数据

在将 FreeBSD 安装至目标机器前， 应首先备份其上的重要数据并对备份进行测试。 FreeBSD 安装程序对硬盘做任何改动前都会进行询问， 而一旦操作开始就无法撤销。

[[bsdinstall-where]]
=== 决定将 FreeBSD 安装在何处

如果整个硬盘上仅安装 FreeBSD 一个操作系统， 那么请直接跳过此节； 但如果需要让 FreeBSD 与其他操作系统并存， 那么首先应当了解 FreeBSD 的硬盘布局结构。

[[bsdinstall-where-i386]]
==== FreeBSD/i386 与 FreeBSD/amd64 的硬盘布局

硬盘可以分割成多个区域， 这些区域称作 _partition（分区）_。

有两种硬盘分区方式。 传统的 _Master Boot Record_ (MBR， 主引导记录) 的分区表中可以定义四个 _primary partitions (主分区)_。 (由于历史原因， FreeBSD 中将主分区称作 _slice_。) 为了突破四个分区的限制， 可以将其中一个主分区创建为 _extended partition (扩展分区)_， 并在其中建立 _logical partitions (逻辑分区)_。 正如您看到的那样， 这种方法十分笨拙。

新式的 _GUID Partition Table (GUID 分区表)_ (GPT) 提供了更为简便的磁盘分区方法。 与传统的 MBR 分区相比， GPT 功能更为强大。 常见的 GPT 实现可以在一块磁盘上支持多达 128 个分区， 从而无需再采用类似逻辑分区这样迭床架屋的结构。

[WARNING]
====

一些旧式的操作系统， 如 Windows(R) XP 并不兼容 GPT 分区格式。 如果需要让 FreeBSD 与这样的操作系统共用一块硬盘， 就必须使用 MBR 分区了。
====

FreeBSD 的标准引导加载器需要使用一个主分区或 GPT 分区。 (有关 FreeBSD 引导过程的详情， 请参阅 crossref:boot[boot,FreeBSD 引导过程]。) 如果所有的主分区或 GPT 分区都已在使用中， 则必须为 FreeBSD 腾出一个来使用。

最小安装的 FreeBSD 只需 1 GB 磁盘空间。 不过， 这是 _非常_ 基本的安装， 而且也不会留下多少可用的空间。 比较实用的情况下， 如果不使用图形界面， 最小安装应分配至少 3 GB 的空间， 而使用图形界面， 则应分配至少 5 GB 的空间。 此外， 第三方应用程序可能还需要更多的空间。

有很多 http://en.wikipedia.org/wiki/List_of_disk_partitioning_software[免费或商业的分区调整工具] 可供使用。 例如， 以 Live CD 形式提供的 http://gparted.sourceforge.net/livecd.php[GParted Live] 中的 GParted 分区编辑器。 此外， GParted 也可以在许多其它 Linux Live CD 发行版中找到。

[WARNING]
====

磁盘分区程序有可能会破坏现有的数据。 在修改磁盘分区之前， 应先做一次完整的备份并校验其完整性。
====

调整 Microsoft(R) Vista 分区大小时可能会遇到一些问题。 如果要这样做， 请提前准备好 Vista 安装光盘。

.使用现有的分区
[example]
====
假设一台安装了 Windows(R) 的计算机上有一块 40 GB 的硬盘， 分成了两个 20 GB 的分区。 Windows(R) 将它们分别叫做 [.filename]#C:# 和 [.filename]#D:#。 [.filename]#C:# 分区包含了 10 GB 数据， 而 [.filename]#D:# 分区包含了 5 GB 数据。

将数据从 [.filename]#D:# 移动到 [.filename]#C:#， 就可将第二个分区腾出来供 FreeBSD 使用了。
====

.缩小现有的分区
[example]
====
假设一台安装了 Windows(R) 的计算机上有一块 40 GB 的硬盘， 一个大的分区使用了整块磁盘的全部空间。 Windows(R) 将这个 40 GB 分区叫做 [.filename]#C:#。 目前占用了 15 GB 空间。 现希望将 Windows(R) 分区减少到 20 GB， 并将余下的 20 GB 分给 FreeBSD 使用。

可以在以下两种方法中任选一种：

. 备份 Windows(R) 数据。 接着， 重新安装 Windows(R)， 在安装过程中建立一个 20 GB 的分区。
. 使用类似 GParted 这样的分区调整工具来缩小 Windows(R) 分区， 并腾出空间给 FreeBSD 使用。

====

包含不同操作系统的磁盘分区令您能够在任何时候使用其中的一种。 如果希望同时运行多种不同的操作系统， 可以使用在 crossref:virtualization[virtualization,虚拟化] 中介绍的方法。

[[bsdinstall-collect-network-information]]
=== 收集网络配置信息

某些 FreeBSD 安装方式需要通过网络连接下载相关文件。 若要连接至以太网 (或电视电缆/DSL 调制解调器上的以太网接口)， 则需要向安装程序提供必要的网络配置信息。

_DHCP_ 可以用来提供自动配置网络的信息。 假如没有可用的 DHCP， 则必须从局域网管理员， 或网络服务提供商那里获得必要的配置信息：

. IP 地址
. 子网掩码
. 默认网关的 IP 地址
. 本地网络域名
. DNS 服务器的 IP 地址

=== 检查 FreeBSD 发行勘误

尽管 FreeBSD 项目会确保每个发行版尽可能地稳定， 但 bug 总是在所难免。 极少数情况下， 这些 bug 甚至会影响安装。 一旦这些问题被发现并修正后， 就会列在 FreeBSD 网站的 link:https://www.FreeBSD.org/releases/9.0R/errata.html[FreeBSD 发行勘误] 中。 在安装之前， 应首先检查这些勘误， 以确保安装可以顺利进行。

有关所有发行版的信息及勘误， 可以在 link:https://www.FreeBSD.org/[FreeBSD 网站] 的 link:https://www.FreeBSD.org/releases/[发行版信息] 一节中找到。

[[bsdinstall-installation-media]]
=== 准备安装介质

FreeBSD 的安装介质包括 CD、 DVD 及 USB 记忆棒。 若要开始安装， 只需使用安装介质引导计算机即可； 注意不能通过在其他操作系统中执行安装程序这种方式进行安装。

标准的安装介质中包含了 FreeBSD 安装所需的全部文件， 除此之外， 还有一种 _bootonly_ 安装介质。 这种介质并不在其中直接包含安装所需的全部文件， 而是在需要时通过网络进行下载。 因此， 与标准的安装介质相比， bootonly安装介质体积更小。

FreeBSD 安装介质的副本可以从 link:https://www.FreeBSD.org/where.html#download[FreeBSD 网站] 获取。

[TIP]
====

如果您已经有 FreeBSD 的安装 CD、 DVD 或 USB 记忆棒， 则可以跳过此节。
====

FreeBSD 的安装 CD 或 DVD 映像均为可引导的 ISO 文件。 只需要 CD 或 DVD 其中的一种即可完成安装操作。 任选一种在当前操作系统中刻录成可引导光盘即可。

若要创建可引导的记忆棒， 请执行以下操作：

[.procedure]
====

. 获取记忆棒映像
+ 
FreeBSD 9.0-RELEASE 和更高版本的记忆棒映像文件可以在 `ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/arch/arch/ISO-IMAGES/version/FreeBSD-version-RELEASE-arch-memstick.img` 中的 [.filename]#ISO-IMAGES/# 目录中找到， 其中， _arch_ 是指要安装的架构， 而 _version_ 则是指要安装的版本号。 举例来说， FreeBSD/i386 9.0-RELEASE 的记忆棒映像位于 link:ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-i386-memstick.img[ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/i386/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-i386-memstick.img] 找到。
+
[TIP]
======

在 FreeBSD 8._X_ 以及更早的版本中， 映像文件的下载位置略有不同。 关于 FreeBSD 8._X_ 和更早版本的安装操作请参阅 crossref:install[install,安装 FreeBSD]。
======
+ 
记忆棒映像的扩展名为 [.filename]#.img#。 在 [.filename]#ISO-IMAGES/# 目录中提供了多个不同的映像， 可以根据需要的 FreeBSD 版本， 有时也包括安装对象的硬件状况进行选择。
+
[IMPORTANT]
======
执行以下步骤前， 应 _备份_ USB 记忆棒上的数据， 因为之后的操作将 _擦除_ 这些数据。
======
+
. 将映像文件写入记忆棒
+
[.procedure]
======
*Procedure: 在 FreeBSD 中操作*

[WARNING]
****

在下面的例子中， 目标记忆棒对应的设备节点是 [.filename]#/dev/da0#。 操作前请仔细确认目标设备是否正确， 以免损坏现有的数据。
****
.. 使用 man:dd[1] 写入映像
+ 
扩展名为 [.filename]#.img# 的映像文件 _不是_ 一种普通的文件。 它是对记忆棒上完整内容所做的 _映像_， 因此 _不能_ 只是像普通文件一样简单的复制， 而应使用 man:dd[1] 将其直接写入目标设备：
+
[source,shell]
....
# dd if=FreeBSD-9.0-RELEASE-i386-memstick.img of=/dev/da0 bs=64k
....
======
+
[.procedure]
======
*Procedure: 在 Windows(R) 中操作*
[WARNING]
****

操作前请确认是否为目标设备选择了正确的驱动器号， 否则可能会覆盖并损坏您的现有数据。
****
.. 获取 Image Writer for Windows(R)
+ 
Image Writer for Windows(R) 是一种能将映像正确写入到记忆棒中的免费应用程序。 从 https://launchpad.net/win32-image-writer/[https://launchpad.net/win32-image-writer/] 下载并将其提取至任意文件夹后即可开始使用。
.. 使用 Image Writer 写入映像
+ 
双击图标 Win32DiskImager 运行程序后， 确定 `Device` 下面显示的驱动器号所对应的是记忆棒。 点击文件夹图标以选择需要写入的映像文件， 然后点击 btn:[Save] 接受选择。 在确认所有操作无误且没有其他窗口访问记忆棒后， 点击 btn:[Write] 将映像文件写入记忆棒。
======
====

[NOTE]
====
系统不再支持从软盘进行安装了。
====

您现在可以开始安装 FreeBSD 了。

[[bsdinstall-start]]
== 开始安装

[IMPORTANT]
====
默认情况下， 在您看到下面这条信息之前， 安装程序不会对硬盘数据做任何修改：

....
Your changes will now be written to disk.  If you
have chosen to overwrite existing data, it will
be PERMANENTLY ERASED. Are you sure you want to
commit your changes?
....

在此之前均可安全退出， 抑或您担心进行了某些错误的配置， 也可以直接关闭电源。
====

[[bsdinstall-starting]]
=== 开机启动

[[bsdinstall-starting-i386]]
==== 引导 i386(TM) 及 amd64 系统

[.procedure]
====
. 若要使用 <<bsdinstall-installation-media>> 所述的 USB 记忆棒引导， 则应在开机前将其插入计算机。
+ 
若要使用 CDROM 引导， 则应在开机后立刻将其放入计算机。
. 根据所使用的安装介质， 选择从 CDROM 或 USB启动。 在 BIOS 设置中， 可以选择特定的引导设备。 大多数系统还可以在启动时选择引导设备， 通常需要按 kbd:[F10]、 kbd:[F11]、 kbd:[F12] 或 kbd:[Escape] 键。
. 如果您的计算机正常启动并加载了现有的操作系统， 那么请检查：
.. USB 记忆棒插入过晚或 CDROM 放入过晚， 请将其拔下或取出， 然后重新启动计算机并再次尝试。
.. BIOS 设置错误， 请重新设置。
.. BIOS 不支持从当前介质启动； 可以使用 http://www.plop.at/en/bootmanager.html[Plop Boot Manager]， 它能够让老式计算机支持 CD 或 USB 启动。

. FreeBSD 将开始启动。 如果使用的是CDROM， 则会看到类似这样的显示（版本信息可以忽略）：
+
[source,shell]
....
Booting from CD-ROM...
645MB medium detected
CD Loader 1.2

Building the boot loader arguments
Looking up /BOOT/LOADER... Found
Relocating the loader and the BTX
Starting the BTX loader

BTX loader 1.00 BTX version is 1.02
Consoles: internal video/keyboard
BIOS CD is cd0
BIOS drive C: is disk0
BIOS drive D: is disk1
BIOS 636kB/261056kB available memory

FreeBSD/i386 bootstrap loader, Revision 1.1

Loading /boot/defaults/loader.conf
/boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40 syms=[0x4+0x6cac0+0x4+0x88e9d]
\
....
+
. FreeBSD 引导加载器会显示：
+
[[bsdinstall-boot-loader-menu]]
.FreeBSD 引导加载器菜单
image::bsdinstall-boot-loader-menu.png[]
+ 
您可以等待十秒或按 kbd:[Enter] 键。
====

==== 引导 Macintosh(R) PowerPC(R)

在大多数机器上， 开机时按住 kbd:[C] 键可以从 CD 启动。 除此之外， 按住 kbd:[Command+Option+O+F]， 在非 Apple(R) 键盘上是 kbd:[Windows+Alt+O+F]， 然后在出现的提示符 `0 >` 下输入

[source,shell]
....
 boot cd:,\ppc\loader cd:0
....

对于不带键盘的 Xserves 机器，请参考 http://support.apple.com/kb/TA26930[Apple(R) 支持网站] 以了解如何引导至 Open Firmware。

==== 引导 sparc64

多数 sparc64 系统均设置成了硬盘自启动。 若要安装 FreeBSD， 则应从网络或 CDROM 启动， 这就需要首先进入  PROM（OpenFirmware）。

重启系统后等待引导信息出现， 虽然其具体内容取决于机器型号， 但应该会类似：

[source,shell]
....
Sun Blade 100 (UltraSPARC-IIe), Keyboard Present
Copyright 1998-2001 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.2, 128 MB memory installed, Serial #51090132.
Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.
....

如果此时系统已经开始从硬盘启动， 那么请按下 kbd:[L1+A] 或 kbd:[Stop+A] 或在串口控制台发送 `BREAK`（在 man:tip[1] 或 man:cu[1] 中是 `~#`）以进入 PROM 提示符， 它应该如下所示：

[source,shell]
....
ok        <.>
ok {0} <.>
....

<.> 这是在单 CPU 系统上的提示符。
<.> 这是在 SMP 系统上的提示符， 其中的数字表示可用的 CPU 个数。

现在， 放入 CDROM 并在 PROM 提示符后输入 `boot cdrom`。

[[bsdinstall-view-probe]]
=== 查看设备探测结果

为了便于查阅， 屏幕上所显示的最后几百行字符会始终保存在缓冲区里。

若要浏览缓冲区， 可以按下 kbd:[Scroll Lock] 键来开启屏幕的滚动功能； 开启后即可使用方向键、 kbd:[PageUp] 键或 kbd:[PageDown] 键进行翻阅； 再次按下 kbd:[Scroll Lock] 键将关闭滚动功能。

浏览时将看到内核进行了设备探测， 其结果类似 <<bsdinstall-dev-probe>> 中的文本， 但具体内容会因计算机中所包含的设备而有所不同。

[[bsdinstall-dev-probe]]
.典型的设备探测结果
[source,shell]
....
Copyright (c) 1992-2011 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 9.0-RELEASE #0 r225473M: Sun Sep 11 16:07:30 BST 2011
    root@psi:/usr/obj/usr/src/sys/GENERIC amd64
CPU: Intel(R) Core(TM)2 Duo CPU     T9400  @ 2.53GHz (2527.05-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x10676  Family = 6  Model = 17  Stepping = 6
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0x8e3fd<SSE3,DTES64,MON,DS_CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,SSE4.1>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
  TSC: P-state invariant, performance statistics
real memory  = 3221225472 (3072 MB)
avail memory = 2926649344 (2791 MB)
Event timer "LAPIC" quality 400
ACPI APIC Table: <TOSHIB A0064   >
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s)
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1
ioapic0: Changing APIC ID to 1
ioapic0 <Version 2.0> irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0: <TOSHIB A0064> on motherboard
acpi0: Power Button (fixed)
acpi0: reservation of 0, a0000 (3) failed
acpi0: reservation of 100000, b6690000 (3) failed
Timecounter "ACPI-safe" frequency 3579545 Hz quality 850
acpi_timer0: <24-bit timer at 3.579545MHz> port 0xd808-0xd80b on acpi0
cpu0: <ACPI CPU> on acpi0
ACPI Warning: Incorrect checksum in table [ASF!] - 0xFE, should be 0x9A (20110527/tbutils-282)
cpu1: <ACPI CPU> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0xcff8-0xcfff mem 0xff400000-0xff7fffff,0xe0000000-0xefffffff irq 16 at device 2.0 on pci0
agp0: <Intel GM45 SVGA controller> on vgapci0
agp0: aperture size is 256M, detected 131068k stolen memory
vgapci1: <VGA-compatible display> mem 0xffc00000-0xffcfffff at device 2.1 on pci0
pci0: <simple comms> at device 3.0 (no driver attached)
em0: <Intel(R) PRO/1000 Network Connection 7.2.3> port 0xcf80-0xcf9f mem 0xff9c0000-0xff9dffff,0xff9fe000-0xff9fefff irq 20 at device 25.0 on pci0
em0: Using an MSI interrupt
em0: Ethernet address: 00:1c:7e:6a:ca:b0
uhci0: <Intel 82801I (ICH9) USB controller> port 0xcf60-0xcf7f irq 16 at device 26.0 on pci0
usbus0: <Intel 82801I (ICH9) USB controller> on uhci0
uhci1: <Intel 82801I (ICH9) USB controller> port 0xcf40-0xcf5f irq 21 at device 26.1 on pci0
usbus1: <Intel 82801I (ICH9) USB controller> on uhci1
uhci2: <Intel 82801I (ICH9) USB controller> port 0xcf20-0xcf3f irq 19 at device 26.2 on pci0
usbus2: <Intel 82801I (ICH9) USB controller> on uhci2
ehci0: <Intel 82801I (ICH9) USB 2.0 controller> mem 0xff9ff800-0xff9ffbff irq 19 at device 26.7 on pci0
usbus3: EHCI version 1.0
usbus3: <Intel 82801I (ICH9) USB 2.0 controller> on ehci0
hdac0: <Intel 82801I High Definition Audio Controller> mem 0xff9f8000-0xff9fbfff irq 22 at device 27.0 on pci0
pcib1: <ACPI PCI-PCI bridge> irq 17 at device 28.0 on pci0
pci1: <ACPI PCI bus> on pcib1
iwn0: <Intel(R) WiFi Link 5100> mem 0xff8fe000-0xff8fffff irq 16 at device 0.0 on pci1
pcib2: <ACPI PCI-PCI bridge> irq 16 at device 28.1 on pci0
pci2: <ACPI PCI bus> on pcib2
pcib3: <ACPI PCI-PCI bridge> irq 18 at device 28.2 on pci0
pci4: <ACPI PCI bus> on pcib3
pcib4: <ACPI PCI-PCI bridge> at device 30.0 on pci0
pci5: <ACPI PCI bus> on pcib4
cbb0: <RF5C476 PCI-CardBus Bridge> at device 11.0 on pci5
cardbus0: <CardBus bus> on cbb0
pccard0: <16-bit PCCard bus> on cbb0
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
ahci0: <Intel ICH9M AHCI SATA controller> port 0x8f58-0x8f5f,0x8f54-0x8f57,0x8f48-0x8f4f,0x8f44-0x8f47,0x8f20-0x8f3f mem 0xff9fd800-0xff9fdfff irq 19 at device 31.2 on pci0
ahci0: AHCI v1.20 with 4 3Gbps ports, Port Multiplier not supported
ahcich0: <AHCI channel> at channel 0 on ahci0
ahcich1: <AHCI channel> at channel 1 on ahci0
ahcich2: <AHCI channel> at channel 4 on ahci0
acpi_lid0: <Control Method Lid Switch> on acpi0
battery0: <ACPI Control Method Battery> on acpi0
acpi_button0: <Power Button> on acpi0
acpi_acad0: <AC Adapter> on acpi0
acpi_toshiba0: <Toshiba HCI Extras> on acpi0
acpi_tz0: <Thermal Zone> on acpi0
attimer0: <AT timer> port 0x40-0x43 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model GlidePoint, device ID 0
atrtc0: <AT realtime clock> port 0x70-0x71 irq 8 on acpi0
Event timer "RTC" frequency 32768 Hz quality 0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 950
Event timer "HPET" frequency 14318180 Hz quality 450
Event timer "HPET1" frequency 14318180 Hz quality 440
Event timer "HPET2" frequency 14318180 Hz quality 440
Event timer "HPET3" frequency 14318180 Hz quality 440
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
ppc0: cannot reserve I/O port range
est0: <Enhanced SpeedStep Frequency Control> on cpu0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
est1: <Enhanced SpeedStep Frequency Control> on cpu1
p4tcc1: <CPU Frequency Thermal Control> on cpu1
Timecounters tick every 1.000 msec
hdac0: HDA Codec #0: Realtek ALC268
hdac0: HDA Codec #1: Lucent/Agere Systems (Unknown)
pcm0: <HDA Realtek ALC268 PCM #0 Analog> at cad 0 nid 1 on hdac0
pcm1: <HDA Realtek ALC268 PCM #1 Analog> at cad 0 nid 1 on hdac0
usbus0: 12Mbps Full Speed USB v1.0
usbus1: 12Mbps Full Speed USB v1.0
usbus2: 12Mbps Full Speed USB v1.0
usbus3: 480Mbps High Speed USB v2.0
ugen0.1: <Intel> at usbus0
uhub0: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
ugen1.1: <Intel> at usbus1
uhub1: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1
ugen2.1: <Intel> at usbus2
uhub2: <Intel UHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus2
ugen3.1: <Intel> at usbus3
uhub3: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus3
uhub0: 2 ports with 2 removable, self powered
uhub1: 2 ports with 2 removable, self powered
uhub2: 2 ports with 2 removable, self powered
uhub3: 6 ports with 6 removable, self powered
ugen2.2: <vendor 0x0b97> at usbus2
uhub8: <vendor 0x0b97 product 0x7761, class 9/0, rev 1.10/1.10, addr 2> on usbus2
ugen1.2: <Microsoft> at usbus1
ada0 at ahcich0 bus 0 scbus1 target 0 lun 0
ada0: <Hitachi HTS543225L9SA00 FBEOC43C> ATA-8 SATA 1.x device
ada0: 150.000MB/s transfers (SATA 1.x, UDMA6, PIO 8192bytes)
ada0: Command Queueing enabled
ada0: 238475MB (488397168 512 byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad4
ums0: <Microsoft Microsoft 3-Button Mouse with IntelliEyeTM, class 0/0, rev 1.10/3.00, addr 2> on usbus1
SMP: AP CPU #1 Launched!
cd0 at ahcich1 bus 0 scbus2 target 0 lun 0
cd0: <TEAC DV-W28S-RT 7.0C> Removable CD-ROM SCSI-0 device
cd0: 150.000MB/s transfers (SATA 1.x, ums0: 3 buttons and [XYZ] coordinates ID=0
UDMA2, ATAPI 12bytes, PIO 8192bytes)
cd0: cd present [1 x 2048 byte records]
ugen0.2: <Microsoft> at usbus0
ukbd0: <Microsoft Natural Ergonomic Keyboard 4000, class 0/0, rev 2.00/1.73, addr 2> on usbus0
kbd2 at ukbd0
uhid0: <Microsoft Natural Ergonomic Keyboard 4000, class 0/0, rev 2.00/1.73, addr 2> on usbus0
Trying to mount root from cd9660:/dev/iso9660/FREEBSD_INSTALL [ro]...
....

请仔细检查设备探测结果， 以确定 FreeBSD 找到了所有您希望使用的设备。 没有找到的设备并不会在这里列出， 因为默认的 [.filename]#GENERIC# 内核中不包含它们； 可以通过 crossref:kernelconfig[kernelconfig-modules,内核模块] 对这些设备提供支持。

设备探测完成后， 您将看到 <<bsdinstall-choose-mode>>， 表明安装介质共有三种用途： 安装 FreeBSD 、 作为"`Live CD`"或引导至 FreeBSD 的命令行界面。 请使用方向键选择一项后按 kbd:[Enter] 键确认。

[[bsdinstall-choose-mode]]
.选择安装介质的使用方式
image::bsdinstall-choose-mode.png[]

在这里， 请选择 btn:[Install] 以运行安装程序。

[[using-bsdinstall]]
== 介绍 bsdinstall

bsdinstall 是一个基于文本的 FreeBSD 安装程序， 作者是 {nwhitehorn}， 于 2011 年被 FreeBSD 9.0 采用。

[NOTE]
====
{kmoore} 为 http://pcbsd.org[PC-BSD] 编写的 pc-sysinstall 也可以用于 http://wiki.pcbsd.org/index.php/Use_PC-BSD_Installer_to_Install_FreeBSD[安装 FreeBSD]。 虽然有时会同 bsdinstall 混淆， 但实际两者并不相关。
====

bsdinstall 菜单系统的主要控制键包括方向键、 kbd:[Enter] 键、 kbd:[Tab] 键、 kbd:[Space] 键等。

[[bsdinstall-keymap]]
=== 选择键盘映射

根据当前正在使用的系统控制台， bsdinstall 可能会首先提示选择一种非默认的键盘布局。

[[bsdinstall-keymap-select-default]]
.键盘映射选择
image::bsdinstall-keymap-select-default.png[]

选择了 btn:[YES] 后， 将显示下面的键盘选择画面； 否则将不显示此画面而直接使用默认键盘映射。

[[bsdinstall-config-keymap]]
.键盘选择菜单
image::bsdinstall-config-keymap.png[]

使用上/下方向键选择最适合当前系统的键盘映射后， 按 kbd:[Enter] 键确认。

[NOTE]
====
按 kbd:[Esc] 键以使用默认的键盘映射。 如果不清楚该选择哪一项， 推荐 [.guimenuitem]#United States of America ISO-8859-1#。
====

[[bsdinstall-hostname]]
=== 设置主机名

下面， bsdinstall 将提示为新安装的系统设置主机名。

[[bsdinstall-config-hostname]]
.设置主机名
image::bsdinstall-config-hostname.png[]

应该输入完整的主机名， 例如 `machine3.example.com`。

[[bsdinstall-components]]
=== 选择要安装的组件

下面， bsdinstall 将提示选择要安装的组件。

[[bsdinstall-config-components]]
.选择要安装的组件
image::bsdinstall-config-components.png[]

安装哪些组件很大程度取决于系统用途及可用磁盘空间。 注意， 任何情况下都会安装 FreeBSD 内核及用户空间（统称"基系统"）。

根据安装类型的不同， 某些组件可能不会显示。

.可选组件
* `doc` - 附加文档， 主要是与项目历史相关的内容。 稍后还可以安装 FreeBSD 文档计划所提供的文档。
* `games` - 一些传统的 BSD 游戏， 包括 fortune 与 rot13 等。
* `lib32` - 兼容库文件， 用于在 64 位版本的 FreeBSD 上运行 32 位程序。
* `ports` - FreeBSD 的 ports 集。
+ 
ports 集提供了一种简单而方便的途径来安装软件。 在 ports 集中， 并不包含编译软件所需的源代码， 取而代之的是一组能够自动下载、 编译并安装第三方软件包的文件。 crossref:ports[ports,安装应用程序. Packages 和 Ports] 会讲述如何使用 ports 集。
+
[WARNING]
====

选择此项时， 必须保证有足够的硬盘空间， 注意安装程序并不会对此进行检查。 FreeBSD 9.0 的 ports 集约需 {ports-size} 的磁盘空间； 您也可以为稍后的版本预留更大的空间。
====

* `src` - 系统源代码。
+ 
FreeBSD 提供了与内核及用户空间有关的完整源代码。 大部分程序并不需要这些源代码， 它们主要用于联编特定软件（例如设备驱动或内核模块）或者 FreeBSD 本身的开发。
+ 
完整的源代码树需要 1 GB 的磁盘空间， 而重新编译整个 FreeBSD 系统则额外还需要 5 GB 的空间。

[[bsdinstall-netinstall]]
== 通过网络安装

_bootonly_ 安装介质中并不会包含所有的安装文件。 如果使用这种介质进行安装， 那么需要的文件就必须通过网络下载。

[[bsdinstall-netinstall-notify]]
.通过网络安装
image::bsdinstall-netinstall-files.png[]

根据 <<bsdinstall-config-network-dev>> 配置了网络连接后， 即可开始选择像站点。 镜像站点上缓存有 FreeBSD 的安装文件， 选择一个更近的镜像站点有助于更快的获取这些文件， 从而减少安装时间。

[[bsdinstall-netinstall-mirror]]
.选择一个镜像站点
image::bsdinstall-netinstall-mirrorselect.png[]

连接至所选镜像站点并查询到所需文件后， 安装将继续进行。

[[bsdinstall-partitioning]]
== 分配磁盘空间

FreeBSD 提供了三种方式来分配磁盘空间： _Guided（向导式）_ 分区能够自动设置磁盘分区； 而 _Manual（手动式）_ 分区则允许高级用户创建自定义分区； 还可以进入 shell 中直接使用类似 man:gpart[8]、 man:fdisk[8] 与 man:bsdlabel[8] 这样的命令行程序。

[[bsdinstall-part-guided-manual]]
.选择分配磁盘空间的方式
image::bsdinstall-part-guided-manual.png[]

[[bsdinstall-part-guided]]
=== 向导式分区

如果机器上配有多块磁盘， 则需要为 FreeBSD 的安装指定目标磁盘。

[[bsdinstall-part-guided-disk]]
.从多块磁盘中进行选择
image::bsdinstall-part-guided-disk.png[]

可以将整个磁盘都分配给 FreeBSD， 也可以只分配其中的一部分。 若选择的是 btn:[Entire Disk]， 则创建分区布局时会直接使用整个磁盘； 若选择的是 btn:[Partition]， 则创建分区时仅会使用磁盘上的空闲空间。

[[bsdinstall-part-entire-part]]
.选择如何创建分区布局
image::bsdinstall-part-entire-part.png[]

请仔细检查分区布局的创建结果。 如果发现有错误之处， 可以选择 btn:[Revert] 来还原之前的分区； 此外， 也可以选择 btn:[Auto] 重新让 FreeBSD 自动创建分区。 也可以手动创建、 修改或删除分区。 正确创建了分区之后， 请选择 btn:[Finish] 以继续安装。

[[bsdinstall-part-review]]
.检查已创建分区
image::bsdinstall-part-review.png[]

[[bsdinstall-part-manual]]
=== 手动式分区

手动式分区将直接使用分区编辑器进行操作。

[[bsdinstall-part-manual-create]]
.手动创建分区
image::bsdinstall-part-manual-create.png[]

高亮目标驱动器（本例中为 [.filename]#ada0#）并选择 btn:[Create] 以显示 _partitioning scheme（分区方案）_ 菜单。

[[bsdinstall-part-manual-partscheme]]
.手动创建分区
image::bsdinstall-part-manual-partscheme.png[]

对于 PC 兼容机来说， GPT 分区通常是最合适的选择， 而某些不兼容 GPT 的老式操作系统则可能需要使用 MBR 分区。 除此之外的分区方案仅用于一些不常见的或其他的老式操作系统。

.分区方案
[cols="1,1", frame="none", options="header"]
|===
<| 缩写
<| 说明

|APM
|http://support.apple.com/kb/TA21692[Apple Partition Map， 用于 PowerPC(R) Macintosh(R)。]

|BSD
|不带 MBR 的 BSD Label， 有时也称作危险的专用模式， "`dangerously dedicated mode`"。 请参阅 man:bsdlabel[8]。

|GPT
|http://en.wikipedia.org/wiki/GUID_Partition_Table[GUID 分区表。]

|MBR
|http://en.wikipedia.org/wiki/Master_boot_record[Master Boot Record， 主引导记录。]

|PC98
|http://en.wikipedia.org/wiki/Pc9801[MBR 变体， 用于 NEC PC-98 计算机。]

|VTOC8
|Volume Table Of Contents， 用于 Sun SPARC64 和 UltraSPARC 计算机。
|===

确定了分区方案并创建完成后， 可再次选择 btn:[Create] 以创建新的分区。

[[bsdinstall-part-manual-addpart]]
.手动创建分区
image::bsdinstall-part-manual-addpart.png[]

FreeBSD 的标准 GPT 安装至少会使用三个分区：

.标准 FreeBSD GPT 分区
* `freebsd-boot` - FreeBSD 引导分区， 它必须处于首位。
* `freebsd-ufs` - FreeBSD 的 UFS 文件系统。
* `freebsd-swap` - FreeBSD 的交换空间。

也可以同时创建多个文件系统分区。 有些用户会喜欢传统的分区格局， 为 [.filename]#/#、 [.filename]#/var#、 [.filename]#/tmp#， 以及 [.filename]#/usr# 文件系统分别创建分区。 请参阅 <<bsdinstall-part-manual-splitfs>> 中的例子。

可用的 GPT 分区类型可以在 man:gpart[8] 中找到。

在指定尺寸时， 可以使用常用的缩写： _K_ 表示 kilobytes、 _M_ 表示 megabytes， 而 _G_ 表示 gigabytes。

[TIP]
====

正确地对齐磁盘扇区能够获取最佳性能。 无论磁盘的每个扇区为 512 字节还是 4K 字节， 将分区大小设置为 4K 字节的倍数都能够确保对齐。 实际操作中， 只要使分区的大小等于 1M 或 1G 的倍数即可。 唯一的例外是 _freebsd-boot_ 分区， 目前由于引导代码所限， 此分区不能大于 512K。
====

若分区包含文件系统，则需要在 Mountpoint 项中为其输入挂载点； 若仅创建了一个 UFS 分区， 则应在此项中输入 [.filename]#/#。

最后需要输入的是 _Label（标签）_ 项， 用于命名所创建的分区。 如果将驱动器连接至不同的控制器或端口， 其名称或编号会发生改变， 但对应的标签并不会变化。 在类似 [.filename]#/etc/fstab# 这样的文件中， 通过标签引用分区比通过驱动器名加分区编号引用更加灵活， 因为这样引用使系统对硬件的改变更加宽容。 GPT 的标签会在磁盘连接后出现在 [.filename]#/dev/gpt/# 中； 而其他分区方案中的标签也有不同的功能， 它们会出现在 [.filename]#/dev/# 中的不同目录里。

[TIP]
====

为避免冲突， 请给每个文件系统指定独一无二的标签。 与计算机的名称、 用途或位置相关的字符均可添加至标签。 例如， 实验室计算机的 UFS 根目录可以命名为 "`labroot`" 或 "`rootfs-lab`"。
====

[[bsdinstall-part-manual-splitfs]]
.创建传统的分割式文件系统分区
[example]
====
在传统的分区布局中， 目录 [.filename]#/#、 [.filename]#/var#、 [.filename]#/tmp# 及 [.filename]#/user# 都是位于自己分区上的独立文件系统； 在 GPT 分区方案中也可以创建这样的分区布局。 本例中所使用的是一块 20G 的硬盘， 如果使用更大的硬盘， 建议创建更大的交换或 [.filename]#/var# 分区。 标签的前缀 `ex` 是指 "`example`"， 具体操作时您可以使用任何独一无二的字符。

[.informaltable]
[cols="1,1,1,1", frame="none", options="header"]
|===
| 分区类型
| 大小
| 挂载点
| 标签

|`freebsd-boot`
|`512K`
|
|

|`freebsd-ufs`
|`2G`
|[.filename]#/#
|`exrootfs`

|`freebsd-swap`
|`4G`
|
|`exswap`

|`freebsd-ufs`
|`2G`
|[.filename]#/var#
|`exvarfs`

|`freebsd-ufs`
|`1G`
|[.filename]#/tmp#
|`extmpfs`

|`freebsd-ufs`
|接受默认值（剩余空间）
|[.filename]#/usr#
|`exusrfs`
|===
====

创建了自定义分区后， 请选择 btn:[Finish] 以继续安装。

[[bsdinstall-final-warning]]
== 安装确认

下面， 安装程序将真正对硬盘进行写操作， 这也是取消安装的最后机会。

[[bsdinstall-final-confirmation]]
.最后确认
image::bsdinstall-final-confirmation.png[]

选择 btn:[Commit] 并按 kbd:[Enter] 键确认安装； 选择 btn:[Back] 以返回分区编辑器进行修改； 选择 btn:[Revert & Exit ]以退出安装而不修改任何硬盘数据。

根据所选组件、 安装介质和机器速度的不同， 需要的时间会有所变化。 安装时会有一系列信息显示目前的进度。

首先， 安装程序会将分区布局写入磁盘， 并执行 `newfs` 初始化分区。

如果是通过网络安装， bsdinstall 将根据之前所选的组件下载对应的文件。

[[bsdinstall-distfile-fetching]]
.获取组件对应的文件
image::bsdinstall-distfile-fetching.png[]

接下来， 会验证这些文件的完整性， 以防止其在下载时损坏或从安装介质中误读。

[[bsdinstall-distfile-verify]]
.验证组件对应的文件
image::bsdinstall-distfile-verifying.png[]

最后， 验证过的组件文件会被提取至磁盘。

[[bsdinstall-distfile-extract]]
.提取组件对应的文件
image::bsdinstall-distfile-extracting.png[]

文件提取全部完成后， bsdinstall 将开始安装后的配置任务（参见 <<bsdinstall-post>>）。

[[bsdinstall-post]]
== 安装后的配置

成功安装 FreeBSD 后， 还需要依次进行一些配置。 在重启进入新系统前， 这些配置始终可以通过最终的配置菜单进行修改。

[[bsdinstall-post-root]]
=== 设置 `root` 密码

必须设置 `root` 密码。 请注意输入密码时， 被输入的字符并不会在屏幕上显示， 因此为防止输入错误， 必须再次输入相同的字符。

[[bsdinstall-post-set-root-passwd]]
.设置 `root` 密码
image::bsdinstall-post-root-passwd.png[]

成功设置密码后， 安装将继续进行。

[[bsdinstall-config-network-dev]]
=== 配置网络接口

[NOTE]
====
如果已经在 _bootonly_ 安装时配置过网络接口， 则可略过此步。
====

这里将显示一个网络接口列表， 其中的接口都是在当前计算机上侦测到的， 请选择一个进行配置。

[[bsdinstall-configure-net-interface]]
.选择一个网络接口
image::bsdinstall-configure-network-interface.png[]

[[bsdinstall-configure-net-wireless]]
==== 配置无线网络接口

如果选择了无线网络接口， 则必须输入相关的无线网络验证及安全参数， 以允许其连接至特定的网络。

无线网络是通过 Service Set Identifier（服务集标识符， 简写为  SSID）来表示的， 它是唯一表示无线网络的短字符串。

大多数无线网络都会以加密方式传输数据， 藉此保护信息不被未经授权者查看。 强烈建议采用 WPA2 加密。 旧式的加密类型， 如 WEP， 几乎没有任何安全性可言。

若要连接至一个无线网络， 首先需要扫描无线接入点。

[[bsdinstall-wireless-scan]]
.扫描无线接入点
image::bsdinstall-configure-wireless-scan.png[]

扫描完成后， 会列出所有发现的 SSID 以及它们支持的加密类型说明。 如果需要连接的 SSID 没有列出， 请选择 btn:[Rescan] 再次扫描。 如果还没有出现， 请检查天线， 或将计算机移至更靠近接入点的地方。 在做过这些改善措施之后， 再重新扫描。

[[bsdinstall-wireless-accesspoints]]
.选择一个无线网络
image::bsdinstall-configure-wireless-accesspoints.png[]

选择所要连接的无线网络， 即可输入连接所需的加密信息。 对于 WPA2， 只需输入一个密码 （也叫预共享密钥，( 简称 PSK）。 为安全起见， 在输入框中键入的字符将显示为星号。

[[bsdinstall-wireless-wpa2]]
.WPA2 设置
image::bsdinstall-configure-wireless-wpa2setup.png[]

在选择了无线网络并输入了连接所需的信息后， 网络配置将继续进行。

[[bsdinstall-ipv4]]
==== 配置 IPv4 网络

选择是否使用 IPv4 网络。 这是最常见的网络连接类型。

[[bsdinstall-configure-net-ipv4]]
.选择 IPv4 网络
image::bsdinstall-configure-network-interface-ipv4.png[]

有两种配置 IPv4 的方式。 _DHCP_ 会自动地为网络接口进行正确的配置， 通常情况下， 这是首选的方式。 而 _Static_ （静态） 方式则需要手工输入网络的配置信息。

[NOTE]
====
不要随意输入网络的配置信息， 因为这样的话网络就无法正常工作。 请向网络管理员或服务提供商那里取得 <<bsdinstall-collect-network-information>> 所列出的配置信息。
====

[[bsdinstall-net-ipv4-dhcp-config]]
===== 使用 DHCP 方式

若存在可用的 DHCP 服务器， 请选择 btn:[Yes] 以自动配置网络接口。

[[bsdinstall-net-ipv4-dhcp]]
.选择 DHCP 配置 IPv4
image::bsdinstall-configure-network-interface-ipv4-dhcp.png[]

[[bsdinstall-net-ipv4-static-config]]
===== 使用静态配置方式

网络接口的静态配置需要输入相关的 IPv4 配置信息。

[[bsdinstall-net-ipv4-static]]
.静态配置 IPv4
image::bsdinstall-configure-network-interface-ipv4-static.png[]

* `IP Address` - IP 地址， 即给当前计算机手动分配的 IPv4 地址。 此地址必须是唯一的， 并且在本地网络上还没有被其他设备使用。
* `Subnet Mask` - 子网掩码， 用于本地网络。 通常是 `255.255.255.0`。
* `Default Router`（默认路由） - 网络上默认路由的 IP 地址。 通常， 这是将本地网络连接至 Internet 的路由器或其他网络设备的地址。 也称作 _default gateway （默认网关）_。

[[bsdinstall-ipv6]]
==== 配置 IPv6 网络

IPv6 是一种新的网络配置方式。 如果您有可用的 IPv6 连接， 并需要使用它， 选择 btn:[Yes] 来开始配置。

[[bsdinstall-net-ipv6]]
.选择 IPv6 网络
image::bsdinstall-configure-network-interface-ipv6.png[]

IPv6 也有两种配置方式。 _SLAAC_， 或 _StateLess Address AutoConfiguration_ （无状态地址自动配置） 方式能够自动配置正确的网络接口， 而 _Static（静态）_ 配置方式则需要手动输入网络信息。

[[bsdinstall-net-ipv6-slaac-config]]
===== 使用 Stateless Address Autoconfiguration 方式

SLAAC 允许 IPv6 组件从本地路由器请求自动配置信息， 详情参见 http://tools.ietf.org/html/rfc4862[RFC4862]。

[[bsdinstall-net-ipv6-slaac]]
.选择 SLAAC 配置 IPv6
image::bsdinstall-configure-network-interface-slaac.png[]

[[bsdinstall-net-ipv6-static-config]]
===== 使用静态配置方式

网络接口的静态配置需要输入相关的 IPv6 配置信息。

[[bsdinstall-net-ipv6-static]]
.静态配置 IPv6
image::bsdinstall-configure-network-interface-ipv6-static.png[]

* `IPv6 Address` （IPv6地址） - 为当前计算机手工分配的 IP 地址。 这个地址必须是唯一的， 并且没有被其他本地网络设备使用。
* `Default Router` （默认路由） - 网络上默认路由的地址。 通常， 这是将本地网络连接至 Internet 的路由器或其他网络设备的地址。 也称作 _default gateway （默认网关）_。

[[bsdinstall-net-dns]]
==== 配置 DNS

_Domain Name System_ （域名系统，简称 _DNS_） 解析器用于主机名和网络地址间的相互转换。 如果使用的是 DHCP 或 SLAAC， 那么其配置很可能已经存在； 否则， 请在 Search 字段中输入本地网络的域名， 在 DNS #1 和 DNS #2 中输入本地 DNS 服务器的 IP 地址。 至少需要配置一个 DNS 服务器。

[[bsdinstall-net-dns-config]]
.DNS 配置
image::bsdinstall-configure-network-ipv4-dns.png[]

[[bsdinstall-timezone]]
=== 设置时区

为您的机器设置时区将允许其自动校时， 并正确执行一些与时区相关的操作。

示例中的机器位于美国东部时区。 根据所处的地理位置， 您的选择可能会有所不同。

[[bsdinstall-local-utc]]
.选择本地或 UTC 时钟
image::bsdinstall-set-clock-local-utc.png[]

选择 btn:[Yes] 或 btn:[No] 以确定机器时钟的配置方式， 然后按 kbd:[Enter] 键。 如果您并不知道系统使用的是 UTC 还是本地时间， 请选择 btn:[No] 以使用更为常见的本地时间。

[[bsdinstall-timezone-region]]
.选择地区
image::bsdinstall-timezone-region.png[]

使用方向键选择合适的地区后按下 kbd:[Enter] 键。

[[bsdinstall-timezone-country]]
.选择国家
image::bsdinstall-timezone-country.png[]

用方向键选择合适的国家后按下 kbd:[Enter] 键。

[[bsdinstall-timezone-zone]]
.选择时区
image::bsdinstall-timezone-zone.png[]

用方向键选择合适的时区后按下 kbd:[Enter] 键。

[[bsdinstall-timezone-confirmation]]
.确认时区选择
image::bsdinstall-timezone-confirm.png[]

确认时区的缩写是正确的， 然后按 kbd:[Enter] 键以继续安装后的配置。

[[bsdinstall-sysconf]]
=== 选择需要开启的服务

可以开启额外的系统服务， 它们会在系统启动时自动运行。 所有这些服务都是可选的。

[[bsdinstall-config-serv]]
.选择需要开启的服务
image::bsdinstall-config-services.png[]

.额外的系统服务
* `sshd` - Secure Shell（即 SSH） 守护进程， 提供安全的远程访问。
* `moused` - 支持在系统控制台中使用鼠标。
* `ntpd` - Network Time Protocol（网络时间协议， 简称 NTP） 守护进程， 提供时钟自动同步。
* `powerd` - 系统电量控制程序， 用于控制电量及节能。

[[bsdinstall-crashdump]]
=== 启用崩溃转储

bsdinstall 将询问是否在目标系统上启用崩溃转储。 由于在调试系统时非常有用， 因此鼓励用户尽可能地启用崩溃转储。 选择 btn:[Yes] 以启用崩溃转储， 或选择 btn:[No] 以不启用崩溃转储。

[[bsdinstall-config-crashdump]]
.启用崩溃转储
image::bsdinstall-config-crashdump.png[]

[[bsdinstall-addusers]]
=== 添加用户

在安装过程中， 应至少添加一位普通用户， 而不要始终以 `root` 身份登入。 当以 `root` 身份登入系统时， 系统几乎不会对其操作提供任何限制或保护。 以普通用户身份登录更为安全。

选择 btn:[Yes] 来添加新用户。

[[bsdinstall-add-user1]]
.添加用户帐号
image::bsdinstall-adduser1.png[]

为需要添加的用户输入信息。

[[bsdinstall-add-user2]]
.输入用户信息
image::bsdinstall-adduser2.png[]

.用户信息
* `Username` - 用户名， 即登入时用户所输入的名称。 通常是名的首字母加姓的组合。
* `Full name` - 用户的全名。
* `Uid` - 用户 ID。 通常留空以自动分配。
* `Login group` - 用户组。 通常留空以接受默认取值。
* `Invite user into other groups?` - 是否同时将用户加入其他权限组？ 如果需要， 请输入权限组名称。
* `Login class` - 登录类别。 通常留空以接受默认取值。
* `Shell` - 用户 shell。 在本例中选择的是 man:csh[1]。
* `Home directory` - 用户主目录。 通常留空以接受默认取值。
* `Home directory permissions` - 用户主目录的权限。 通常留空以接受默认取值。
* `Use password-based authentication?` - 是否使用基于密码的认证？ 通常为 "`yes`"。
* `Use an empty password?` - 是否使用空密码？ 通常为 "`no`"。
* `Use a random password?` - 是否使用随机密码？ 通常为 "`no`"。
* `Enter password` - 用户的实际密码。 输入的字符不会在屏幕上显示。
* `Enter password again` - 必须再次输入密码以进行验证。
* `Lock out the account after creation?` - 创建后锁定帐号？ 通常为 "`no`"。

全部信息输入完成后， 系统会显示摘要并询问是否正确。 如果发现了错误， 可以输入 `no` 后进行修改； 如果没有错误， 请输入 `yes` 以创建新用户。

[[bsdinstall-add-user3]]
.退出用户与组管理
image::bsdinstall-adduser3.png[]

若需添加更多用户， 请在问题"`Add another user?`"后输入 `yes`； 输入 `no` 以完成用户添加并继续安装。

更多有关用户添加及管理的信息， 请参见 crossref:users[users,用户和基本的帐户管理]。

[[bsdinstall-final-conf]]
=== 最终配置

所有的安装及配置完成后， 仍有机会对其进行修改。

[[bsdinstall-final-config]]
.最终的配置菜单
image::bsdinstall-finalconfiguration.png[]

使用此菜单， 可以在完成安装前添加或修改任何配置。

.最终的配置选项
* `Add User` - 添加用户， 详见 <<bsdinstall-addusers>>。
* `Root Password` - root 密码， 详见 <<bsdinstall-post-root>>。
* `Hostname` - 主机名， 详见 <<bsdinstall-hostname>>。
* `Network` - 网络， 详见 <<bsdinstall-config-network-dev>>。
* `Services` - 服务， 详见 <<bsdinstall-sysconf>>.
* `Time Zone` - 时区， 详见 <<bsdinstall-timezone>>。
* `Handbook` - 手册，将下载并安装 FreeBSD 使用手册（即本书）。

完成了最终配置后， 请选择 btn:[Exit] 以继续安装。

[[bsdinstall-final-modification-shell]]
.手动配置
image::bsdinstall-final-modification-shell.png[]

bsdinstall 会询问重启前是否还需要额外的配置： 选择 btn:[Yes] 进入 shell 做这些配置， 选择 btn:[No] 以执行安装的最后一步。

[[bsdinstall-final-main]]
.完成安装
image::bsdinstall-mainexit.png[]

如果需要进一步的配置或特殊的设置， 可以选择 btn:[Live CD] 来进入安装介质的 Live CD 模式。

安装完成后，选择 btn:[Reboot] 重启计算机， 并开始使用全新的 FreeBSD 系统。 请不要忘记移除 FreeBSD 的安装 CD、 DVD 或 USB 记忆棒， 否则计算机可能会再次从这些介质启动。

[[bsdinstall-freebsdboot]]
=== FreeBSD 的启动与关闭

[[bsdinstall-freebsdboot-i386]]
==== FreeBSD/i386 的启动

FreeBSD 启动时会显示许多相关信息， 正常情况下屏幕会不断滚动， 而启动完成后则会显示一个登录提示符。 如果需要查看启动时的相关信息， 可以按下 kbd:[Scroll-Lock] 键开启 _scroll-back buffer（回滚缓存）_， 然后使用 kbd:[PageUp] 键、 kbd:[PageDown] 键与方向键行翻阅； 再次按下 kbd:[Scroll Lock] 键将关闭回滚缓存并返回正常的屏幕。

在 `login:` 提示符处输入安装时添加的用户名来登录系统， 本例中是 `asample`。 除非有必要，否则请勿作为 `root` 登录。

上述的回滚缓存大小有限， 因而未必全部可见。 登入系统后， 在提示符处输入 `dmesg | less`， 能够查看到绝大部分的启动信息， 查看后按 kbd:[q] 键返回命令行。

典型的启动信息（此处略去了版本信息）：

[source,shell]
....
Copyright (c) 1992-2011 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.

    root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64
CPU: Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz (3007.77-MHz K8-class CPU)
  Origin = "GenuineIntel"  Id = 0x10676  Family = 6  Model = 17  Stepping = 6
  Features=0x783fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2>
  Features2=0x209<SSE3,MON,SSSE3>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>
real memory  = 536805376 (511 MB)
avail memory = 491819008 (469 MB)
Event timer "LAPIC" quality 400
ACPI APIC Table: <VBOX   VBOXAPIC>
ioapic0: Changing APIC ID to 1
ioapic0 <Version 1.1> irqs 0-23 on motherboard
kbd1 at kbdmux0
acpi0: <VBOX VBOXXSDT> on motherboard
acpi0: Power Button (fixed)
acpi0: Sleep Button (fixed)
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <32-bit timer at 3.579545MHz> port 0x4008-0x400b on acpi0
cpu0: <ACPI CPU> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
isab0: <PCI-ISA bridge> at device 1.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX4 UDMA33 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xd000-0xd00f at device 1.1 on pci0
ata0: <ATA channel 0> on atapci0
ata1: <ATA channel 1> on atapci0
vgapci0: <VGA-compatible display> mem 0xe0000000-0xe0ffffff irq 18 at device 2.0 on pci0
em0: <Intel(R) PRO/1000 Legacy Network Connection 1.0.3> port 0xd010-0xd017 mem 0xf0000000-0xf001ffff irq 19 at device 3.0 on pci0
em0: Ethernet address: 08:00:27:9f:e0:92
pci0: <base peripheral> at device 4.0 (no driver attached)
pcm0: <Intel ICH (82801AA)> port 0xd100-0xd1ff,0xd200-0xd23f irq 21 at device 5.0 on pci0
pcm0: <SigmaTel STAC9700/83/84 AC97 Codec>
ohci0: <OHCI (generic) USB controller> mem 0xf0804000-0xf0804fff irq 22 at device 6.0 on pci0
usbus0: <OHCI (generic) USB controller> on ohci0
pci0: <bridge> at device 7.0 (no driver attached)
acpi_acad0: <AC Adapter> on acpi0
atkbdc0: <Keyboard controller (i8042)> port 0x60,0x64 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: model IntelliMouse Explorer, device ID 4
attimer0: <AT timer> port 0x40-0x43,0x50-0x53 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
atrtc0: <AT realtime clock> at port 0x70 irq 8 on isa0
Event timer "RTC" frequency 32768 Hz quality 0
ppc0: cannot reserve I/O port range
Timecounters tick every 10.000 msec
pcm0: measured ac97 link rate at 485193 Hz
em0: link state changed to UP
usbus0: 12Mbps Full Speed USB v1.0
ugen0.1: <Apple> at usbus0
uhub0: <Apple OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus0
cd0 at ata1 bus 0 scbus1 target 0 lun 0
cd0: <VBOX CD-ROM 1.0> Removable CD-ROM SCSI-0 device
cd0: 33.300MB/s transfers (UDMA2, ATAPI 12bytes, PIO 65534bytes)
cd0: Attempt to query device size failed: NOT READY, Medium not present
ada0 at ata0 bus 0 scbus0 target 0 lun 0
ada0: <VBOX HARDDISK 1.0> ATA-6 device
ada0: 33.300MB/s transfers (UDMA2, PIO 65536bytes)
ada0: 12546MB (25694208 512 byte sectors: 16H 63S/T 16383C)
ada0: Previously was known as ad0
Timecounter "TSC" frequency 3007772192 Hz quality 800
Root mount waiting for: usbus0
uhub0: 8 ports with 8 removable, self powered
Trying to mount root from ufs:/dev/ada0p2 [rw]...
Setting hostuuid: 1848d7bf-e6a4-4ed4-b782-bd3f1685d551.
Setting hostid: 0xa03479b2.
Entropy harvesting: interrupts ethernet point_to_point kickstart.
Starting file system checks:
/dev/ada0p2: FILE SYSTEM CLEAN; SKIPPING CHECKS
/dev/ada0p2: clean, 2620402 free (714 frags, 327461 blocks, 0.0% fragmentation)
Mounting local file systems:.
vboxguest0 port 0xd020-0xd03f mem 0xf0400000-0xf07fffff,0xf0800000-0xf0803fff irq 20 at device 4.0 on pci0
vboxguest: loaded successfully
Setting hostname: machine3.example.com.
Starting Network: lo0 em0.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 08:00:27:9f:e0:92
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
Starting devd.
Starting Network: usbus0.
DHCPREQUEST on em0 to 255.255.255.255 port 67
DHCPACK from 10.0.2.2
bound to 192.168.1.142 -- renewal in 43200 seconds.
add net ::ffff:0.0.0.0: gateway ::1
add net ::0.0.0.0: gateway ::1
add net fe80::: gateway ::1
add net ff02::: gateway ::1
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib
32-bit compatibility ldconfig path: /usr/lib32
Creating and/or trimming log files.
Starting syslogd.
No core dumps found.
Clearing /tmp (X related).
Updating motd:.
Configuring syscons: blanktime.
Generating public/private rsa1 key pair.
Your identification has been saved in /etc/ssh/ssh_host_key.
Your public key has been saved in /etc/ssh/ssh_host_key.pub.
The key fingerprint is:
10:a0:f5:af:93:ae:a3:1a:b2:bb:3c:35:d9:5a:b3:f3 root@machine3.example.com
The key's randomart image is:
+--[RSA1 1024]----+
|    o..          |
|   o . .         |
|  .   o          |
|       o         |
|    o   S        |
|   + + o         |
|o . + *          |
|o+ ..+ .         |
|==o..o+E         |
+-----------------+
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
7e:1c:ce:dc:8a:3a:18:13:5b:34:b5:cf:d9:d1:47:b2 root@machine3.example.com
The key's randomart image is:
+--[ DSA 1024]----+
|       ..     . .|
|      o  .   . + |
|     . ..   . E .|
|    . .  o o . . |
|     +  S = .    |
|    +  . = o     |
|     +  . * .    |
|    . .  o .     |
|      .o. .      |
+-----------------+
Starting sshd.
Starting cron.
Starting background file system checks in 60 seconds.

Thu Oct  6 19:15:31 MDT 2011

FreeBSD/amd64 (machine3.example.com) (ttyv0)

login:
....

在较慢的机器上， 生成 RSA 和 DSA 密钥可能需要一些时间。 这种情况只会在开启了 sshd 的新系统首次启动时发生， 之后的启动速度不受影响。

FreeBSD 默认情况下并不会安装图形环境， 但提供了多种不同的选择。 请参阅 crossref:x11[x11,X Window 系统] 了解详情。

[[bsdinstall-shutdown]]
=== 关闭 FreeBSD

正常关闭 FreeBSD 有助于保护数据及系统硬件不受损坏。 不要直接关闭电源。 如果用户是 `wheel` 组的成员， 首先在命令行中输入 `su` 后键入 `root` 密码成为超级用户。 此外， 也可作为 `root` 登录， 然后使用命令 `shutdown -p now`。 这样系统将安全地自行关闭。

虽然也可以使用组合键 kbd:[Ctrl+Alt+Del] 重启系统， 但正常情况下并不推荐这样做。

[[bsdinstall-install-trouble]]
== 故障排除

下面将介绍如何排除基本的安装故障， 例如用户经常报告的问题。

=== 遇到错误时该如何处理

由于 PC 架构的各种限制， 硬件检测不可能 100% 地可靠探测， 然而， 当此类现象发生时， 您有可能可以通过一些操作来自行解决它们。

首先应该根据所安装的 FreeBSD 版本核对 http://www.FreeBSD.org/releases/[硬件兼容说明] 文档， 以确保其支持您的硬件。

如果使用被支持的硬件时仍遇到了死机或其他问题， 请联编一个 crossref:kernelconfig[kernelconfig,自定义内核]， 这样即可为那些 [.filename]#GENERIC# 内核中不存在的设备提供支持。 引导盘上的内核假定绝大多数硬件的 IRQ、 IO 地址和 DMA 通道均为出厂设置， 如果您的硬件被重新配置过， 就很可能需要修改内核配置文件并重新编译内核， 以支持 FreeBSD 侦测这些硬件。

还可能出现一种情况， 检测某个不存在的设备会导致稍后对其他存在的设备检测失败。 在这种情况下， 应该禁止检测引起冲突的设备所对应的驱动程序。

[NOTE]
====
有些安装问题可以通过更新硬件固件来避免或改善， 尤其是主板。 主板固件通常被称作 BIOS， 大多数主板和计算机制造商都拥有提供升级和相关信息的网站。

制造商通常建议， 除非有类似关键更新这种必要的原因， 否则应避免升级主板 BIOS。 升级过程一旦出现错误， BIOS信息将遭到破坏， 从而导致计算机无法工作。
====

=== 故障排除问答

==== 在启动时， 我的系统在检测硬件时挂起， 或在安装过程中行为异常。

在 i386、 amd64 和 ia64 平台的启动过程中， FreeBSD 广泛使用了 ACPI 服务来检测系统配置， 不幸的是 ACPI 驱动和主板 BIOS 中仍存在一些 bug。 在第三阶段引导加载器中， 可以通过设置 `hint.acpi.0.disabled` 来禁用 ACPI：

[source,shell]
....
set hint.acpi.0.disabled="1"
....

这一设置会在系统重启后失效， 因此必须将 `hint.acpi.0.disabled="1"` 添加至文件 [.filename]#/boot/loader.conf# 中。 关于引导加载器的更多信息， 请参见 crossref:boot[boot-synopsis,概述]。
