<< Back to man.ChinaUnix.net

FreeBSD 使用手册

The FreeBSD Documentation Project

FreeBSD 中文化项目

欢迎使用 FreeBSD! 本手册适用于安装 FreeBSD 4.11-RELEASEFreeBSD 5.4-RELEASE 以及它们的日常使用。 这个手册目前由很多人 持续地 维护。其中的内容需要不断的添加和更新。 如果您有兴趣参加这个项目,请发邮件到 FreeBSD 文档计划邮件列表。此文档最新的版本可以从 FreeBSD Web站点 上获得。 其他的各种格式和压缩的文档可以从 FreeBSD 的 FTP 服务器或下列其中的一个镜像站点下载获得。如果您更希望得到一份印刷版本的手册,可以从 FreeBSD Mall 购买. 您还可以搜索手册

Redistribution and use in source (SGML DocBook) and 'compiled' forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.

  2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Important: THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

FreeBSD is a registered trademark of the FreeBSD Foundation.

3Com and HomeConnect are registered trademarks of 3Com Corporation.

3ware and Escalade are registered trademarks of 3ware Inc.

ARM is a registered trademark of ARM Limited.

Adaptec is a registered trademark of Adaptec, Inc.

Adobe, Acrobat, Acrobat Reader, and PostScript are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.

Apple, FireWire, Mac, Macintosh, Mac OS, Quicktime, and TrueType are trademarks of Apple Computer, Inc., registered in the United States and other countries.

Corel and WordPerfect are trademarks or registered trademarks of Corel Corporation and/or its subsidiaries in Canada, the United States and/or other countries.

Sound Blaster is a trademark of Creative Technology Ltd. in the United States and/or other countries.

CVSup is a registered trademark of John D. Polstra.

Heidelberg, Helvetica, Palatino, and Times Roman are either registered trademarks or trademarks of Heidelberger Druckmaschinen AG in the U.S. and other countries.

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks of International Business Machines Corporation in the United States, other countries, or both.

IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and Electronics Engineers, Inc. in the United States.

Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

Intuit and Quicken are registered trademarks and/or registered service marks of Intuit Inc., or one of its subsidiaries, in the United States and other countries.

Linux is a registered trademark of Linus Torvalds.

LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID and Mylex are trademarks or registered trademarks of LSI Logic Corp.

M-Systems and DiskOnChip are trademarks or registered trademarks of M-Systems Flash Disk Pioneers, Ltd.

Macromedia, Flash, and Shockwave are trademarks or registered trademarks of Macromedia, Inc. in the United States and/or other countries.

Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

Netscape and the Netscape Navigator are registered trademarks of Netscape Communications Corporation in the U.S. and other countries.

GateD and NextHop are registered and unregistered trademarks of NextHop in the U.S. and other countries.

Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The Open Group are trademarks of The Open Group in the United States and other countries.

Oracle is a registered trademark of Oracle Corporation.

PowerQuest and PartitionMagic are registered trademarks of PowerQuest Corporation in the United States and/or other countries.

RealNetworks, RealPlayer, and RealAudio are the registered trademarks of RealNetworks, Inc.

Red Hat, RPM, are trademarks or registered trademarks of Red Hat, Inc. in the United States and other countries.

SAP, R/3, and mySAP are trademarks or registered trademarks of SAP AG in Germany and in several other countries all over the world.

Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer Pages, JDK, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade, Sun Enterprise, Sun Fire, SunOS, and Ultra are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.

Symantec and Ghost are registered trademarks of Symantec Corporation in the United States and other countries.

MATLAB is a registered trademark of The MathWorks, Inc.

SpeedTouch is a trademark of Thomson

U.S. Robotics and Sportster are registered trademarks of U.S. Robotics Corporation.

VMware is a trademark of VMware, Inc.

Waterloo Maple and Maple are trademarks or registered trademarks of Waterloo Maple Inc.

Mathematica is a registered trademark of Wolfram Research, Inc.

XFree86 is a trademark of The XFree86 Project, Inc.

Ogg Vorbis and Xiph.Org are trademarks of Xiph.Org.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.


Table of Contents
前言
I. 起步
1. 介绍
1.1. 概述
1.2. 欢迎来到 FreeBSD 的世界!
1.3. 关于 FreeBSD 项目
2. 安装 FreeBSD
2.1. 概述
2.2. 安装前的准备工作
2.3. 开始安装
2.4. 介绍 Sysinstall
2.5. 分配磁盘空间
2.6. 选择要安装的软件包
2.7. 选择您要使用的安装介质
2.8. 安装确认
2.9. 安装后的配置
2.10. 支持的硬件
2.11. 常见问题
2.12. 高级安装指南
2.13. 准备您自己的安装介质
3. UNIX 基础
3.1. 概述
3.2. 虚拟控制台和终端
3.3. 权限
3.4. 目录架构
3.5. 磁盘组织
3.6. 文件系统的挂接和卸下
3.7. 进程
3.8. 守护进程,信号和杀死进程
3.9. Shells
3.10. 文本编辑器
3.11. 设备和设备节点
3.12. 二进制文件格式
3.13. 取得更多的资讯
4. 安装应用程序: Packages 和 Ports
4.1. 概述
4.2. 软件安装预览
4.3. 寻找您要的应用程序
4.4. 使用Packages系统
4.5. 使用Ports Collection
4.6. 安装之后的待办事宜
4.7. 如何处理坏掉的 Ports
5. X Window 系统
5.1. 概述
5.2. 理解 X
5.3. 安装 X11
5.4. 配置 X11
5.5. 在 X11 中使用字体
5.6. X 显示管理器
5.7. 桌面环境
II. 常见的任务
6. 桌面应用
6.1. 概述
6.2. 浏览器
6.3. 办公、图象处理
6.4. 文档查看器
6.5. 财务
6.6. 总结
7. 多媒体
7.1. 概述
7.2. 安装声卡
7.3. MP3音频
7.4. 视频回放
7.5. 安装电视卡
7.6. 图象扫描仪
8. 配置FreeBSD的内核
8.1. 概述
8.2. 为什么需要建立定制的内核?
8.3. 建立并安装一个定制的内核
8.4. 配置文件
8.5. 创建设备节点
8.6. 如果出现问题怎么办
9. 打印
9.1. 概述
9.2. 介绍
9.3. 基本设置
9.4. 高级设置
9.5. 使用打印机
9.6. 替换标准打印池
9.7. 疑难问题
10. Linux二进制兼容模式
10.1. 概述
10.2. 安装
10.3. 安装Mathematica®
10.4. 安装Maple
10.5. 安装MATLAB®
10.6. 安装Oracle®
10.7. 安装SAP® R/3®
10.8. 高级主题
III. 系统管理
11. 设置和调整
11.1. 概述
11.2. 初步配置
11.3. 核心配置
11.4. 应用程序配置
11.5. 启动服务
11.6. 配置 cron
11.7. 在 FreeBSD 5.X 下使用 rc
11.8. 设置网卡
11.9. 虚拟主机
11.10. 配置文件
11.11. 用 sysctl 进行调整
11.12. 调整磁盘
11.13. 调整内核限制
11.14. 添加交换空间
11.15. 电源和资源管理
11.16. 使用和调试 FreeBSD ACPI
12. FreeBSD 引导过程
12.1. 概述
12.2. 引导问题
12.3. MBR 和引导阶段一、二、三
12.4. 内核在引导时的交互
12.5. Device Hints
12.6. Init:进程控制及初始化
12.7. shutdown 队列
13. 用户和基本的帐户管理
13.1. 概述
13.2. 介绍
13.3. 超级用户帐户
13.4. 系统帐户
13.5. 用户帐户
13.6. 修改帐户
13.7. 限制用户使用系统资源
13.8. 个性化用户设置
13.9.
14. 安全
14.1. 概述
14.2. 介绍
14.3. 确保 FreeBSD 的安全
14.4. DES,MD5,以及Crypt
14.5. 一次性口令
14.6. TCP Wrappers
14.7. KerberosIV
14.8. Kerberos5
14.9. OpenSSL
14.10. IPsec 上的 VPN
14.11. OpenSSH
14.12. 文件系统访问控制表
14.13. 监视第三方安全问题
14.14. FreeBSD 安全公告
14.15. 进程记帐
15. Mandatory Access Control ** 翻译进行中 **
15.1. Synopsis
15.2. Key Terms in this Chapter
15.3. Explanation of MAC
15.4. Understanding MAC Labels
15.5. Module Configuration
15.6. The MAC bsdextended Module
15.7. The MAC ifoff Module
15.8. The MAC portacl Module
15.9. MAC Policies with Labeling Features
15.10. The MAC partition Module
15.11. The MAC Multi-Level Security Module
15.12. The MAC Biba Module
15.13. The MAC LOMAC Module
15.14. Implementing a Secure Environment with MAC
15.15. Another Example: Using MAC to Constrain a Web Server
15.16. Troubleshooting the MAC Framework
16. 存储
16.1. 概述
16.2. 设备命名
16.3. 添加磁盘
16.4. RAID
16.5. USB 存储设备
16.6. 创建和使用光学介质(CD)
16.7. 创建和使用光学介质(DVD)
16.8. 创建和使用软盘
16.9. 用磁带机备份
16.10. 用软盘备份
16.11. 备份程序
16.12. 网络、内存和 File-Backed 文件系统
16.13. 文件系统快照
16.14. 文件系统配额
16.15. 加密磁盘分区
17. Vinum 卷管理程序
17.1. 概述
17.2. 磁盘容量太小
17.3. 访问瓶颈
17.4. 数据的完整性
17.5. Vinum 目标
17.6. 一些例子
17.7. 对象命名
17.8. 配置 Vinum
17.9. 使用 Vinum 作为根文件系统
18. 本地化-I18N/L10N使用和设置
18.1. 概述
18.2. 基础知识
18.3. 使用本地化语言
18.4. 编译I18N程序
18.5. 本地化FreeBSD
19. 最前沿
19.1. 概述
19.2. FreeBSD-CURRENT 和 FreeBSD-STABLE 的对比
19.3. 同步您的源码
19.4. 重新编译 “world”
19.5. 跟踪多台机器
IV. 网络通讯
20. 串口通讯
20.1. 概述
20.2. 介绍
20.3. 终端
20.4. 拨入服务
20.5. 拨出设备
20.6. 设置串行控制台
21. PPP 和 SLIP
21.1. 概述
21.2. 使用用户级PPP
21.3. 使用内核级PPP
21.4. PPP 连接故障排除
21.5. 使用基于以太网的PPP(PPPoE)
21.6. Using PPP over ATM (PPPoA)
21.7. 使用SLIP
22. 电子邮件
22.1. 概述
22.2. 使用电子邮件
22.3. sendmail 配置
22.4. 改变您的邮件传输代理程序
22.5. 疑难解答
22.6. 高级主题
22.7. SMTP 与 UUCP
22.8. 只发送邮件的配置
22.9. 拨号连接时使用邮件传送
22.10. SMTP 验证
22.11. 邮件用户代理
22.12. 使用 fetchmail
22.13. 使用 procmail
23. 网络服务器
23.1. 概要
23.2. inetd “超级服务器”
23.3. 网络文件系统(NFS)
23.4. 网络信息服务 (NIS/YP)
23.5. 网络自动配置 (DHCP)
23.6. 域名系统 (DNS)
23.7. BIND9 和 FreeBSD
23.8. Apache HTTP 服务器
23.9. 文件传输协议 (FTP)
23.10. Microsoft® Windows 客户机提供文件和打印服务 (Samba)
23.11. 通过 NTP 进行时钟同步
24. 防火墙
24.1. 入门
24.2. 防火墙的概念
24.3. 防火墙软件包
24.4. OpenBSD Packet Filter (PF) 和 ALTQ
24.5. IPFILTER (IPF) 防火墙
24.6. IPFW
25. 高级网络
25.1. 概述
25.2. 网关和路由
25.3. 无线网络
25.4. 蓝牙
25.5. 桥接
25.6. 无盘操作
25.7. ISDN
25.8. 网络地址转换
25.9. 平行线 IP(PLIP)
25.10. IPv6
25.11. FreeBSD 5.X 上的 ATM
V. 附录
A. 获取 FreeBSD
A.1. CDROM 和 DVD 发行商
A.2. FTP 站点
A.3. 匿名 CVS
A.4. 使用 CTM
A.5. 使用 CVSup
A.6. CVS 标签
A.7. AFS 站点
A.8. rsync 站点
B. 参考文献
B.1. 关于 FreeBSD 的专业书籍与杂志
B.2. 用户指南
B.3. 管理员指南
B.4. 开发指南
B.5. 操作系统原理
B.6. 信息安全方面的参考文献
B.7. 硬件参考
B.8. UNIX 历史
B.9. 各种期刊
C. Internet上的资源
C.1. 邮件列表
C.2. Usenet新闻组
C.3. World Wide Web服务器
C.4. Email地址
C.5. Shell账号
D. PGP公钥
D.1. 官员
D.2. 核心团队成员
D.3. 开发者
Index
Colophon
List of Tables
2-1. 硬件设备清单
2-2. 为第一个硬盘分区
2-3. 为其它磁盘分区
2-4. 可能的安全等级
2-5. FreeBSD ISO映像文件名和含意
3-1. 磁盘设备的代码
16-1. 物理磁盘命名规则
17-1. Vinum Plex组织图
25-1. 为网络配平行线
25-2. 保留的 IPv6 地址
List of Figures
2-1. 内核配置菜单
2-2. 配置内核可视化视觉接口
2-3. 展开驱动程序清单
2-4. 没有冲突的设备驱动程序状态画面
2-5. Sysinstall 主界面
2-6. 典型的设备探测结果
2-7. 选择离开 Sysinstall
2-8. 选取 Sysinstall 主菜单的 Usage 项目
2-9. 选择说明文件菜单
2-10. Sysinstall 说明文件菜单
2-11. Sysinstall 主菜单
2-12. Sysinstall 键盘对应菜单
2-13. Sysinstall 主菜单
2-14. Sysinstall 选项设置
2-15. 开始进行标准安装
2-16. 选择要分区的硬盘
2-17. 典型的尚未编辑前的 Fdisk 分区表
2-18. Fdisk 分区使用整个硬盘
2-19. Sysinstall 多重引导管理程序
2-20. 离开选择硬盘画面
2-21. Sysinstall Disklabel 编辑器
2-22. Sysinstall Disklabel 编辑器-使用自动配置
2-23. 根目录使用空间
2-24. 编辑要分区大小
2-25. 选择根分区类型
2-26. 选择根挂接点
2-27. Sysinstall Disklabel 编辑器
2-28. 选择软件包
2-29. 确认您要安装的软件包
2-30. 选择安装介质
2-31. 选择网卡设备
2-32. 配置 ed0接口
2-33. 编辑 inetd.conf配置文件
2-34. 默认的匿名 FTP 配置
2-35. 编辑FTP欢迎信息
2-36. 编辑 exports文件
2-37. 选择安全等级
2-38. 系统终端配置选项
2-39. 屏幕保护程序选项
2-40. 屏幕保护时间设置
2-41. 退出系统终端配置
2-42. 选择您所处的地理区域
2-43. 选择您所在的国家
2-44. 选择您所在的时区
2-45. 选择鼠标类型
2-46. 设置鼠标协议
2-47. 配置鼠标端口
2-48. 配置鼠标端口
2-49. 启动鼠标服务进程
2-50. 测试鼠标功能
2-51. 网络配置之上层配置
2-52. 选择默认的 MTA
2-53. Ntpdate 配置
2-54. 网络配置之下层配置
2-55. 选择配置方法菜单
2-56. 选择默认桌面
2-57. 选择软件所的种类
2-58. 选择软件包
2-59. 安装软件包
2-60. 确认安装的软件包
2-61. 选择用户
2-62. 添加用户信息
2-63. 退出用户和组管理
2-64. 退出安装
17-1. 串联组织
17-2. 分段组织
17-3. RAID-5 的组织
17-4. 一个简单的Vinum 卷
17-5. 镜像 Vinum 卷
17-6. 条带化的 Vinum 卷
17-7. 镜像并条带化的 Vinum 卷
List of Examples
2-1. 使用已存在的分区
2-2. 缩减已现在的分区
3-1. 样例磁盘, Slice, 和 Partition 它们的命名
3-2. 一个磁盘的布局
4-1. 在本地手动下载一个package,并安装它
11-1. 在 FreeBSD 4.X 上创建一个交换文件
11-2. 在 FreeBSD 5.X 上创建一个交换文件:
12-1. boot0 截屏
12-2. boot2 的屏幕输出
12-3. /etc/ttys 文件中的不安全控制台
13-1. 配置 adduser 和添加一个新用户,在FreeBSD 4.X版本
13-2. 添加一个新用户在FreeBSD 5.X版本
13-3. 删除用户 交互模式下的帐户删除
13-4. 以超级用户交互执行 chpass 命令
13-5. 以普通用户交互执行 chpass 命令
13-6. 改变您的口令
13-7. 改变其他用户的口令同超级用户的一样
13-8. 使用pw(8)添加一个组
13-9. 使用 pw(8) 在组中添加用户
13-10. 使用id(1)来决定组成员
14-1. 使用 SSH 为 SMTP 创建安全隧道
16-1. 通过 ssh 使用 dump
16-2. 通过设置 ssh 环境变量 RSH 使用 dump
16-3. 一个建立启动磁盘的 shell 脚本例子:
16-4. 使用 vnconfig 来挂接一个存在的文件系统映像在 FreeBSD 4.X 系统上。
16-5. 使用 vnconfig 创建新的文件后援磁盘
16-6. 在 FreeBSD 5.X 中使用 mdconfig 命令来挂接一个存在的文件系统映像。
16-7. 使用 mdconfig 创建一个新的文件后援磁盘
16-8. 使用 mdmfs 命令配置和挂接一个 File-Backed 磁盘
16-9. FreeBSD 4.X 下的 md 内存磁盘
16-10. mdconfig 创建一个新的内存后备磁盘
16-11. mdmfs 创建一个新的内存后备磁盘
20-1. 添加终端记录到/etc/ttys
22-1. 配置 sendmail 的访问许可数据库
22-2. 邮件别名
22-3. 虚拟域邮件映射的例子
23-1. inetd发送HangUP信号
23-2. 通过 amd 来挂接导出的文件系统
25-1. 办公室局部或家庭网
25-2. 主办公室或其它网络
A-1. 从 -CURRENT 检出些东西(ls(1)) 然后再删除:
A-2. 通过 SSH 检出整个 src/ 代码树:
A-3. 检出 ls(1) 在 3.X-STABLE 分支中的版本:
A-4. 创建 ls(1) 的变化列表(用标准的 diff)
A-5. 找出可以使用的其它的模块名:

前言

Intended Audience

作为 FreeBSD 的新用户,您将会在本手册第一部分找到 FreeBSD 的安装方法,同时逐渐引入概念和习俗来加强 UNIX® 基础。 阅读这部分只需要您有探索的精神和接受新概念的能力。

读完这些之后,手册中很漫长的第二部分是 FreeBSD 中系统管理员感兴趣的所有主题的全面参考。 在阅读这些章节的内容时所需要的背景知识都注释在每一章节的大纲里面, 如果需要,可在阅读前进行预习。

要获得附加的信息来源列表,请查阅 附录 B

相对于第二版的改动

您目前看到的这本手册的第三版是 FreeBSD 文档计划的成员历时两年完成的顶峰之作。 第三版包含了如下的的主要变动:

相对于第一版的改变

本手册的第二版是 FreeBSD 文档计划的成员历时两年完成的顶峰之作。 第二版包含了如下的的主要变动:

本手册的组织

这本手册分成了三个逻辑清晰的部分。第一部分 起步 涵盖了 FreeBSD 的安装和基本使用方法。 读者可根据自己的情况按顺序或者跳过一些熟悉的主题来阅读。第二部分 常用操作 涵盖了 FreeBSD 常用的功能, 这部分可以不按顺序阅读。每个部分由一个简明的大纲开始, 这个大纲描述本章节涵盖的内容和读者应该已经知道的知识。 这主要是让读者可以更好的选择感兴趣的章节阅读。第三部分 系统管理 涵盖了 FreeBSD 高级用户所感兴趣的广泛的话题。 第四部分 网络通讯 包括了网络和服务的话题, 而第五部分则是资源信息的附录。

第 1 章, 介绍

向新用户介绍 FreeBSD。它描述了 FreeBSD 计划的历史、目标和开发模式。

第 2 章,安装

本章将会带领用户完成安装过程。一些高级安装主题, 例如如何通过串行控制台安装,也涵盖在内。

第 3 章UNIX 基础

本章涵盖了 FreeBSD 操作系统基础命令和功能。 如果熟悉 Linux 或者其他类 UNIX 操作系统,则可以跳过这章。

第 4 章,安装应用程序

本章涵盖如何用 FreeBSD 的 “Ports Collection” 和标准二进制软件包来安装第三方软件。

第 5 章,X Window 系统

本章概要地描述了 X Window System 系统并详细地介绍了如何在 FreeBSD 上使用它。 此外他也描述了常用的桌面环境, 例如 KDEGNOME

第 6 章,桌面应用

列出了一些常用的桌面应用程序,比如 web 浏览器和办公套件, 描述了在 FreeBSD 上如何安装它们。

第 7 章,多媒体

展示了如何为您的系统设置声卡和视频回放支持。 也描述了一些简单的音频和视频应用程序。

第 8 章,配置 FreeBSD 内核

解释了为什么需要配置一个新内核并提供了配置、 编译、安装自定义内核的详细说明。

第 9 章,打印

描绘了 FreeBSD 上打印机管理, 包括横幅页、打印统计,还有初始的设置。

第 10 章Linux 二进制兼容

描述了 FreeBSD 的 Linux 兼容特性。 也提供了许多流行的 Linux 应用程序的详细的安装说明, 比如 OracleSAP R/3,还有 Mathematica®

第 11 章,配置和调整

本章描述了管理员调整 FreeBSD 系统以优化性能时可能用到的一些参数。 也描述了 FreeBSD 中的各种配置文件以及它们所在的位置。

第 12 章,启动过程

本章描述 FreeBSD 的启动过程并且解释了如何用配置选项来控制这个过程。

第 13 章,用户和基本帐号管理

本章描述了如何创建和操作用户帐号, 同样也论述了设置用户资源限制和其他账号管理任务的方法。

第 14 章, 安全

描述了保证 FreeBSD 系统安全可以使用的许多工具, 这包括 Kerberos, IPsec 以及 OpenSSH。

第 15 章, 强制访问控制

解释了何谓强制访问控制 (MAC) 以及如何利用这一机制来加强 FreeBSD 系统的安全。

第 16 章,存储

本章描述了怎样用 FreeBSD 来管理存储介质和文件系统,包括物理磁盘、RAID 阵列、光学和磁带媒体、后备存储磁盘以及网络文件系统。

第 17 章,Vinum

本章描述了怎样使用逻辑卷管理器 Vinum。它提供了设备无关的逻辑磁盘和软件 RAID-0、RAID-1 以及 RAID-5。

第 18 章,本地化

本章描述了如何在 FreeBSD 上使用非英语语言。它涵盖了系统和应用程序级的本地化。

第 19 章, 最前沿

介绍了 FreeBSD-STABLE、 FreeBSD-CURRENT 以及 FreeBSD 发行版本之间的差异。 描述了一般用户如何紧跟开发过程并从中受益。

第 20 章,串行通信

本章解释了如何连接终端和调制解调器到 FreeBSD 系统,包括拨入和拨出连接。

第 21 章,PPP 和 SLIP

本章描述了如何用 FreeBSD 通过使用 PPP,SLIP 或者基于以太网的 PPP(PPPoE)来连接远程系统。

第 22 章, 电子邮件

本章解释了一个 email 服务器的不同组成部分并且简单讨论了关于最流行的 mail 服务器软件 sendmail 的配置。

第 23 章, 网络服务

提供了详细的指引和示范配置文件以说明如何将一台 FreeBSD 机器作为网络文件系统服务器, 域名服务器, 网络信息服务器或时间同步服务器来使用的方法。

第 24 章, 防火墙

解释了基于软件的防火墙的原理, 并提供了关于配置 FreeBSD 上的几种防火墙的详细说明。

第 25 章, 高级网络应用

描述了许多关于网络的主题,包括如何在您的局域网中共享 Internet 连接, 高级路由话题, 无线网络, 蓝牙, ATM, IPv6以及许多高级话题。

附录 A,获取 FreeBSD

列出了获得 FreeBSD 安装 CDROM 或 DVDROM 的不同资源,也提供了允许您自由下载 FreeBSD 的不同 Internet 站点。

附录 B,参考书目

由于本手册触及到了很多不同的主题,因而可能引发您想要获取更多详细的讲解。 参考书目列出了很多写作这本书时参考的好书。

附录 C,Internet 上的资源

讲述了很多对 FreeBSD 用户有用的能够提出问题并进行技术交流的关于 FreeBSD 的论坛。

附录 D,PGP 秘钥

列出了一些 FreeBSD 开发者的 PGP 签名。

本书中使用的一些约定

为了使本书保持一致性和易读性特做了以下约定:

排版约定

斜体

斜体 字用来表示文件名、URLs、强调文字和术语的主流用法。

反白

反白 字用来表示错误信息、命令、环境变量、port 的名字、主机名、用户名、组名、设备名以及变量和代码片断。

粗体

粗体 字用来表示应用程序、命令和关键字。

用户输入

按键用粗体来突出于其他文本。 组合键意味着字用‘+’连接时,同时的按下它们,例如:

Ctrl+Alt+Del

表示您应该同时按下 CtrlAltDel 键。

按顺序依次键入的关键字通常是用逗号隔开,例如:

Ctrl+X, Ctrl+S

这意味着用户应该同时按CtrlX,然后同时按 CtrlS

示例

E:\> 开头的例子代表一个 MS-DOS® 命令。除非另有说明,这些命令都可以在一个现代的 Microsoft® Windows® “命令行”窗口环境被执行。

E:\> tools\fdimage floppies\kern.flp A:

# 开头的例子代表必须以 FreeBSD 超级用户身份执行的命令。您可以用 root 身份登录来输入这些命令,或者以普通账号登录然后用 su(1) 来获得超级用户权限。

# dd if=kern.flp of=/dev/fd0

% 开头的例子代表命令应该被普通账号执行。 除非另有说明,C-shell 语法来设置环境变量和其他 shell 命令。

% top

致谢

您所看到的这本书是全球几百人努力的结果。 无论他们只是纠正一些错误或提交完整的章节,所有的贡献都是非常有用的。

一些公司通过提供资金让作者专注于文档开发、提供出版资金等等方式来支持文档开发。 其中,BSDi (后并入Wind River Systems) 资助 FreeBSD 文档计划成员来专职改善这本书直到 2000 年三月第一个印刷版 (ISBN 1-57176-241-8) 的出版。Wind River Systems 同时资助其他作者来对输出结构做很多改进和给文章添加一些附加章节。 这项工作结束于 2001 年 11 月印刷第二版 (ISBN 1-57176-303-1)。在 2003-2004 两年中,FreeBSD Mall, 向为改进这本手册以使其第三版印刷版本能够出版的志愿者支付了报酬。

I. 起步

手册的以下章节主要是针对刚开始使用 FreeBSD 的用户及管理员:

  • FreeBSD 入门。

  • 安装过程向导。

  • 教您 UNIX 基本知识和基本原理。

  • 展示如何在 FreeBSD 上安装大量的第三方应用。

  • 介绍使用 X,UNIX 窗口系统,以及为一些生产环境配置桌面环境的细节。

我们尝试用最少的页数来保持前言的索引,以至于可以用最少翻页次数将该手册从头至尾读过。


Chapter 1. 介绍

Restructured, reorganized, and parts rewritten by Jim Mock.

1.1. 概述

非常感谢您对 FreeBSD 感兴趣! 下面的章节覆盖了 FreeBSD 项目的各个方面, 比如它的历史、目标、开发模式,等等。

阅读完这章,您将了解:

  • FreeBSD 与其它计算机操作系统的关系。

  • FreeBSD 项目的历史。

  • FreeBSD 项目的目标。

  • FreeBSD 开放源代码开发模式的基础。

  • 当然还有:“FreeBSD” 这个名称的由来。


1.2. 欢迎来到 FreeBSD 的世界!

FreeBSD 是一个支持 Intel (x86 和 Itanium®),AMD64,Alpha™,Sun UltraSPARC® 计算机的基于 4.4BSD-Lite 的操作系统。 到其他体系结构的移植也在进行中。 您也可以阅读 FreeBSD 的历史, 或者最新的发行版本。 如果您有意捐助(代码, 硬件,不记名捐款),请看为 FreeBSD 提供帮助这篇文章。


1.2.1. FreeBSD 能做些什么?

FreeBSD有许多非凡的特性。其中一些是:

  • 抢占式多任务与动态优先级调整确保在应用程序和用户之间平滑公正的分享计算机资源, 即使工作在最大的负载之下。

  • 多用户设备 使得许多用户能够同时使用同一 FreeBSD 系统做各种事情。 比如, 像打印机和磁带驱动器这样的系统外设可以完全的在系统或者网络上的所有用户之间共享, 可以对用户或者用户组进行个别的资源限制, 以保护临界系统资源不被滥用。

  • 符合业界标准的强大 TCP/IP 网络 支持, 例如 SLIP,PPP,NFS,DHCP,还有 NIS。 这意味着您的 FreeBSD 主机可以很容易地和其他系统互联, 也可以作为企业的服务器,提供重要的功能, 比如 NFS(远程文件访问)以及 email 服务, 或将您的组织接入 Internet 并提供 WWW,FTP,路由和防火墙(安全)服务。

  • 内存保护确保应用程序(或者用户)不会相互干扰。 一个应用程序崩溃不会以任何方式影响其他程序。

  • FreeBSD 是一个 32 位操作系统 (在 Alpha,Itanium,AMD64,和 UltraSPARC 上是64 位), 并且从开始就是如此设计的。

  • 业界标准的 X Window 系统 (X11R6)为便宜的常见 VGA 显示卡和监视器提供了一个图形化的用户界面(GUI), 并且完全开放代码。

  • 和许多 Linux,SCO,SVR4,BSDI 和 NetBSD 程序的二进制代码兼容性

  • 数以千计的 ready-to-run 应用程序可以从 FreeBSD portspackages collection 中找到。您可以顺利的从这里找到, 何用搜索网络?

  • 可以在 Internet 上找到成千上万其它 easy-to-port 的应用程序。 FreeBSD 和大多数流行的商业 UNIX 代码级兼容, 因此大多数应用程序不需要或者只要很少的改动就可以编译。

  • 页式请求虚拟内存和“集成的 VM/buffer 缓存”设计有效的满足了应用程序巨大的内存需求并依然保持其他用户的交互式响应。

  • SMP 提供对多处理器的支持。

  • CC++Fortran,和 Perl 开发工具的完整扩充。 许多附加的用于高级研究和开发的程序语言也可以在 ports 和 packages collection 中找到。

  • 完整的系统源代码意味着您对您环境的最大程度的控制。 当您拥有了一个真正的开放系统时, 为什么还要受困于私有的解决方案, 任商业公司摆布呢?

  • 丰富的在线文档

  • 不仅如此!

FreeBSD 基于加州大学伯克利分校计算机系统研究组(CSRG)发布的 4.4BSD-Lite, 继承了 BSD 系统开发的优良传统。 除了 CSRG 优秀的工作之外, FreeBSD 项目花费了非常多的时间来优化调整系统, 使其在真实负载情况下拥有最好的性能和可靠性。 像许多商业巨人努力地增加 PC 操作系统的特性、 提升性能并改善其可靠性一样, FreeBSD 现在 就已经可以提供了!

FreeBSD 可以提供的应用事实上仅局限于您的想象力。 从软件开发到工厂自动化,从存货控制到遥远的人造卫星天线方位控制, 如果商业的 UNIX 产品可以做到,那么就非常有可能您也可以用 FreeBSD 来做! FreeBSD 也极大地受益于全世界的研究中心和大学开发的数以千计的高质量的应用程序, 这些程序通常只需要很少的花费甚至免费。 商业应用程序也是可用的,并且每天都有大量的出现。

因为 FreeBSD 自身的源代码是完全公开的, 所以对于特定的应用程序或项目,可以对系统进行最大限度的定制。 这对于大多数主流的商业生产商的操作系统来说几乎是不可能的。 以下是当前人们应用 FreeBSD 的某些程序的例子:

  • Internet 服务:FreeBSD 内建的强大的 TCP/IP 网络使它得以成为各种 Internet 服务的理想平台,比如:

    • FTP 服务器

    • World Wide Web 服务器(标准的或者安全的 [SSL])

    • 防火墙和 NAT(“IP 伪装”) 网关

    • 电子邮件服务器

    • USENET 新闻组和电子布告栏系统

    • 还有许多...

    使用 FreeBSD,您可以容易的从便宜的 386 类 PC 起步,并随着您的企业成长,一路升级到带有 RAID 存储的四路 Xeon 服务器。

  • 教育:您是一名计算机科学或者相关工程领域的学生吗? 学习操作系统,计算机体系结构和网络没有比在 FreeBSD 可提供的体验下动手实践更好的办法了。许多可自由使用的 CAD、数学和图形设计包也使它对于那些主要兴趣是在计算机上完成其他工作的人非常有帮助。

  • 研究:有完整的系统源代码, FreeBSD 对于操作系统研究以及其他计算机科学分支都是一个极好的平台。 FreeBSD 可自由获得的本性, 同样可以使处在不同地方的开发团队在开放的论坛上讨论问题、 交流想法与合作开发成为可能, 且不必担心特别的版权协定或者限制。

  • 网络:需要一个新的路由器? 一台域名服务器 (DNS)? 一个隔离您的内部网络的防火墙? FreeBSD 可以容易的把丢弃在角落不用的 386 或者 486 PC 变成一台完善的带包过滤能力的高级路由器。

  • X Window 工作站: FreeBSD 是廉价 X 终端的一种绝佳解决方案, 您可以选择使用免费的 X11 服务器, 或由 Xi Graphics 提供的非常优秀的商业服务器。 与 X 终端不同,如果需要的话 FreeBSD 能够在本地直接运行程序, 因而减少了中央服务器的负担。 FreeBSD 甚至能够在 “无盘” 环境下启动, 这使得终端更为便宜和易于管理。

  • 软件开发: 基本的 FreeBSD 系统带有包括著名的 GNU C/C++ 编译器和调试工具在内的一整套开发工具。

FreeBSD 可以通过 CDROM、DVD, 以及匿名 FTP 以源代码和二进制方式获得。请查看附录 A 了解获取 FreeBSD 的更多细节。


1.3. 关于 FreeBSD 项目

下面的章节提供了项目的一些背景信息, 包括简要的历史、项目目标、以及项目开发模式。


1.3.1. FreeBSD 的简要历史

Contributed by Jordan Hubbard.

FreeBSD 项目起源于 1993 年早期, 部分作为 “Unofficial 386BSD Patchkit” 的副产物,patchkit 的最后 3 个协调维护人是:Nate Williams,Rod Grimes 和我。

我们最初的目标是做出一份 386BSD 的测试版以修正一些 Patchkit 机制无法解决的错误(bug)。 很多人可能还记得早期的项目名称叫做 “386BSD 0.5” 或者 “386BSD Interim” 就是这个原因。

386BSD 是 Bill Jolitz 的操作系统, 一直到忍受了激烈的将近一年的忽视。 由于 Patchkit 的急剧膨胀, 使得很难每天都能够消化吸收, 我们一致同意应该做些事情并决定通过提供这个临时的 “cleanup” 版本来帮助 Bill。 然而,Bill 却在事先没有指出这个项目应该如何开展下去的情况下, 突然决定退出这个项目,最终这个计划只好被迫停止。

没过多久,我们认为在没有 Bill 的支持下,项目仍有保留的价值, 因此,我们采用了 David Greenman 的意见,给其命名为 “FreeBSD”。在和当时的几个用户商量后, 我们提出了最初的目标, 而这件事明朗化后, 这个项目就走上了正轨,甚至可能成为现实。 为了增加 FreeBSD 的发行渠道,我抱着试试看的心态, 联系了光盘商 Walnut Creek CDROM, 以便那些上网不方便的用户得到 FreeBSD。 Walnut Creek CDROM 不仅支持发行 FreeBSD 光盘版的想法, 还为这个计划提供了所需的计算机和高速网络接入。 在那时,没有 Walnut Creek CDROM 对一个完全未知的项目的空前信任, FreeBSD 不太可能像它今天这样,影响如此深远,发展如此快速。

第一个 CDROM (以及在整个互连网范围内发行的) 发行版本是 FreeBSD 1.0,于 1993 年 10 月发布。这个版本基于 U.C. Berkeley 的 4.3BSD-Lite(“Net/2”)磁带, 也有许多组件是 386BSD 和自由软件基金会提供的。 对于第一次发行,这算是相当成功了。 在 1994 年 5 月,我们发布了更加成功的 FreeBSD 1.1 版。

然而此后不久,发生了一些意外的情况。 Novell 和 U.C. Berkeley 决定就 Berkeley Net/2 磁带的归属权问题打的那场马拉松式的官司达成和解。 判决的结果是, U.C. Berkeley 承认 Net/2 很大一部分代码是“侵占来的” 且这些代码归 Novell 公司所拥有。这些代码是 Novell 不久前从 AT&T 买来的。 Berkeley 得到了来自 Novell 的 “祝福”: 4.4BSD-Lite 发行后,将不认为是侵权, 且要求现存的 Net/2 的用户更换新版。 这也包括 FreeBSD,我们的项目被要求在 1994 年 6 月底停止发行基于 Net/2 的产品。在此协议允许的时间内, 本项目被允许发行最后一版,也就是 FreeBSD 1.1.5.1。

于是 FreeBSD 开始艰苦的从全新的而且不完整的 4.4BSD-Lite 中重新整合自己。“Lite” 版本是不完整的, 因为 Berkeley 的 CSRG 已经删除了大量的构建可启动运行的系统所需要的代码 (因为各种各样的版权问题),事实上 4.4 的 Intel port 是非常不完整的。 直到 1994 年 11 月项目才完成这个转换,这个时候才把 FreeBSD 2.0 通过网络和 CDROM(在 12 月)发布出来。 尽管系统很多地方还很粗糙,这个版本还是取得了重大的成功, 接下来在 1995 年 6 月发布了更强大和容易安装的 FreeBSD 2.0.5 版本。

我们于 1996 年 8 月发布了 FreeBSD 2.1.5 版本, 它在 ISP 和商业团体中非常流行。 随后, 2.1-STABLE 分支的另一个版本应运而生,它就是 FreeBSD 2.1.7.1,在 1997 年 2 月发布并停止了 2.1-STABLE 的主流开发。现在,它处于维护状态, 仅仅提供安全性的增强和其他严重的错误修补的维护(RELENG_2_1_0)。

FreeBSD 2.2 版作为 RELENG_2_2 分支,于 1996 年 11 月从开发主线 (“-CURRENT”)分出来。 它的第一个完整版(2.2.1)于 1997 年 4 月发布出来。 97 年夏秋之间,顺着 2.2 分支的更进一步的版本在开发。 其最后一版(2.2.8)于 1998 年 11 月发布出来。 第一个官方的 3.0 版本出现在 1998 年 10 月, 意味着 2.2 分支结束的开始。

1999 年 1 月 20 日又出现了新的分支,就是 4.0-CURRENT 和 3.X-STABLE 分支。从 3.X-STABLE 起,3.1 在 1999 年 2 月 15 日发行,3.2 在1999 年 5 月 15 日,3.3 在 1999 年 9 月 16 日,3.4 在 1999 年 12 月 20 日,3.5 在 2000 年 6 月 24 日,接下来几天后发布了很少的修补升级至 3.5.1,加入了对 Kerberos 安全性方面的修补。 这是 3.X 分支最后一个发行版本。

随后在 March 13, 2000 出现了一个新的分支, 也就是 4.X-STABLE。 这之后发布了许多的发行版本: 4.0-RELEASE 于 2000 年 3月发布, 而最后的 4.11-RELEASE 则在 Jan 2005 发布。

期待已久的 5.0-RELEASE 于 2003 年 1 月 19 日正式发布。 这是将近三年的开发的巅峰之作, 同时也标志了 FreeBSD 在先进的多处理器和应用程序线程支持的巨大成就, 并引入了对于 UltraSPARCia64 平台的支持。 之后于 2003 年 6 月发布了 5.1。 最后一个 -CURRENT 分支的 5.X 版本是 5.2.1-RELEASE, 它在 2004 年 2 月正式发布。

RELENG_5 于 2004 年 8 月正式创建, 其后是 5.3-RELEASE, 它是 5-STABLE 分支的标志性发行版。

目前, 中长期的开发项目继续在 6.X-CURRENT (trunk) 分支中进行, 而 6.X 的 CDROM (当然, 也包括网络) 快照版本可以在 快照服务器 找到。


1.3.2. FreeBSD 项目目标

Contributed by Jordan Hubbard.

FreeBSD 项目的目标是无附加条件地提供能够用于任何目的的软件。 我们中的许多人对代码 (以及项目本身) 都有非常大的投入, 因此当然不介意偶尔有一些资金上的补偿, 但我们并没打算坚决地要求得到这类资助。 我们认为我们的首要 “使命” 是为任何人提供代码, 不管他们打算用这些代码做什么, 因为这样代码将能够被更广泛地使用, 从而最大限度地发挥其价值。 我认为这是自由软件最基本的, 同时也是为我们所倡导的一个目标。

我们源代码树中, 以 GNU 公共许可证 (GPL) 或者 GNU 函数库公共许可证 (LGPL) 发布的那些代码带有少许的附加限制, 还好只是强制性的要求开放代码而不是别的。 由于使用 GPL 的软件在商业用途上会增加若干复杂性, 因此,如果可以选择的话, 我们更偏好使用限制相对更宽松的 BSD 版权来发布软件。


1.3.3. FreeBSD 开发模式

撰写者 Satoshi Asami.

FreeBSD 的开发是一个非常开放且有有伸缩性的过程, 就像从我们的 贡献者列表里看到的,它是完全由来自全世界的数以百计的贡献者发展起来的。 FreeBSD 的开发基础结构允许数以百计的开发者通过互联网协同工作。 我们也经常关注着那些对我们的计划感兴趣的新开发者和新的创意, 那些有兴趣更进一步参与项目的人只需要在 FreeBSD 技术讨论邮件列表 联系我们。 FreeBSD 公告邮件列表 对那些希望了解我们工作所涉及到哪些领域的人也是有用的。

无论是独立地工作或者封闭式的团队工作, 了解FreeBSD计划和它的开发过程都是有益的:

CVS 代码库

FreeBSD 的中央源代码树是由 CVS (并行版本控制系统)来维护的。CVS 是一个与 FreeBSD 捆绑的可自由获得的源代码控制工具。 主 CVS 代码库放置在美国加利福尼亚州圣克拉拉的一台机器上, 它被复制到全世界的大量镜像站上。CVS 中包括了 -CURRENT-STABLE 树, 它同样可以很容易地复制到您的机器上。 请查阅 同步您的源代码树这一章节来了解更多信息。

committer 列表

committer 是那些对 CVS 树有权限的人, 他们被授权修改 FreeBSD 的源代码 (术语 “committer” 来自于 cvs(1)commit 命令,这个命令用来把新的修改提交给 CVS 代码库)。提交修正的最好方法是使用 send-pr(1) 命令。如果您发现在系统中出现了一些问题的话, 您也可以通过邮件将它们发送至 FreeBSD committer 的邮件列表。

FreeBSD 核心团队

如果把 FreeBSD 项目看作一个公司,那么 FreeBSD 核心团队就相当于董事会。 核心团队的主要任务是提出总体上的发展计划,然后确定一个正确的方向。 邀请那些富有献身精神和可靠的开发者加入到 committer 队伍中来也是核心团队的工作之一, 这些新的成员将作为新核心团队成员和其他人一起继续前进。 当前的核心团队是 2004 年 7 月从 committer 中选举产生的。选举每两年一次。

一些核心团队的成员还负责特定的责任范围, 也就是说他们必须尽力确保某个子系统能工作正常。 FreeBSD 开发者的完整列表和他们的责任范围,请参见 贡献者列表

Note: 核心团队的大部分成员加入 FreeBSD 开发的时候都是志愿的, 并没有从项目中获得任何财政上的资助, 所以“承诺”不应该被理解为“支持保证”。 前面所述“董事会”的类推并不十分准确, 或许更好的说法是,他们是一群愿意放弃他们的生活, 投身于 FreeBSD 项目而非选择其个人更好的生活的人!

外围贡献者

事实上,最大的开发团队正是为我们提供反馈和错误修补的用户自己。 FreeBSD 的非集中式的开发者保持联系的主要方式就是预订 FreeBSD 技术讨论邮件列表,很多事情在那里讨论。查看附录 C了解众多 FreeBSD 邮件列表的更多信息。

FreeBSD 贡献者列表 很长并在不断增长, 为什么不加入它来为 FreeBSD 做贡献呢?

提供代码不是为这个计划做贡献的唯一方式; 有一个更完整的需要做的事情的列表,可以参见 FreeBSD 项目网站

总的来说,我们的开发模式好像是一组没有拘束的同心圆。 这种集中式的开发模式,主要是考虑到用户的方便, 同时让他们能很容易地维护同一份软件, 而不会把潜在的贡献者排除在外! 我们的目标是提供一个包含有大量具有一致性 应用程序的稳定的操作系统, 以利于用户的安装和使用,-- 这种模式在完成目标的过程中工作得非常有效。

我们对于那些想要加入,成为FreeBSD开发者的期待是: 具有如同当前其他人一样的投入,来确保持续的成功!


1.3.4. 最新的 FreeBSD 发行版本

FreeBSD 是一个免费使用且带有完整源代码的基于 4.4BSD-Lite 的系统, 它广泛运行于 Intel i386™、i486™、Pentium®、 Pentium Pro、 Celeron®、 Pentium II、 Pentium III、 Pentium 4(或者兼容系统)、 Xeon™、DEC Alpha 和 Sun UltraSPARC 的计算机系统上。 它主要以 加州大学伯克利分校 的 CSRG 研究小组的软件为基础,并加入了 NetBSD、OpenBSD、386BSD 以及来自 自由软件基金会 的一些东西。

自从 94 年末我们的 FreeBSD 2.0 发行以来, FreeBSD 的性能,可定制性,稳定性都有了令人注目的提高。 最大的变化是通过 整合虚拟内存/文件系统 中的高速缓存改进的虚拟内存系统, 它不仅提升了性能,而且减少了 FreeBSD 对内存的需要, 使得 5 MB 内存成为可接受的最小配置。 其他的改进包括完整的 NIS 客户端和服务器端的支持, 事务式 TCP 协议支持,按需拨号的 PPP,集成的 DHCP 支持,改进的 SCSI 子系统, ISDN 的支持,ATM,FDDI,快速 Gigabit 以太网(1000 Mbit)支持, 提升了最新的 Adaptec 控制器的支持和修补了很多的错误。

除了最基本的系统软件,FreeBSD 还提供了一个拥有成千上万广受欢迎的程序组成的软件的 Ports Collection。 到本书付印时,已有超过 12,300 个 ports (ports 包括从 http(WWW) 服务器到游戏、程序设计语言、编辑器以及您能想到的几乎所有的东西)。 完整的 Ports Collection 大约需要 400 MB 的存储空间。所有的只提供对原始代码的 “修正”。这使得我们能够容易地更新软件, 而且减少了老旧的 1.0 Ports Collection 对硬盘空间的浪费。 要编译一个 port,您只要切换到您想要安装的程序的目录, 输入 make install,然后让系统去做剩下的事情。 您要编译的每一个程序完整的原始代码可以从 CDROM 或本地 FTP 获得,所以您只需要编译您想要软件的足够的磁盘空间。 几乎大多数的软件都提供了事先编译好的 “package” 以方便安装,对于那些不希望从源代码编译他们自己的 ports 的人只要使用一个简单的命令 (pkg_add)就可以安装。 有关 package 和 ports 的更多信息可以在第 4 章中找到。

您可以在最近的 FreeBSD 主机的 /usr/share/doc 目录下找到许多有用的文件来帮助您安装及使用 FreeBSD。 您也可以用一个 HTML 浏览器来查阅本地安装的手册, 使用下面的 URL:

您也可以查看在 http://www.FreeBSD.org/ 的主站上的副本。


Chapter 2. 安装 FreeBSD

结构、组织重整, 部分重写 Jim Mock. sysinstall 操作流程、屏幕抓图以及一般性文件Randy Pratt.

2.1. 概述

FreeBSD 提供了一个以文字为主,简单好用的安装程序,叫做 sysinstall 。这是 FreeBSD 默认使用的安装程序; 厂商如果想,也可以提供适合自己需要的安装程序。本章说明如何使用 sysinstall 来安装 FreeBSD。

学习完本章之后,您将会知道:

  • 如何制作 FreeBSD 安装磁盘

  • FreeBSD如何参照及分割您的硬盘

  • 如何启动 sysinstall.

  • 在执行 sysinstall 时您将要回答的问题、 问题代表什么意义,以及该如何回答它们。

在阅读本章之前,您应该:

  • 阅读您要安装的 FreeBSD 版本所附的硬件支持列表以确定您的硬件有没有被支持。

Note: 一般来说,此安装说明是针对 i386 (“PC 兼容机”) 体系结构的电脑。 如果有其它体系结构(如Alpha)的安装说明,我们将一并列出。 虽然本文档经常保持更新,但有可能与您安装版本上所带的说明文档有些许出入。 在这里建议您使用本说明文章作为一般性的安装指导参考手册。


2.2. 安装前的准备工作

2.2.1. 列出您电脑的硬件清单

在安装 FreeBSD 之前,您应该试着将您电脑中的硬件清单列出来。FreeBSD 安装程序会将这些硬件(磁盘、网卡、光驱等等)以及型号及制造厂商列出来。 FreeBSD 也会尝试为这些设备找出最适当的 IRQ 及 IO 端口的设定。但是因为 PC 的硬件种类实在太过复杂,这个步骤不一定总是能成功。 这时,您就可能需要手动更改有问题的设备的设定值。

如果您已经安装了其它的操作系统,如 Windows 或 Linux,那么您可以先由 这些系统所提供的工具来查看您的设备设定值是怎么分配的。如果您真的没办法 确定某些接口卡用什么设定值,那么您可以检查看看,说不定它的设定已经标示 在卡上。常用的 IRQ 号号码为 3、5 以及 7;IO 端口的值通常以 16 进制位表示,例如 Ox330。

我们建议您在安装 FreeBSD 之前把这些信息打印或记录下来,做成表格 的样子也许会比较有帮助,例如:

Table 2-1. 硬件设备清单

设备名 IRQ IO 端口号 备注
第一块硬盘 N/A N/A 40 GB,Seagate 制造,第一个 IDE 接口主设备
CDROM N/A N/A 第一个 IDE 接口从设备
第二块硬盘 N/A N/A 20 GB,IBM 制造, 第二个 IDE 接口主设备
第一个 IDE 控制器 14 0x1f0  
网卡 N/A N/A Intel® 10/100
Modem N/A N/A 3Com® 56K faxmodem,位于 COM1 口
...      

2.2.2. 备份您的数据

如果您的电脑上面存有重要的数据资料,那么在安装 FreeBSD 前请确定 您已经将这些资料备份了,并且先测试这些备份文档是否有问题。FreeBSD 安装程序在要写入任何资料到您的硬盘前都会先提醒您确认,一旦您确定要 写入,那么以后就没有反悔的机会。


2.2.3. 决定要将 FreeBSD 安装到哪里

如果您想让 FreeBSD 使用整个硬盘,那么请直接跳到下一节。

但是,如果您想让 FreeBSD 跟您已有的系统并存,那么您必须对您数据 存在硬盘的分布方式有深入的了解以及其所造成的影响。


2.2.3.1. i386™ 体系结构的硬盘分配方式

一个 PC 硬盘可以被细分为许多分散的区域。这些区域叫做 分区(partitions)。 由于设计的原因,每个硬盘仅 支持四个分区;这些分区叫做主分区(Primary partion)。 为了突破这个限制以便能使用更多的分区,就有了新的分区类型,叫做 扩展分区(Extended partition)。一个硬盘可以拥有一个扩展分区。在 扩展分区里可以建立许多个所谓的逻辑分区(Logical partitions)

每个分区都有其独立的分区号(partition ID), 用以区分每个分区的数据类型。FreeBSD 分区的分区号为 165

一般而言,每种操作系统都会有自己独特的方式来区别分区。例如 DOS 及其 之后的 Windows, 会分配给每个主分区及逻辑分区一个 驱动器字符, 从 C: 开始。

FreeBSD 必须安装在主分区。 FreeBSD 可以在这个分区上面存放系统数据 或是您建立的任何文件。然而,如果您有多个硬盘,您也可以在这些硬盘上(全部 或部分)建立 FreeBSD 分区。在您安装 FreeBSD 的时候,必须要有一个分区可以给 FreeBSD 使用。这个分区可以是尚未规划的分区或是已经划好,但是里面的数据 您都不想保存的分区。

如果您已经用完了您硬盘上的所有分区,那么您必须使用其它操作系统所 提供的工具(如 DOS 或 Windows 下的 fdisk)来腾出一个分区 给 FreeBSD 使用。

如果您的某个分区有多余的空间,您可以使用它。但是使用前您需要先整理 一下这些分区。

FreeBSD 最小安装需要约 100 MB 的空间,但是这仅是 非常 基本的安装,几乎没有剩下多少空间可以建立您自己的文件。一个较理想的最小安装是 250 MB,不含图形界面;或是 350 MB 以上,包含图形界面。如果您还需要安装 其它的第三方厂商的套件,那么将需要更多的硬盘空间。

您可以使用商业软件,例如 PartitionMagic®(硬盘分区魔术师) 来建立给 FreeBSD 使用的空间。FreeBSD 光盘的 tools 目录包含两个免费的工具也可以完成这个工作:FIPS 以及 PResizer,它们的文档可以在同一目录中找到。FIPSPResizer,和 PartitionMagic 能够改变 FAT16 以及 FAT32 分区大小-- 在 MS-DOS 方式下使用以及 Windows ME。这些工具的说明文件可以在同一个目录下面找到 PartitionMagic 是知道的唯一能改变 NTFS 分区大小的应用软件。

Warning不当的使用这些工具可能会删掉您硬盘上的数据资料!在使用这些工具前 确定您有最近的、没问题的备份数据。

Example 2-1. 使用已存在的分区

假设您只有一个 4GB 的硬盘,而且已经装了 Windows 然后您将这个硬盘分成两个分区 C:D:,每个分区大小为 2 GB。在 C: 分区上存放有 1 GB 的数据、 D:分区上存放 0.5 GB 的数据。

这意味着您的盘上有两个分区,一个驱动器符号是一个分区(如 c:、d:)。 您可以把所有存放在 D: 分区上的数据拷贝到 C: 分区,这样就空出了一个分区(d:)给 FreeBSD 使用。

Example 2-2. 缩减已现在的分区

假设您只有一个 4 GB 的硬盘,而且已经装了 Windows。您在安装 Windows 的时候 把 4 GB 都给了 C: 分区,并且已经使用了 1.5 GB 的空间。 您想将剩余空间中的 2 GB 给 FreeBSD 使用。

为了安装 FreeBSD,您必须从下面两种方式中选择一种:

  1. 备份 Windows 的数据资料,然后重新安装 Windows,并给 Windows 分配 2 GB 的空间。

  2. 使用上面提及的 PartitionMagic 来整理 或切割您的分区。


2.2.3.2. Alpha 体系结构的硬盘分配方式

在 Alpha 上,您必须使用一整颗硬盘给 FreeBSD,没有办法在同一个硬盘上跟 其它操作系统共存。根据不同的 Alpha 机器,您的硬盘可以是 SCSI 或 IDE 硬盘,只要 您的机器可以从这些硬盘开机就可以。

按照 Digital/Compaq 使用手册书写的惯例,所有 SRM 输入的部分都用大写 表示。注意,SRM 大小写有别。

要想得知您硬盘的名称以及型号,可以在 SRM console 提示符下使用 SHOW DEVICE 命令:

>>>SHOW DEVICE
dka0.0.0.4.0               DKA0           TOSHIBA CD-ROM XM-57  3476
dkc0.0.0.1009.0            DKC0                       RZ1BB-BS  0658
dkc100.1.0.1009.0          DKC100             SEAGATE ST34501W  0015
dva0.0.0.0.1               DVA0
ewa0.0.0.3.0               EWA0              00-00-F8-75-6D-01
pkc0.7.0.1009.0            PKC0                  SCSI Bus ID 7  5.27
pqa0.0.0.4.0               PQA0                       PCI EIDE
pqb0.0.1.4.0               PQB0                       PCI EIDE

此范例使用 Digital Personal Workstation 433au 并且显示出此机器联接 有三个硬盘。第一个是 CDROM,叫做 DKA0;另外两个 是两个硬盘,分别叫做 DKC0DKC100

硬盘名称中有 DKx 字样的是 SCSI 硬盘。例如 DKA100 表示是一个 SCSI 设备,其 SCSI ID 为 1,位于 第一个 SCSI 接口 (A)。 DKC300 表示一个 SCSI 硬盘, SCSI ID 为 3,位于第三个 SCSI 接口 (C)。设备名称 PKx 表示 SCSI 控制卡。由以上 SHOW DEVICE 指令的输出结果看来, SCSI 光盘也被视为是 SCSI 硬盘的一种。

IDE 硬盘的名称类似 DQx,而 PQx 则表示相对应的硬盘控制器。


2.2.4. 收集您的网络配置相关资料

如果您想通过网络(FTP 或是 NFS)安装 FreeBSD,那么您就必须知道您的网络配置 信息。在安装 FreeBSD 的过程中将会提示您输入这些资料,以顺利完成安装过程。


2.2.4.1. 使用以太网或电缆/DSL Modem

如果您通过局域网或是要通过网卡使用电缆/DSL 上网,那么您必须准备下面 的信息:

  1. IP 地址。

  2. 默认网关 IP 地址。

  3. 主机名称。

  4. DNS 服务器的 IP 地址。

  5. 子网掩码。

如果您不知道这些信息,您可以询问系统管理员或是您的网络服务提供者。 他们可能会说这些信息会由 DHCP 自动分配;如果这样的话, 请记住这一点就可以了。


2.2.4.2. 使用 Modem 连接

如果您由 ISP 提供的拨号服务上网,您仍然可以通过它安装 FreeBSD, 只是会需要很长的时间。

您必须知道:

  1. 拨号到 ISP 的电话号码。

  2. 您的 modem 是连接到哪个 COM 端口。

  3. 您拨号到 ISP 所用的账号和密码。


2.2.5. 检查 FreeBSD 发行勘误

虽然我们尽力确保每个 FreeBSD 发行版本的稳定性,但偶尔也会有一些错误进入发行版。 极少数情况下,这些问题甚至可能会影响安装。 当发现和修正问题之后,它们会列在 FreeBSD 网站中的 FreeBSD 发行勘误 中。 在您安装之前,应该首先看一看这份勘误表,以了解可能存在的问题。

虽然我们尽力使得每个 FreeBSD 释出版本都很稳定,但是过程中仍然不免有时 会发现错误。在很罕见的情形下,这些错误会影响到安装过程。当我们发现这些 错误并且修正后,会将它们列在 FreeBSD 网站的 FreeBSD Errata(勘误表)中, 在您安装FreeBSD前应该 先看看勘误表中有没有什么问题会影响到您的安装。

关于所有释出版本的信息,包括勘误表,可以在 FreeBSD 网站发行版信息 一节中找到。


2.2.6. 准备安装介质

FreeBSD 可以通过下面任何一种安装介质进行安装:

安装介质

  • CDROM 或 DVD

  • 在同一计算机上的 DOS 分区

  • SCSI 或 QIC 磁带

  • 软盘

网络

  • 通过防火墙的一个 FTP 站点,或使用 HTTP 代理。

  • NFS 服务器

  • 一个指定的并行或串行接口

如果您购买了 FreeBSD 的 CD 或 DVD,那么您可以直接进入下一节 第 2.2.7 节

如果您还没有 FreeBSD 的安装文件,您应该回到 第 2.13 节 一节, 它介绍了如何准备所需要的安装介质。之后,您就可以回到这一节, 并从 第 2.2.7 节 继续。


2.2.7. 准备引导介质

FreeBSD 的安装过程开始于将您的电脑开机进入 FreeBSD 安装环境---并非在 其它的操作系统上运行一个程序。计算机通常使用安装在硬盘上的操作系统进行 引导,也可以配置成使用一张“bootable(可引导)”的软盘进行启动。 大多数现代计算机都可以从光驱进行引导系统。

Tip: 如果您有 FreeBSD 的安装光盘或 DVD(或者是您购买的,或者是您自己准备的。) 并且您的计算机可以从光驱进行启动 (通常在 BIOS 中会有 “Boot Order” 或类似的选项可以设置),那么您就可以跳过此小节。因为 FreeBSD 光盘及 DVD 光盘都是可 以引导的,用它们开机您不用做什么特别的准备。

一般来说,要建立安装盘(软盘)请依照下列步骤:

  1. 获取开机软盘映像文件

    开机软盘映像文件可以在您的安装介质的 floppies/ 目录下找到, 另外您也可以从下述网站的 floppies 目录下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/<arch>/<version>-RELEASE/floppies/. 将 <arch><version> 替换为您使用的计算机体系结构和希望安装的版本号。 例如,用于安装 i386 上的 FreeBSD 5.4-RELEASE 的文件的地址, 应该是 ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/5.4-RELEASE/floppies/

    软盘映像文件的扩展名是 .flp。 在 floppies/ 目录中包括了许多不同的影响文件, 随您安装的 FreeBSD 版本, 某些时候也随硬件的不同, 您需要使用的映像文件可能会有所不同。 如果您正在安装的是 FreeBSD 4.X 则通常只需要两张软盘的映像, 即 kern.flpmfsroot.flp。 如果您正在安装的是 FreeBSD 5.X 则您通常会需要三张软盘, 即 boot.flpkern1.flp, 以及 kern2.flp。 请查阅同一目录下的 README.TXT 文件以了解关于这些映像文件的最新信息。

    Note: 在安装 FreeBSD 5.3 之前的 5.X 系统时, 某些设备可能会需要另一张软盘来加载它们的驱动。 这些驱动在 drivers.flp 映像中提供。

    Important: 您的 FTP 程序必须使用 二进制模式 来下载这些映 像文件。有些浏览器只会用text (或ASCII ) 模式来传输数据,用这些浏览器下载的映像文件做成的软盘可 能无法正常开机。

  2. 准备软盘

    您必须为您下载的每一个映像文件准备一张软盘。并且请避免使用到坏掉的 软盘。最简单的方式就是您先将这些软盘格式化,不要相信所谓的已格式化的软 盘。在 Windows 下的格式化程序不会告诉您出现多少坏块,它只是简单的标记它 们为 “bad” 并且忽略它们。根据建议您应该使用全新的软盘来存放 安装程序。

    Important: 如果您在安装 FreeBSD 的过程中造成当机、冻结或是其它怪异现象,第一个 要怀疑的就是引导软盘。请用其它的软盘制作映像文件再试试看。

  3. 将映像文件写入软盘中

    .flp 文件 并非 一般的文件, 您不能直接将它们复制到软盘上。事实上它是一张包含完整磁盘内容的映像文件。这 表示您 不能 简单的使用 DOS 的 copy 命令将文件写到软盘上, 而必须使用特别的工具程序将映像文件直接写到软盘中。

    如果您使用 MS-DOSWindows 操作系统来制作引导盘,那么您可以使用我们提供 的 fdimage 程序来将映像文件写到软盘中。

    如果您使用的是光盘,假设光盘的驱动器符号为 E:, 那么请执行下面的命令:

    E:\> tools\fdimage floppies\kern.flp A:
    

    重复上述命令以完成每个 .flp 文件的写入,每换一个 映像文件都必须更换软盘;制作好的软盘请注明是使用哪个映像文件做的。如果您的映 像文件存放在不同的地方,请自行修改上面的指令指向您存放 .flp 文件的地方。要是您没有 FreeBSD 光盘,您可以到 FreeBSD 的 FTP 站点tools 目录 中下载。

    如果您在 UNIX 系统上制作软盘(例如其它 FreeBSD 机器),您可以使用 dd(1) 命令来将映像文件写到软盘中。如果您用 FreeBSD,可以执行下面的命令:

    # dd if=kern.flp of=/dev/fd0
    

    在 FreeBSD 中,/dev/fd0 指的是第一个软驱(即 A: 驱动器);/dev/fd1B: 驱动器,依此类推。其它的 UNIX 系统可能会用 不同的的名称,这时您就要查阅该系统的说明文件。

您现在可以安装 FreeBSD 了


2.3. 开始安装

Important: 默认情况下, 安装过程并不会改变任何您硬盘中的数据,除非您看到 下面的讯息:

Last Chance: Are you SURE you want continue the installation?

If you're running this on a disk with data you wish to save then WE
STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!

We can take no responsibility for lost disk contents!

在看到这最后的警告讯息前您都可以随时离开安装程序面不会变更您的硬盘。 如果您发现有任何设定错误,这时您可以直接将电源关掉而不会造成任何伤害。


2.3.1. 开机启动

2.3.1.1. 引导 i386 系统

  1. 从电脑尚未开机开始说起

  2. 将电脑电源打开。刚开始的时候它应该会显示进入系统设置菜单或 BIOS 要按哪个键,常见的是 F2F10DelAlt+S。不论是要按哪个键,请按它进入 BIOS 设置画面。有时您的计算机 可能会显示一个图形画面,典型的做法是按 Esc 将关掉这个图形 画面,以使您能够看到必要的设置信息。

  3. 找到设置开机顺序的选项,它的标记为 “Boot Order” 通常会列出一些设备让您选择,例如:FloppyCDROMFirst Hard Disk 等等。

    如果您要用软盘安装,请确定选到 floppy disk;如果您要用光盘安装, 请选择 CDROM。为了避免疑惑,请参考您的主板说明手册。

    储存设定并离开,系统应该会重新启动。

  4. 如果您用软盘安装,请将在 第 2.2.7 节 一节中制作好的第一张引导盘,里面包含kern.flp 文件的那张盘,放入软盘驱动器中。

    如果您是从光盘安装,那么开机后请将 FreeBSD 光盘放入光驱中。

    如果您开机后如往常一样并没有从软盘或光盘引导,请检查:

    1. 是不是软盘或光盘太晚放入面错失开机引导时间。如果是,请将它们 放入后重新开机。

    2. BIOS 设定不对,请重新检查 BIOS 的设定。

    3. 您的 BIOS 不支持从这些安装介质引导。

  5. FreeBSD 即将启动。如果您是从光盘引导,您会见到类似下面的画面:

    Verifying DMI Pool Data ........
    Boot from ATAPI CD-ROM :
     1. FD 2.88MB  System Type-(00)
    Uncompressing ... done
    
    BTX loader 1.00 BTX version is 1.01
    Console: internal video/keyboard
    BIOS drive A: is disk0
    BIOS drive B: is disk1
    BIOS drive C: is disk2
    BIOS drive D: is disk3
    BIOS 639kB/261120kB available memory
    
    FreeBSD/i386 bootstrap loader, Revision 0.8
    
    /kernel text=0x277391 data=0x3268c+0x332a8 |
    
    |
    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _
    

    如果您是从软盘引导,会看到类似下面的画画:

    Verifying DMI Pool Data ........
    
    BTX loader 1.00  BTX version is 1.01
    Console: internal video/keyboard
    BIOS drive A: is disk0
    BIOS drive C: is disk1
    BIOS 639kB/261120kB available memory
    
    FreeBSD/i386 bootstrap loader, Revision 0.8
    
    /kernel text=0x277391 data=0x3268c+0x332a8 |
    
    Please insert MFS root floppy and press enter:
    

    请根据提示将 kern.flp 软盘取出, 并插入 mfsroot.flp 这张盘, 然后按 Enter。 FreeBSD 5.3 和更高版本提供了另外一组软盘, 在 前一节 中已经介绍过了。 您只需从第一张软盘启动, 然后再需要时根据提示插入其他软盘。

  6. 不论是从软盘或光盘引导,您都会看到下面这段信息:

    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _
    

    您可以等待十秒, 或按 Enter (对于 FreeBSD 4.X 则接下来将是进入内核配置菜单)。


2.3.1.2. 引导 Alpha 系统

  1. 从电脑尚未打开电源开始。

  2. 找开电脑电源并等待屏幕上出现开机提示信息。

  3. 如您需要准备安装软盘,请参考第 2.2.7 节 。 将用 kern.flp 做的引导盘放入软驱中然后输入下列命令 (请视实际情况修改命令中的软驱盘符):

    >>>BOOT DVA0 -FLAGS '' -FILE ''
    

    如果您要从光盘引导,请将光盘放入光驱中然后输入下列命令开始安装 (请视情况修改命令中的光驱盘符):

    >>>BOOT DKA0 -FLAGS '' -FILE ''
    
  4. 然后 FreeBSD 就会启动。如果您从软盘引导,到某个阶段您会看到下面的信息:

    Please insert MFS root floppy and press enter:
    

    按照屏幕指示,将 kern.flp 软盘取出,换上 mfsroot.flp 然后按Enter键。

  5. 不论从软盘或光盘引导,您都会看到下面这段信息:

    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _
    

    您可以等待 10 秒或是按 Enter 跳过。之后就会进入内核 设定菜单。


2.3.2. 配置内核

Note: 从FreeBSD 5.0 版以后, 用户配置已经不赞成使用新的 device.hints(5) 方法,更多的信息 device.hints(5) 请访问 第 12.5 节

内核是操作系统最核心的部分。它负责很多工作, 包括存取系统上所有设备,如硬盘、网卡、声卡等等。每一个 FreeBSD 核心支持的设备都有其相对应的驱动程序。这些驱动程序的名称由两个或三个字母级成,譬如: sa 表示 SCSI 存取驱动程序;sio 表示串口 I/O 驱动程序(管理 COM 端口)。

当内核启动的时候,每个驱动程序会检查系统中是否有它所支持的设备。如果找到的话, 这些驱动程序就会配置这些设备的状态以代核心使用。

上述设备的检查我们称做 device probing(设备探测)。 但是很不幸地,这样做并不是完全安全的。因为有些硬件驱动程序没有办法想到共存, 有时找到这个设备却让另一个设备处在不稳定的状态。这是 PC 设计上的限制。

许多早期的称作 ISA 的设备--(相对于 PCI 设备而言)。ISA 设备的规格需要将硬件的某些数据写死在设备上,最具代表性的就是中断号(IRQ)以及 IO 端口号。这些设定值通常是通过改变设备上的 jumpers(跳线), 或是使用由厂商提供的 DOS 工具程序来改变。

这通常是问题的所在,因为这没办法让两个设备共同分享一个 IRQ 或是 IO 端口 地址。

新的设备都按照 PCI 规格设计,这些设备就没有上述限制;它们会参考 BIOS 中的设定然后动态分配 IRQ 及 IO 端口地址。

如果您的系统中有任何 ISA 设备,那么在设置 FreeBSD 驱动程序的时候您就 必须指定这些设备的 IRQ 及 IO 地址。这也是我们在 第 2.2.1 节一节中希望您先准备一份设备清单的用意。

仍然很不幸地,预设给某些设备使用的 IRQ 会跟内存地址互相冲突。这是因为 有些 ISA 设备出厂的设定值就会跟其它的设备冲突。撇开这个不谈,FreeBSD 驱动 程序通常都会根据各制造商设备的出厂设定值来设定,这也是为什么许多设备可 以在 FreeBSD 顺利驱动的原因。

在跑 FreeBSD 的时候根本不会有上冲突的问题,因为当两个设备互相冲突的 时候,其中一个设备将被停用(不论您用的是哪种操作系统)。

通常在第一次安装 FreeBSD 的时候才会有问题,因为内核希望尽是多包含一 些驱动程序,这样才能支持许多不同设备的配置。这意味着在找到的这些设备中 有可能设定值会互相冲突。FreeBSD 在探测系统设备的时候会按照一的顺序,如 果您的某个设备在较后面探测到,但是跟前面找到的设备设定冲突,那么在安装 FreeBSD 的时候,这个设备不一定能正确雇用。

因为如此,当您在安装 FreeBSD 前,可以先看看在系统内核中包含了哪些驱 动程序,如果您没有某些设备,则可以将它们的驱动程序删除或是在稍后您也 可以确认您有的设备的设定值有没有问题。

这听起来好像很复杂,但不全然如此。

图 2-1 显示的是内核能设置的第一个配置菜单。 我们推荐您选择Start kernel configuration in full-screen visual mode 选项, 因为这对新手来说比较容易。

Figure 2-1. 内核配置菜单

内核配置画面 (图图 2-2) 被分成四个部分:

  1. 在“active(可用)”区域的展开式选择菜单分为四个群,例如 Storage(储存设备)Network(网络设备)。 每个设备会显示一个对应的说明、由二或三个字母组成的驱动程序名称以及驱动程序 所使用的IRQ和内存地址。另外,如果可用的驱动程序跟另一个可用的驱动程序有冲突, 它们的驱动程序名称之后会显示 CONF 字样。同时栏目标题也会 显示在可用的设备中总共有几个设备有冲突。

  2. 在 Inactive(停用)区域的驱动程序仍然保留在内核中,但当内核启动的时候 并不会探测这些设备。这个区域的分组方式跟可用区一样。

  3. 第三区(信息显示区)显示的是目前所选择设备的细节项目设置,包括 IRQ 及 IO 端口地址。

  4. 第四区告诉您这个画面的操作按键。

Figure 2-2. 配置内核可视化视觉接口

在这个阶段,您总是会看到有冲突的设备被列出。请不要担心,因为这是正 常的;前面提到在安装的时候所有的设备都会被启用,而其中的某些设备就会跟 其它的设备产生冲突。

现在您必须逐一检查这些设备驱动程序,然后解决冲突的问题。

解决驱动程序冲突

  1. 按下 X 键可以将所选择区域的驱动程序完全展开以方便您 检阅。您可以使用方向键在可用设备区前后移动。

    图 2-3 显示按下 X 键 后的结果。

    Figure 2-3. 展开驱动程序清单

  2. 停用任何您没有的设备的驱动程序。要停用一个设备,用方向键移动将该 设备反白然后按下 Del 键,则此设备驱动程序就会被移到 Inactive Drivers(停用设备区) 列表。

    如果您不小心将一个设备停用,那么请按 Tab 切换到 Inactive Drivers 区, 选择被停用的设备,然后按下 Enter 键将它移回可用设备区。

    Warning请不要移除 sc0。这个驱动程序是控制屏幕 用的,除非您是通过串行线进行安装,否则请不要移除它。

    Warning如果您用的是 USB 键盘才可以停用 atkbd0 用一般 的键盘请保留此 atkbd0 设备驱动程序。

  3. 如果现在显示没有冲突,那么您可以跳过这一步骤。否则,剩下的冲突还是必 须解决。如果在信息显示区没有看到 “allowed conflict(允许冲突)”, 那么您必须改变这边显示的 IRQ 及内存地址, 必须变更设备 上面的 IRQ 及内存地址。

    要改变设备驱动程序的 IRQ 及 IO 端口地址,选择要变更的驱动程序然后 按 Enter 键。之后等光标移到第三区(信息显示区)时候您就 可以理发这些设置。您应该输入之前做硬件清单列表的时候所记录的 IRQ 及 IO 端 口地址。要完成更改请按 Q 键并回到可用设备区。

    如果您不确定该设定什么值,那么可以试试看 -1。 有些 FreeBSD 驱动程序在搜寻设备的时候可以安全找出设备的正确设定值;所以这里设置 -1 就是告诉这些驱动程序自行去尝试找出合适的设置。

    如果要直接在设备硬件上改变设定值,设定的方法每种设备都不大相同。有些 设备您必须将它从电脑中拆下来然后调整路线或是DIP开关;其它的可能厂商会提供 DOS 工具软盘,里面有程序可以更改这些设定。不论是哪一种方式,您都应该参考设备所附 的使用手册。很明显地,改变这些设定值必须重新开机后才会生效,所以您必须重新进 入 FreeBSD 安装程序。

  4. 当所有的冲突都解决了以后,您会看到类似图 2-4 的画面。

    Figure 2-4. 没有冲突的设备驱动程序状态画面

    如您所见,可用设备列表变得干净多了,只列出您系统中有的设备。

    现在您可以储存所做的改变,然后进到下一个安装步骤。按 Q 键离开设备配置界面,您会看到下面的信息:

    Save these parameters before exiting? ([Y]es/[N]o/[C]ancel)
    

    回答 Y 保存配置到内存(安装完成后将后保存到磁盘)然后开始 探测设备。在设备探测完毕后,sysinstall 就会启动并且显 示它的主界面。(图 2-5)。

    Figure 2-5. Sysinstall 主界面


2.3.3. 查看设备探测的结果

前面屏幕显示的最后几百行字会存在缓冲区中以便您查阅。

要浏览缓冲区,您可以按下 Scroll Lock 键,这会开启画面的 卷动功能。然后您就可以使用方向键或 PageUpPageDown 键来上下翻阅。再按一次 Scroll Lock 键将停止画面卷动。

在您浏览的时候会看到类似 图 2-6的画面。 真正的结果依照您的电脑装置而有所不同。

Figure 2-6. 典型的设备探测结果

avail memory = 253050880 (247120K bytes)
Preloaded elf kernel "kernel" at 0xc0817000.
Preloaded mfs_root "/mfsroot" at 0xc0817084.
md0: Preloaded image </mfsroot> 4423680 bytes at 0xc03ddcd4

md1: Malloc disk
Using $PIR table, 4 entries at 0xc00fde60
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1:<VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
isa0: <iSA bus> on isab0
atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0 <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci
0
usb0: <VIA 83572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr1
uhub0: 2 ports with 2 removable, self powered
pci0: <unknown card> (vendor=0x1106, dev=0x3040) at 7.3
dc0: <ADMtek AN985 10/100BaseTX> port 0xe800-0xe8ff mem 0xdb000000-0xeb0003ff ir
q 11 at device 8.0 on pci0
dc0: Ethernet address: 00:04:5a:74:6b:b5
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xec00-0xec1f irq 9 at device 10.
0 on pci0
ed0 address 52:54:05:de:73:1b, type NE2000 (16 bit)
isa0: too many dependant configs (8)
isa0: unexpected small tag 14
orm0: <Option ROM> at iomem 0xc0000-0xc7fff on isa0
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/@ mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x100 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
pppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/15 bytes threshold
plip0: <PLIP network interface> on ppbus0
ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master UDMA33
acd0: CD-RW <LITE-ON LTR-1210B> at ata1-slave PIO4
Mounting root from ufs:/dev/md0c
/stand/sysinstall running as init on vty0

仔细检查探测结果以确定 FreeBSD 找到所有您期望出现的设备。如果设备没有 探测到,那么就不会列出。如果此设备需要设定 IRQ 以及 IO 端口地址,请您再确定 是否设定的正确。

如果您需要改变某些设备的设置,您可以很容易地退出 sysinstall 程序,然后从头重新来过。这也有助您熟悉这些过程。

Figure 2-7. 选择离开 Sysinstall

在主界面使用方向键选择 Exit Install 您会看到 如下的信息:

                      User Confirmation Requested
         Are you sure you wish to exit? The system will reboot
           (be sure to remove any floppies from the drives).

                            [ Yes ]    No

如果 CDROM 还留在光驱里,而且选择了 [ Yes ], 则安装程序将重新启动。

如果您是从软盘启动,那么重新开机前您必须将 mfsroot.flp 软盘取出再换上 kern.flp 软盘。


2.4. 介绍 Sysinstall

sysinstall 是 FreeBSD 项目所提供的安装程序。 它以 console(控制台)为主,分为向个菜单及画面让您配置及控制安装过程。

sysinstall 菜单画面由方向键、EnterSpace、以及其它按键所控制。在主画面的 Usage 菜单 有这些按键的说明。

要查看这些说明,请将光标移到 Usage 项目,然后 [Select] 按键被选择,图 2-8, 然后按下 Enter 键。

安装画面的使用说明会显示出来,阅读完毕请按 Enter 键回到主 画面。

Figure 2-8. 选取 Sysinstall 主菜单的 Usage 项目


2.4.1. 选择 Documentation(说明文件) 菜单

用方向键从主菜单选择 Doc 条目然后按 Enter键。

Figure 2-9. 选择说明文件菜单

这将会进入说明文件菜单。

Figure 2-10. Sysinstall 说明文件菜单

阅读这些说明文件很重要。

要阅读一篇文章,请用方向键选取要阅读的文章然后按 Enter 键。 阅读中再按一下 Enter 就会回到说明文件画面。

若要回到主菜单,用方向键选择 Exit 然后按下 Enter 键。


2.4.2. 选择键盘对应(Keymap)菜单

如果要改变键盘按键的对应方式,请在主菜单选取 Keymap 然后按 Enter 键。一般情况下不改变引项,除非您使用了非标准键盘或非 美国键盘。

Figure 2-11. Sysinstall 主菜单

您可以使用上下键移动到您想使用的键盘对应方式,然后按下 Space 键以选取它;再按 Space 键可以取消选取。当您完成后,请选择 [ OK ] 然后按 Enter 键。

这一屏幕只显示出部分列表。选择 [ Cancel ]Tab 键将使用 默认的键盘对应,并返回到主菜单

Figure 2-12. Sysinstall 键盘对应菜单


2.4.3. 安装选项设置画面

选择 Options 然后按 Enter 键。

Figure 2-13. Sysinstall 主菜单

Figure 2-14. Sysinstall 选项设置

预设值通常可以适用于大部分的使用者,您并不需要改变它们。版本名称要 根据安装的版本进行变化。

目前选择项目的描述会在屏幕下方以蓝底白字显示。注意其中有一个项目是 Use Defaults(使用默认值)您可以由此项将所有的 设定还原为预设值。

可以按下 F1 来阅读各选项的说明。

Q 键可以回到主画面。


2.4.4. 开始进行标准安装

Standard(标准) 安装适用于那些 UNIX 或 FreeBSD 的初级使用者。用方向键选择 Standard 然后按 Enter 键可开始进入标准安装。

Figure 2-15. 开始进行标准安装


2.5. 分配磁盘空间

您的第一个工作就是要分配 FreeBSD 用的硬盘空间以便 sysinstall 先做好一些准备。为了完成这个工作,您必须先对 FreeBSD 如何找到 磁盘信息做一个了解。


2.5.1. BIOS 磁盘编号

当您在系统上安装配置 FreeBSD 之前,有一个重要的事情一定要注意,尤其 是当您有多个硬盘的时候。

在 pc 架构,当您跑像 MS-DOSMicrosoft Windows 这种跟 BIOS 相关的操作 系统的时候,BIOS 有能力改变正常的磁盘顺序,然后这些操作系统会跟着 BIOS 做改变。 这让使用者不一定非要有所谓的 “primary master” 硬盘开机。许多人发 现最简单而便宜备份系统的方式就是再去买一块一模一样的硬盘,然后定期将数据从第 一块硬盘复制到第二个硬盘,使用 Ghost®XCOPY。所以,当第一个硬盘死了,或者是被病毒破坏, 或者有坏轨道,他们可以调整 BIOS 中的开机顺序而直接用第二块硬盘开机。这跟将机壳 拆开,把第二块硬盘跟第一块硬盘对调(要调jumper)有同样的效果,差别就是不用拆壳; 因此,对有这方面需求的人而言,直接在 BIOS 中设定非常方便。

比较昂贵,配有 SCSI 控制卡的系统通常可以延伸 BIOS 的功能来让 SCSI 设备(可达七个) 达到类似改变顺序的功能。

习惯于使用这种方式的使用者可能会感到惊讶,因为在 FreeBSD 中并非如此。 FreeBSD 不会参考 BIOS,而且也不知道所谓的 “BIOS 逻辑磁盘对应”。 是怎么回事。这会让人感觉很疑惑,明明就是一样的硬盘而且资料也完全从另一块 复制过来的,结果却没办法像以前那样用。

当使用 FreeBSD 以前,请将 BIOS 中的硬盘开机顺序调回正常的顺序,并且以后 不要再改变。如果您仍然需要交换硬盘,那请用硬件的方式,打开机壳,调整调线。


2.5.2. 使用 FDisk 创建分区

Note: 如果不再做改变,数据将会写进硬盘。如果您犯了一个错误想重新开始,请选择 sysinstall 安装程序的退出按钮(exit)。或按 U 键来 Undo 操作。如果您的操作没有结果,您总可以重新启动您 的计算机来达到您的目的。

当您在 sysinstall 主菜单选择使用标准安装 后,您会看到下面的信息:

                                 Message
 In the next menu, you will need to set up a DOS-style ("fdisk")
 partitioning scheme for your hard disk. If you simply wish to devote
 all disk space to FreeBSD (overwriting anything else that might be on
 the disk(s) selected) then use the (A)ll command to select the default
 partitioning scheme followed by a (Q)uit. If you wish to allocate only
 free space to FreeBSD, move to a partition marked "unused" and use the
 (C)reate command.
                                [  OK  ]

                      [ Press enter or space ]

如屏幕指示,按 Enter 键,然后您就会看到一个列表 列出所有在探测设备的时候找到的硬盘。图 2-16 范例显示的是有找到两个 IDE 硬盘的情形,这两个硬盘分别为 ad0ad2

Figure 2-16. 选择要分区的硬盘

您可能正在奇怪,为什么 ad1 没有列出来? 为什么遗失了呢?

试想,如果您有两个 IDE 硬盘,一个是在第一个 Primary master,一个是 Secondary master,这样会发生什么事呢?如果 FreeBSD 依照找到的顺序来为他们 命名,如 ad0ad1 那么就不会有什么问题。

但是,现在问题来了。如果您现在想在 primary slave 加装第三个硬盘, 那么这个硬盘的名称就会是 ad1,之前的 ad1 就会变成ad2。 这会造成什么问题呢?因为设备的名称(如ad1s1a) 是用来寻找文件系统的,因此您可能会发现,突然,您有些文件系统从此无法正确 地显示出来,必须修改 FreeBSD 配置文件(译注:/etc/fstab)才可以正确显示。

为了解决这些问题,在配置内核的时候可以叫 FreeBSD 直接用 IDE 设备所 在的位置来命名,而不是要据的到的顺序。使用这种方式的话,在 secondary master 的 IDE 设备就 永远是 ad2, 即使您的系统中没有ad0ad1 也不受影响。

此为 FreeBSD 内核的默认值,这也是为什么上面的画面只显示 ad0ad2的原因。 画面上这台机器的两颗硬盘是装在 primary 及 secondary 的 master 上面;并没有任何一个 硬盘安装在 slave 插槽上。

您应该选择您想安装 FreeBSD 的硬盘,然后按下 [ OK ]。之后 FDisk 就会开始,您会看到类似 图 2-17的画面。

FDisk 的显示画面分为三个部分。

第一部分是画面上最上面两行,显示的是目前所选择的硬盘的信息。包含它的 FreeBSD 名称、硬盘分布以及硬盘的总容量。

第二部分显示的是目前选择的硬盘上有哪些分区,每个分区的开始及结束位置、 所占容量、FreeBSD 名称、它们的描述以及类别(sub-type)。此范例显示有两个分区、 一个大的 FAT 分区,(很可能是 MS-DOSWindowsC: )、以及一个扩展分区(在 MS-DOSWindows 里 面还可以包含逻辑分区)。

第三个部分显示 FDisk 中可用的命令。

Figure 2-17. 典型的尚未编辑前的 Fdisk 分区表

接下来要做的事跟您要怎么给您的硬盘分区有关。

如果您要让 FreeBSD 使用整个硬盘(稍后您确认要 sysinstall 继续安装后会删除所有这个硬盘上的资料),那么您就可以按 A 键(Use Entire Disk ) 目前已有的分区都会被删除,取而代之的是一个小的,标示为 unused 的分区,以及一个大的 FreeBSD 分区。之后,请用方向键将光标移到这个 FreeBSD 分区,然后按 S 以将此分区高为开机启动分区。您会看 到类似图 2-18的画面。注意在Flags 栏目的 A 记号表示这个分区是 启动 状态, 并且会由此分区开机。

如果要删除已的分区以空出空间给 FreeBSD,您可以将光标移动到要删除 的分区后按 D 键。然后就可按 C 键,会出现 对话框请您输入要创建的分区的大小。输入合适的大小后按 Enter 键。默认情况下,这个对话框中的值为您可以给这个分区分配的可能的最大值。 它可能是最大的邻接分区或未分配的整个硬盘大小。

如果您已经建立好给 FreeBSD 的分区(使用像 PartitionMagic 类似的工具),那么您可以按下 C 键来建立一个新 的分区。同样的,会有对话框询问您要建立的分区的大小。

Figure 2-18. Fdisk 分区使用整个硬盘

完成后,按 Q 键。您的变更会存在 sysinstall 中,但是还不会真正写入您的硬盘。


2.5.3. 安装多重引导

在这步骤您可以选择要不要安装一个多重引导管理器。一般而言,如果碰到 下列的情形,您应该选择要安装多重引导管理程序。

  • 您有一个以上的硬盘,并且 FreeBSD 并不是安装在第一个硬盘上。

  • 您可以在一个硬盘上,除了 FreeBSD,您还有安装其它的操作系统;然后 您想要选择在开机的时候要进入哪个系统。

如果您在这台机器上只安装一个 FreeBSD 操作系统,并且安装在第一个硬盘, 那么选择 Standard 安装就可以了。如果您已经使用 了一个第三方的多重引导程序,那么请选择 None

选择好配置后请按 Enter

Figure 2-19. Sysinstall 多重引导管理程序

按下 F1 键所显示的在线说明中有讨论一些操作系统共存 可能发生的问题。


2.5.4. 在其它硬盘上创建分区

如果您的系统上有一个以上的硬盘,在选择完多重引导管理程序后会再回到 选择硬盘的画面。如果您要将 FreeBSD 安装在多个硬盘上,那么您可以在这里选择 其它的硬盘,然后重复使用 FDisk 来建立分区。

Important: 如果您想让 FreeBSD 来管理其它的硬盘,那么两个硬盘都必须安装 FreeBSD 的多重引导管理程序。

Figure 2-20. 离开选择硬盘画面

Tab 键可以在您最后选择的硬盘、 [ OK ] 以及 [ Cancel ] 之间进行切换。

Tab 键将光标移动到 [ OK ]然后按 Enter 键继续安装过程。


2.5.5. 使用Disklabel 创建分区

您现在必须在刚刚建立好的分区中规划一些分区。请记住,每个分区代号是 ah, 并且分区 partitions b, c以及 d 为习惯使用的特殊分区,不应该随意变动。

某些应用程序可以利用一些特殊的分区而达到较好的效果,尤其是分区分散 在不同的硬盘的时候。但是,现在您是第一次安装FreeBSD,所以不需要去烦恼如 何分割您的硬盘。最重要的是,装好FreeBSD然后学习如何使用它。当您对FreeBSD 有相当程序的熟悉后,您可以随时重新安装FreeBSD,然后改变您分区的方式。

下面的范例中有四个分区--一个是磁盘交换分区,别外三个是文件系统。

Table 2-2. 为第一个硬盘分区

分区 文件系统 大小 描述
a / 100 MB 这是一个根文件系统(root filesystem)。任何其它的文件系统都会 挂在根目录(译注:用根目录比较亲切)下面。 100 MB 对于要目录来说 是合理的大小,因为您往后并不会在这里存放太多的数据;在安装FreeBSD后会 用掉约 40 MB 的根目录空间。剩下的空间是用来存放临时文件用的,同时, 您也应该预留一些空间,因为以后的FreeBSD版本可能会需要较多的 /(根目录)空间。
b N/A 2-3 x RAM

此分区为系统磁盘交换分区(swap space)。选择正确的交换空间 大小可是一门学问唷。一般来说,交换空间的大小应该是您系统上内存(RAM) 大小的2到3倍。交换空间至少要有 64 MB 因此,如果您的电脑上的RAM比 32 MB 小,请将交换空间大小设为 64 MB。

如果您有一个以上的硬盘,您可以在每个硬盘上都配置交换分区。FreeBSD会利用 第个硬盘上的交换空间,swap速度会比较快。如果是这种情形,先算出您总共需 要的交换空间大小(如128 MB),然后除以您拥有的硬盘数目(如2块),算 出的结果就是每个硬盘上要配置的交换空间的大小。在这个例子中,第个硬盘的交 换空间为 64 MB

e /var 50 MB /var 目录会存放不同长度的文件、日志以及 其它管理用途的文件。大部分这些文件都是FreeBSD每天在运行的时候会读取或 是写入的。当这些文件放在另外的文件系统(译注:即/var)可以避免影响到 其它目录下面类似的文件存取机制。
f /usr 剩下的硬盘空间 您所有的其它的文件通常都会存在/usr 目录以及其子目录下面。

如果您要将FreeBSD安装在一个以上的硬盘,那么您必须在您配置的其它分区上 再建立分区。最简单的方式就是在第个硬盘上建立两个分区,一个是交换分区,一个 是文件系统分区。

Table 2-3. 为其它磁盘分区

分区 文件系统 大小 描述
b N/A 见描述 之前提过,交换分区是可以跨硬盘的。但是,即使 a 分区没有使用,习惯上还是会把交换分区放在 b 分区上。
e /diskn 剩下的硬盘空间 剩下的空间是一个在的分区,最简单的做法是将之规划为 a分区而不是e分区。然而, 习惯上a分区是保留给根目录 (/) 用的。您不一定要遵守这个习惯,但是sysinstall 会,所以照着它做会使您的安装比较清爽、干净。您可以将这些文件系统挂在任何 地方,本范例建议将它们挂在/diskn 目录,n 依据每个硬盘而有所不同,但是,您喜欢的话 也可将它们挂在别的地方。

分区的配置完成后,您可以用sysinstall. 来建立它们了。您会看到下面的信息:

                                 Message
 Now, you need to create BSD partitions inside of the fdisk
 partition(s) just created. If you have a reasonable amount of disk
 space (200MB or more) and don't have any special requirements, simply
 use the (A)uto command to allocate space automatically. If you have
 more specific needs or just don't care for the layout chosen by
 (A)uto, press F1 for more information on manual layout.

                                [  OK  ]
                          [ Press enter or space ]

按下 Enter 键开始FreeBSD分区表编辑器,称做 Disklabel

图 2-21 显示您第一次执行 Disklabel的画面。画面分为三个区域。

前几行显示的是您正在编辑的硬盘以及您正在建立的slice位于哪个分区上。 (在这里, Disklabel 使用的是 分区名称 而不是 slice 名)。此画面也会显示slice还有 多少空间可以使用;亦即,有多余的空间,但是尚未指派分区。

画面中间区域显示已建立的区区,每个分区的文件系统名称、所占的大小以及 一些关于建立这些文件系统的参数选项。

下方的第三区显示在 Disklabel中可用的按键。

Figure 2-21. Sysinstall Disklabel 编辑器

Disklabel 您可以自动配置分区以及给它们预设 的大小。您可以按 A键使用此功能。您会看到类似 图 2-22的画面。根据您硬盘的大小,自动分配所配置 的大小不一定合适。但是没有关系,您并不一定要使用预设的大小。

Note: 从 FreeBSD 4.5开始,自动配置会给/tmp 目录一个独立分区,而不是附属在 / 之下。这样可以 避免将一些临时文件放到根目录中(译注:可能会用完根目录空间)。

Figure 2-22. Sysinstall Disklabel 编辑器-使用自动配置

如果您不想使用默认的分区布局, 则需要用方向键移动光标并选中第一个分区, 然后按 D 来删除它。 重复这一过程直到删除了所有推荐的分区。

要建立第一个分区 (a, 作为 / -- 根文件系统), 请确认您已经在屏幕顶部选中了正确的 slice, 然后按 C。 接下来将出现一个对话框, 要求您输入新分区的尺寸 (如 图 2-23 所示)。 您可以输入以块为单位的尺寸, 或以 M 表示MB、 G 结尾表示GB, 或者 C 表示柱面数的方式来表达尺寸。

Note: 从 FreeBSD 5.X 开始, 用户可以: 使用 Custom Newfs (Z) 选项来选择 UFS2 (在 FreeBSD 5.1 和更高版本中的默认值)。 用 Auto Defaults 来创建, 然后用 Custom Newfs 选项, 或在创建文件系统时指定 -O 2。 如果您使用了 Custom Newfs选项, 不要忘记增加 -U 来启用 SoftUpdates!

Figure 2-23. 根目录使用空间

显示在对话框中的默认大小是使用整个分区,您可以用 Backspace键删除这些数字然后按照上述方式输入您想要的 大小,如64M图 2-24), 然后按[ OK ]

Figure 2-24. 编辑要分区大小

输入完大小后接着部您要建立的分区是文件系统还是交换空间,如 图 2-25所示。第一个分区是文件系统,所以 确认选择 FS后按Enter键。

Figure 2-25. 选择根分区类型

最后,因为您要建立的是一个文件系统,所以必须告诉 Disklabel 这个文件系统要挂接在什么地方,如 图 2-26所示。根文件系统的挂接点 /, 所以请输入 /,然后按 Enter键。

Figure 2-26. 选择根挂接点

刚刚制作好的分区会显示在画面上。您应该重复上述的动作以建立其它的 分区。当建立交换空间的时候,系统不会问您要将它挂接在哪里,因为交换空间是不用 挂在系统上的。当您在建立最后一个分区/usr的时候,您可以 直接使用默认的大小,即所有此分区剩余的空间。

您最终的 FreeBSD DiskLabel 编辑器画面会类似 图 2-27, 实际数字按您的选择而有所不同。按下 Q 键完成分区的建立。

Figure 2-27. Sysinstall Disklabel 编辑器


2.6. 选择要安装的软件包

2.6.1. 选择要安装的软件包

安装哪些软件包在很大程度上取决于系统将被用来做什么,以及有多少可用的磁盘空间。 内建的选项包括了运行所需要的最小系统,到把所有软件包全都装上的常用配置。 UNIX 或 FreeBSD 新手通常直接选择一个设定好的软件包就可以了, 而有经验的使用者则可以考虑自己订制安装哪些软件包。

按下 F1 可以看到有关软件包的更多选项信息, 以及它们都包含了哪些软件,之后,可以按 Enter 回到软件包选择画面。

如果您想要使用图形界面, 则必须选择软件包名称开头是 X 的那些软件包。 对于 X 服务器的配置, 以及选择默认的桌面管理器这样的工作必须在 FreeBSD 安装完成之后才能作。 关于配置 X 服务器的更多资料可以在 第 5 章 找到。

默认的 X11 版本取决于您所安装的 FreeBSD 版本。 对于 FreeBSD 5.3 以前的版本, 安装的将是 XFree86 4.X。 对于 FreeBSD 5.3 和以后的版本, 默认的则是 Xorg

如果需要定制内核, 您还需要选择包含源代码的那个选项。 要了解为什么应该编译和构建新的内核, 请参见 第 8 章

显然, 包含所有组件的系统是最万能的。 如果磁盘空间足够, 用光标键选择 图 2-28 中的 All 并按 Enter。 如果担心磁盘空间不够的话, 则选择最合适的选项。 不要担心选择的是否是最合适的, 因为其他软件包可以在安装完毕后再加入进来。

Figure 2-28. 选择软件包


2.6.2. 安装ports软件包

当选择完您想要安装的部分后,接着会询问您要不要安装FreeBSD Ports 软件包;Ports软件包可以让您简单方便地安装软件包。Ports本身并不包含编辑 软件所需要的程序源代码,而是一个包含自动下载、编辑以及安装的文档集合。 第 4 章 一章讨论如何使用Ports.

安装程序并不会检查您是否有足够的硬盘空间来放ports,所以,如果要安装 ports软件所,请先确定您有足够的硬盘空间。 FreeBSD 5.4版本 FreeBSD Ports Collection 大约占用 400 MB 大小的硬盘空间。您要为 这些版本设置大一点的值来安装它们。

                         User Confirmation Requested
 Would you like to install the FreeBSD Ports Collection?

 This will give you ready access to over 12,300 ported software packages,
 at a cost of around 400 MB of disk space when "clean" and possibly much
 more than that if a lot of the distribution tarballs are loaded
 (unless you have the extra CDs from a FreeBSD CD/DVD distribution
 available and can mount it on /cdrom, in which case this is far less
 of a problem).

 The Ports Collection is a very valuable resource and well worth having
 on your /usr partition, so it is advisable to say Yes to this option. 

 For more information on the Ports Collection & the latest ports,
 visit: 
     http://www.FreeBSD.org/ports  

                              [ Yes ]     No

选择 [ Yes ] 将会安装 Ports Collection, 而选择 [ No ] 则将跳过它。 选好后按 Enter 继续。 此后, 选择安装的软件包的屏幕将再次出现。

Figure 2-29. 确认您要安装的软件包

如果对您的选择感到满意,请选择Exit 退出,确保[ OK ] 被高亮显示,然后按Enter 继续。


2.7. 选择您要使用的安装介质

如果要从 CDROM 或 DVD安装,使用方向键将光标移到 Install from a FreeBSD CD/DVD。确认 [ OK ] 被选取,然后按 Enter 开始安装程序。

如果要使用其它的方式安装,请选择适当的安装介质然后按照屏幕指示 进行安装。

F1 可以显示安装介质的在线说明。按一下 Enter 可返回选择安装介质画面。

Figure 2-30. 选择安装介质

FTP安装模式: 使用FTP安装,有三种方式:主动式(active)FTP、被动式(passive)FTP 或是透过HTTP代理服务器。

主动式FTP: 从FTP服务器安装

这个选项将会使所有的FTP传输使用 “Active”模式。 这将无法通过防火墙,但是可以使用在那些比较早期,不支持被动模式的FTP站。 如果您的连接在使用被动(默认值)模式卡住了,请换主动模式看看!

被动模式FTP: 通过防火墙从FTP服务器安装

此选项会让 sysinstall 使用 “Passive”模式来安装。这使得使用者可以穿过 不允许用非固定TCP PORTS连入的防火墙。

FTP 透过 HTTP 代理服务器: 透过HTTP代理服务器,由 FTP服务器安装

此选项会让 sysinstall 通过HTTP协议 (像浏览器一样)连到proxy服务器。proxy服务器会解释送出的请求, 然后通知FTP服务器。因为通过HTTP协议,所以可以穿过防火墙。 要用这种方式,您必须指定proxy服务器的地址。

对于一个 FTP 代理服务器而言,通常在使用者登入名称中加入您要登入的 服务器的用户名,加在 “@” 符号后面。然后代理服务器就会 “假装” 成一个真的服务器。 例如, 假设您要从 ftp.FreeBSD.org 安装,通过 FTP 代理服务器 foo.example.com,使用1024端口。

在这种情况下,您可以到 options 菜单,将 FTP username 设为 ftp@ftp.FreeBSD.org,密码设为您的电子邮件地址。 安装介质部分,指定FTP (或是被动式 FTP,如果代理服务器支持的话) 以及URL为 ftp://foo.example.com:1234/pub/FreeBSD

因为ftp.FreeBSD.org/pub/FreeBSD 目录会被抓取到 foo.example.com之下,您就可以从 这台 机器 (会从 ftp.FreeBSD.org 抓取文件) 安装。


2.8. 安装确认

到此为止,可以开始进行安装了,这也是您避免更动到您的硬盘的最后机会。

                       User Confirmation Requested
 Last Chance! Are you SURE you want to continue the installation?

 If you're running this on a disk with data you wish to save then WE
 STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!

 We can take no responsibility for lost disk contents!

                             [ Yes ]    No

选择 [ Yes ] 然后按下 Enter 确认安装

安装所需的时间会根据您所选择的软件、安装介质以及您电脑的速度而有所不同。 在安装的过程中会有一些信息来显示目前的进度。

当您看到下面的信息表示已经安装完成了:

                               Message

Congratulations! You now have FreeBSD installed on your system.

We will now move on to the final configuration questions.
For any option you do not wish to configure, simply select No.

If you wish to re-enter this utility after the system is up, you may
do so by typing: /stand/sysinstall .

                                 [ OK ]

                      [  Press enter to continue  ]

按下 Enter 以进行安装后的配置。

选择 [ No ] 然后按 Enter 会取消安装,不会对您的系统造成更动。您会看到下面的信息:

                                Message
Installation complete with some errors.  You may wish to scroll
through the debugging messages on VTY1 with the scroll-lock feature.
You can also choose "No" at the next prompt and go back into the
installation menus to retry whichever operations have failed.

                                 [ OK ]

产生这个信息是因为什么东西也没有安装,按下 Enter 后会离开安装程序回到主安装界面。从主安装界面可以退出安装程序。


2.9. 安装后的配置

安装成功后, 就可以进行进一步的配置了。 引导新安装的 FreeBSD 系统之后, 使用 sysinstall (/stand/sysinstall 如果您使用的是 FreeBSD 5.2 之前的版本), 并选择 Configure


2.9.1. 配置网卡

如果您之前配置用 PPP 通过 FTP 安装,那么这个画面将不会出现;正像所说 的那样,您可以稍后再做配置。

如果想更多的了解网卡或将FreeBSD配置为网关或路由器,请参考 Advanced Networking 的相关文章。

                      User Confirmation Requested
   Would you like to configure any Ethernet or SLIP/PPP network devices?

                             [ Yes ]   No

如果要配置网卡,请选择 [ Yes ] 然后按 Enter。 否则请选择 [ No ] 继续。

Figure 2-31. 选择网卡设备

用方向键选择您要配置的网卡接口,然后按Enter

                      User Confirmation Requested
       Do you want to try IPv6 configuration of the interface?

                              Yes   [ No ]

目录私人区域网络IP协议IPv4已经足够,所以选择 [ No ] 然后按 Enter

如果想试试新的IP通信协议 IPv6 ,使用 RA 服务,请选择 [ Yes ] 然后按 Enter。 寻找 RA 服务器将会花费几秒的时间。

                             User Confirmation Requested
        Do you want to try DHCP configuration of the interface?

                              Yes   [ No ]

如果您不需要 DHCP (Dynamic Host Configuration Protocol 动态主机配置协议) ,选择 [ No ] 然后按Enter

选择 [ Yes ] 会执行dhclient, 如果成功,它会自动将网络配置信息填上。更多的信息请参考 第 23.5 节

下面的网络配置显示了怎样把以太网设备配置成区域网络网关的角色。

Figure 2-32. 配置 ed0接口

使用Tab 键可以在各个栏目之间进行切换,请输入适当 的信息:

Host(机器名称)

完整的机器名称,例如本例中的 k6-2.example.com

Domain(域名)

您机器所在的域名称,如本例的 example.com

IPv4 Gateway(IPv4网关)

输入将数据包传送到远端网络的机器IP地址。只有当机器是网络上的 一个接点时才要输入。如果这台机器要作为您局域网的网关, 请将此处设为空白。IPv4网关,也被称作默认网关或 默认路由器。

域名服务器

本地网络中的域名服务器的IP地址。本例中假设机器所在的网络中 没有域名服务器,所以填入的是ISP提供的域名服务器地址 (208.163.10.2。)

IPv4 地址

本机所使用的IP地址。本例为 192.168.0.1

子网掩码

本范例中的IP地址属于一个C类地址 (192.168.0.0 - 192.168.255.255)。默认的子网掩码为 (255.255.255.0)。

ifconfig 额外参数设定

任何ifconfig命令跟网卡接口有关的参数。 本范例中没有。

使用 Tab 键选择 [ OK ]然后按 Enter键。

                      User Confirmation Requested
        Would you like to Bring Up the ed0 interface right now?

                             [ Yes ]   No

选择 [ Yes ] 然后按 Enter 将会将机器的网卡转为启用状态。机器下次启动 的时候即可使用。


2.9.2. 配置网关

                       User Confirmation Requested
       Do you want this machine to function as a network gateway?

                              [ Yes ]    No

如果这台机器要作为本地网络和其它机器之间传送数据包的网关,请选择 [ Yes ] 然后按 Enter。 如果这台机器只是网络上的一个节点主,请选择 [ No ] 并按Enter 继续。


2.9.3. 配置网络服务

                      User Confirmation Requested
Do you want to configure inetd and the network services that it provides?

                               Yes   [ No ]

如果选择 [ No ] ,许多网络服务,如 telnetd 将不会启用。这表示远端用户将无法 telnet 进入这台机器。本机器上的用户还是可以 telnet到远端机器的。

这些服务可以在安装完成后修改/etc/inetd.conf 配置文件来启用它们。请参阅 第 23.2.1 节 以获得更多的信息。

如果您想现在就配置这些网络服务,请选择[ Yes ] , 然后会看到下面的信息:

                      User Confirmation Requested
The Internet Super Server (inetd) allows a number of simple Internet
services to be enabled, including finger, ftp and telnetd.  Enabling
these services may increase risk of security problems by increasing
the exposure of your system.

With this in mind, do you wish to enable inetd?

                             [ Yes ]   No

选择 [ Yes ] 继续。

                      User Confirmation Requested
inetd(8) relies on its configuration file, /etc/inetd.conf, to determine
which of its Internet services will be available.  The default FreeBSD
inetd.conf(5) leaves all services disabled by default, so they must be
specifically enabled in the configuration file before they will
function, even once inetd(8) is enabled.  Note that services for
IPv6 must be separately enabled from IPv4 services.

Select [Yes] now to invoke an editor on /etc/inetd.conf, or [No] to
use the current settings.

                             [ Yes ]   No

选择 [ Yes ] 将允许您添加网络服务 (将相应网络服务每行开头的#除掉即呆。

Figure 2-33. 编辑 inetd.conf配置文件

在加入您想启用的服务后,按下 Esc键会出现一个 对话框可以让您离开以及保存修改。


2.9.4. 匿名 FTP

                      User Confirmation Requested
 Do you want to have anonymous FTP access to this machine?

                              Yes    [ No ]

2.9.4.1. 不允许匿名 FTP访问

选择默认的 [ No ] 并按下 Enter 键将仍然可以让在这台机器上有账号的用户访问 FTP。


2.9.4.2. 允许匿名 FTP访问

如果您选择允许匿名 FTP 存取,那么网络中任何人都可以使用FTP来访问您 的机器。在启用匿名访问之前应该考虑网络的安全问题。如果要知道更多有关网络 安全的信息,请参阅 第 14 章

要启用FTP匿名访问,用方向键选择 [ Yes ] 然后按 Enter键。您会看到下面(或类似)的画面:

Figure 2-34. 默认的匿名 FTP 配置

F1 键可以查看在线帮助文档:

This screen allows you to configure the anonymous FTP user.

The following configuration values are editable:

UID:     The user ID you wish to assign to the anonymous FTP user.
         All files uploaded will be owned by this ID.

Group:   Which group you wish the anonymous FTP user to be in.

Comment: String describing this user in /etc/passwd


FTP Root Directory:

        Where files available for anonymous FTP will be kept.

Upload subdirectory:

        Where files uploaded by anonymous FTP users will go.

默认的FTP根目录将放在 /var目录下。如果您 的/var目录空间不足以应付您的FTP需求,您可以将FTP的根目录改为 /usr 目录下的 /usr/ftp 目录。

当您对一切配置都满意后,请按 Enter 键继续。

                          User Confirmation Requested
         Create a welcome message file for anonymous FTP users?

                              [ Yes ]    No

如果您选择 [ Yes ] 并按下 Enter键,系统会自动打开文本编辑器让您编辑FTP的欢迎信息。

Figure 2-35. 编辑FTP欢迎信息

此文本编辑器叫做 ee。按照指示修改信息文本或是 稍后再用您喜爱的文本编辑器来修改。请记住画面下方显示的文件位置。

Esc 将弹出一个默认为 a) leave editor的对话框。按 Enter 退出并继续。再次按 Enter 将保存修改。


2.9.5. 配置网络文件系统

网络文件系统 (NFS) 可以让您可以在网络上共享您的文件。一台机器可以 配置成NFS服务器、客户端或两者并存。请参考 第 23.3 节 以获得更多的信息。


2.9.5.1. NFS 服务器

                       User Confirmation Requested
 Do you want to configure this machine as an NFS server?

                              Yes    [ No ]

如果您不想安装网络文件系统,请选择 [ No ] 然后按 Enter键。

如果您选择 [ Yes ] 将会出现一个对话框提醒您 必须先建立一个 exports 文件。

                               Message
Operating as an NFS server means that you must first configure an
/etc/exports file to indicate which hosts are allowed certain kinds of
access to your local filesystems.
Press [Enter] now to invoke an editor on /etc/exports
                               [ OK ]

Enter 键继续。系统会启动文本编辑器让您编辑 exports 文件。

Figure 2-36. 编辑 exports文件

按照指示加入真实输出的文件目录或是稍后用您喜爱的编辑器自行编辑。 请记下画面下方显示的文件名称及位置。

按下 Esc 键会出现一具对话框,默认选项是 a) leave editor。按下 Enter 离开并继续。


2.9.5.2. NFS 客户端

NFS 客户端允许您的机器访问NFS服务器。

                       User Confirmation Requested
 Do you want to configure this machine as an NFS client?

                              Yes   [ No ]

按照您的需要,选择 [ Yes ][ No ] 然后按 Enter


2.9.6. 安全配置

“安全配置” 中包含了一些可以通过启用或停用某些程序 来达到某些程序的安全性配置。安全配置越严格,则默认启动的程序就越少。 基本的原则是:除非必要,否则不要执行一些可有有无的程序。

请注意,安全文件的配置都是默认值,在安装完成后您可以随时通过 编辑 /etc/rc.conf配置文件来改变这些配置。 如果想得到更多的信息请参阅 rc.conf(5) 手册。

下表说明每一种安全等级的意义。每列所代表的是安全等级,每行所 代表的是程序或功能是启用还是停用。

Table 2-4. 可能的安全等级

  极/高度安全 中度安全
sendmail(8)
sshd(8)
portmap(8) 不一定 [a]
NFS server
securelevel(8) [b]
Notes:
a. 如果之前安装时配置机器为NFS客户端或服务器,则会启用些 项目。
b. 如果您选择的安全等级配置 securelevel 为 “极度或高度” 或 “High”,请阅读init(8)手册并特别注意有关安全 等级意义的部分;否则稍后您可能会过到很大的困难!
                       User Confirmation Requested
 Do you want to select a default security profile for this host (select
 No for "medium" security)?

                            [ Yes ]    No

选择 [ No ] 并按 Enter 会将安全等级高为中度安全。

选择 [ Yes ] 并按 Enter将允许您选择不同程序的安全等级。

Figure 2-37. 选择安全等级

F1 显示在线帮助;按Enter 键可以回到选择画面。

如果您没有什么特殊的等级需求,请用方向键选择 中度, 确定选择了 [ OK ] 然后按Enter

依据您选择的安全等级,会显示相对应的确认信息。

                                 Message

Moderate security settings have been selected.

Sendmail and SSHd have been enabled, securelevels are
disabled, and NFS server setting have been left intact.
PLEASE NOTE that this still does not save you from having
to properly secure your system in other ways or exercise
due diligence in your administration, this simply picks
a standard set of out-of-box defaults to start with.

To change any of these settings later, edit /etc/rc.conf

                                  [OK]
                                 Message

Extreme security settings have been selected.

Sendmail, SSHd, and NFS services have been disabled, and
securelevels have been enabled.
PLEASE NOTE that this still does not save you from having
to properly secure your system in other ways or exercise
due diligence in your administration, this simply picks
a more secure set of out-of-box defaults to start with.

To change any of these settings later, edit /etc/rc.conf

                                  [OK]

按下 Enter 继续安装后面的配置。

Warning安全等级并非万能药!即使您选择极度安全,您还是必须时常阅读 第 C.1 节邮件列表中有关安全的部分、使用有效的密码以及平常就注意安全问题。 这里只是稍为配置一下常用的安全等级而已。


2.9.7. 配置系统终端

系统提供了几个选项可以让您配置终端的表现方式。

                      User Confirmation Requested
       Would you like to customize your system console settings?

                              [ Yes ]  No

要查阅及配置这些选项,请选择 [ Yes ] 并按Enter

Figure 2-38. 系统终端配置选项

最常用的选项就是屏幕保护程序了。使用方向键将光标移动到 Saver 然后按Enter

Figure 2-39. 屏幕保护程序选项

选择您想使用的屏幕保护程序,然后按 Enter。 之后回到系统终端配置画面。

默认开启屏幕保护程序的时间是300秒。如果要更改此时间,请再次选择 Saver 。然后选择 Timeout 并按 Enter键。系统会弹出一个对话框如下:

Figure 2-40. 屏幕保护时间设置

您可以直接改变这个值,然后选 [ OK ]并按 Enter 键回到系统终端配置画面。

Figure 2-41. 退出系统终端配置

选择 Exit 然后按下 Enter 键会回到安装后的配置画面。


2.9.8. 配置时区

配置您机器的时区可以让系统自动校正任何区域时间的变更并且在执行 一些跟时区相关的程序时不会出错。

例子中假设此台机器位于美国东部的时区。请参考您所在的地理位置来配置。

                      User Confirmation Requested
          Would you like to set this machine's time zone now?

                            [ Yes ]   No

选择 [ Yes ] 并按下 Enter键以配置时区。

                       User Confirmation Requested
 Is this machine's CMOS clock set to UTC? If it is set to local time
 or you don't know, please choose NO here!

                              Yes   [ No ]

这里按照您机器时间的配置,选择 [ Yes ][ No ] 然后按 Enter

Figure 2-42. 选择您所处的地理区域

请选择适当的区域然后按 Enter

Figure 2-43. 选择您所在的国家

选择您所在的国家然后按 Enter

Figure 2-44. 选择您所在的时区

选择您所在的时区然后按 Enter

                            Confirmation
            Does the abbreviation 'EDT' look reasonable?

                            [ Yes ]   No

检查一下时区的缩写是否正确,如果没错,请按 Enter 返回系统安装后的配置画面。


2.9.9. Linux 兼容性

                      User Confirmation Requested
          Would you like to enable Linux binary compatibility?

                            [ Yes ]   No

选择 [ Yes ] 并按下Enter 键,将允许您在FreeBSD中执行Linux的软件。安装程序会安装一些为了跟Linux 兼容的软件包。

如果您是通过FTP安装,那么您必须连到网络上。有时候FTP站并不会包含 所有的安装软件包(例如Linux兼容软件包);不过,稍后您还可以再安装这个 项目。


2.9.10. 配置鼠标

此选项可以让您在终端上使用三键鼠标剪贴文字。如果您用的鼠标是两个 按钮,请参考手册 moused(8);以取得有关模拟三键鼠标的信息。范例中 使用的鼠标不是USB接口。(例如ps/2或com接口的鼠标):

                      User Confirmation Requested
         Does this system have a non-USB mouse attached to it?

                            [ Yes ]    No

如果您使用的不是USB鼠标,请选择 [ Yes ] ; 否则请选择 [ No ] 。然后按Enter

Figure 2-45. 选择鼠标类型

使用方向键选择 Type 然后按 Enter

Figure 2-46. 设置鼠标协议

在这个例子中使用的类型是ps/2鼠标,所以可以使用默认的 Auto(自动) 。 您可以用方向键选择合适的项目, 确定选择了 [ OK ] 后按 Enter 键离开此画面。

Figure 2-47. 配置鼠标端口

选择 Port 然后按 Enter

Figure 2-48. 配置鼠标端口

假设这台机器用的是ps/2鼠标,您可以采用默认的 PS/2 选项。请选择适当的项目然后按 Enter

Figure 2-49. 启动鼠标服务进程

选择Enable然后按 Enter 来启动和测试鼠标。

Figure 2-50. 测试鼠标功能

鼠标指针可以在屏幕上移动,指明鼠标服务已经正常启用。那么请选择 [ Yes ]Enter键。否则鼠标没 有配置成功 -- 选择 [ No ] 并尝试不同的配置 选项。

选择 Exit 并按 Enter 退回到系统安装完成后的配置画面。


2.9.11. 配置其他网络服务

Contributed by Tom Rhodes.

配置网络服务总是让那些新手敬畏,因为他们缺乏在这个领域应有的基础知识。 网络,包括因特网有许多关于现代操作系统包括 FreeBSD;的评论文章。这些文章对于 理解FreeBSD拥有的广泛的网络性能是非常有帮助的。在安装这些服务的过程中也能让 用户理解它们可用的各种服务。

网络服务是一些可以使在网络的任何人来访问您提供的服务的程序。有许多 努力想使这些程序不会有任何的 “伤害”。不幸的是,这些程序并 不是十全十美的,黑客可能会掌握程序中的一些露洞来进行功击。只启用一些您 熟悉的和需要的服务十分重要。如果您存在一些疑虑或没有启用这些服务的必要 那么最好不要使用这些服务。您可以事后通过运行 sysinstall 程序或使用 /etc/rc.conf 配置文件来启用它们。

选择 “Networking” 选项将下显示一个类似下面的菜单:

Figure 2-51. 网络配置之上层配置

第一个选项,Interfaces, 已经在前面 第 2.9.1 节 中讨论过,因此这里可以略过。

选择 AMD 选项,添加 BSD 对自动挂接程序的支持。这个程序和NFS 协议一起使用 不需要经过特别的设置就可以自动挂接远程文件系统。

下一行是 AMD Flags 的参数选项。当您选择后,会弹出一个 子菜单来让您选择 AMD 的参数。菜单中包含一系列的选项:

-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map

-a 选项用来设置默认的挂接位置,这里使用的是 /.amd_mnt目录。 -l 指定默认的 日志 文件;但是,当 syslogd 被指定用来接收所有的日志时,那么它们会被送到 系统日志程序。/host 被用来挂接远程 主机输出的一个文件系统,例子中/net 目录被用来挂接从IP输出的一个文件系统。 /etc/amd.map 文件定义了 AMD 的默认 输出选项。

Anon FTP 允许匿名 FTP 访问。 选中这个选项,可以使这台机器成为一台匿名 FTP 服务器。 要注意启用这个选项的安全风险。其它的菜单将说明一些安全问题和更深入的配置。

Gateway 配置菜单可以使本机器成为一台以前我们提到过 的网关。如果您在安装过程中偶尔选中了它,也可以在这里选中这个选项来取消。

Inetd 选项用来配置或完全禁止我们在上面讨论的 inetd(8) 守护程序。

Mail 可以用来配置系统默认的 MTA 或邮件传输代理。选择这个选项将了出现下面的菜单:

Figure 2-52. 选择默认的 MTA

这里给您提供了一个安装默认MTA 的机会。 MTA 用来投递本系统上用户邮件到因特网去。

选择 Sendmail 将会安装 FreeBSD默认的 流行的的 sendmail 服务程序。 Sendmail local 选项用来设置sendmail 默认的MTA,也可以禁止它从Internet接收邮件的能力。 还有其它的一些选项如: PostfixExim 都类似于 Sendmail的角色。它们两者也可以投递邮件; 有些用户更喜欢选择使用SendmailMTA二者之一。

选择 MTA或不选择它之后,网络配置菜单的下一 个选项是 NFS client 客房端程序。

NFS client 客房端可以使系统通过 NFS 与服务器进行通信。 NFS 服务器通过NFS 协议可以使其它在网络上的机器来访问自己的文件系统。如果这台机器要作为一台 独立的服务器,这个选项可以保留不选。下面可能还有更多的配置,关于客户端和 服务器的配置请参阅第 23.3 节 一节。

接下来的 NFS 服务器选项,可以允许您把系统设备成 为一台NFS 服务器。这需要更多的信息来启动远程过程调 用( RPC)服务。 RPC用来连接调 用两台机器上的程序。

下一项是 Ntpdate 选项,处理时间同步。当选择它后, 会出现一个像下面所似的菜单:

Figure 2-53. Ntpdate 配置

从这个菜单选择一个离您最近的服务器。在您连接这台服务器时,除去 连接时的反应时间,时间同步最精确的服务器。

下一个选项是 PCNFSD 。这个选项将从安装包中 安装net/pcnfsd 软件。这个程序 能够为不能提供它们自己,例如微软的 MS-DOS 操作系统提供 NFS 的认证服务。

滚屏到下一页看一下其它选项:

Figure 2-54. 网络配置之下层配置

rpcbind(8)rpc.statd(8)rpc.lockd(8) 程序全都可以用来提供远程过程调用 (RPC)服务。 rpcbind 程序管理NFS 服务器和客户端的通信,使NFS 执行正确的操作。 rpc.statd程序可以和其它主机上rpc.statd 程序提供的状态监视进行交互。状态报告通常被保存在 /var/db/statd.status 文件里。最后的一项是 rpc.lockd选项,当选中这时,将提供文件锁定服务。 它通常被用业通过rpc.statd来监视主机请求锁定什么文件和 怎样频繁的访问它们。这最后的两项调试功能,可以需要 NFS 服务器和客户端的正常操作。

下一个项目是Routed,这是一个路由程序。 routed(8) 程序管理网络路由表,发现多播路由,并且支持在网络上 与它物理相连的主机来拷贝它的路由表的请求。它被广泛的应用在本地 网络中并扮演关网关的角色。 当选择它后,一个子菜单会来询问您这个程序的默认位置。默认的位置已经 被定义过,您可以选择 Enter 键,您也可以按下其它的键。 这时会出来另一个菜单来询问您传递给 routed程序的参数。 默认的是 -q 参数。

接下来是 Rwhod 选项,选中它会启用 rwhod(8) 程序 在系统初时化的时候。 rwhod程序通过网络周期性的广播系统 信息或以“客户”的身份来收集这些信息。更多的信息可以查看 ruptime(1)rwho(1) 手册页。

倒数第二个选项是sshd(8) 程序。它可以通过使用 OpenSSH来提供安全的shell服务,我们推荐通过 使用它来使用 telnetFTP 服务。 sshd服务通过使用加密技术来创建从一台机器到另一台机 器的安全连接。

最后有一个 TCP 扩展选项。这可以用来扩展在 RFC 1323 和RFC 1644 里定义的TCP 功能。当许多主机以高速连接本机时,可 能会引起某些连接被丢弃。我们不推荐使用这个选项,但是当使用独立的主机 时可以从它上面得到一些好处。

现在您已经配置完成了网络服务,您可以滚动屏幕到顶部选择 Exit 项,退出进入下一个配置部分。


2.9.12. 配置 X Server

Note: 从 FreeBSD 5.3-RELEASE 开始, X 服务的配置机制从 sysinstall 中删掉了。 您必须在安装完 FreeBSD 之后再配置 X 服务。 关于安装和配置 X 服务的进一步细节可以在 第 5 章 找到。 如果您不是在安装 5.3-RELEASE 之前的 FreeBSD 版本的话, 则可以跳过这一节。

要使用诸如 KDEGNOME, 以及其他一些图形界面, 则需要配置 X 服务器。

Note: 为了以非root用户运行 XFree86 您必须安装 x11/wrapper 软件。在FreeBSD 4.7及以上 版本是默认安装的,但以前的版本要手工安装到系统中。

要知道您的显卡是否被支持,请参考 XFree86 网站。

                      User Confirmation Requested
        Would you like to configure your X server at this time?

                            [ Yes ]   No

Warning您需要了解监视器和显卡信息的制造规格。 如果配置有误, 可能会造成设备损毁。 如果您一时没有这样的信息, 请选择 [ No ], 之后再通过 sysinstall (对于 FreeBSD 5.2 以前的版本来说, 是 /stand/sysinstall), 选择 Configure 然后是 XFree86 来配置。 如果设置不当, X 服务器将导致系统停止响应。 通常, 建议您在安装完成之后再配置 X 服务程序。

如果您有显卡和显示器的信息,请选择 [ Yes ] 并按 Enter 来配置 X-server。

Figure 2-55. 选择配置方法菜单

您可以通过许多方法来配置 X server。在认真读了所有的说明后, 请使用方向键来选择一种配置方式,并按Enter。 键确认。

xf86cfgxf86cfg -textmode 配置方法可能会使屏幕黑屏一会 过一会即会启动。要有耐心。

下面将介绍xf86config 配置工具。 根据系统硬件的不同,下面的信息可能会适当的发生变动:

                                Message
 You have configured and been running the mouse daemon.
 Choose "/dev/sysmouse" as the mouse port and "SysMouse" or
 "MouseSystems" as the mouse protocol in the X configuration utility.

                                 [ OK ]

                      [ Press enter to continue ]

这个信息指明,前面配置的鼠标驱动程序被检测到。按 Enter 键继续。

启动 xf86config 后会显示一个简单的说明:

This program will create a basic XF86Config file, based on menu selections you
make.

The XF86Config file usually resides in /usr/X11R6/etc/X11 or /etc/X11. A sample
XF86Config file is supplied with XFree86; it is configured for a standard
VGA card and monitor with 640x480 resolution. This program will ask for a
pathname when it is ready to write the file.

You can either take the sample XF86Config as a base and edit it for your
configuration, or let this program produce a base XF86Config file for your
configuration and fine-tune it.

Before continuing with this program, make sure you know what video card
you have, and preferably also the chipset it uses and the amount of video
memory on your video card. SuperProbe may be able to help with this.

Press enter to continue, or ctrl-c to abort.

Enter 将启动鼠标配置。请按照指示选择 “Mouse Systems” 作为鼠标协议, /dev/sysmouse 作为鼠标端口。下面的例子 向您说明的是使用一个 PS/2 鼠标:

First specify a mouse protocol type. Choose one from the following list:

 1.  Microsoft compatible (2-button protocol)
 2.  Mouse Systems (3-button protocol) & FreeBSD moused protocol
 3.  Bus Mouse
 4.  PS/2 Mouse
 5.  Logitech Mouse (serial, old type, Logitech protocol)
 6.  Logitech MouseMan (Microsoft compatible)
 7.  MM Series
 8.  MM HitTablet
 9.  Microsoft IntelliMouse

If you have a two-button mouse, it is most likely of type 1, and if you have
a three-button mouse, it can probably support both protocol 1 and 2. There are
two main varieties of the latter type: mice with a switch to select the
protocol, and mice that default to 1 and require a button to be held at
boot-time to select protocol 2. Some mice can be convinced to do 2 by sending
a special sequence to the serial port (see the ClearDTR/ClearRTS options).

Enter a protocol number: 2

You have selected a Mouse Systems protocol mouse. If your mouse is normally
in Microsoft-compatible mode, enabling the ClearDTR and ClearRTS options
may cause it to switch to Mouse Systems mode when the server starts.

Please answer the following question with either 'y' or 'n'.
Do you want to enable ClearDTR and ClearRTS? n

You have selected a three-button mouse protocol. It is recommended that you
do not enable Emulate3Buttons, unless the third button doesn't work.

Please answer the following question with either 'y' or 'n'.
Do you want to enable Emulate3Buttons? y

Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/mouse.
On FreeBSD, the default is /dev/sysmouse.

Mouse device: /dev/sysmouse

下一个要配置的项目是键盘。在例子中使用的键盘一般是101-key 。您可以选择不 同的键盘类型或直接按 Enter 键来使用默认配置。

Please select one of the following keyboard types that is the better
description of your keyboard. If nothing really matches,
choose 1 (Generic 101-key PC)

  1  Generic 101-key PC
  2  Generic 102-key (Intl) PC
  3  Generic 104-key PC
  4  Generic 105-key (Intl) PC
  5  Dell 101-key PC
  6  Everex STEPnote
  7  Keytronic FlexPro
  8  Microsoft Natural
  9  Northgate OmniKey 101
 10  Winbook Model XP5
 11  Japanese 106-key
 12  PC-98xx Series
 13  Brazilian ABNT2
 14  HP Internet
 15  Logitech iTouch
 16  Logitech Cordless Desktop Pro
 17  Logitech Internet Keyboard
 18  Logitech Internet Navigator Keyboard
 19  Compaq Internet
 20  Microsoft Natural Pro
 21  Genius Comfy KB-16M
 22  IBM Rapid Access
 23  IBM Rapid Access II
 24  Chicony Internet Keyboard
 25  Dell Internet Keyboard

Enter a number to choose the keyboard.

1


Please select the layout corresponding to your keyboard


  1  U.S. English
  2  U.S. English w/ ISO9995-3
  3  U.S. English w/ deadkeys
  4  Albanian
  5  Arabic
  6  Armenian
  7  Azerbaidjani
  8  Belarusian
  9  Belgian
 10  Bengali
 11  Brazilian
 12  Bulgarian
 13  Burmese
 14  Canadian
 15  Croatian
 16  Czech
 17  Czech (qwerty)
 18  Danish

Enter a number to choose the country.
Press enter for the next page

1


Please enter a variant name for 'us' layout. Or just press enter
for default variant

us


Please answer the following question with either 'y' or 'n'.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)? n

接下来,我们要配置显示器。不要超过您显示器的刷新频率,这样可以 会损坏您的显示器。如果您有疑问,请参考其它信息后再做配置。

Now we want to set the specifications of the monitor. The two critical
parameters are the vertical refresh rate, which is the rate at which the
whole screen is refreshed, and most importantly the horizontal sync rate,
which is the rate at which scanlines are displayed.

The valid range for horizontal sync and vertical sync should be documented
in the manual of your monitor. If in doubt, check the monitor database
/usr/X11R6/lib/X11/doc/Monitors to see if your monitor is there.

Press enter to continue, or ctrl-c to abort.



You must indicate the horizontal sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range.

It is VERY IMPORTANT that you do not specify a monitor type with a horizontal
sync range that is beyond the capabilities of your monitor. If in doubt,
choose a conservative setting.

    hsync in kHz; monitor type with characteristic modes
 1  31.5; Standard VGA, 640x480 @ 60 Hz
 2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz
 3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
 4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
 5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz
 6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz
 7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz
 8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz
 9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz
10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz
11  Enter your own horizontal sync range

Enter your choice (1-11): 6

You must indicate the vertical sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range. For interlaced modes,
the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).

 1  50-70
 2  50-90
 3  50-100
 4  40-150
 5  Enter your own vertical sync range

Enter your choice: 2

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.

The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition: Hitachi

下一个配置是从显卡的驱动列表里选择一个显卡驱动程序。如果忽略 当前列表中的选项,请直接按Enter 下一屏将会出现在屏幕上, 会显示下面的信息:

Now we must configure video card specific settings. At this point you can
choose to make a selection out of a database of video card definitions.
Because there can be variation in Ramdacs and clock generators even
between cards of the same model, it is not sensible to blindly copy
the settings (e.g. a Device section). For this reason, after you make a
selection, you will still be asked about the components of the card, with
the settings from the chosen database entry presented as a strong hint.

The database entries include information about the chipset, what driver to
run, the Ramdac and ClockChip, and comments that will be included in the
Device section. However, a lot of definitions only hint about what driver
to run (based on the chipset the card uses) and are untested.

If you can't find your card in the database, there's nothing to worry about.
You should only choose a database entry that is exactly the same model as
your card; choosing one that looks similar is just a bad idea (e.g. a
GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of
hardware as can be).

Do you want to look at the card database? y



288  Matrox Millennium G200 8MB                        mgag200
289  Matrox Millennium G200 SD 16MB                    mgag200
290  Matrox Millennium G200 SD 4MB                     mgag200
291  Matrox Millennium G200 SD 8MB                     mgag200
292  Matrox Millennium G400                            mgag400
293  Matrox Millennium II 16MB                         mga2164w
294  Matrox Millennium II 4MB                          mga2164w
295  Matrox Millennium II 8MB                          mga2164w
296  Matrox Mystique                                   mga1064sg
297  Matrox Mystique G200 16MB                         mgag200
298  Matrox Mystique G200 4MB                          mgag200
299  Matrox Mystique G200 8MB                          mgag200
300  Matrox Productiva G100 4MB                        mgag100
301  Matrox Productiva G100 8MB                        mgag100
302  MediaGX                                           mediagx
303  MediaVision Proaxcel 128                          ET6000
304  Mirage Z-128                                      ET6000
305  Miro CRYSTAL VRX                                  Verite 1000

Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.

288

Your selected card definition:

Identifier: Matrox Millennium G200 8MB
Chipset:    mgag200
Driver:     mga
Do NOT probe clocks or use any Clocks line.

Press enter to continue, or ctrl-c to abort.



Now you must give information about your video card. This will be used for
the "Device" section of your video card in XF86Config.

You must indicate how much video memory you have. It is probably a good
idea to use the same approximate amount as that detected by the server you
intend to use. If you encounter problems that are due to the used server
not supporting the amount memory you have (e.g. ATI Mach64 is limited to
1024K with the SVGA server), specify the maximum amount supported by the
server.

How much video memory do you have on your video card:

 1  256K
 2  512K
 3  1024K
 4  2048K
 5  4096K
 6  Other

Enter your choice: 6

Amount of video memory in Kbytes: 8192

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names (possibly from a card definition).

Your card definition is Matrox Millennium G200 8MB.

The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:

接下来,设置显卡的分辨率。典型的使用范围是 640x480, 800x600, 和 1024x768,这些显卡的功能特性、分辨率的大小以眼睛的舒适为准。 当选择颜色深度时,可以选择您显卡支持最大模式。

For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:

"640x480" "800x600" "1024x768" "1280x1024" for 8-bit
"640x480" "800x600" "1024x768" "1280x1024" for 16-bit
"640x480" "800x600" "1024x768" "1280x1024" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

 1  Change the modes for 8-bit (256 colors)
 2  Change the modes for 16-bit (32K/64K colors)
 3  Change the modes for 24-bit (24-bit color)
 4  The modes are OK, continue.

Enter your choice: 2

Select modes from the following list:

 1  "640x400"
 2  "640x480"
 3  "800x600"
 4  "1024x768"
 5  "1280x1024"
 6  "320x200"
 7  "320x240"
 8  "400x300"
 9  "1152x864"
 a  "1600x1200"
 b  "1800x1400"
 c  "512x384"

Please type the digits corresponding to the modes that you want to select.
For example, 432 selects "1024x768" "800x600" "640x480", with a
default mode of 1024x768.

Which modes? 432

You can have a virtual screen (desktop), which is screen area that is larger
than the physical screen and which is panned by moving the mouse to the edge
of the screen. If you don't want virtual desktop at a certain resolution,
you cannot have modes listed that are larger. Each color depth can have a
differently-sized virtual screen

Please answer the following question with either 'y' or 'n'.
Do you want a virtual screen that is larger than the physical screen? n



For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:

"640x480" "800x600" "1024x768" "1280x1024" for 8-bit
"1024x768" "800x600" "640x480" for 16-bit
"640x480" "800x600" "1024x768" "1280x1024" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

 1  Change the modes for 8-bit (256 colors)
 2  Change the modes for 16-bit (32K/64K colors)
 3  Change the modes for 24-bit (24-bit color)
 4  The modes are OK, continue.

Enter your choice: 4



Please specify which color depth you want to use by default:

  1  1 bit (monochrome)
  2  4 bits (16 colors)
  3  8 bits (256 colors)
  4  16 bits (65536 colors)
  5  24 bits (16 million colors)

Enter a number to choose the default depth.

4

最后,要保存您的配置,确定输入 /etc/XF86Config 作为保存位置。

I am going to write the XF86Config file now. Make sure you don't accidently
overwrite a previously configured one.

Shall I write it to /etc/X11/XF86Config? y

如果您配置失败,您也可以尝试着按 [ Yes ] 来 重新再试一次,会显示下面的信息:

          User Confirmation Requested
The XFree86 configuration process seems to have
failed.  Would you like to try again?

             [ Yes ]         No

如果配置 XFree86时遇上困难,请选择 [ No ] 并按 Enter键继续 进行安装。安装完成后可以使用 xf86cfg -textmodexf86config 命令行配置程序来以 root 用户的身份进行配置。配置 XFree86 的另外一种方法 描述在 第 5 章。如果您选择不配置XFree86 那么下一个菜单将让您选择要安装的软件包。

默认情况下可以使用组合键 Ctrl+Alt+Backspace,在发生错误或在硬件损坏前退出 设置屏幕。

默认的显示模式可以使用X系统下的 Ctrl+Alt++Ctrl+Alt+-来改变。

一旦有了可以运行的 XFree86, 就可以使用 xvidtune 来调整显示的高度和宽度以及显示器的中心位置。

一些不适当的配置可能会损坏您的设备。如果在使用它们前存在疑虑,请不要 安装它们。可以使用监视器的控制工具来调整X窗口的显示。与文本显示模式不同 它更容易损坏设备。

在调整这些参数前,请阅读 xvidtune(1) 手册。

下面是一个配置 XFree86 的成功例子,它选择了 使用默认的桌面。


2.9.13. 选择默认的桌面

Note: 从 FreeBSD 5.3-RELEASE 开始, X 桌面的选择机制已经从 sysinstall 中删掉了。 您只能在安装好 FreeBSD 之后再配置它。 关于安装和配置 X 桌面的更多细节可以在 第 5 章 找到。 如果不是在安装 FreeBSD 5.3-RELEASE 之前的版本, 则可以跳过这一节。

有许多窗口管理器可以使用。它们从基本的桌面环境到全部的桌面应用,是 一个大型的软件集。一些人可能只希望使用一些占用磁盘空间少,内存低的窗口 管理器;而另外一些人则更倾向于使用有便多特性的桌面环境。选择使用那种桌 面的最好的方法就是尝试着试用一些不同的桌面环境。这些桌面都可以在安装 完成后通过ports收集或包管理器来进行安装。

您可以选择一个流行的桌面配置成为默认的桌面,可以使您在安装完 成后立刻启动它。

Figure 2-56. 选择默认桌面

使用箭头选择一个桌面,然后键入Enter键。选择的桌面将被 安装。


2.9.14. 安装软件包

这些软件包已经被预编译成二进制程序了,安装软件有一个很简单的方法。

前面已经介绍了如何安装一个软件包的例子。 如果需要的话, 在安装结束之后, 仍然可以使用 sysinstall (对于 FreeBSD 5.2 之前的版本是 /stand/sysinstall) 来安装其他软件包。

                     User Confirmation Requested
 The FreeBSD package collection is a collection of hundreds of
 ready-to-run applications, from text editors to games to WEB servers
 and more. Would you like to browse the collection now?

                            [ Yes ]   No

选择 [ Yes ]Enter 将会显示软件包选择屏幕。

Figure 2-57. 选择软件所的种类

在任何时候只有安装介质上有的软件包才能被安装进系统。

如果选择All 那么所有的软件包将会被显示,您也 可以选择一个特殊的分类。使用箭头进行选择,然后键入 Enter

一个菜单将会显示这个分类中可用的所有软件包。

Figure 2-58. 选择软件包

bash shell 被选中了。通过在加亮的软件 上键入Space 键,来选择您想要的软件所。每个选择的软件 包的简短描述都会显示在屏幕左下脚。

Tab 键选择 [ OK ][ Cancel ]

当您完成了安装标记之后,键入 Tab 键选择 [ OK ] 然后键入Enter 返回软件包选择菜单。

左右箭头键也可以用来选择 [ OK ][ Cancel ]。用这种方法也可以 用 [ OK ] 然后按 Enter 来返回软件包选择菜单。

Figure 2-59. 安装软件包

使用 Tab 和箭头键来选择 [ Install ] 然后键入 Enter。您接着需要确定您要安装的软件包。

Figure 2-60. 确认安装的软件包

选择 [ OK ] 然后键入Enter 键将开始软件的安装, 安装信息将会不断地出现。如果有一些错误信息,请作好记录。

安装完成之后,继续最后的配置。如果您不想安装任何软件包并退回到 最终配置屏幕,请选择Install


2.9.15. 添加用户/组

您至少要在安装过程中添加一个用户,以便于您能不用root 来登陆使用系统。根分区通常比较小,用 root 来运行应用程序 可能会快一点。但这样会有一些危险:

                     User Confirmation Requested
 Would you like to add any initial user accounts to the system? Adding
 at least one account for yourself at this stage is suggested since
 working as the "root" user is dangerous (it is easy to do things which
 adversely affect the entire system).

                            [ Yes ]   No

选择 [ Yes ] 然后键入Enter 继续添加用户。

Figure 2-61. 选择用户

用箭头键来选择 User 然后按 Enter

Figure 2-62. 添加用户信息

下面的描述信息会出现在屏幕的下方,可以使用 Tab 键来切换不同的项目,以便输入相关信息:

Login ID

新用户的登陆名(强制性必须写)

UID

这个用户的ID编号(如果不写,系统自动添加)

Group

这个用户的登陆组名(如果不写,系统自动添加)

Password

这个用户的密码(键入这个需要很仔细!)

Full name

用户的全名(解释、备注)

Member groups

这个用户所在的组

Home directory

用户的主目录(如果不写,系统自动添加)

Login shell

用户登陆的shell(默认是/bin/sh)。

登陆的shell可以在 /bin/sh/usr/local/bin/bash 中修改。 bash shell 是先前默认安装的shell。 不要使用一个不存在的或您不能登陆的shell。最通用的shell是使用 BSD-world 的 C shell,可以通过指定/bin/tcsh来修改。

用户也可以被添加到 wheel 组中成了一个超级用户, 从而拥有 root权限。

当您感觉满意时,键入 [ OK ] 键,用户和组管理菜单将会重新出现。

Figure 2-63. 退出用户和组管理

如果有其他的需要, 此时还可以添加其他的组。 此外, 还可以通过 sysinstall (在 FreeBSD 5.2 以前的版本中是 /stand/sysinstall) 在安装完成之后添加它们。

当您完成添加用户的时候,选择Exit 然后键入Enter 继续下面的安装。


2.9.16. 设置 root 密码

                        Message
 Now you must set the system manager's password.
 This is the password you'll use to log in as "root".

                         [ OK ]

               [ Press enter to continue ]

键入 Enter 来设置 root 密码。

密码必须正确地输入两次。 毋庸讳言, 您需要选择一个不容易忘记的口令。 请注意您输入的口令不会回显, 也不会显示星号。

Changing local password for root.
New password :
Retype new password :

密码成功键入后,安装将继续。


2.9.17. 退出安装

如果您需要设置其他的网络设备, 或者需要完成其他的配置, 可以在此时或者事后通过 sysinstall (对于 FreeBSD 5.2 之前的版本是 /stand/sysinstall) 来进行配置。

                     User Confirmation Requested
 Visit the general configuration menu for a chance to set any last
 options?

                              Yes   [ No ]

选择 [ No ] 然后键入 Enter 返回到主安装菜单。

Figure 2-64. 退出安装

选择 [X Exit Install] 然后键入 Enter。您可能需要确认是否真的退出安装:

                     User Confirmation Requested
 Are you sure you wish to exit? The system will reboot (be sure to
 remove any floppies from the drives).

                            [ Yes ]   No

选择 [ Yes ] 取出软盘。CDROM驱动器将被锁定, 直到机器重新启动。CDROM然后就可以从驱动器中取出来了。

在系统重新启动的时候可能会见到出错信息。


2.9.18. FreeBSD的启动

2.9.18.1. FreeBSD 在 i386上启动

如果启动正常,您将看到在屏幕上有很多信息滚动,最后您会看到登陆命令行。 您可以通过键入 Scroll-Lock和使用 PgUpPgDn来查看信息,再键入 Scroll-Lock 回到命令行。

记录信息可能不会显示(缓冲区的限制)。您可以通过键入 dmesg 来查看。

使用您在安装过程中设置的用户名/密码来登陆。(例子中使用 rpratt)。除非必须的时候请不要用 root 用户登陆。

典型的启动信息:(忽略版本信息)

Copyright (c) 1992-2002 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.

Timecounter "i8254"  frequency 1193182 Hz
CPU: AMD-K6(tm) 3D processor (300.68-MHz 586-class CPU)
  Origin = "AuthenticAMD"  Id = 0x580  Stepping = 0
  Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX>
  AMD Features=0x80000800<SYSCALL,3DNow!>
real memory  = 268435456 (262144K bytes)
config> di sn0
config> di lnc0
config> di le0
config> di ie0
config> di fe0
config> di cs0
config> di bt0
config> di aic0
config> di aha0
config> di adv0
config> q
avail memory = 256311296 (250304K bytes)
Preloaded elf kernel "kernel" at 0xc0491000.
Preloaded userconfig_script "/boot/kernel.conf" at 0xc049109c.
md0: Malloc disk
Using $PIR table, 4 entries at 0xc00fde60
npx0: <math processor> on motherboard
npx0: INT 16 interface
pcib0: <Host to PCI bridge> on motherboard
pci0: <PCI bus> on pcib0
pcib1: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0
ata1: at 0x170 irq 15 on atapci0
uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0
usb0: <VIA 83C572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
chip1: <VIA 82C586B ACPI interface> at device 7.3 on pci0
ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xe800-0xe81f irq 9 at
device 10.0 on pci0
ed0: address 52:54:05:de:73:1b, type NE2000 (16 bit)
isa0: too many dependant configs (8)
isa0: unexpected small tag 14
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> on fdc0 drive 0
atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0
atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
kbd0 at atkbd0
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
sc0: <System console> at flags 0x1 on isa0
sc0: VGA <16 virtual consoles, flags=0x300>
sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
sio0: type 16550A
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/15 bytes threshold
ppbus0: IEEE1284 device found /NIBBLE
Probing for PnP devices on ppbus0:
plip0: <PLIP network interface> on ppbus0
lpt0: <Printer> on ppbus0
lpt0: Interrupt-driven port
ppi0: <Parallel I/O> on ppbus0
ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33
ad2: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata1-master using UDMA33
acd0: CDROM <DELTA OTC-H101/ST3 F/W by OIPD> at ata0-slave using PIO4
Mounting root from ufs:/dev/ad0s1a
swapon: adding /dev/ad0s1b as swap device
Automatic boot in progress...
/dev/ad0s1a: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1a: clean, 48752 free (552 frags, 6025 blocks, 0.9% fragmentation)
/dev/ad0s1f: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1f: clean, 128997 free (21 frags, 16122 blocks, 0.0% fragmentation)
/dev/ad0s1g: FILESYSTEM CLEAN; SKIPPING CHECKS
/dev/ad0s1g: clean, 3036299 free (43175 frags, 374073 blocks, 1.3% fragmentation)
/dev/ad0s1e: filesystem CLEAN; SKIPPING CHECKS
/dev/ad0s1e: clean, 128193 free (17 frags, 16022 blocks, 0.0% fragmentation)
Doing initial network setup: hostname.
ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        inet6 fe80::5054::5ff::fede:731b%ed0 prefixlen 64 tentative scopeid 0x1
        ether 52:54:05:de:73:1b
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
Additional routing options: IP gateway=YES TCP keepalive=YES
routing daemons:.
additional daemons: syslogd.
Doing additional network setup:.
Starting final network daemons: creating ssh RSA host key
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:
cd:76:89:16:69:0e:d0:6e:f8:66:d0:07:26:3c:7e:2d root@k6-2.example.com
 creating ssh DSA host key
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:
f9:a1:a9:47:c4:ad:f9:8d:52:b8:b8:ff:8c:ad:2d:e6 root@k6-2.example.com.
setting ELF ldconfig path: /usr/lib /usr/lib/compat /usr/X11R6/lib
/usr/local/lib
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout
starting standard daemons: inetd cron sshd usbd sendmail.
Initial rc.i386 initialization:.
rc.i386 configuring syscons: blank_time screensaver moused.
Additional ABI support: linux.
Local package initialization:.
Additional TCP options:.

FreeBSD/i386 (k6-2.example.com) (ttyv0)

login: rpratt
Password:

生成 RSA 和 DSA密钥在比较慢的机器上可能要花很长时间。这只是一个 新安装后的首次启动,以后的启动会变得更快一点。

如果 X 服务器已经配置好了,默认的桌面也选择好了,就可以在命令行键入 startx 来启动视察环境。


2.9.18.2. FreeBSD 在 Alpha机器上启动

一旦安装完成,您就可以键入下面的命令来启动FreeBSD:

>>>BOOT DKC0

这是从指定的固定硬件进行引导。如果要使 FreeBSD 下次能够自动启动, 使用下面的命令:

>>> SET BOOT_OSFLAGS A
>>> SET BOOT_FILE ''
>>> SET BOOTDEF_DEV DKC0
>>> SET AUTO_ACTION BOOT

启动信息跟启动 i386机器时差不多。(但不完全一样)


2.9.19. FreeBSD 关机

正确的关闭操作系统是很重要的。不要仅仅关闭电源。首先,您需要成为一个超 级用户,通过键入 su 命令来实现。然后输入 root 密码。这需要用户是 wheel 组的一名成员。然后,以root键入 shutdown -h now命令。

The operating system has halted.
Please press any key to reboot.

当shutdown命令发出后,屏幕上出现 “Please press any key to reboot” 信息时,您就可以安全的关闭计算机了。如果按下任意一个键,计算机将重新启动。

您也能够使用 Ctrl+Alt+Del 组合键来重新启动计算机,但是不推荐使用这个操作。


2.10. 支持的硬件

FreeBSD当前可以广泛运行在ISA、VLB、EISA、PCI总线的PC上,包括 Inter,AMD,Cyrix或 NexGen “x86”系列的机器,还有一些 Compaq Alpha的机器。支持普通的 IDE 或 ESDI 驱动配置,各种SCSI控制器, PCMCIA卡,USB设备,网卡和其它网络串口设备。FreeBSD也支持IBM微通道 (MCA)的总线结构。

每个发行版都会提供一个FreeBSD支持的硬件列表。您可以在名字叫做 HARDWARE.TXT的文件中找到。它可以在CDROM或FTP发行组件 或sysinstall的文档菜单中找到。对于特定的架构,都 有相应的硬件支持列表。也可以在FreeBSD的网站 Release Information 找到更多的信息。


2.11. 常见问题

下面将介绍一些在安装过程中常见的问题,像如何报告发生的问题,如何 双重启动FreeBSD和 MS-DOS。/para>


2.11.1. 当您遇到错误时,应该怎么做?

由于pc结构的限制,不可能100%的不出现问题,但是有些问题是您可以 自己解决的。

先检查您的硬件,确保您的硬件被支持。

如果您的硬件能够被扶持,但还是会出问题,那就重新启动计算机。当出现 内核配置信息的时候,重新配置一下硬件信息。因为绝大多数硬件的IRQ,淡IO地 址,DMA通道都有它们的生产商预先进行默认配置。如果您的硬件已经重新装配了, 就需要使用配置编辑器告诉FreeBSD到哪里去找相关信息。

如果某个设备配置好后,发现又有个设备出现错误。碰到这种情况,就当卸掉 这个设备的驱动程序。

Note: 有些安装问题可以借助更新硬件的程序来解决,特别是主板的 BIOS 。大部分的主板制造商都会提供网站给用户下载新的 BIOS以及提供如何更新的说明。

也有许多制造商强烈建议,除非必要否则不要轻易更新 BIOS 。因为更新的过程可能 会发生问题,进而损害BIOS 芯片。

Warning不要在安装中把您必需的驱动程序卸掉,如您的监视器sc0 。如果安装中在修改守配置后,仍然会出现一些意想不到的情况,最好所配置文件恢复到原来 的样子。把它重新启动,再试一下。

在配置模式下,您可以:

  • 列出在内核中安装的设备驱动程序。

  • 禁用不适合您机器的设备驱动程序。

  • 通过驱动程序改变IRQ,DRQ和IO端口地址。

调整内核与您的硬件设置一致之后,键入 Q ,以新的设置 重新启动计算机。当FreeBSD安装完成之后,在配置模式下做的更改会一直存在,不需 要在每次启动计算机时再重新设置。即使如此,有可能您会想建立一个定制内核使您 的系统效率达到最好,可以看看以下的链接 custom kernel


2.11.2. 处理 MS-DOS® 分区存在的问题

许多FreeBSD的用户基于MicrosoftPC 上安装FreeBSD。以下是一些关于在这种系统中安装FreeBSD常会出现的问题。 FreeBSD 中有一个FIPS的应用程序。这个工具程序可以在 安装光盘的 tools 目录下找到或从FreeBSD 的镜像站点下载。

FIPS 允许您将现有的 MS-DOS 分区一分为二,保留原 原有的分区,让您安装到空出来的分区上。您首先要用 WindowsDisk DefragmenterNorton Disk Tools来对 MS-DOS 分区进行碎片整理。然后, 就可以重新启动把FIPS 。 看一下安装菜单,估计一下大概需要 多少安装空间。随后您就可以在新分区上重新引导安装 FreeBSD请查阅 Distributions 菜单上您的安装类型需要多少空间。

有一个由PowerQuest公司生产的非常有用的工具。从 http://www.powerquest.com网站上 可以得到PartitionMagic。这个工具的功能比 FIPS要强大。如果您经常要添加或删除操作系统,强烈建议 您使用它。当然,它很贵。如果您只是想安装 FreeBSD 的话, FIPS 就已足够了。


2.11.3. 使用 MS-DOSWindows® 文件系统

现在 FreeBSD 还不支持经过Double Space™ 应用程序压缩过的文件系统。因此其它的文件系统在被FreeBSD访问其数据之前必须先 解压缩。它可以通过运行位于 Start> Programs > System Tools menu中的 Compression Agent程序来实现。

FreeBSD可以支持基于 MS-DOS 的文件系统。这要求您使用带参数的 mount_msdos(8) 命令 (在 FreeBSD 5.X版本,相应的命令为 mount_msdosfs(8)) 最常使用的是:

# mount_msdos /dev/ad0s1 /mnt

在此例子中, MS-DOS 文件系统位于主硬盘的第一个分区。您的情况可能与引不同, 查看命令 dmesgmount 的输出。它们应该 可以让您得到足够的分区信息。

Note: MS-DOS 的扩展分区会被映射在 FreeBSD分区的末尾。换句话说,分区号要大于 FreeBSD 正在使用的分区号。例如,第一个 MS-DOS 分区可能位于 /dev/ad0s1,FreeBSD 分区可能位于 /dev/ad0s2,跟着是 MS-DOS 的扩展分区位于 /dev/ad0s3。这可能会使您感觉迷茫。

NTFS 分区也可以通过类似 mount_ntfs(8) 命令挂接在FreeBSD上。


2.11.4. Alpha 用户的问题与解答

这节主要回答一些在Alpha系统上安装FreeBSD时经常问到的问题。

2.11.4.1. 我可以从 ARC 或 Alpha BIOS 控制台启动吗?
2.11.4.2. 求救,我没有空间了!我需要删除每一样东西吗?
2.11.4.3. 我可以挂上 Compaq Tru64 或 VMS 的文件系统吗?

2.11.4.1. 我可以从 ARC 或 Alpha BIOS 控制台启动吗?

不行。 FreeBSD,像Compaq Tru64 和 VMS,只能从SRM 控制台启动。

2.11.4.2. 求救,我没有空间了!我需要删除每一样东西吗?

不,这个时候不行。

2.11.4.3. 我可以挂上 Compaq Tru64 或 VMS 的文件系统吗?

不,这个时候不行。


2.12. 高级安装指南

Contributed by Valentino Vaschetto.

这节主要描述在一些特殊情况下如何安装FreeBSD。


2.12.1. 在一个没有显示器或键盘的系统上安装FreeBSD

这种类型的安装叫做 “headless install(无关安装)”, 因您正要安装FreeBSD的机器不是没带显示器,就是没有显卡。您可能会问那怎么安装? 可以使用一个串行控制台。串行控制台基本上是使用另外一台机器来充当主显示设备 和键盘。要这样做,只要执行下面的步骤:创建安装软件,请看 第 2.2.7 节一节说明。

按下面的步骤,修改这些软盘用来引导进入一个串行控制台:

  1. 通过启动软盘来引导进入一个串行控制台

    如果您想用软盘,FreeBSD将进入它通常的安装模式。我们要把FreeBSD 引导进入串行控制台,需要这样做,您必须使用 mount(8)命令在FreeBSD系统 上挂一kern.flp的那个软盘。

    # mount /dev/fd0 /mnt
    

    现在您已经挂上了软盘, 需要进入 /mnt 目录:

    # cd /mnt
    

    这儿是您必须设置软盘引导进入串行控制台的地方。您必须制作一个包含 /boot/loader -h这行的叫做boot.config 的文件。所有这些是为了给引导程序一个标记以引导进入串行控制台。

    # echo "/boot/loader -h" > boot.config
    

    现在您已经正确配置好了软盘,您必须使用 umount(8) 命令卸下软盘。

    # cd /
    # umount /mnt
    

    现在您可以从软盘驱动器中取出软盘了。

  2. 连接您的 null Modem 线

    您现在需要一根null modem线来连接两台机器。 只要连接两台机器的串口。 普通的串行线是不行的,您需要使用一根null modem的线, 因为它在一些十字交叉口有金属线。

  3. 开始启动安装

    现在开始启动安装。把 kern.flp 的那张软盘 插入软盘驱动器,然后开启电源。

  4. 连接您的无头机器

    现在您已经通过cu(1)连接到了那台机器。

    # cu -l /dev/cuaa0
    

就这样!您已经能够通过您的cu session对话来控制 那台“无头”机器了。它将要求您把 mfsroot.flp的那张软盘 插入驱动器,然后它将提示选择使用哪种终端。只要选择FreeBSD的彩色控制台,然后 继续您的安装。


2.13. 准备您自己的安装介质

Note: 为了避免重复 “FreeBSD disc” 在这里指 FreeBSD CDROM or DVD 那即意味着您要购买或自己制做。

有好几个原因需要您创建自己的FreeBSD安装介质。这可能是物理介质,如磁带, 使用 sysinstall程序找到的安装文件,FTP站点或 MS-DOS分区。

例如:

  • 您有许多机器连接到本地网络,使用一个FreeBSD光盘。您要使用FreeBSD来 创建一个本地FTP站点,然后使用这个FTP站点来代替连接到Internet。

  • 您有一张 FreeBSD 光盘, FreeBSD 不支持您的 CD/DVD 驱动器, 但 MS-DOS/Windows 支持。 您要复制安装文件到一个DOS分区, 然后使用这些文件进行安装。

  • 您要安装的计算机没有 CD/DVD驱动器和网卡,但您可以连接一个 “Laplink-style” 串口或并口线缆到那台计算机。

  • 您要通过一个磁带机来安装FreeBSD.


2.13.1. 创建一张安装光盘

FreeBSD的每个发行版本都提供两张CDROM映像(“ISO images”)。 如果您有刻录机,这些映像文件可以被(“burned”) 成FreeBSD的安装光盘。 如果没有刻录机,而上网带宽却很便宜,它也是一种很好的安装方式。

  1. 下载正确的 ISO 映像文件

    每个版本的ISO映像文件都可以从 ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-arch/version 或最近的镜像站点下载。选择合适的 arch version

    目录中包含下面一些映像文件:

    Table 2-5. FreeBSD ISO映像文件名和含意

    文件名 包含内容
    版本-bootonly.iso 引导 FreeBSD 内核并启动安装界面所需的全部数据。 安装文件可以从 FTP 或其他安装源获得。
    version-mini.iso 您安装 FreeBSD所需要的最基本的东西。
    version-disc1.iso 您安装 FreeBSD所需要的最基本的东西,和一些附加的第三方厂商的试用版软件包
    version-disc2.iso “live filesystem”,它是用来在 sysinstall程序里用来 “修复”系统 用的。里面包含 FreeBSD CVS 树的一个拷贝,还有许多附加的第三方厂商的试用 版软件包。

    必须 下载 mini ISO 或第一张光盘的镜像之一。 不需要两个都下载, 因为第一张光盘包括了 mini ISO 的全部内容。

    如果访问 Internet 的价格便宜, 建议使用 mini ISO。 这样您可以安装 FreeBSD, 并从网上通过 ports/packages 系统来下载并安装第三方的软件包 (参见 第 4 章), 如果需要的话。

    如果您想适当的在安装介质上安装一些第三方的软件包,那么您可以使用 disc one映像盘。

    其它的映像盘也是很有用的,但不是必须的,尤其是在您有高速的网络连接时。

  2. 刻录 CDs

    您必须把这些映像文件刻录成光盘。如果您在其它的FreeBSD系统上完成 此项工作,请看 第 16.6 节 得到更多的信息,(特别是 第 16.6.3 节第 16.6.4 节

    如果您在其它的系统平台上执行,您需要相应的刻录软件。映像文件使用 的是标准的ISO格式,必须被您的刻录软件所支持。

Note: 如果有兴趣制作一张定制的 FreeBSD 版本, 请参考 Release Engineering Article


2.13.2. 为 FreeBSD 安装盘建立局域网 FTP 站点

FreeBSD 光盘的布局和 FTP 站点相同。 这样, 建立局域网 FTP 站点来用于网络上的其它计算机安装 FreeBSD, 就十分的容易。

  1. 在要作为FTP站点的那台FreeBSD机器上,确定FreeBSD磁盘放入光驱 中并将它挂在/cdrom目录中。

    # mount /cdrom
    
  2. /etc/passwd文件中建立一个可匿名访问FTP 服务器的账号。您可以利用vipw(8) 命令编辑/etc/passwd 文件,加入下面这一行叙述:

    ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
    
  3. 确定在/etc/inetd.conf配置文件中开启 了FTP服务。

任何本地网络中的机器在安装FreeBSD选择安装介质时就可以选择透过 FTP站点,然后选取 “Other”后输入 ftp://本地FTP服务器 即可以透过本地的FTP站点来安装FreeBSD。

Note: 如果您 FTP 客户机使用的启动盘 (通常是软盘) 同局域网 FTP 站点上的版本不一致, sysinstall 将不允许继续安装。 如果是一个类似的版本, 并希望绕过这一判断过程, 您需要进入 Options 菜单, 并将 distribution 名称改为 any

Warning此方式最好使用在有防火墙保护的内部网络。如果要将此FTP服务公开给外面的 网际网络(非本地用户),您的电脑必须承担被侵入或其它的风险。我们强烈建议您 要有完善的安全机制才这样做。


2.13.3. 创建安装软盘

如果您从软盘安装(我们推荐那样做),或者是由于 不支持硬件或者更简单的理由是因为您坚持要使用软盘安装。您必须准备几张软盘。

至少这些软盘必须是 1.44 MB 或 1.2 MB 的,用来容纳所有在 bin (二进制软件包)目录下的文件。如果您在DOS操作系统 下准备就 MUST使用 MS-DOS下的 FORMAT 命令来格式化软盘。如果您使用的是 Windows操作系统,在文件浏览器中用右键 单击 A: 驱动器,并选择 “Format”。

不要 指望厂家的预先格式化!最好还是亲自进行格式化。 过去用户报告的很多问题都是由于不正确地使用格式化设备所造成的,所以我们需要在这 儿着重提一下。

如果您在另外一台FreeBSD的机器上做了启动盘的话,进行格式化是一个不 错的主意。虽然您不需要把每张盘都做成DOS文件系统。您也可以使用 disklabelnewfs 命令来创建一个UFS文件系统,具体操作按下面的顺序进行:

# fdformat -f 1440 fd0.1440
# disklabel -w -r fd0.1440 floppy3
# newfs -t 2 -u 18 -l 1 -i 65536 /dev/fd0

Note: 如果使用 5.25"软盘的话,需要使用 fd0.1200floppy5 来格式化 1.2 MB 的磁盘空间。

然后您就可以像其它的文件系统一样挂上和写入这些磁盘。

格式化这些磁盘后,您必须拷贝文件到磁盘中。这些发行文件被分割成刚 好可存进五张 1.44 MB 软盘。检查您所有的磁盘,找出所有可能适合的文件。 直到您找到所有需要的配置并且将它们以这种方式安置。第一个配置都应该有一个 子目录在磁盘上,例如: a:\bin\bin.aa, a:\bin\bin.ab, 等等。

一旦您进入选择安装介质的屏幕,选择 Floppy 将会看到后面的提示符。


2.13.4. 从一个 MS-DOS 分区安装

如果从一个 MS-DOS 分区安装,您需要从发布文档拷贝文件到分区 要目录下一个叫做 freebsd 的目录中。例如: c:\freebsd。CDROM或FTP站点目录中的内容会部分的 拷贝到这个目录中,如果从光盘中拷贝,所以我们建议您使用DOS的 xcopy 命令。例如,准备一个最小的FreeBSD安装。

C:\> md c:\freebsd
C:\> xcopy e:\bin c:\freebsd\bin\ /s
C:\> xcopy e:\manpages c:\freebsd\manpages\ /s

假设 C: 盘是您的空闲空间, E: 盘是您挂接的 CDROM。

如果您没有光盘驱动器,您可以从以下网站下载发行包。 ftp.FreeBSD.org. 每一个发行包都在一个目录中,例如 base 发行包可以在 5.4/base/目录中找到。

Note: 在 4.X 和其它老版本的 FreeBSD the “base”发行包被叫做 “bin”. 如果您使用这些版本的话,请调整上例中的命令和URLS.

对很多发行包来说,如果您希望从 MS-DOS分区安装的话(您有足够的空间), 安装 c:\freebsd -- 下的每个文件-这个 BIN 发行包只是最低限度的要求。


2.13.5. 创建一个安装磁带

从磁带安装也许是最简单的方式,比在线使用 FTP 安装或使用 CDROM 还快。 安装的程序假设是简单地被压缩在磁带上。在您到所有配置文件后,简单的解开它们, 用下面的命令:

# cd /freebsd/distdir
# tar cvf /dev/rwt0 dist1 ... dist2

在您安装的时候,您要确定留有足够的空间给临时目录(允许您选择) 来容纳磁带安装时 全部 的内容。由于不是随机访问 磁带的,所以这种安装方法需要很多临时空间。

Note: 开始安装时,在从软盘启动before,磁带机 必须已经放在驱动设备中。否则,安装过程中可能会找不到它。


2.13.6. 通过网络安装

有三种类型的网络安装方法。串口(SLIP或PPP),并口(PLIP),以太网 (标准的以太网控制器,包括PCMCIA)。

SLIP 支持是相当原始的,并且被限制在主要对hard-wired 的连接,就像 一台膝上型计算机与另一台计算机间的串行线。现在的SLIP的安装还没有提供拨号功能, 这个连接应该是 hard-wired ;用PPP工具提供的这种便利性应该首先尽可能被用于SLIP 设备。

如果您使用一个MODEM,那您就只有PPP这一种选择了。在您安装的过程中, 要确定您能很容易地获得完整且快速的关于您服务提供商的信息。

如果您使用 PAP 或 CHAP 方式连接到您的 ISP,(换句话说,如果您不使用 脚本在Windows中连接到您的ISP),那么您需要在ppp 提示符下输入dial 命令。否则,当PPP连接者只提供一种最简单的 终端模拟器,您必须知道如何使用针对MODEM的 “AT commands”拨号到您 的ISP。想知道更深入的信息可以参考用户级PPP那节 handbook and FAQ 。如果您有一些问题,可以使用 set log local ...命令将日志显示在屏幕上。

您也可以通过并口电缆连接到另外一台FreeBSD(2.0或以后的版本)机器上进行 安装,您可以考虑使用 “laplink” 并口电缆进行安装。通过并口安装要 比通过串口(最高 50 kbytes/sec)安装快得多。

最后,通过网络安装最快的方法是利用以太网技术!FreeBSD支持绝大多数普通 的以太网卡。每个FreeBSD发行版都在硬件注释中提供支持的网卡的列表和需要的设置。 如果您要使用PCMCIA接口的以太网,在启动计算机 before, 确信已经把它插好了。目前,FreeBSD还不支持PCMCIA的热插拔。

通过网络安装,您可能需要知道IP地址,地址掩码,还有机器的�字。如果您 通过PPP进行安装,就不需要静态的IP地址,IP地址会由ISP给您自动指派。您的系统 管理员会告诉您通过网络安装的细节。如果您通过主机名而不是IP地址来访问其它主 机,需要有一个域名服务器或一个网关地址(如果您使用PPP进行安装,那它就您的 的ISP的IP地址)。如果您要通过一个HTTP的代理服务器进行FTP安装,需要一个代理 服务器地址。如果您不知道这些,在安装 before可以询问 您的系统管理员或您的ISP服务商。


2.13.6.1. 通过NFS安装之前

NFS安装方式是非常方便的。只需要简单地将FreeBSD文件拷贝到一台服务器上, 然后在安装时选择NFS介质。

如果这个服务器要“特权端口”才能支持(如SUN的工作站), 您需要在安装前在 Options 菜单中设置 NFS Secure

如果您的一台网卡比较糟糕,速度很慢,则应考虑 NFS Slow的选项。

为了达到NFS安装的目的,这个服务器必须支持 subdir 加载。例如,如果您的 FreeBSD 5.4 目录存在: ziggy:/usr/archive/stuff/FreeBSD,然后 ziggy 将必须允许直接挂上 /usr/archive/stuff/FreeBSD,而不仅仅是 /usr/usr/archive/stuff

在 FreeBSD的 /etc/exports 配置文件中,是由 -alldirs 选项来控制的。其它 NFS服务器也许有不同的方式。 如果您从服务器得到“permission denied” 这个信息,可能是因为您没有正确的启用它。


Chapter 3. UNIX 基础

Rewritten by Chris Shumway.

3.1. 概述

下列章节的命令和功能适用于FreeBSD操作系统。 同时这里许多内容和一些 UNIX 类似操作系统相关。 假如您已经熟悉这些内容可跳过不阅读。 假如您是FreeBSD新手, 那您应该认真详细地从头到尾读一遍这些章节。

读取这些内容,您将了解:

  • 怎样在FreeBSD使用 “虚拟控制台”。

  • UNIX 中文件权限如何运作, 以及理解 FreeBSD 中的文件标志。

  • FreeBSD 默认文件系统的架构。

  • FreeBSD磁盘架构。

  • 怎样挂接或卸下文件系统。

  • 什么是进程、守护进程、信号。

  • 什么是shell,应当怎样去改变登录进入的默认环境。

  • 怎样使用基本的文本编辑器。

  • 什么是设备,什么是设备节点。

  • FreeBSD 下,使用的是什么可执行文件格式。

  • 怎样使用 man 手册并取得更多资讯。


3.2. 虚拟控制台和终端

FreeBSD能多方面应用,其中之一它能在字符终端输入命令。 您可以在这方面容易地使用FreeBSD这个有强大适应性和功能的 UNIX 系统, 这部份介绍 “多终端” 和“多控制台”, 和您在 FreeBSD 应怎样使用它们。


3.2.1. 控制台

假如您没有设置到 FreeBSD 在启动期间给出图形登录, 那么系统将在引导和启动脚本正确运行完成后,给您一个登录的提示。 您会看到类似这样的界面:

Additional ABI support:.
Local package initialization:.
Additional TCP options:.

Fri Sep 20 13:01:06 EEST 2002

FreeBSD/i386 (pc3.example.org) (ttyv0)

login:

这些信息可能和您的系统稍微有点不同,但不会有很大差别。 最后两行是我们感兴趣的, 理解这一行:

FreeBSD/i386 (pc3.example.org) (ttyv0)

这一行是您刚才启动的系统信息其中一块, 您所看到的是一个“FreeBSD”控制台, 运行在一个Intel或兼容的x86体系架构上面[1]。这个结构名称 (每一种UNIX结构都有自己的名称) 叫 pc3.example.org, 就是现在这个系统控制台--这个 ttyv0 终端的样子。

在最后,最后一行一直保持这样:

login:

假设在这一部份您的用户名 “username”已经注册在FreeBSD里, 那一步介绍您应怎样做。


3.2.2. 进入FreeBSD

FreeBSD是一个多用户和多重处理的系统, 这个介绍换句话来说就是一个系统可容纳许多不同的用户, 谁都可以同时在单一结构下运行大量的程序。

每一个多用户系统都必须在某方面去区别“user”, 在FreeBSD里 (和这UNIX 类似的操作系统),完成这方面工作是有必要的, 每位使用者在运行程之前都必须“登录”, 每位用户都有他的用户名 (“username”) 和密码 (“password”)。 FreeBSD 会在用户进入之前作出两次询问。

在FreeBSD启动和启动脚本正确运行完后 [2],它将要求您提供一个有效的用户名:

login:

举个例子更容易理解,我们假设您的用户名叫john。 在提示符下输入 john并单击Enter, 此时您应该看到这个提示“password”:

login: john
Password:

现在输入 john的密码,和单击 Enter。这个密码是没有回显的! 您在这时不必担心,它出于安全考虑才这样做的。

假如您输入的密码是正确的,您应该尽快进入FreeBSD并为练习可用的命令作好准备。

您应该看见 MOTD 或者出现一个命令提示符 (#$% 字符). 这表明您已成功登录进入FreeBSD。


3.2.3. 多个控制台

在一个控制台运行 UNIX 命令虽说很好, 但 FreeBSD 具有一次运行 多个程序的能力。 仅使用一个控制台只会浪费 FreeBSD 同时运行多任务的能力。 而 “虚拟控制台” 在这方面发挥强大的功能。

FreeBSD 能配置出给您不同需求的虚拟控制台, 在键盘上您用一组键就能从各个虚拟控制台之间切换。 各个控制台有自己的传输通道, 当您从各个控制台切换时 FreeBSD 会切换到合适的键盘传输通道和显示器传输通道。

FreeBSD 各个控制台之间可利用特殊组键切换并保留原有控制台 [3],您可这样做: Alt-F1Alt-F2, 一直到 Alt-F8 在FreeBSD里切换到其中一个虚拟控制台。

同样地, 您正在从其中某个控制台切换到另一个控制台的时候, FreeBSD 会保存正在使用和恢复将要使用屏幕传输通道。 这种结果形成一种 “错觉”, 您拥有许多“虚拟”屏幕和键盘可以输入很多的命令。 这些程序需要在一个虚拟控制台不能停止运行而又不需要观察它, 它继续运行而您可以切换到其他的虚拟控制台。


3.2.4. /etc/ttys文件

FreeBSD 虚拟控制台的默认配置为8个,但并不是硬性设置, 您可以很容易设置虚拟控制台的个数增多或减少。 虚拟控制台的的编号和设置在 /etc/ttys 文件里。

您可以使用 /etc/ttys 文件在 FreeBSD 下配置虚拟控制台。 文件里每一未加注释的行都能设置一个终端或虚拟控制台 (当行里含有 # 这个字符时不能使用) 。 FreeBSD 默认配置是配置出9个虚拟控制台而只能启动8个, 以下这些行是 ttyv 一起启动:

# name  getty                           type    status          comments
#
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv4   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv5   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv6   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv7   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

您能在这文件详细设置每行的参数,加载虚拟控制台启动所需要的物件。 请参考 ttys(5) 联机手册。


3.2.5. 单用户模式的控制台

关于 “单用户模式” 详细介绍在 第 12.6.2 节 这里可以找到。 当您运行单用户模式时只能使用一个控制台, 没有多个虚拟控制台可使用。 单用户模式的控制台同也可以在 /etc/ttys 文件设置, 可在这行找到要启动的控制台

# name  getty                           type    status          comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none                            unknown off secure

Note: 这个 console 已经注释掉, 您可编辑这行把 secure 改为 insecure。 这样, 当用单用户进入 FreeBSD 时, 它仍然要求提供 root 用户的密码。

在把这个选项改为 insecure 的时候一定要小心, 如果您忘记了 root用户的密码, 进入单用户会有点麻烦。 尽管仍然能进入单用户模式, 但如果您不熟悉它就会非常令人头疼。


3.3. 权限

FreeBSD,是 BSD UNIX 的延续, 并基于几个关键的 UNIX 观念。 从一开始就多处提到 FreeBSD 是一个多用户的操作系统, 它能分别处理几个同时工作的用户所分配的毫无关联任务。 并负责为每位用户的硬件设备、 外设、 内存和 CPU 处理时间作出合理安排。

因为系统有能力支持多用户, 在每一方面系统都会作出谁能读、 写和执行的资源权力限制。 这点权限以三个八位元的方式储存着, 一个是表示文件所属者, 一个是表示文件所属群组, 一个是表示其他人。 这些数字以下列方式表示:

数值 权限 目录列表
0 不能读,不能写,不能执行 ---
1 不能读,不能写,可执行 --x
2 不能读,可写,不能执行 -w-
3 不能读,可写,可执行 -wx
4 可读,不能写,不能执行 r--
5 可读,不能写,可执行 r-x
6 可读,可写,不能执行 rw-
7 可读,可写,可执行 rwx

使用命令的 -l (ls(1)) 参数可以显示出文件的所属者、 所属组和其他人等属性。 请看以下的例子:

% ls -l
total 530
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 myfile
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 otherfile
-rw-r--r--  1 root  wheel    7680 Sep  5 12:31 email.txt
...

使用 ls -l 在每行的开始出现了:

-rw-r--r--

从左边起的第一个字,告诉我们这个文件是一怎样的文件: 普通文件?目录?特殊设备?socket?或是设备文件? 在这个例子, - 表示一个普通文件。 接下来三个字是 rw- 是文件拥有者的权限。 再接下来的三个字是 r-- 是文件所属群组的权限。 最後三个字是 r-- 是其他人的权限。 以这一个文件为例,他的权限设定是拥有者可以读写这个文件、群组可以读取、 其他使用者也能读取这个文件。 根据上面的表格, 用数字表示这个文件其三部分的权限应该是 644

这样很好,但系统怎样对设备进行权限控制的? 事实上 FreeBSD 将大部份设备(的每一个设备)当作一个文件看待, 用程序能打开、读取、写入数据就如其他的文件一样。 而设备文件放在 /dev 目录。

目录也视为一种文件,也有读取、写入、执行的权限。 但目录的执行权限意义并不与普通文件相同, 实际上执行权限是进入权限。 当一个目录是被标示可以执行的时候,那表示它可以被进入, 利用 “cd” (变化目录位置)可以进入。 这意味着访问这些目录必须是谁才有权力 (当然目录下的文件也受到访问限制)。

详细方面,想读取一个目录的列表就必须设为可读权限, 同时想删除一个已知的文件,就必须把目录下这个文件设为可写 执行权限。

还有更多权限设定, 但是他们大多用在特殊状况下如一个setuid的执行文件和粘贴性目录, 如果想要得知有关文件权限和如何设定的更多资讯,请看手册chmod(1)


3.3.1. 权限的符号化表示

Contributed by Tom Rhodes.

权限符号,某些时候就是指符号表达式, 使用八进制的字符给目录或文件分配权限。 权限符号的使用语法是 (谁) (作用) (权限)。 看看下列数值的在那些地方所起什么样的作用:

选项 字母 介绍
(谁) u 用户
(谁) g 所属群体
(谁) o 其他人
(谁) a 所有人 (“全部”)
(作用) + 增加权限
(作用) - 减少权限
(作用) = 确定权限
(权限) r 可读
(权限) w 可写
(权限) x 执行
(权限) t 粘贴位
(权限) s 设置 UID 或 GID

这些数值 chmod(1) 以习惯标定的。 举个例子,用以下命令阻止其他人访问 FILE文件:

% chmod go= FILE

倘若对一个文件作太多的变化设置可用逗号分开, 在下面的例子里, 可以去掉FILE文件的群体和 “全部” 可写权限, 但所有人都可以有执行权限:

% chmod go-w,a+x FILE

3.3.2. FreeBSD 文件标志

Contributed by Tom Rhodes.

在前面所介绍的文件权限的基础之上, FreeBSD 还支持使用 “文件标志”。 这些标志为文件提供了进一步的安全控制机制, 但这些控制并不适用于目录。

这些文件标志提供了针对文件的进一步控制, 帮助确保即使是 root 用户也无法删除或修改文件。

文件标志可以通过使用 chflags(1) 工具来修改, 其用户界面很简单。 例如, 要在文件 file1 上应用系统禁删标志, 应适用下述命令:

# chflags sunlink file1

要禁用系统禁删标志, 只需在前述命令中的 sunlink 标志前加 “no”。 例如:

# chflags nosunlink file1

要显示文件上的标志, 应使用 ls(1)-lo 参数:

# ls -lo file1
   

删除应类似于:

-rw-r--r--  1 trhodes  trhodes  sunlnk 0 Mar  1 05:54 file1

许多标志只可以由 root 用户来增加, 而另一些, 则可以由文件的所有者来增加。 建议管理员仔细阅读 chflags(1)chflags(2) 联机手册, 以对其加深理解。


3.4. 目录架构

目录层次是理解一个系统的重要基础, 最重要的莫过于它的根目录 “/”, 这个目录在启动时就就挂上, 它包含了启动时所需的基本系统。 这个根目录同样包含了想要挂接的每一个文件系统。

挂接点 (mount point) 是新增的文件系统在接入现有系统时的起点位置。 标准的挂接点包括 /usr/var/tmp/mnt, 以及 /cdrom。 这些目录通常会在 /etc/fstab 文件中提及。 /etc/fstab 是一张包含系统中各个文件系统及挂接点的表。 在 /etc/fstab 中的绝大多数文件系统都会在启动时由 rc(8) 脚本自动挂接, 除非特别指定了 noauto 选项。 更多细节请参考 第 3.6.1 节

您可以通过 hier(7) 来了解完整的文件系统层次说明。 现在, 让我们先来看一看绝大多数的常见的目录以供参考。

目录 介绍
/ 文件系统的根目录。
/bin/ 在单个用户和多用户环境下的基本工具目录。
/boot/ 在操作系统在启动加载期间所用的程序和配置。
/boot/defaults/ 默认每步引导启动的配置内容,请查阅loader.conf(5)
/dev/ 设备接点,请查阅 intro(4)
/etc/ 系统启动的配置和脚本。
/etc/defaults/ 系统默认的启动配置和脚本,请参考 rc(8)
/etc/mail/ 关系到邮件系统运作的配置, 请参考 sendmail(8)
/etc/namedb/ named 配置文件,请参考 named(8)
/etc/periodic/ 每天、每星期和每月周期性地运行的脚本, 请通过 cron(8)查阅 periodic(8)
/etc/ppp/ ppp配置文件,请查阅ppp(8)
/mnt/ 由管理员习惯使用挂接点的临时空目录。
/proc/ 运行中的文件系统,请参阅 procfs(5)mount_procfs(8)
/rescue/ 用于紧急恢复的一组静态联编的程序; 参见 rescue(8)
/root/ root用户的Home(主)目录。
/sbin/ 在单个用户和多用户环境下的存放系统程序和管理所需的基本实用目录。
/stand/ 持久独一无二的程序环境。
/tmp/ 存放临时文件,通常存放一些系统重启后不需要保护的 mfs(8) 基于内存的文件系统。
/usr/ 存放大多数用户的应用软件。
/usr/bin/ 存放实用命令,程序设计工具,和应用软件。
/usr/include/ 存放标准 C include 文件.
/usr/lib/ 存放库文件。
/usr/libdata/ 存放各种实用工具的数据文件。
/usr/libexec/ 存放系统实用或后台程序 (从另外的程序启动执行)。
/usr/local/ 存放本地执行文件, 库文件等等, 同时也是 FreeBSD ports 安装的默认安装目录。 /usr/local/usr 总体布置请查阅 man.hier.7;。 man 目录例外, 它们直接放在 /usr/local 而不是 /usr/local/share 下, 而 ports 说明文档在 share/doc/port
/usr/obj/ 通过联编 /usr/src 得到的目标文件。
/usr/ports 存放 FreeBSD 的 Ports Collection (可选)。
/usr/sbin/ 存放系统后台程序 和 系统工具 (由用户执行)。
/usr/share/ 存放架构独立的文件。
/usr/src/ 存放 BSD 或者本地源码文件。
/usr/X11R6/ 存放 X11R6 可执行文件、 库文件、 配置文件等的目录(可选)。
/var/ 存放多用途记录、临时性、短期的和打印假脱机系统文件.
/var/log/ 存放各种的系统记录文件。
/var/mail/ 存放用户mailbox(一种邮件存放格式)文件。
/var/spool/ 各种打印机和邮件系统spooling(回环)的目录。
/var/tmp/ 存放系统重启前受控制的临时文件。
/var/yp NIS 映射。



3.5. 磁盘组织

FreeBSD 查找文件的最小单位是文件名。 而文件名区分大小写,这就意味着 readme.txtREADME.TXT 是两个不相同的文件。 FreeBSD 不凭文件扩展名 (.txt) 去识别这个文件是 程序、 文档, 或是其他格式的数据。

各种文件存放在目录里。 一个目录可以含有许许多多的文件, 允许含有其他的目录,同样允许您添加不同层次的目录在里面。 可以轻松地组织您的数据。

可以通过文件或目录名来指定文件和目录, 在目录名后面加上一个斜线, /, 如果需要的话。 如果您有一个名为 foo 的目录, 它包含另一个目录 bar, 后者重包括一个叫 readme.txt 的文件, 则全名, 或者说到文件的 路径 就是 foo/bar/readme.txt

在文件系统里目录和文件的作用是存储数据。 每一个文件系统都正确含有一个顶级目录根目录, 这个根目录包含其他目录。

您也许在其他的一些操作系统碰到类似这里的情况, 当然也有不同的情况。 举些例子, MS-DOS 是用 \ 分隔文件名或目录名, 而 Mac OS® 则使用:

FreeBSD在路径方面不使用驱动器名符号或驱动器名称, 在FreeBSD里您不能这样使用: c:/foo/bar/readme.txt

为了代替(驱动器名符号), 一个文件系统会指定 根 文件系统, 根文件系统的根目录是 /。 其他每一个文件系统 挂接在根文件系统下。 无论有多少磁盘在FreeBSD 系统里, 每个磁盘都会以目录的方式加上。

假设您有三个文件系统, 名为 ABC。 每个文件系统有一个根目录, 而各自含有两个其他的目录, 名为 A1, A2 ( B1, B2C1, C2)。

看看 A 这个根文件系统。 假如您用 ls 命令来查看这个目录您会见到两个子目录: A1A2。 这个目录树是这个样子:

一个文件系统必须挂到另一个文件系统的某一目录, 所以现在假设把 B 文件系统挂到 A1目录, 那 B 根目录因此代替 了 A1,而显示出 B 目录(的内容):

无论B1B2 目录在那里而延伸出来的路径必须为 /A1/B1/A1/B2。 而在 /A1 里原有的文件会临时隐藏。 想这些文件再出现把 B 从 A 挂接释放

B 挂接在 A2 那图表的样子就是这样子:

这个路径分别是 /A2/B1/A2/B2

文件系统能把顶部挂接上另一个文件系统上。 继续这个例子, 把 C 文件系统挂接在 B 文件系统里的 B1 目录, 排列如下:

或者把 C 文件系统挂接在 A 文件系统里的A1目录:

假如您熟悉 MS-DOS并知到join 命令, 尽管不相同,其实是相似的。

这方面不是普通知识而且涉及到您自己所关心的, 当您安装FreeBSD并在以后添加新磁盘时, 您必须知到该如何新建文件系统和挂接上。

(FreeBSD系统)它有一个主要的根文件系统, 不需要另外新建立, 但当需要手工处理时,这是一个有用的知识。

多样性文件系统的益处

  • 不同的文件系统可用不同的 挂接参数。 举些例子, 仔细想一下, 根文件系统能用只读的方的方式挂接上, 防止不经意删除或编辑到一个危险的文件。 把各用户能写入的文件系统分开, 像/home这样, 由另外的文件系统分别用 nosuid 参数挂接,这个参数防止 suid/guid 在执行这个文件系统中的文件时生效, 从而缓解了一些安全问题。

  • FreeBSD 对一个文件系统的文件布局自动优化, 并依赖文件系统的使用习惯。 所以一个文件系统应有一个针对大量小型文件频繁写入的优化, 另外大型文件系统的优化也应落实。

  • FreeBSD 的文件系统能够在断电时尽可能避免损失。 然而, 在关键点时的电源失效仍然可能会破坏文件系统的结构。 将您的文件系统分成多个有助于分散风险, 并方便备份和恢复。

统一文件系统的益处

  • 文件系统是固定大小的。 当安装FreeBSD时新建一个文件系统并设定一个大小, 您会在稍后发觉到必须去建一个大的分区。 如果配置不当, 则需要备份、 重新创建文件系统, 然后再恢复数据。

    Important: FreeBSD 4.4 或更高的版本提供了 growfs(8) 命令。 这使得能够实时地调整文件系统的大小, 因而不再受其限制。

文件系统是和分区一一对应的。 这里的分区和常用的术语分区 (例如, MS-DOS 分区) 的意思并不一样, 这是由于 FreeBSD 的 UNIX 传统造成的。 每一个分区使用一个从 ah 的字母来表示。 每个分区只能包含一个文件系统, 这意味着文件系统通常可以由它们在文件系统目录结构中的挂接点, 或对应的分区字母来表示。

FreeBSD 的 交换分区 也需要使用磁盘空间。 交换分区是给 FreeBSD 作 虚拟内存 使用的, 这样能令您的计算机有更多的内存可使用, 当FreeBSD在运行而内存不够的时候, 它会把其他一些可转移的数据转移到交换分区, 空出内存的位置以供使用。

某些 partitions 的用途是确定的。

分区 约定
a 通常指定为根文件系统
b 通常指定为交换分区
c 通常它和所在的 slice 大小相同。 c 分区上工作时必定会影响到事整个 slice (举个例子,坏块扫描器)。 您通常不愿意在这个partition建立文件系统。
d 分区 d 曾经有特殊的含义, 虽然(对我们来说)早已远离而去。 但直到今天,一些工具在 分区 d上运行会发生古怪事情, 所以 sysinstall 通常不建立分区 d

每一个包含了文件系统的分区被保存在 FreeBSD 称为 slice 的部分上。 Slice 是一个 FreeBSD 术语, 通常被叫做分区, 再次强调, 这是由于 FreeBSD 的 UNIX 背景。 Slices 有其编号, 从1到4。

Slice 编号在设备名后面, 并有一个 s 前缀, 从 1 开始。 因此 “da0s1” 是第一个 SCSI 驱动器的第一个 slice。 每个磁盘上只能有四个物理的 slices, 但您可以在物理 slice 中使用适当的类型来创建逻辑 slice。 这些扩展 slice 编号从 5 开始, 因此 “ad0s5” 是第一个 IDE 磁盘中的第一个 扩展 slice。 文件系统所使用的设备应该占满 slice。

Slices, “专项指定” 物理驱动器, 和其他驱动器都包含partitions, 那几个的partitions都是用字母 从 ah来标定的, 而这些字母都在驱动器名字之后,所以 “da0a” 是指首个da设备的 a partition, 而那个就是 “专项指定”。 “ad1s3e” 是指IDE磁盘第三个slice的第五个partition。

最终,每个磁盘都被系统识别。 一个磁盘名字是用磁盘类型代码和编号来标识的, 它不像slices,磁盘的编号是由0开始的。 对应代码请看这里所列出的表 3-1

当提供一个partition名字给FreeBSD时, slice 和 磁盘所必须有这个partition,还应当提供所partition所涉及 到的slice和磁盘的名字。可这样列出: 磁盘名称,s,slice 编号,和partition标定字母。 例子请看这里 例 3-1

例 3-2 这里显示了一个磁盘的布局,有更清楚的帮助。

在安装FreeBSD时,您首先要配置好磁盘slices, 然后在FreeBSD使用的slice上建立partitions。 并在每个partition上建立一个文件系统(或交换分区), 和指定文件系统的挂接位置。

Table 3-1. 磁盘设备的代码

代码 说明
ad ATAPI (IDE) 磁盘
da SCSI 直接存取磁盘
acd ATAPI (IDE) 光驱
cd SCSI 光驱
fd 软驱

Example 3-1. 样例磁盘, Slice, 和 Partition 它们的命名

命名 说明
ad0s1a 在首个IDE磁盘(ad0)上的 第一个slice (s1)里的 第一个partition (a)。
da1s2e 在第二个SCSI磁盘(da1)上的 第二个slice(s2)里的 第五个partition(e)。

Example 3-2. 一个磁盘的布局

从在系统里的首个IDE磁盘图表可以显示出FreeBSD的见解。 假设磁盘大小为4 GB,它里面包含了两个2 GB 大小的slices (但在MS-DOS叫partitions)。 首个slice是一个MS-DOS磁盘叫C:, 而第二个slice是FreeBSD配置好的slice。 FreeBSD配置好的slice有三个partitions和另一个交换分区。

这三个partitions各自控制一个文件系。 partitiona用于根文件系统, partitione用于/var目录层, partitionf用于/usr目录层。


3.6. 文件系统的挂接和卸下

这种文件系统就像一棵树那样用/确立根部, 是比较理想的文件系统。 而/dev/usr和其他目录 就是根目录的分枝, 另外这些目录可以再分枝,例如/usr/local

应该考虑给某些目录一些空间从而分散文件系统。 /var 之下包含目录 log/,目录spool/, 和不同类型的临时文件,很可能把它塞满。 把什么都塞进根文件系统不是一个好主意, 好的做法是应该把 /var/分离出去。

另一个要考虑的是,给物理设备或虚拟磁盘这些自带空间的文件系统确定目录结构树。 例如 网络文件系统 或光驱的挂接。


3.6.1. fstab 文件

导入处理期间, 自动挂上/etc/fstab所列出的文件系统。 (除非他们注明为noauto 选项)。

/etc/fstab 文件包含的各行的列表格式如下:

device       /mount-point fstype     options      dumpfreq     passno
device

设备名称(设备必须存在), 说明在 第 16.2 节.

mount-point

目录 (目录必须存在), 用在那个挂接上的文件系统上。

fstype

文件系统类型,请通过mount(8)查阅。 默认的FreeBSD文件系统类型是ufs

options

设为可读写文件系统的rw选项, 或设为只读文件系统的ro选项, 或其他一些选项,可随意选一个。 一个常用的选项 noauto 用在不需在导入期间挂接的文件系统。 其他的选项在 mount(8) 手册里列出。

dumpfreq

dump(8) 使用这项去决定那个 文件系统必须移贮。假如缺少这项,默认的数值为0。

passno

这一项决定文件系统的检查顺序, 文件系统想跳过检查应将passno设为0。 根文件系统(那个是在每方面开始之前必须检查的) 应该将它的 passno 设为1, 其他文件系统的 passno 必须把数值设到大于1。假如多个文件系统的passno的值相同, 那么fsck(8) 在充许的情况下将尝试并行地去检查文件系统。

Consult the fstab(5) manual page for more information on the format of the /etc/fstab file and the options it contains.


3.6.2. mount 命令

这个 mount(8) 命令是挂接文件系统的基本运用。

使用最多的基本格式:

# mount device mountpoint

它的选项非常多,而mount(8) 手册同样提及, 但常用的都在这里:

挂接的各种选项

-a

挂接/etc/fstab里所有列出的文件系统。 除非标记为 “noauto” 或作了排除在外的 -t 类型标记,或者在这之前已挂上。

-d

除了实际上系统调用以外,可以完成任何事情,这个选项是和 -v参数一起连在一块使用,可以决定mount(8)所做的事情。

-f

强制去挂接一个未知的文件系统(会有危险), 或当把一个文件系统挂接状态由可读写降为只读时,强制撤消可写通道。

-r

以只读方式挂接文件系统。 这和在指定了 -o 选项配合 ro (对于 FreeBSD 5.2 之前的版本来说, 则是 rdonly) 参数的效果是一样的。

-t fstype

根据给出的文件系统类型挂接文件系统, 假如给于-a选项,仅挂接这个类型的文件系统。

“ufs” 是默认的文件系统类型。

-u

在文件系统上修改挂接选项。

-v

版本模式。

-w

以可读写方式挂接文件系统。

The -o 选项采用一个逗号分开以下多个选项:

nodev

拒绝把文件系统识别为特别的设备。这是一个有用的安全选项。

noexec

不允许文件系统上的二进制程序执行。这也是一个有用的安全选项。

nosuid

不允许文件系统上的 setuid 或 setgid 标记生效。这也是一个有用的安全选项。


3.6.3. umount 命令

umount(8) 命令同样采用一个参数、一个挂接点、一个设备名。 或采用-a选项,又或采用-A选项。

所有格式都可采用 -f 去强行卸下, 或采用-v 用那适当的版本。 但警告,采用 -f并不是一个好主意, 强行卸下文件系统可能损坏计算机或破坏文件系统上的数据。

-a-A 会卸下所有已挂接的文件系, 可能通过-t后面列出的文件系统进行修改, 但无论如何,-A都不会尝试去卸下根文件系统。


3.7. 进程

FreeBSD 是一个多任务操作系统。 这就意味着好像一次可以运行一个以上的程序。 每个占用一定时间运行的程序就叫process。 每个程序启动运行时至少有一个新进程,并在所有运行的时候保持有一个系统进程的编号, 而一直由系统对它监管。

每个进程用来标识的一个编号就叫 进程 ID, 或叫 PID。 而且,就像文件那样,每个进程也有所属用户和所属群体。 所属用户和所属群体使用在这方面:确定这个进程可以打开那些文件和那些设备, 从而在初期使用文件的权限。 多数的进程都同样有一个父进程, 而进程是依靠父进程来启动的。 例如,假如您把命令输入到shell里那shell是一个进程,而您运行的各个命令同样是进程, 那么,shell就是您各个运行进程的父进程。 而这方面有一个例外的进程就叫init(8)init始终是首个进程,,所以他的PID始终是1, 而init在FreeBSD起动时由内核自动启动。

在系统上,有两个命令对进程观察非常有用:ps(1)top(1)。 这个ps命令作用是观察当前运行进程的状态, 显示他们的PID,使用了多少内存,它们启动的命令行。 而top命令则是显示所有运行进程,并在以秒计的短时内更新数据。 您能交互式的观察您计算机的工作。

默认情况下, ps仅显示出您自己所运行的命令。 例如:

% ps
  PID  TT  STAT      TIME COMMAND
  298  p0  Ss     0:01.10 tcsh
 7078  p0  S      2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393  p0  I      0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630  p0  S      2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730  p0  IW     0:00.00 (dns helper) (navigator-linux-)
72210  p0  R+     0:00.00 ps
  390  p1  Is     0:01.14 tcsh
 7059  p2  Is+    1:36.18 /usr/local/bin/mutt -y
 6688  p3  IWs    0:00.00 tcsh
10735  p4  IWs    0:00.00 tcsh
20256  p5  IWs    0:00.00 tcsh
  262  v0  IWs    0:00.00 -tcsh (tcsh)
  270  v0  IW+    0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
  280  v0  IW+    0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
  284  v0  IW     0:00.00 /bin/sh /home/nik/.xinitrc
  285  v0  S      0:38.45 /usr/X11R6/bin/sawfish

在这个例子里您可看到,从 ps(1) 输出的每一列是有规律的。 PID 就是进程ID,这个较早前已讨论过了。 PID号的分配由 1一直上升直到99999, 当您运行到超过限制时,这些编号会回转分配。 TT这一列显示了程序运行所在的终端, 目前可以安全地忽略。 STAT 显示程序的状态,也可以安全地被忽略。 TIME是程序在CPU处理时间--运行的时间量, 并不是指您程序启动到现在的所用的时间。 许多程序碰巧遇到某方面在他们之前要花费大量CPU处理时间时,他们就必须等候。 Finally, COMMAND is the command line that was used to run the program.

ps(1)支持使用各种选项去改变显示出来的内容, 最有用的一个就是auxwwa选项显示出所有运行进程的内容, 而不仅仅是您的进程。 u选项显示出进程所归属的用户名字以及内存使用, x 选项显示出后台进程。 而 ww 选项表示为 ps(1) 把整个命令行全部显示完, 而不是由于命令行过长就把它从屏幕上截去。

下面和从top(1)输出是类似的,一个示例式对话就象这样子:

% top
last pid: 72257;  load averages:  0.13,  0.09,  0.03    up 0+13:38:33  22:39:10
47 processes:  1 running, 46 sleeping
CPU states: 12.6% user,  0.0% nice,  7.8% system,  0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse

  PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
72257 nik       28   0  1960K  1044K RUN      0:00 14.86%  1.42% top
 7078 nik        2   0 15280K 10960K select   2:54  0.88%  0.88% xemacs-21.1.14
  281 nik        2   0 18636K  7112K select   5:36  0.73%  0.73% XF86_SVGA
  296 nik        2   0  3240K  1644K select   0:12  0.05%  0.05% xterm
48630 nik        2   0 29816K  9148K select   3:18  0.00%  0.00% navigator-linu
  175 root       2   0   924K   252K select   1:41  0.00%  0.00% syslogd
 7059 nik        2   0  7260K  4644K poll     1:38  0.00%  0.00% mutt
...

这个输出分成两部份。 前面部份(起始前五行) 显示了:运行于最后进程的PID、 系统负载均衡 (那个是指系统繁忙时的调节方式)、 系统正常运行时间 ( 指从启动算起所用的时间) 和当前时间。 前面部份另外的图表 涉及:多少进程在运行(这个情况是47), 多少内存和多少交换分区在使用, 和在不同CPU状态里系统消耗多少时间。

在那下面一连串的纵列和从ps(1)输出的的内存是相似的。 如以前ps(1)一样,您能见到:PID、用户名、CPU处理时间合计、运行的命令。 top(1)默认是显示您的进程所用内存空间的合计。 内存空间这里分成两列,一列为总体大小,另一列是必须请求驻留大小是多少内存--总体大小。 而驻留大小实际上是瞬间使用的多少。 在以上那个例子,您会看到那Netscape®总计需要30 MB内存, 但实际只用了9 MB。

top(1) 每两秒自动刷新一次,您可以用s改变刷新的秒数。


3.8. 守护进程,信号和杀死进程

当您运行一个编辑器时它是很容易控制的,告诉它去加载文件它就加载。 您之所以能这样做,是因为编辑器提供这样便利去这样做,和因为有编辑器去附上的终端。 一些程序在运行中不需要连续的用户输入,一有机会就从终端里分离到后台去。 例如,一个web系统整天都在作web请求的响应,他不需要您输入任何东西就能完成, 这个类别的另一个例子就是把email的传送。

我们把那些程序叫 守护进程。 守护神是希腊神话中的一些人物,非正非邪,他们是些守护小精灵, 大体上为人类作出贡献。 许多类似web服务或mail服务的系统对于今天仍有用途, 这就是为什么在那么长的时间里,BSD的吉祥物保持为一双鞋加一把钢叉的守护神模样。

守护进程的程序命名通常在最后加一个 “d”。 BIND 是伯克利互联网域名服务 (而实际执行的程序名称则是 named), Apache web系统的程序就叫 httpd, 在行式打印机上的打印守护进程就是 lpd。 这只是一种惯例,不是标准或硬性规定。 例如,为Sendmail而应用的主要mail守护进程就叫sendmail, 却不叫maild,这和您推测的一样。

有时可能会需要与守护进程进行通讯。 而 信号 则是其中的一种通讯机制。 可以发送信号给守护进程 (或相关的另一些进程) 来与它进行通信, 不同的信号都有自己的数字编号--其中一些有特殊的含义, 其它的则可以被应用程序自己进行解释, 而一般来说, 应用程序的文档会告诉哪些信号会被如何处理。 您只能给所属于您的进程发信号,假如您给其他人的进程发信号, 进程就会用kill(1)kill(2)权限进行拒绝。 当然,root 用户会例外,它能把各种信号发送给每个进程。

在某些情况下,FreeBSD也会向应用软件发送信号。 假如一个应用软件含有恶意写入并试图去访问内存,那是不可想象的,FreeBSD会向那个进程发送 段式违规 信号 (SIGSEGV)。 假如一个应用软件使用alarm(3)系统去进行周期性调用闹钟功能,每当达到时间时, FreeBSD会向应用软件发送闹钟信号(SIGALRM)。

有两个信号可以停止进程:SIGTERMSIGKILLSIGTERM比较友好,进程能捕捉这个信号, 根据您的需要来关闭程序。在关闭程序之前,您可以结束打开的记录文件和完成正在做的任务。 在某些情况下, 假如进程正在进行作业而且不能中断,那么进程可以忽略这个 SIGTERM信号。

对于SIGKILL信号,进程是不能忽略的。 这是一个 '“我不管您在做什么,立刻停止”'的信号。 假如您发送SIGKILL信号给进程, FreeBSD就将进程停止在那里。[4].

您可能会去使用 SIGHUPSIGUSR1SIGUSR2信号。 这都是些通用的信号,各种应用程序都可以应用 在各方面的信号发送。

假如您改变了web系统的配置文件--并想web系统去重读它的配置, 您可以停止然后再启动httpd。但这样做web系统会导致一个短暂 的中断周期,那样是不受欢迎的。几乎所有的守护进程在编写时,都会指定对SIGHUP 信号进行响应从而重读配置文件。 所以, 最好的方法, 就不是杀死并重启 httpd, 而是发一个 SIGHUP 信号给它。 因为在这方面没有一个标准,不同的守护进程有不同的用法,所以不了解时应读一下守护进程的文档。

发送信号可用kill(1) 命令, 请参考kill(1)所列出的例子。

发送一个信号给进程

这个例子显示了怎样去发一个信号给inetd(8)inetd配置文件是/etc/inetd.conf, 如果想inetd 去重读文件系统的话,可以给它发一个SIGHUP 信号。

  1. 寻找您要发送信号的进程ID,可以用ps(1)grep(1)来完成。 grep(1)命令被用在搜索输出方面,搜索您指定的字符串。 这命令是由普通用户来执行的,而inetd(8)root用户运行的, 所以必须给ps(1)带上ax选项。

    % ps -ax | grep inetd
      198  ??  IWs    0:00.00 inetd -wW
    

    得出 inetd(8) PID号是198。 有时 grep inetd 命令也出现在输出中, 这是因为在这方面 ps(1) 也是寻找列表中运行进程。

  2. 使用 kill(1) 去发送信号。 因为 inetd(8) 是由 root启动的, 您必须使用 su(1) 去 变为 root 用户。

    % su
    Password:
    # /bin/kill -s HUP 198
    

    和大多数 UNIX 命令一样, kill(1) 如果完成了任务, 就不会给出任何消息。 假如您发送信号给一个不属于您的进程, 您会看到 “kill: PID: Operation not permitted”. 假如输错了PID号,把信号发送到其他进程,那是坏事。 或者您侥幸,把信号发送到不存在的进程, 您会看见 “kill: PID: No such process”.

    为什么使用 /bin/kill?: 许多shell提供了内建kill命令, 这样, shell就能直接发送信号,而不是运行 /bin/kill。 这点非常有用, 但不同shell有不同的语法来指定发送信号的名字, 与其试图把它们学完倒不如简单地直接使用 /bin/kill ...

发送其他的信号也很相似,只要在命令行替换TERMKILL就行了。

Important: 在系统上随意杀死进程是个坏主意,特别是init(8),它的进程ID是1,它非常特殊。 可以运行 /bin/kill -s KILL 1 命令来让系统迅速关机。 当您按下 Return 键之前, 一定要 详细检查您运行 kill(1) 时所指定的参数。


3.9. Shells

在FreeBSD里,每日有一大堆工作是在命令行的界面完成的,那就叫做shell。 一个shell的主要功能就是从输入是取得命令然后去执行他。 许多的shell同样能帮我们完成内建的每日功能,例如:文件管理、文件寻找、命令行编辑、 宏指令和环境变量。FreeBSD内含了一些shell,例如:sh、Bourne Shell、 tcsh和改良过的C-shell。 另外也有些shell也可在FreeBSD的Ports得到,例如:zshbash

您想使用那一种shell取决于您的喜好, 假如您是C程序设计师,您可能选择一个C-like shell例如tcsh。 假如您是从Linux过来的或是一个命令行的新手,您可能会试一下bash。 这一点告诉我们每一个shell都有各自的特性,可能适用于您的工作环境,也可能不适用于您的工作环境。

每个shell都有一个共通点就是文件名补全。 输入命令或文件名的前几个字,然后按Tab键,就能靠shell的自动补全功能得出 命令或文件名。这里有一个例子,假设您有两个文件叫 foobarfoo.bar,而您想删除 foo.bar, 可这样在键盘上输入 rm fo[Tab].[Tab]

那么shell就会输出 rm foo[BEEP].bar

这个[BEEP] 是这控制台铃声, 那个是告诉我们它不能完成文件名补全,因为有多个文件名符合。 foobarfoo.bar 都是以 fo开头, 它只可以补全到 foo。 输入 .并再按一次 Tab,shell才把其余的文件名全部显示出来。

另一个特点就是shell利用环境变量运行。环境变量是贮存在shell环境空间上相对应的键和可变值, 这个空间能够补程序从shell里读出,而且包含了许多程序的配置。 这个一个常用环境变量列和其含义的列表:

变量 说明
USER 当前登录进入的用户名。
PATH 搜索程序路径,以两点的冒号分隔开。
DISPLAY 假如有这个变量的话,就是X11显示器的网络名称。
SHELL 当前所用的shell。
TERM 用户终端的名字,通常用在确定终端的能力。
TERMCAP 各种终端功能所用终端分离编码的基本数据项目。
OSTYPE 操作系统类型,默认是FreeBSD。
MACHTYPE 是指系统上运行的CPU体系结构。
EDITOR 用户首选的文本编辑器。
PAGER 用户首选的文本页面调度程序 。
MANPATH 搜索联机手册路径,以两点的冒号分隔开。

不同的shell设置环境变量也不相同。举个例子, 在如tcshcsh这样的C-Style shell, 您必须使用setenv去设置环境变量。 而在如shbash这样的Bourne shell, 您必须使用export去设置当前环境变量。 再举个例子,要去设置或改变EDITOR环境变量, 在cshtcsh下将EDITOR设为 /usr/local/bin/emacs:

% setenv EDITOR /usr/local/bin/emacs

而在Bourne shell下,则是:

% export EDITOR="/usr/local/bin/emacs"

您也可以在命令行上加一个$字符在变量之前从而取得环境变量。 举个例子,用echo $TERM 就会显示出$TERM的设定值, 其实就是shell取得$TERM并传给echo来显示的。

shell里有许多特别的字符代表着特别的资料,我们把叫做meta-characters。 最常用的就是*字符,它可代表文件名的任何字符。 这些特别字符应用到文件名全域方面。假如,输入 echo *和输入 ls的效果是相同的,其实就是 shell 取得了全部符合 *的文件名,并传给 echo 在命令行下显示出来。

为了防止shell去分析这些特别字符, 我们可在它之前加一个 \字符去说明它只是普通字符。 echo $TERM就会显示出您的终端情况, 而 echo \$TERM 就会显示出 $TERM 这几个字。


3.9.1. 改变您用的Shell

改变您的Shell的最简单方法是使用 chsh 命令。 执行 chsh 将根据您设定的EDITOR 环境变量进入到那个编辑器,假如没有设定,就会进入vi编辑器。 请改变“Shell:”这行对应值。

您可使用chsh-s选项, 这样就能设置您的shell却又不用编辑器。假如您想把shell改为bash 可用下面的技巧。

% chsh -s /usr/local/bin/bash

运行chsh 不加参数只编辑shell也会达到相同的效果。

Note: 您使用的shells必须/etc/shells 文件里列出。 假如您从 ports里装一个shell, 那就不用做这步了。 假如您手工装一个shell,那就要手工添加进去。

举个例了子,假如您手工把 bash装到 /usr/local/bin里,您还要进行这一步:

# echo "/usr/local/bin/bash" >> /etc/shells

然后运行chsh


3.10. 文本编辑器

FreeBSD 的很多配置都可以通过编辑文本文件来完成。 因此, 最好能熟悉某种文本编辑器。 FreeBSD 基本系统中提供了一些, 您也可以从 Ports Collection 安装其它编辑器。

最容易学的而又简单的编辑器是 ee编辑器, 是个标准的简易编辑器。 要启动 ee,首先就要在命令行输入 ee filenamefilename 是一个要编辑的文件名。 例如,要编辑 /etc/rc.conf就要输入 ee /etc/rc.conf,在 ee的控制内, 编辑器所有功能的操作方法都显示在最上方。 这个^ 字符代表 键盘上的Ctrl 键, 所以^e 就是 Ctrl+e组合键。 假如想离开ee, 按Esc键,就可选择离开编辑器。 当您修改了内容的时候,编辑器会提示您保存。

FreeBSD本身也带许可多有强大功能的文本编辑器, 例如 vi。还有其他在FreeBSD Ports里几种, 像 emacsvim。 这些编辑器有着强大的功能,但同时学习起来比较复杂。 不管怎样,假如您从事文字编辑方面的工作, 学习如vimemacs 这些有强大功能的编辑器用法, 在长时间工作里会帮您节省不少的时间。


3.11. 设备和设备节点

在一个系统里,硬件描述通常用法就是一个设备对应一个术语,包括磁盘、打印机、显卡和键盘。 当FreeBSD导入时,大多数的设备都能探测到并显示出来, 您也可以查阅/var/run/dmesg.boot, 导入时所有信息都在里面。

例如, acd0 就是 首个 IDE 光盘设备, 而 kbd0 则代表键盘。

UNIX操作系统里,大多数设备存在的特殊访问文件就是叫做设备节点, 他们都定位在/dev目录里。


3.11.1. 建立设备节点

当增加一个新设备或附加设备需要寻求支持时, 您也许需要在新设备上建立单个或多个的设备节点。


3.11.1.1. MAKEDEV 脚本

当系统缺少DEVFS (涉及的是FreeBSD 5.0之前的版本), 建立设备节点可以使用MAKEDEV(8),就如下面显示的那样:

# cd /dev
# sh MAKEDEV ad1
   

这个是一个例子,在安装等二个IDE设备时去建立设备节点。


3.11.1.2. DEVFS (DEVice 文件系统)

这个设备文件系统, 或叫 DEVFS, 为内核的设备命名在整体文件系统命名里提供通道, 并不是建立或更改设备节点, DEVFS只是为您的特别文件系统进行维护。

更多的资料请查 devfs(5) 手册。

DEVFS在FreeBSD 5.0或更高的版本里是默认使用。


3.12. 二进制文件格式

要理解为什么 FreeBSD 使用 elf(5) 格式, 您必须首先了解一些 UNIX 系统中的 三种 “主要” 可执行文件格式的有关知识:

  • a.out(5)

    是最古老和“经典的” UNIX 目标文件格式, 这种格式在其文件的开始处有一个短小而又紧凑的首部, 该首部带有一个魔幻数字,用来标识具体的格式(更多详情参见a.out(5))。 这种格式包含3个要装载入内存的段:.text, .data, 和 .bss,以及 一个符号表和一个字符串表。

  • COFF

    SVR3目标文件格式。其文件头现在包括一个区段表(section table), 因此除了.text,.data,和.bss区段以外,您还可以包含其它的区段。

  • elf(5)

    COFF 的后继, 其特点是可以有多个区段, 并可以使用32位或64位的值。 它有一个主要的缺点: ELF 在其设计时假设每个系统体系结构只有一种 ABI。 这种假设事实上相当错误, 甚至在商业化的SYSV世界中都是错误的 (它们至少有三种ABI: SVR4, Solaris, SCO)。

    FreeBSD试图在某种程度上解决这个问题,它提供一个工具,可以 对一个已知的ELF可执行文件 标识它所遵从的ABI的信息。 更多这方面的知识可以参见手册页brandelf(1)

FreeBSD从“经典”阵营中来,因此使用了a.out(5)格式, 众多BSD版本的发行(直到3.X分支的开始)也证明了这种格式的有效性。 虽然在那以前的某段时间,在FreeBSD系统上创建和运行ELF格式 的二进制可执行文件(和内核)也是可能的,但FreeBSD一开始并不积极“进步” 到使用ELF作为其缺省的格式。为什么?噢,当Linux阵营完成了 转换到ELF格式的痛苦历程后,却发现并不足以由此而放弃 a.out可执行文件格式,因为正是由于它们不灵活的, 基于跳转表的共享库机制,使得销售商和开发者们构建共享库非常困难。 直到已有的ELF工具提供了一种解决共享库问题的办法, 并被普遍认为是“前进方向”以后,迁徙的代价在FreeBSD界才被接受, 并由此完成了迁徙。FreeBSD的共享库机制其基础更类似于Sun SunOS™的共享库机制, 并且正因为此,其易用性很好。

那么,为什么会有这么多不同的格式呢?

回溯到蒙昧和黑暗的过去,那时只有简单的硬件。这种简单的硬件支撑了一个简单 和小型的系统。在这样的简单系统上(PDP-11)a.out格式 足以胜任表达二进制文件的任务。当人们将UNIX从这种简单的系统中移植出来的时候, a.out格式被保留了下来,因为对于早期将UNIX移植到 Motorola 68k,VAXen等系统来说,它还是足够可用的。

然后,一些聪明的硬件工程师认为,如果可以让软件完成一些简单的聪明操作, 那么他们就可以在硬件设计中减少若干门电路,并可以让CPU核心运行得更快。 当a.out格式用于这种新型的硬件系统时(现在我们叫它 RISC),显得并不合适。因此,人们设计了许多新的格式 以便在这样的硬件系统上能获得比简单的a.out格式更优越 的性能。诸如COFFECOFF,还有其它 一些晦涩难懂的格式正是在这个阶段被发明出来的,人们也研究了这些格式的局限性, 慢慢地最终落实到ELF格式。

同时,程序的大小变得越来越大,磁盘空间(以及物理内存)相对来说却仍然较小, 因此共享库的概念便产生了。VM系统也变得越来越复杂了。当所有这些进步都建立在 a.out格式的基础上的时候,它的可用性随着每个新特性 的产生就受到了严重考验。并且,人们还希望可以在运行时动态装载某些东西,或者 在初始化代码运行以后可以丢弃部分程序代码,以便节约主存储器和交换区。编程语言 也变得越来越复杂,人们希望可以在main()函数执行之前自动执行某些代码。为了实现 所有这些功能,人们对a.out格式作了很多改动(hack), 他们在某个阶段里基本也是可行的。随着时间的推移,a.out格式 不得不增加大量的代码和复杂度来满足这些需求。虽然ELF格式 解决了许多这样的问题,但是从一个可用的系统迁移到另一个系统却是痛苦的。因此 直到继续保留a.out格式的代价比迁移到ELF格式 的代价还大的时候,人们才会最终转换到ELF格式。

然而,随着时间的推移,FreeBSD系统本身的编译工具(特别是汇编器和装载器) 赖以派生的编译工具,其发展却形成了两个平行的分支。FreeBSD这个分支增加了共享库, 并修改了一些错误。而原先编写了这些工具的GNU人则重写了这些工具,并对交叉编译提供了 更简化的支持,还随意插入了不同格式的支持,等等。虽然很多人希望创建针对FreeBSD的 交叉编译器,但他们却并未如愿以偿,因为FreeBSD的asld的源代码更为老旧,所以无法完成这个任务。 新的GNU工具链(binutils)则确实支持交叉编译,ELF 格式,共享库,C++扩展,等等。并且,由于很多供应商都发布ELF格式的 二进制文件,因而让FreeBSD能够运行它们将是一个很好的事情。

ELF格式比a.out格式开销要大些,同时也 允许基础系统有更好的扩展性。ELF格式的有关工具有着更好的维护, 并且提供交叉编译支持,这对许多人来说是很重要的。ELF格式可能会稍微 慢一些,但很难测量出来。另外,在这两者之间,有许多细节也是不同的,比如它们映射页面的方式, 处理初始化代码的方式,等等。所有这些都不太重要,但这也确实是不同之处。在将来的适当时候, GENERIC内核将不再支持a.out格式,并且, 当不再需要运行遗留的a.out格式程序时,内核也将不再提供对其的支持。


3.13. 取得更多的资讯

3.13.1. 联机手册

最详细的使用说明文档莫过于 FreeBSD 里的联机手册了。 几乎每一个程序都会附上一份简短说明, 以介绍这个程序的的基本功能以及参数的用法。 我们能通过 man 命令来阅读这些说明, 而使用 man 命令却是简单的事情:

% man command

command 就是您要了解的命令命称。 举个例子,想了解 ls 命令就输入:

% man ls

这些在线手册分下列章节:

  1. 用户命令。

  2. 系统调用以及错误代码。

  3. C 库文件里的函数说明。

  4. 设备驱动程序。

  5. 文件格式。

  6. 游戏以及其他娱乐。

  7. 各种资讯。

  8. 系统维护以及命令。

  9. 内核开发情况。

在某些情况下,同样的主题也会出现在在线手册的不同章节。 举个例子,系统里有chmod这个用户命令,而又有个 chmod() 系统调用。 在这种情形下,您应当向 man 命令指定需要的内容:

% man 1 chmod

这样就会显示出手册里的用户 chmod 命令。 传统上,我们在写入文档时把特定详细参考内容在在线手册括号里注明。 所以 chmod(1) 是指 chmod 用户命令, 而 chmod(2) 是指系统调用。

如果您已经知道命令的名字,只是不知道要怎样使用的话,那就比较好办。 但您连名字都不知到呢?这个时候您就可以利用 man 的搜寻功能, 它会在手册的介绍部份找寻您要搜寻的关键字,它的选项是 -k

% man -k mail

当您使用这个命令的时候,man会把介绍里含有“mail”关键字 的命令列出来,实际上这和apropos命令的功能是相同的。

有时您会看到/usr/bin 下有许多命令但不知他们的用途, 您只需这样做:

% cd /usr/bin
% man -f *

或者这样做

% cd /usr/bin
% whatis *

两个命令是一样的。


3.13.2. GNU Info 文件

FreeBSD许多应用软件以及实用工具来自Free软件基金会(FSF)。 作为手册的扩充,这些程序提供了一种更具有活力的超文档说明info, 您可用info命令来阅读他们。 假如您装上emacs,也能利用emacs 的info模式来阅读。

使用 info(1) 这个命令只需简单地输入:

% info

想得到简单介绍, 请按 h。 想快速得到的命令说明, 请按 ?


Chapter 4. 安装应用程序: Packages 和 Ports

4.1. 概述

FreeBSD 捆绑了很多系统工具作为基本系统的一部分。然而,在实际工作中, 您可能仍需要安装额外的第三方应用程序。 FreeBSD 提供了两种安装第三方应用程序的方法: FreeBSD Ports Collection 和二进制软件包 (package)。 无论用哪种方式, 您都可以从本地媒体 (设备) 或直接通过网络来安装您喜欢的最新版本的应用程序。

读完这章,您将了解到:

  • 如何安装第三方的二进制软件包。

  • 如何从Ports Collection安装第三方软件。

  • 如何删除先前安装的软件包。

  • 如何改动Ports Collection里面的一些参数,定制软件使用。

  • 如何找到您需要的软件包。

  • 如何升级您的ports。


4.2. 软件安装预览

如果您以前使用过 UNIX 系统,那典型的第三方软件安装的步骤是像下面描述的:

  1. 下载这个软件,软件的发行版可能是源代码格式,或是一个二进制包。

  2. 解开软件(其中代表性的是用 compress(1), gzip(1), 或 bzip2(1) 压缩过的tar包)。

  3. 阅读相关文档,了解如何安装。 (多半一个文件名是INSTALLREADME, 或在doc/ 目录下的一些文档)

  4. 如果软件是以源代码形式发布的,那就需要编译它。可能需要编辑一个 Makefile文件, 或运行 configure脚本,和其他的一些工作。

  5. 测试和安装软件。

如果一切顺利的话,就这么简单。如果您在安装一个软件包时发生一些错误, 您可能需要编辑一下它的代码,以使它能正常工作。

您可以继续使用 “传统的”方式安装软件。 然而, FreeBSD 提供了两种技术: packages 和 ports。 就在写这篇文章的时候, 已经有超过 12,300 个第三方的应用程序可以使用了。

对于任意一个应用程序包,是一个可以下载的FreeBSD package文件。这个 FreeBSD package包含了编译好的的副本, 还有一些配置文件或文档。 一个下载的包文件可以用 FreeBSD 的包管理命令来操作, 例如 pkg_add(1)pkg_delete(1), pkg_info(1) 等等。 可以使用一个简单的命令安装一个新的应用程序。

一个FreeBSD的port是一个可以自动从源代码编译成应用程序的文件集合。

记住,如果您自己来编译的话,需要执行很多步的操作 (解压, 补丁, 编译, 安装)。 这些整理 port 的文件集合包含了系统需要完成这个工作的必需信息。 您可以运行一些简单的命令, 那些源代码就可以自动地下载, 解开, 打补丁, 编译, 直至安装完成。

实际上,ports 系统也能做出被 pkg_add 的程序包和不久就要讲到的其他包管理命令来安装的软件包。

Packages 和 ports 是互相 依赖 的。 假设您想安装一个依赖于已经安装的特定库的应用程序。 应用程序和那个库都已经应用于 FreeBSD ports 和 packages。 如果您使用 命令或 ports 系统来添加应用程序, 两个都必须注意库是否被安装, 如果没有, 它会自动先安装库。

这里给出的两种技术是很相似的,您可能会奇怪为什么 FreeBSD 会弄出这两种技术。 其实, packages 和 ports 都有它们自己的长处, 使用哪一种完全取决于您自己的喜好。

Package的优点

  • 一个压缩的 package 通常要比一个压缩的包含源代码的应用程序小得多。

  • package 不需要进行额外的编译。 对于大型应用程序如 MozillaKDEGNOME 来说这显得尤为重要, 特别是在您的系统资源比较差的情况下。

  • package不需要您知道如何在FreeBSD上编译软件的详细过程。

Ports 的优点

  • package 在编译时通常使用比较保守的选项, 这是为了保证它们能够运行在大多数的系统上。 通过从 port 安装, 您可以细微调整编译选项来产生适合于处理器的代码 (针对于 Pentium IV 或 AMD 的 Athlon CPU)。

  • 一些软件包已经把与它们相关的能做和不能做的事情的选项都编译进去了。 例如, Apache 可能就配置了很多的选项。 从 port 中安装时, 您不一定要接受默认的选项, 可以自己来设置。

    在一些例子中,一个软件有不同的配置存在多个package。 例如, Ghostscript存在 ghostscript package 和 ghostscript-nox11 package两个配置package, 这取决于您是否安装了X11服务器。 这样的调整对package是可能的, 但如果一个应用程序有超过一个或两个不同的编译时间选项时, 就不行了。

  • 一些软件的许可条件禁止采用二进制形式发行。 它们必须带上源代码。

  • 一些人不信任二进制发行形式。 至少有了源代码, (理论上) 可以亲自阅读它,寻找潜在的问题。

  • 如果您要自己对软件打补丁,您就需要有源代码。

  • 一些人喜欢整天围着源代码转, 所以他们喜欢亲自阅读源代码, 修改源代码等等。

保持更新 ports, 订阅邮件列表 FreeBSD ports 邮件列表 和递交错误报告 FreeBSD ports bugs 邮件列表

Warning安装任何应用程序之前, 应首先检查 http://vuxml.freebsd.org/ 上是否有关于您所安装的应用程序的安全问题报告。

您也可以安装 security/portaudit, 它能够自动地检查已经安装的应用程序的漏洞; 此外, 在您安装程序之前它也会首先检查是否存在已知的漏洞。 另外, 您也可以使用 portaudit -F -a 这个命令在安装了某个软件包之后作出检查。

这章的其余部分将介绍如何使用packages和ports来安装和管理第三方软件。


4.3. 寻找您要的应用程序

在您安装任何应用程序之前,需要知道您需要什么,那个应用程序叫什么。

FreeBSD中可用的应用程序正在不断地增长着。幸运的是, 有许多方法可以找到您所需要的程序:

  • FreeBSD站点上有一个可以搜索到的当前所有可用的应用程序列表,在 http://www.FreeBSD.org/ports/。 它分很多种类,您既可以通过程序的名称来搜索, 也可以在分类中列出所有可用的应用程序 (如果您知道名字), 也可以在分类中列出所有可用的应用程序。

  • Dan Langille 维护着网站 FreshPorts,在 http://www.FreshPorts.org/。 FreshPort时刻 “追踪” 着在 ports 中应用程序的变化。当有任何程序被升级时,他们就会发 email 提醒您。

  • I如果您不知道您想要的应用程序的名字,可以通过 (http://www.freshmeat.net/) 网站来查找, 如果找到了应用程序, 您可以回 FreeBSD 的主站去看一下这个应用程序是否已经被 port 进去了。

  • 如果您知道一个port的准确名字, 但需要知道在哪个类别里面能找到它,您可以使用 whereis(1) 这个命令。简单地输入 whereis filefile 就是您想安装的程序名字。 如果系统找到了它, 您将被告知在它在哪里, 例如:

    # whereis lsof
    lsof: /usr/ports/sysutils/lsof
    

    结果告诉我们这个命令lsof (一个系统配置程序)可以在 /usr/ports/sysutils/lsof目录中找到。

  • 还有另外的一个寻找您需要的port的方法--是用ports collecton 内嵌的搜索机制。要使用这个搜索, 您需要先到 /usr/ports目录下面。 在那个目录里面, 运行make search name=program-nameprogram-name 就是您想寻找的程序名字。 举个例子, 如果您想找 lsof

    # cd /usr/ports
    # make search name=lsof
    Port:   lsof-4.56.4
    Path:   /usr/ports/sysutils/lsof
    Info:   Lists information about open files (similar to fstat(1))
    Maint:  obrien@FreeBSD.org
    Index:  sysutils
    B-deps: 
    R-deps:
    

    在输出的内容里面您要特别注意包含 “Path:” 的这行将告诉您在哪里可以找到这个 port。 如果要安装此 port, 那其他输出的信息不是必须的, 但是还是显示输出了。

    为了更深入的搜索,您还可以用 make search key=stringstring就是您想搜索的部分内容。 它将搜索port的名字、 注释, 描述和从属关系, 如果您不知道您想搜索的程序名字, 可以利用它搜索一些关键主题来找到您需要的。

    上面说的这些方法, 搜索的关键字没有大小写区分的。 搜索 “LSOF”的结果将和搜索“lsof”的结果一样。


4.4. 使用Packages系统

Contributed by Chern Lee.

4.4.1. 一个package的安装

您可以用 pkg_add(1) 这个命令从本地文件或网络上的服务器来安装一个 FreeBSD 软件包。

Example 4-1. 在本地手动下载一个package,并安装它

# ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230-     This machine is in Vienna, VA, USA, hosted by Verio.
230-         Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375       00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add lsof-4.56.4.tgz

如果您没有本地package的安装盘 (如 FreeBSD CD-ROM), 可以执行 pkg_add(1) 命令并加上 -r 选项。 这将迫使程序自动决定目标文件的正确格式和版本, 然后自动从一个 FTP 站点寻找和安装 package。

# pkg_add -r lsof

上面的例子将下载正确的package, 而不需要用户的干预就可以安装。 如果您想指定 FreeBSD package 的镜像站点, 替换主站点, 您必须新设置 PACKAGESITE 这个环境变量, 覆盖原来的设置。 pkg_add(1) 使用 fetch(3) 下载文件, 可以使用多种环境变量, 包含 FTP_PASSIVE_MODEFTP_PROXY, 和 FTP_PASSWORD。 如果您使用 FTP/HTTP 代理或在防火墙后面, 您可能需要设置这些环境变量。 详细的列表请参考 fetch(3)。上述例子中用 lsof 替代了 lsof-4.56.4。 当使用远程安装 Package 的时候软件名字不需要包含版本号。 pkg_add(1) 将自动的找到这个软件最新的版本。

Note: 如果您使用 FreeBSD-CURRENT 或 FreeBSD-STABLE版本的FreeBSD, pkg_add(1) 将下载您的应用软件的最新版本。 如果您使用 -RELEASE 版本的 FreeBSD, 它将会获得与您的版本相应的软件包版本。 如果您更改了 PACKAGESITE 这个环境变量可能会发生不同的情况。

软件包采用 .tgz.tbz 两种格式。您可以在 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ 下面或从 FreeBSD 的发行光盘找到, 它在每一个 4CD 的 FreeBSD 发行版的 /packages目录中。 软件包的设计规划与 /usr/ports 树一致。 每个分类都有自己的目录, 所有的软件包可以在目录 All中找到。

软件包系统的目录结构与ports的设计规划一致; 它们共同构成了整个 package/port。


4.4.2. 软件包的管理

pkg_info(1) 是用于列出已安装的所有软件包列表和描述的程序。

# pkg_info
cvsup-16.1          A general network file distribution system optimized for CV
docbook-1.2         Meta-port for the different versions of the DocBook DTD
...

pkg_version(1)是一个用来统计所有安装的软件包版本的工具。 它可以用来比较本地 package 的版本与 ports 目录中的当前版本是否一致。

# pkg_version
cvsup                       =
docbook                     =
...

在第二列的符号指出了安装版本的相关时间和本地ports目录树中可用的版本。

符号 含义
= 在本地ports树中与已安装的软件包版本相匹配。
< 已安装的版本要比在ports树中的版本旧。
> 已安装的版本要比在ports树中的版本新 (本地的port树可能没有更新)。
? 已安装的软件包无法在ports索引中找到。 (可能发生这种事情,举个例子, 您早先安装的一个 port 从 port 树中移出或改名了)
* 软件包有很多版本。

4.4.3. 删除一个软件包

要删除先前安装的软件package,只要使用pkg_delete(1) 工具。

# pkg_delete xchat-1.7.1

4.4.4. 其它

所有已安装的 package 信息都保存在 /var/db/pkg 目录下。 安装文件的列表和每个 package 的内容和描述都能在这个目录的相关文件中找到。


4.5. 使用Ports Collection

下面的章节提供了使用Ports Collection来安装或卸载程序的基本用法。


4.5.1. 获得Ports Collection

在您能使用 ports 之前, 您必须先获得 Ports Collection -- 本质上是 /usr/ports 目录下的一堆 Makefile、 补丁和描述文件。

在您安装 FreeBSD 系统的时候, sysinstall 会询问您是否需要安装 Ports Collection。 如果您选择 no, 那您可以用下面的指令来安装 Ports Collection:

Sysinstall 方式

这种方式使用 sysinstall 再次手动安装Ports Collection。

  1. root 用户身份, 运行 sysinstall (对于 FreeBSD 5.2 之前的版本, 应该是 /stand/sysinstall), 如下所示:

    # sysinstall
    
  2. 选择 Configure, 按 Enter

  3. 选择 Distributions, 按 Enter

  4. 选择 ports, 按 Space

  5. 选择 Exit, 按 Enter

  6. 选择您的安装介质,就像CDROM,FTP,等等

  7. 选择 Exit 并按 Enter

  8. X 键退出 sysinstall

您可以使用 CVSup,这个程序让您获得和更新 Ports Collection。 CVSup 需要使用 /usr/share/examples/cvsup/ports-supfile 这个配置文件。 如果您想获得关于 CVSup 这个应用程序的更多信息, 请看 使用 CVSup (第 A.5 节) 和本文。

CVSup 方法

使用 CVSup 获得 Ports Collection, 是一个非常快捷的方法。 如果您想保持您的 ports 树的最新状态, 或了解更多关于 CVSup 的内容, 您可以阅读刚才提及的内容。

  1. 安装net/cvsup port。详情请参阅CVSup 安装 (第 A.5.2 节) 。

  2. root 用户, 复制 /usr/share/examples/cvsup/ports-supfile 到一个新的地方, 比如 /root 或您的家目录。

  3. 编辑 ports-supfile

  4. CHANGE_THIS.FreeBSD.org 改为离您比较近的 CVSup 服务器。 您可以参考 CVSup 镜像 (第 A.5.7 节) 服务器的完整列表。

  5. 运行 cvsup:

    # cvsup -g -L 2 /root/ports-supfile
    
  6. 运行这个命令之后将下载和应用所有变化的 ports 系统, 但并不在您的系统中重新编译 ports 系统。


4.5.2. 安装 Ports

当提到 Ports Collection 时, 第一个要说明的就是何谓 “skeleton”。 简单地说, port skeleton 是让一个程序在 FreeBSD 上简洁地编译并安装的所需文件的最小组合。 每个 port skeleton 包含:

  • 一个 MakefileMakefile 包括好几个部分, 指出应用程序是如何编译以及将被安装在系统的哪些地方。

  • 一个 distinfo 文件。这个文件包括这些信息: 这些文件用来对下载后的文件校验和进行检查, 使用 md5(1) 来确保在下载过程中文件没有被破坏。

  • 一个 files 目录。 这个目录包括在 FreeBSD 系统上编译和安装程序需要用到的补丁。 这些补丁基本上都是些小文件, 指出特定文件作了哪些修正。 它们都是纯文本的的格式,基本上是这样的 “删除第 10 行” 或 “将第 26 行改为这样 ...”, 补丁文件也被称作 “diffs”, 他们由 diff(1) 程序生成。

    这个目录也包含了在编译 port 时要用到的其它文件。

  • 一个 pkg-descr 文件。 这是一个提供更多细节,有软件的多行描述。

  • 一个 pkg-plist 文件。 这是即将被安装的所有文件的列表。它告诉 ports 系统在卸载时需要删除哪些文件。

一些ports还有些其它的文件, 例如 pkg-message。 ports 系统在一些特殊情况下会用到这些文件。 如果您想知道这些文件更多的细节以及 ports 的概要, 请参阅 FreeBSD Porter's Handbook

port里面包含着如何编译源代码的指令, 但不包含真正的源代码。 您可以在网上或 CD-ROM 上获得源代码。 源代码可能被开发者发布成任何格式。 一般来说应该是一个被 tar 和 gzip 过的文件, 或者是被一些其他的工具压缩或未压缩的文件。 ports中这个程序源代码标示文件叫 “distfile”, 安装 FreeBSD port的方法还不止这两种。

Note: 您必须使用 root 用户登录后安装 ports。

Warning在安装任何 port 之前, 应该首先确保已经更新到了最新的 Ports Collection, 并检查 http://vuxml.freebsd.org/ 中是否有与那个 port 有关的安全问题。

在安装应用程序之前, 可以使用 portaudit 来自动地检查是否存在已知的安全问题。 这个工具同样可以在 Ports Collection (security/portaudit) 中找到。 在安装新的 port 之前, 可以考虑先运行一下 portaudit -F 来抓取最新的漏洞数据库。 在每天的周期性系统安全检察时, 数据库会被自动更新, 并且会在这之后实施安全审计。 欲了解进一步的情况,请参阅 portaudit(1)periodic(8)


4.5.2.1. 从光盘安装 Ports

FreeBSD 项目发行的官方光盘文件不再包含 distfiles。 他们提供了许多更多的更好的使用编译好的软件包。 如果您从 FreeBSD Mall 购买了像 FreeBSD PowerPak 这样的光盘产品, 里面就包含了distfiles。 下面的章节假设您已经有了一张FreeBSD的安装光盘。

将 FreeBSD CD-ROM 放进驱动器。 将其挂接到 /cdrom。 (如果您使用了与此不同的挂接点, 请设置 CD_MOUNTPTS make 变量)。 首先, 进入要安装的 port 所在的目录:

# cd /usr/ports/sysutils/lsof

一旦进入了 lsof 的目录,您将会看到这个port的结构。 下一步就是 make,或说 “联编” 这个 port。 只需在命令行简单地输入 make 命令就可轻松完成这一工作。 做好之后,您可以看到下面的信息:

# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from file:/cdrom/ports/distfiles/.
===>  Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[configure output snipped]
...
===>  Building for lsof-4.57
...
[compilation output snipped]
...
#

注意,一旦编译完成,您就会回到命令行。 下一步安装 port, 要安装它只需要在 make 命令后跟上一个单词 install 即可:

# make install
===>  Installing for lsof-4.57
...
[installation output snipped]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE: 
      This port has installed the following binaries which execute with
      increased privileges.
#

一旦您返回到提示符,您就可以运行您刚刚安装的程序了。因为 lsof 是一个赋予特殊权限的程序, 因此显示了一个安全警告。 在编译和安装 ports 的时候, 您应该留意任何出现的警告。

Note: 您可以运行一个命令 make install 来替换 makemake install这两个分离的步骤。

Note: 一些 shell 会缓存环境变量 PATH 中指定的目录里的可执行文件, 以加速查找它们的速度。 如果您使用的是这类 shell, 在安装 port 之后可能需要执行 rehash 命令, 然后才能运行新安装的那些命令。 这个命令可以在类似 tcsh 的 shell 中使用。 对于类似 shshells/bash 的 shell, 对应的命令是 hash -r。 请参见您的 shell 的文档以了解进一步的情况。

Note: 有一小部分的 port 由于许可协议的问题不允许包含在光盘内。 可能是因为在下载前需要注册一些信息或不允许再发布, 或者其他理由。 如果您想安装的 port 不在光盘中, 为此您将需要在线操作来安装 (请看 下一章节)。


4.5.2.2. 从互联网安装Port

作为最后一节, 本节假定您有一个可用的互联网连接。 如果您没有, 您需要察看上一章节从光盘安装, 或者手工将 distfile 放到 /usr/ports/distfiles

实际上从互联网安装 port 和从光盘安装差不多, 不同的是从互联网下载distfile,而不是从光盘读取。

相关步骤是一样的:

# make install
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===>  Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[configure output snipped]
...
===>  Building for lsof-4.57
...
[compilation output snipped]
...
===>  Installing for lsof-4.57
...
[installation output snipped]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE: 
      This port has installed the following binaries which execute with
      increased privileges.
#

就像您看到的, 唯一区别是有一行告知您系统正在从哪里获得 port 的 distfile 的信息。

ports 系统使用 fetch(1) 去下载文件, 它有很多可以设置的环境变量, 其中包括 FTP_PASSIVE_MODEFTP_PROXY, 和 FTP_PASSWORD。 如果您在防火墙之后,或使用 FTP/HTTP代理, 您就可能需要设置它们。 完整的说明请看 fetch(3)

当使用者不是所有时间都能连接上网络, 则可以利用 make fetch。 您只要在顶层目录 (/usr/ports) 下运行这个命令, 所有需要的文件都将被下载。 这个命令也同样可以在下级类别目录中使用, 例如: /usr/ports/net。 注意, 如果一个port有一些依赖的库或其他 port, 它将 下载这些依赖的 port 的 distfile 文件, 如果您想获取所有依赖的 port 的所有 distfile, 请用 fetch-recursive 命令代替 fetch命令。

Note: 您可以在一个类别或在顶级目录编译所有的 port, 或者使用上述提到的 make fetch命令。 这样是非常危险的, 因为有一些port不能并存。 或者有另一种可能, 一些port会安装两个不同的文件, 但是却是相同的文件名。

在一些罕见的例子中, 用户可能需要在除了 MASTER_SITES 以外的一个站点(本地已经下载下来的文件)去获得一个文件包。 您可以用以下命令不使用 MASTER_SITES:

# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

在这个例子中,我们把 MASTER_SITES这个选项改为了 ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/

Note: 一些 port 允许 (或甚至要求) 您指定编译选项来 启用/禁用 应用程序中非必需的功能, 一些安全选项, 以及其他可以订制的内容。 具有代表性的包括 www/mozillasecurity/gpgme、 以及 mail/sylpheed-claws。 如果存在这样的选项, 通常会在编译时给出提示。


4.5.2.3. 改变默认的 Ports 目录

一些时候使用不同的 distfiles 和 ports 目录可能很有用 (甚至是必要的)。 可以用 PORTSDIRPREFIX 来改变默认的目录。 例如:

# make PORTSDIR=/usr/home/example/ports install

将把编译 /usr/home/example/ports 中的 port 并把所有的文件安装到 /usr/local

# make PREFIX=/usr/home/example/local install

将在 /usr/ports 编译它并安装到 /usr/home/example/local

当然,

# make PORTSDIR=../ports PREFIX=../local install

将包含两种设置 (没有办法在这一页把它写完, 但您应该已经知道怎么回事了)。

另外, 这些变量也可以作为环境变量来设置。 请参考您的 shell 的联机手册上关于如何设置环境变量的说明。


4.5.2.4. 处理 imake

一些 port 使用 imake (这是 X Window 系统的一部分) 不能正常地配合 PREFIX, 它们会坚持把文件安装到 /usr/X11R6 下面。 类似地, 一些 Perl port 会忽略 PREFIX 并把文件安装到 Perl 的目录中。 让这些 port 尊重 PREFIX 是困难甚至是不可能的事情。


4.5.3. 卸载已经安装的 Ports

现在您已经知道如何安装 port, 您可能很想知道如何卸载它们, 例如您安装了一个之后才意识到装错了。 我们将卸载前面的例子中安装的那个 (也就是 lsof, 如果您没有注意过的话)。 和安装 port 时类似, 第一件事是进入 port 的目录, /usr/ports/sysutils/lsof。 之后您就可以卸载 lsof 了。 这可以通过命令 make deinstall 来完成:

# cd /usr/ports/sysutils/lsof
# make deinstall
===>  Deinstalling for lsof-4.57

这个过程足够地简单。 现在已经从系统上卸载了 lsof。 如果您想重新安装它, 可以在 /usr/ports/sysutils/lsof 目录中运行 make reinstall 来达到目的。

make deinstall 以及 make reinstall 在您执行过 make clean 之后就不能用了。 如果您在清理目录之后还想删除 port, 可以用 使用手册中的 Package 相关章节 中介绍的 pkg_delete(1) 来完成。


4.5.4. Ports 与磁盘空间

使用 Ports Collection 显然会逐渐地吃掉您的磁盘空间。 由于 ports tree 趋于不断增大, 在构建和安装软件之后, 您应该通过使用 make clean 来清理包含临时文件的 work 目录。 这一命令会删除 work, 因为在您构建并安装完之后它就没用了。 如果已经安装或不再需要, 您也可以从 distfiles 目录中删除源代码包。

一些用户还通过把一些不需要的 port 分类放入 refuse 文件来避免下载它们。 这样在运行 CVSup 时就不会下载这些分类中的文件了。 关于 refuse 的详情请参考 第 A.5.3.1 节


4.5.5. 升级 Ports

Note: 一旦您更新了 Ports Collection, 在开始升级之前, 应该首先检查一下 /usr/ports/UPDATING 文件。 它描述了在升级时可能遇到的问题, 以及因应的步骤。

保持 ports 最新可能是一件乏味的工作。 例如, 为了更新 port 您需要进入它的目录, 编译, 卸载旧的, 然后安装新的, 并在之后进行清理。 考虑一下对五个 port 做这样的升级, 很乏味是不是? 这是系统管理员需要处理的一大难题, 而我们现在有了一些能够帮助我们做这件事的工具。 例如 sysutils/portupgrade 就能够帮助您完成所有这一切! 只需像其他 port 一样用 make install clean 来安装它就可以了。

接下来需要通过 pkgdb -F 命令来创建一个数据库。 这将读取已经安装的 port 并创建一个数据库文件到 /var/db/pkg 目录中。 接下来执行 portupgrade -a, 它会读取这个数据库以及 ports 的 INDEX 文件。 最后, portupgrade 将开始下载, 编译, 备份, 安装并清理更新了的 ports。 portupgrade 包含了许多的选项, 最重要的那些将在下面说明。

如果您只想升级某个具体的应用程序而不是数据库中的记录的所有程序, 则使用 portupgrade pkgname, 如果您认为 portupgrade 应该升级所有基于那个 port 的软件, 则需要指定 -r; 而如果使用 -R 则它用到的所有包也会被升级。

要使用预编译的 package 而不是 ports 来进行安装, 需要指定 -P。 如果指定了这个选项, portupgrade 会搜索 PKG_PATH 中指定的本地目录, 如果没有找到, 则从远程站点下载。 如果本地没有找到, 而且远程站点也没有成功地下载预编译包, 则 portupgrade 将使用 ports。 要禁止使用 port, 可以指定 -PP

如果只想下载 distfiles (或者, 如果指定了 -P 的话, 是 packages) 而不想构建或安装任何东西, 可以使用 -F。 要了解更多细节, 请参考 portupgrade(1)

Note: 规律性地更新 package 数据库非常重要。 您可以使用 pkgdb -F 来修复不一致, 特别是当 portupgrade 要求您这么做的时候。 当 portupgrade 正在更新数据库时请不要打断它, 因为这将做的结果将是不一致的数据库。

还有一些其他工具能够完成类似的以及其他一些任务, 请查看 ports/sysutils 目录中是否有您需要的。


4.6. 安装之后的待办事宜

通常,您通过port安装完一个软件后,可以阅读它带的一些文档(如果它包含文档的话), 或需要编辑它的配置文件,来确保这个软件的运行, 或在机器启动的时候启动(如果它是一个服务的话),等等。

对于不同的软件有着不同的配置步骤。不管怎样, 如果您装好了一个软件,但是不知道下一步怎么办的时候, 这些小技巧可能可以帮助您:

  • 使用 pkg_info(1) 命令,它能找到安装了哪些文件,以及装在哪里。 举个例子,如果您安装了 FooPackage version 1.0.0, 那么这个命令

    # pkg_info -L foopackage-1.0.0 | less
    

    将显示这个软件包安装的所有文件,您要特别注意在man/目录里面的文件, 它们可能是手册,etc/目录里面的配置文件,以及 doc/目录下面更多的文档。

    如果您不确定已经安装好的软件版本,您可以使用这样的命令

    # pkg_info | grep -i foopackage
    

    它将会找到所有已安装的软件包名字中包含foopackage 的软件包。 对于其他的查找, 您只需要在命令行中替换 foopackage

  • 一旦一些软件手册已被您确认安装,您可以使用 man(1) 查看它。 同样的,如果有的话,您还可以完整的查看一边配置文件的示例,以及任何额外的文档。

  • 如果应用软件有网站, 您还可以从网站上找到文档,常见问题的解答,或其他更多。 如果您不知道它们的网站地址,请使用下面的命令

    # pkg_info foopackage-1.0.0
    

    一个 WWW: 行, 如果它存在, 它将提供一个这个应用程序的网站URL.

  • Ports 如果需要在服务器启动时运行(就像互联网服务器), 它通常会把一个脚本的样例放入 /usr/local/etc/rc.d 目录。为了保证正确性, 您可以查看这个脚本, 并编辑或更改这个脚本的名字。 详情请看启动服务


4.7. 如何处理坏掉的 Ports

如果您发现某个 port 无法正常工作, 有几件事值得尝试, 包括:

  1. 修好它! Porter 手册 中包括了关于 “Ports” 基础设施的详细信息, 它们能够帮助您修好有问题的 port 甚至提交自己的 port!

  2. 通过电子邮件 -- 抱怨! 首先发邮件给 port 的维护人员 (maintainer)。 使用 make maintainer 或阅读 Makefile 都可以找到维护人员的电子邮件地址。 请记得把 port 的名字和版本写在邮件里 (Makefile 中的 $FreeBSD:这一行) 并把错误输出的头几行发给 maintainer。 如果维护人员没有回应您的邮件, 则可以使用 send-pr(1) 来提交问题报告。

  3. 从较近的 FTP 站点下载一个编译好的安装包。 “中央的” package collection 在 ftp.FreeBSD.orgpackages 目录中, 但 在此之前 一定记得先看看本地镜像上是否已经有了! 通常情况下这些安装包都可以直接使用, 而且应该比自行编译快一些。 安装过程本身可以通过 pkg_add(1) 来完成。


Chapter 5. X Window 系统

Updated for X.Org's X11 server by Ken Tom and Marc Fonvieille.

5.1. 概述

FreeBSD 使用 X11 来为用户提供功能强大的图形用户界面。 X11 是一种开放源代码的 X Window 系统实现, 它包括 XorgXFree86。 FreeBSD 在包括 FreeBSD 4.11-RELEASE 和 FreeBSD 5.2.1-RELEASE 在内的版本之前, 都默认安装 XFree86, 一种由 XFree86 Project, Inc. 发布的 X11 服务。 从 FreeBSD 5.3-RELEASE 开始, 默认并且为官方支持的 X11 变成了 Xorg, 它是由 X.Org 基金会开发的 X11 服务。

这章将介绍 X11 的安装和配置, 并着重强调 Xorg

欲了解 X11 所支持的显示卡等硬件, 请访问 XorgXFree86 的网站。

在阅读完这一章后,您将会了解:

  • X 视窗系统的不同组件,它们是如何协同工作的。

  • 如何安装和配置 X11。

  • 如何安装和使用不同的窗口管理器。

  • 如何在 X11 中使用 TrueType® 字体。

  • 如何为您的系统设置图形登陆 (XDM)。

在阅读这一章之前,您应该:

  • 知道如何安装额外的第三方应用程序(第 4 章)。

Note: 这一章介绍了 XorgXFree86 两种 X11 服务的安装和配置。 绝大多数时候, 配置文件、 命令句法是完全一样的。 当存在差异时, XorgXFree86 的写法都会有所体现。


5.2. 理解 X

对于那些熟悉其他图形环境,比如 Microsoft Windows 或者 Mac OS 的用户来说,第一次使用 X 可能会感觉很惊讶。

尽管您不需要了解各种 X 组件的所有细节和它们是如何互相影响的; 然而, 了解一些基本的知识可以让您很好地利用 X 的强大功能。


5.2.1. 为什么要使用 X?

X 不是第一个为 UNIX 而开发的视窗系统, 但它是最流行的。 X 的原始开发团队在开发 X 之前就已经在另外一个视窗系统上工作了。 那个系统的名字叫做 “W” (就是 “Window”)。X 只是罗马字母中 W 后面 的一个。

X 可以被叫做 “X”, “X Window 系统”, “X11”, 等等。把 X11 称做 “X Windows” 可能会冒犯某些人; 查看 X(7) 可以了解更多的信息。


5.2.2. X 客户机/服务器模型

X 一开始就是针对网络而设计的,所以 采用了 “client-server” 模型。在 X 模型中, “X server” 运行在有键盘,显示器,鼠标的计算机上。 服务器用来管理显示信息,处理来自键盘和鼠标的输入等。 每一个 X 应用程序 (比如 XTerm, 或者 Netscape) 就是一个 “client”。 一个 client 给服务器发送信息,如 “Please draw a window at these coordinates”, 然后服务器就返回处理信息,如 “The user just clicked on the OK button”。

如果您在只有一台计算机的家里或小型办公环境中使用 FreeBSD,您就 需要在同一台计算机上运行 X server和 X client。然而,如果您有很多运行 FreeBSD 的机器,您可以在您的桌面计算机上运行 X server,而在比较高档 的服务器上运行 X 应用程序。在这样的环境中,X server 和 X client 之间的 通信就可以通过网络来进行。

这迷惑了一些人,因为 X 的术语和他们料想的有些不同。 他们以为 “X server” 是运行在功能强大的大型机上的,而 “X client” 是运行在他们桌面上的计算机上的。

记住,X server 是有键盘和显示器的那台计算机,而 X client 是那些显示窗口的程序。

并不需要 client 和 server 都运行在同一种操作系统上,或甚至运行在 同一种类型的计算机上。在 Microsoft Windows 或者 Apple 公司的 Mac OS 上运行 一个 X server 也是可以的,在它们上面也有很多免费的和商业化的应用程序。

从 FreeBSD 5.3-RELEASE 开始, 随 FreeBSD 一同安装的 X 服务改成了 Xorg, 它的授权同 FreeBSD 的授权类似, 可以免费使用。 此外, 也有一些针对 FreeBSD 的商业 X 服务器。


5.2.3. 窗口管理器

X 的设计哲学很像 UNIX 的设计哲学, “tools, not policy”。这就意味着 X 不会试图去规定任务应该如何 去完成,而是,只给用户提供一些工具,至于决定如何使用这些工具是用户自己的 事情。

这套哲学扩展了 X,它不会规定窗口在屏幕上应该是什么样子,要如何移动鼠标, 什么键应该用来切换窗体 (比如, Alt+Tab按键,在 Microsoft Windows 环境中的作用), 每个窗口的工具条应该 看起来像什么,他们是否应该有关闭按钮等等。

实际上,X 行使了一种叫做 “窗口管理器”的应用程序的职责。有很多这样的程序可用: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker,等等。每一个窗口管理器 都提供了不同的界面和观感;其中一些还支持 “虚拟桌面”;有一些允许您可以定制一些键来管理您的桌面; 一些有“开始” 按钮,或者其他类似的设计;一些是 “可定制主题的(themeable)”, 通过安装新的主题, 可以完全改变外观。 这些以及很多其他的窗口管理器, 都可以在 Ports Collection 的 x11-wm 分类目录里找到。

另外,KDEGNOME 桌面环境都有他们自己的窗口管理器 与桌面集成。

每个窗口管理器也有不同的配置机制;有些需要手工来写配置文件, 而另外一些则可以使用 GUI 工具来完成大部分的配置任务,至少 (Sawfish) 有一个用 Lisp 语言来写的配置 文件。

焦点策略: 窗口管理器的另一个特性是鼠标的 “focus policy”。 每个窗口系统都需要有一个选择窗口的方法来接受键盘的输入信息,以及当前 哪个窗口处于可用状态。

您通常比较熟悉的是一个叫做 “click-to-focus” 的焦点策略。 这是 Microsoft Windows 使用的典型焦点策略,也就是您在一个窗口上点击 一下鼠标,这个窗口就处于当前可用的状态。

X 不支持一些特殊的焦点策略。而是,窗口管理器控制着在什么时候哪个窗口 拥有焦点。不同的窗口管理器支持不同的焦点方案。它们都支持点击即获得焦点, 而且它们中的大多数都支持好几种方案。

最流行的焦点策略:

focus-follows-mouse

鼠标指示器下面的窗口就是获得焦点的窗口。这可以不是位于其他所有 窗口顶部的窗口。您可以通过将鼠标移到另一个窗口就可以来改变焦点,您 不需要在它上面点击。

sloppy-focus

这种方式是对 focus-follows-mouse 策略的一个小小扩展。对于 focus-follows-mouse, 如果您把鼠标移到了根窗口(或桌面背景)上, 则所有的其它窗口都会失去焦点, 而相关的全部键盘输入也会丢失。 对于 sloppy-focus,只有当指针在键入一个新窗口时,窗口 焦点才会发生变化,当退出当前窗口时是不会变化的。

click-to-focus

当前窗口由鼠标点击来选择。窗口被“突出显示” , 出现在所有其他窗口的前面。即使指针被移向了另一个窗口,所有的键盘输入 仍会被这个窗口接收。

许多窗口管理器支持其他的策略,与这些相比又有些变化。您可以看具体 窗口管理器的文档。


5.2.4. 窗口部件

提供工具而非策略的 X 方法使得在每个应用程序屏幕上看到的窗口部件得到了 大大的扩展。

“Widget” 只是针对用户接口中所有列举项目的一个术语,它 可以用某种方法来点击或操作;如按钮,复选框,单选按钮,图标,列表框等等。 Microsoft Windows 把这些叫做“控件”。

Microsoft Windows 和苹果公司的 Mac OS 都有一个严格的窗口部件策略。 应用程序开发者被建议确保他们的应用程序共享一个普通的所见即所得的用户界面。 对于 X,它并不要求一个特殊的图形风格或一套相结合的窗口部件集。

这样的结果是您不能期望 X 应用程序只拥有一个普通的所见即所得的界面。 有很多的流行的窗口部件集设置,包括来自于 MIT 的 Athena, Motif® (模仿 Microsoft Windows 的窗口风格, 所有部件都具有斜边和3种灰色度), OpenLook, 和其他一些窗口部件集。

如今, 绝大多数比较新的 X 应用程序将使用一组新式的窗口设计, 包括 KDE 所使用的 Qt, 以及 GNOME 所使用的 GTK+。 在这样一种窗口系统下,UNIX 桌面的一些所见即所得特性作了一些收敛, 以使初学者感到更容易一些。


5.3. 安装 X11

XorgXFree86 都可以在 FreeBSD 上安装。 从 FreeBSD 5.3-RELEASE 开始, Xorg 成为了 FreeBSD 上的默认 X11 实现。 Xorg 是由 X.Org 基金会发行的开放源代码 X Window 系统实现中的 X 服务。 Xorg 基于 XFree86 4.4RC2 和 X11R6.6 的代码。 X.Org 基金会在 2004 年 4 月发行了 X11R6.7, 并在 2005 年 2 月发布了 X11R6.8.2, 后者是可以从目前的 FreeBSD Ports Collection 中获得的版本。

如果需要从 Ports Collection 编译和安装 Xorg

# cd /usr/ports/x11/xorg
# make install clean

Note: 要完整地编译 Xorg 则需要至少 4 GB 的剩余磁盘空间。

如果想从 Ports Collection 中编译和安装 XFree86

# cd /usr/ports/x11/XFree86-4
# make install clean

另外 X11 也可以直接从 package 来安装。 我们提供了可以与 pkg_add(1) 工具配合使用的 X11 安装包。 如果从远程下载并安装时, pkg_add(1) 请不要指定版本号。 pkg_add(1) 会自动地下载最新版本的安装包。

想要从 package 安装 Xorg, 简单地输入下面的命令:

# pkg_add -r xorg

XFree86 4.X 也可以用类似的办法安装:

# pkg_add -r XFree86

Note: 上面的例子介绍了如何安装完整的 X11 软件包, 包括服务器端,客户端,字体等等。 此外, 也有一些单独的 X11 的 ports 和 packages.

这一章余下的部分将会讲解如何配置 X11, 以及如何设置一个高效的桌面环境。


5.3.1. 从 XFree86 转移到 Xorg

任何 port 都一样,您应该检查 /usr/ports/UPDATING 文件看看有哪些改变。 这个文件中包含了把您的系统从 XFree86 转换到 Xorg 的说明。

在尝试任何转换之前请使用 CVSup 来更新您的 ports tree。在转换您的 X11 安装前您还需要安装 sysutils/portupgrade

/etc/make.conf 中您需要添加变量 X_WINDOW_SYSTEM=xorg。 这样做确保您的系统知道正在使用哪种 X11。 旧的 XFREE86_VERSION 变量已经过时并被 X_WINDOW_SYSTEM 变量所取代。

然后,使用下面的命令:

# pkg_delete -f /var/db/pkg/imake-4* /var/db/pkg/XFree86-*
# cd /usr/ports/x11/xorg
# make install clean
# pkgdb -F

pkgdb(1) 命令是 portupgrade 软件的一部分, 会更新各种软件包的依赖关系。

Note: 要联编完整的 Xorg, 请确保至少有 4 GB 的剩余磁盘空间。


5.4. 配置 X11

Contributed by Christopher Shumway.

5.4.1. 开始之前

在配置 X11 之前, 您需要了解所安装的系统的下列信息:

  • 显示器规格

  • 显示卡的芯片类型

  • 显示卡的显存容量

显示器的规格被 X11 用来决定显示的分辨率和刷新率。 这些规格通常可以从显示器所带的文档中, 以及制造商的网站找到。 需要知道两个数字范围: 垂直刷新率和水平刷新率。

显示卡的芯片类型将决定 X11 使用什么模块来驱动图形硬件。 绝大多数的硬件都能被自动检测, 但是了解它在自动检测出错的时候还是很有用处的。

显示卡的显存大小决定了系统支持的分辨率和颜色深度。 了解这些限制非常重要。


5.4.2. 配置 X11

配置 X11 需要几步。 第一步是以超级用户的身份建立初始的配置文件:

# Xorg -configure

在使用 XFree86 的情况下键入:

# XFree86 -configure

这会在 /root 中生成一个叫做 xorg.conf.new 的配置文件 (无论您使用 su(1) 或直接登录, 都会改变默认的 $HOME 目录变量)。 对于 XFree86 来说, 配置文件的名字是 XF86Config.new。 X11 程序将尝试探测系统中的图形硬件并写包含检测到的硬件的配置文件, 以便加载正确的驱动程序。

下一步是测试现存的配置文件, 以确认 Xorg 能够同系统上的图形设备正常工作。 要完成这个任务,只需:

# Xorg -config xorg.conf.new

XFree86 用户应:

# XFree86 -xf86config XF86Config.new

如果用户看到一个黑灰的格子和一个 X 形的鼠标指针,那么配置就是成功 的。要退出测试,只要同时键入 Ctrl+Alt+Backspace

Note: 如果鼠标工作不正常, 则需要先配置它。 参见 FreeBSD 安装一张中的 第 2.9.10 节

接下来是调整 xorg.conf.new (或 XF86Config.new, 如果运行 XFree86 的话) 配置文件并作测试。 用文本编辑器如 emacs(1)ee(1) 打开这个文件。 要做的第一件事是为当前系统的显示器设置刷新率。 这些值包括垂直和水平的同步频率。 把它们加到 xorg.conf.new"Monitor" 小节中:

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
EndSection

HorizSyncVertRefresh 在配置文件中可能没有。 如果是这样的话, 就需要添加它们, 并在 HorizSync 以及 VertRefresh 后面设置合适的数值。 在上面的例子中, 给出了相应的显示其的参数。

X 能够利用显示器所支持的 DPMS (能源之星) 功能。 xset(1) 程序可以控制超时时间, 并强制待机、挂起或关机。 如果希望启用显示器的 DPMS 功能, 则需要把下面的设置添加到 monitor 节中:

        Option       "DPMS"

关闭 xorg.conf.new (或 XF86Config.new) 之前还应该选择默认的分辨率和色深。 这是在 "Screen" 小节中定义的:

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport  0 0
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection

DefaultDepth 关键字描述了要运行的默认色深。 这可以通过 Xorg(1) (或 XFree86(1)) 的 -depth 命令行开关来替代配置文件中的设置。 Modes 关键字描述了给定颜色深度下屏幕的分辨率。 需要说明的是, 目标系统的图形硬件只支持由 VESA 定义的标准模式。 前面的例子中, 默认色深是使用 24位色。 在采用这个色深时, 允许的分辨率是 1024x768。

最后就是将配置文件存盘, 并使用前面介绍的测试模式测试一下。

Note: 在发现并解决问题的过程中可以帮助您的工具之一就是 X11 的日志文件,包含了与 X11 服务器相关的每个设备的信息。 Xorg 日志的文件名是 /var/log/Xorg.0.log 这样的格式 (XFree86 日志文件名是 XFree86.0.log 这样的格式)。日志的准确的名字 可以从 Xorg.0.logXorg.8.log 等等。

如果一切准备停当, 就可以把配置文件放到公共的目录中了。 您可以在 Xorg(1) (或 XFree86(1)) 里面找到具体位置。 这个位置通常是 /etc/X11/xorg.conf/usr/X11R6/etc/X11/xorg.conf (对于 XFree86 它应该是 /etc/X11/XF86Config/usr/X11R6/etc/X11/XF86Config)。

# cp xorg.conf.new /etc/X11/xorg.conf

For XFree86:

# cp XF86Config.new /etc/X11/XF86Config

现在已经完成了 X11 的配置全过程。 为了使用 startx(1) 来启动 XFree86 4.X 需要安装 x11/wrapper port。 Xorg 已经包含了 wrapper 代码, 因此并不需要安装 wrapper port。 X11 服务器也可以用 xdm(1) 来启动。

Note: 有一个图形配置工具, xorgcfg(1) (对于 XFree86 来说, 是 xf86cfg(1)), 随 X11 软件包一同安装。 它可以通过选择合适的驱动和设置交互式地定义配置。 这个程序可以从控制台通过命令 xorgcfg -textmode 来直接启动。 与了解详情, 请参考 xorgcfg(1)xf86cfg(1) 的联机手册。

另外还有一个叫做 xorgconfig(1) 的文本界面配置工具 (对于 XFree86xf86config(1)), 这是一个控制台工具因此对用户显得不太友好, 不过当其他工具无法工作时, 它仍然可能可以使用。


5.4.3. 高级配置主题

5.4.3.1. 配置 Intel® i810 显示芯片组

配置Intel i810芯片组的显示卡需要有针对 X11 的能够用来驱动显示卡的 agpgart AGP程序接口。 自从发行版本 4.8-RELEASE 和 5.0-RELEASE 发行以来 agp(4) 驱动程序就包含在 GENERIC 内核配置里面了。 在以前的发行版里,您必须要在您的内核配置文件里添加下面的一行:

device agp

然后重新编译一个新的内核。 或者,您可以在启动的时候使用 loader(8) 自动加载 agp.ko 内核模块。 简单的添加下面这行到 /boot/loader.conf 文件里:

agp_load="YES"

接下来,如果您正在运行 FreeBSD 4.X 或者更早的版本, 需要创建一个设备节点作为程序接口。 要创建 AGP 设备节点,在 /dev 下运行 MAKEDEV(8)

# cd /dev # sh MAKEDEV agpgart

Note: FreeBSD 5.X 和以后的版本会使用 devfs(5) 来半透明的分配 设备节点,因此 MAKEDEV(8) 这一步是不必要的。

这也适用于其他的图形卡硬件配置。 注意如果系统没有将 agp(4) 驱动程序编译进内核,尝试用 kldload(8) 加载模块是无效的。 这个驱动程序必须编译进内核或者使用 /boot/loader.conf 在启动时加载进入内核。

如果您正在使用 XFree86 4.1.0 (或者以后的 版本) 并且出现了像 fbPictureInit 这样未解决的符号提示, 试着在 X11 配置文件里的 Driver "i810" 一行后面加入下面这行:

Option "NoDDC"

5.5. 在 X11 中使用字体

Contributed by Murray Stokely.

5.5.1. Type1 字体

X11 使用的默认字体不是很理想。 大型的字体显得参差不齐,看起来很不专业, 并且, 在 Netscape 中, 中的小字体简直难以看懂。 有好几种免费、 高质量的字体可以很方便地用在 X11 中。 例如,URW字体集合 (x11-fonts/urwfonts) 就包括了高质量的 标准 type1 字体 (Times Roman®, Helvetica®, Palatino® 和其他一些).在 Freefont 集合中 (x11-fonts/freefonts) 也包括更多的字体, 但它们中的绝大部分使用在图形软件中,如 Gimp,在屏幕字体中使用并不完美。另外, 只要花很少的功夫,可以将 XFree86 配置成能使用 TrueType 字体:请参见后面的 TrueType 字体一节

要安装上面的Type1字体,您只需要运行下面的命令:

# cd /usr/ports/x11-fonts/urwfonts
# make install clean

freefont 或其他的字库和上面所说的大体类似。 为了让 X 服务器能够检测到这些字体, 需要在 X 服务器的配置文件 /etc/X11/ (Xorgxorg.confXFree86 则是 XF86Config) 中增加下面的配置:

FontPath "/usr/X11R6/lib/X11/fonts/URW/"

或者,也可以在命令行运行:

% xset fp+ /usr/X11R6/lib/X11/fonts/URW
% xset fp rehash

这样会起作用,但是当 X 会话结束后就会丢失, 除非它被添加到启动文件 (~/.xinitrc 中, 针对一个寻常的 startx 会话,或者当您通过一个类似 XDM 的图形登陆管理器登陆时添加到 ~/.xsession 中)。 第三种方法是使用新的 /usr/X11R6/etc/fonts/local.conf 文件: 查看 anti-aliasing 章节。


5.5.2. TrueType® 字体

XFree86 4.XXorg 都已经内建了对 TrueType 字体的支持。有两个不同的模块能够启用这个功能。 在这个例子中使用 freetype 这个模块,因为它与其他的字体描绘后端 是兼容的。要启用 freetype 模块,只需要将下面这行添加到 /etc/X11/XF86Config 文件的 "Module" 部分。

Load "freetype"

对于 XFree86 3.3.X,需要额外的 TrueType 字体服务器。 Xfstt 通常被用于这个目的。 要安装 Xfstt, 只要简单的安装 port x11-servers/Xfstt.

现在,为 TrueType 字体创建一个目录 (比如, /usr/X11R6/lib/X11/fonts/TrueType) 然后把所有的 TrueType 字体拷贝到这个目录。记住您不能直接从 Macintosh® 计算机中提取 TrueType 字体; 能被 X11 使用的必须是 UNIX/MS-DOS/Windows 格式的。 一旦您已经拷贝了这些文件到这个目录,使用 ttmkfdir 来创建一个 fonts.dir 文件,以便让X字体引擎知道 您已经安装了这些新文件。 ttmkfdir 可以在 FreeBSD Ports Collection x11-fonts/ttmkfdir 中找到。

# cd /usr/X11R6/lib/X11/fonts/TrueType
# ttmkfdir > fonts.dir

现在把 TrueType 字体目录添加到字体路径中。 这和上面 Type1 字体的步骤是一样的, 那就是,使用

% xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
% xset fp rehash

或者把 FontPath 这行加到 xorg.conf (或 XF86Config) 文件中。

就是这样。现在 Netscape, Gimp, StarOffice 和其他所有的 X 应用程序 应该可以认出安装的 TrueType 字体。一些很小的字体(如在 Web 页面上高分辨率显示的文本) 和一些很大的字体(在 StarOffice 下) 现在看起来已经很好了。


5.5.3. Anti-Aliased 字体

Updated by Joe Marcus Clarke.

X11 从 XFree86 4.0.2 开始支持字体的反走样。 但是, 字体配置在 XFree86 4.3.0 之前是非常繁琐的。 从 XFree86 4.3.0 开始, 对于所有支持 Xft 的应用程序, 所有放到 X11 /usr/X11R6/lib/X11/fonts/~/.fonts/ 中的字体都自动地被加入反走样支持。 并不是所有的应用程序都支持 Xft, 但已经有相当多的程序提供 Xft 支持了。 支持 Xft 的应用程序包括 Qt 2.3 以及更高版本 (用以开发 KDE 桌面的工具包)、 GTK+ 2.0 和更高版本 (用于开发 GNOME 桌面的工具包), 以及 Mozilla 1.2 和更高版本。

要控制哪些字体是 anti-aliased,或者配置 anti-aliased 特性, 创建(或者编辑,如果文件已经存在的话)文件 /usr/X11R6/etc/fonts/local.conf。Xft 字体系统的几个 高级特性都可以使用这个文件来调节; 这一部分只描述几种最简单的情况。要了解更多的细节,请查看 fonts-conf(5).

这个文件一定是 XML 格式的。注意确保所有的标签都完全的关闭掉。 这个文件以一个很普通的 XML 头开始, 后跟一个 DOCTYPE 定义, 接下来是 <fontconfig> 标签:

      <?xml version="1.0"?>
      <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
      <fontconfig>
   

像前面所做的那样,在 /usr/X11R6/lib/X11/fonts/~/.fonts/ 目录下的所有字体已经可以被支持 Xft 的 应用程序使用了。如果您想添加这两个目录以外的其他路径, 简单的添加下面这行到 /usr/X11R6/etc/fonts/local.conf文件中:

<dir>/path/to/my/fonts</dir>

添加了新的字体,尤其是添加了新的字体目录后, 您应该运行下面的命令重建字体缓存:

# fc-cache -f

Anti-aliasing 会让字体边缘有些模糊,这样增加了非常小的文本的可读性, 并从大文本字体中删除 “锯齿”。 但如果使用普通的文本, 则可能引起眼疲劳。 要禁止 14磅 以下字体的反走样, 需要增加如下配置:

        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>

用 anti-aliasing 来间隔一些等宽字体也是不适当的。 这似乎是 KDE 的一个问题。 要修复这个问题需要确保每个字体之间的间距保持在100。 加入下面这些行:

       <match target="pattern" name="family">
           <test qual="any" name="family">
               <string>fixed</string>
           </test>
           <edit name="family" mode="assign">
               <string>mono</string>
           </edit>
        </match>
        <match target="pattern" name="family">
            <test qual="any" name="family">
                <string>console</string>
            </test>
            <edit name="family" mode="assign">
                <string>mono</string>
            </edit>
        </match>

(这里把其他普通的修复的字体作为 "mono"),然后加入:

         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>     

某些字体,比如 Helvetica,当 anti-aliased 的时候可能存在问题。 通常的表现为字体本身似乎被垂直的切成两半。 糟糕的时候,还可能导致应用程序比如 Mozilla 崩溃。 为了避免这样的现象,考虑添加下面几行到 local.conf文件里面:

         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>       

一旦您完成对 local.conf 文件的编辑,确保您使用了 </fontconfig> 标签来结束文件。 不这样做将会导致您的更改被忽略。

X11 默认的字库当使用反走样时会比较难看。 更好的字库可以在 x11-fonts/bitstream-vera port 中找到。 这个 port 会创建一个 /usr/X11R6/etc/fonts/local.conf 文件, 如果这个文件不存在的话。 反之, port 将创建 /usr/X11R6/etc/fonts/local.conf-vera 文件。 将其内容合并到 /usr/X11R6/etc/fonts/local.conf 中, 则 Bitstream 字体将自动地代替默认的 X11 Serif, Sans Serif, 以及单倍距字体。

最后,用户可以通过他们个人的 .fonts.conf 文件来添加自己的设定。 要完成此项工作, 用户只需简单地创建 ~/.fonts.conf 并添加相关配置。 此文件也必须是 XML 格式的。

最后:对于LCD屏幕, 可能希望使用子像素的取样。 简单而言, 这是通过分别控制 (水平方向分开的) 红、绿、蓝 像素, 来改善水平分辨率; 这样做的效果一般会非常明显。 要启用它, 只需在 local.conf 文件的某个地方加入:

         <match target="font">
             <test qual="all" name="rgba">
                 <const>unknown</const>
             </test>
             <edit name="rgba" mode="assign">
                 <const>rgb</const>
             </edit>
         </match>
      

Note: 依赖于显示器的种类, rgb 可能需要被更改为 bgr, vrgbvbgr:实验一下 看看那个更好。

Anti-aliasing 在您下次启动系统时就能用了。 然而,注意您的程序必须知道如何使用它。现在,Qt 工具包做到了, 所以整个 KDE 环境能够使用 anti-aliased 字体 (查看 KDE 上的 第 5.7.3.2 节 了解细节)。 通过 “Font” capplet (参见 第 5.7.1.3 节 以了解进一步的细节), GTK+ 和 GNOME 也可以使用 anti-aliasing。 默认情况下, Mozilla 1.2 以及更高版本都会自动的使用 anti-aliasing。要禁用它,使用 -DWITHOUT_XFT 选项 重新编译 Mozilla


5.6. X 显示管理器

Contributed by Seth Kingsley.

5.6.1. 概要

X 显示管理器(XDM) 是一个X视窗系统用于进行登陆会话管理的可选项。 这个可以应用于多种情况下,包括小 “X Terminals”, 桌面,大网络显示服务器。既然 X 视窗系统不受网络和协议的限制, 那对于通过网络连接起来的运行 X 客户端和服务器端的不同机器, 就会有很多的可配置项。 XDM 提供了一个选择要连接到哪个显示服务器的图形接口, 只要键入如登陆用户名和密码这样的验证信息。

您也可以把 XDM 想象成与 getty(8) 工具一样(see 第 20.3.2 节 for details)。为用户提供了同样功能。它可以完成系统的登陆任务, 然后为用户运行一个会话管理器 (通常是一个 X 视窗管理器)。接下来 XDM 就等待这个程序退出,发出信号用户已经登陆完成,应当退出屏幕。 这时, XDM 就可以为下一个登陆用户显示登陆和可选择屏幕。


5.6.2. 使用 XDM

XDM 精灵程序在 /usr/X11R6/bin/xdm 中。您可以在任何时候 用 root 来运行这个程序, 在本地机器上,它将启动管理X的画面。如果要 XDM 每次机器一启动就开始运行, 一个简单的办法是在 /etc/ttys 中加入一个记录。 有关这个文件的更多的格式和使用方法,可以看看 第 20.3.2.1 节。在默认的 /etc/ttys 文件中用于运行 XDM 守护程序的一行是这样的:

ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

默认情况下,这个记录是关闭的,要启用它, 您需要把第5部分的 off 改为 on 然后按照 第 20.3.2.2 节 的指导 重新启动 init(8)。第一部分,这个程序将管理的终端名称是 ttyv8。这意味着 XDM 将运行在第9个虚拟终端上。


5.6.3. 配置 XDM

XDM 的配置目录是在 /usr/X11R6/lib/X11/xdm中。在这个目录中, 您会看到几个用来改变 XDM 行为和外观的文件。您会找到这些文件:

文件 描述
Xaccess 客户端授权规则。
Xresources 默认的X资源值。
Xservers 远程和本地显示管理列表。
Xsession 用于登陆的默认的会话脚本。
Xsetup_* 登陆之前用于加载应用程序的脚本。
xdm-config 运行在这台机器上的所有显示的全局配置。
xdm-errors 服务器程序产生的错误。
xdm-pid 当前运行的 XDM 的进程 ID。

XDM 运行时, 在这个目录中有几个脚本和程序可以用来设置桌面。 这些文件中的每一个的用法都将被简要地描述。 这些文件的更详细的语法和用法在 xdm(1) 中将有详细描述。

默认的配置是一个矩形的登陆窗口,上面有机器的名称, “Login:” 和 “Password:”。如果您想设计您自己个性化的 XDM 屏幕,这是一个很好的起点。


5.6.3.1. Xaccess

连接到 XDM 的用来控制显示的协议 叫做 X 显示管理连接协议(XDMCP)。 这个文件是一个用来控制来自远程机器的XDMCP连接。默认的, 它允许任何客户端连接,但那没有用,除非 xdm-config 被修改成用于侦听远程连接。


5.6.3.2. Xresources

这是一个默认的用来显示选项和登陆屏幕的应用程序文件。这 就是您能够定制登陆程序的外观的地方。这个格式与 X11 文档中描述的默认应用 程序文件是一样的。


5.6.3.3. Xservers

这是一个选择者应当提供的作为可选的远程显示列表。


5.6.3.4. Xsession

这是一个用户登陆后针对 XDM 的默认会话脚本。通常,在 ~/.xsession 中每个用户将有一个可定制的会话脚本。


5.6.3.5. Xsetup_*

在显示选择者或登陆接口之前,这些将被自动运行。 这是一个每个显示都要用到的脚本,叫做 Xsetup_, 后面会跟一个本地显示的数字(比如 Xsetup_0)。典型的,这些脚本将在后台 (如 xconsole)运行一个或两个程序。


5.6.3.6. xdm-config

此文件以应用程序默认值的形式, 提供了在安装时所使用的普适的显示设置。


5.6.3.7. xdm-errors

这个文件包含了 XDM 正设法运行的的 X 服务器 的输出。 如果 XDM 正设法运行的显示由于某种原因被挂起, 那这是一个寻找错误信息的好地方。 这些信息会在每一个会话的基础上被写到用户的 ~/.xsession-errors 文件中。


5.6.4. 运行一个网络显示服务器

对于其他客户端来说,为了连接到显示服务器,您将必须编辑访问控制规则, 然后启用连接侦听。默认的这些被设置成比较保守的值。 要让XDM能侦听连接,先要在 xdm-config 文件中注释掉一行:

! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort:     0

然后重新启动XDM。 记住默认应用程序文件的注释以“!” 字母开始,不是“#”。 您需要设置严格的访问控制。看看在 Xaccess文件中的实例记录,可以参考 xdm(1) 的联机手册。


5.6.5. 替换 XDM

有几个替换默认 XDM程序的方案。它们是, 上一节已经描述过的kdm (与 KDE捆绑在一起)。 kdm 提供了许多视觉上的改进和局部的修饰, 同样能让用户在启动时能选择他们喜欢的窗口管理器。


5.7. 桌面环境

Contributed by Valentino Vaschetto.

这节描述了 FreeBSD 上用于 X 的不同桌面环境。 “桌面环境” 可能仅仅是一个简单的窗口管理器, 也可能是一个像 KDE 或者 GNOME这样的完整桌面应用程序套件。


5.7.1. GNOME

5.7.1.1. 有关 GNOME

GNOME 是一个用户界面友好的桌面环境, 能够使用户很容易地使用和配置他们的计算机。 GNOME 包括一个面板(用来启动应用程序和显示状态), 一个桌面(存放数据和应用程序的地方), 一套标准的桌面工具和应用程序, 和一套与其他人相互协同工作的协议集。 其他操作系统的用户在使用 GNOME提供的强大的图形驱动环境时会觉得很好。 更多的关于 FreeBSD 上 GNOME 的信息 可以在 FreeBSD GNOME Project的网页上找到。


5.7.1.2. 安装 GNOME

安装 GNOME的最简单的方法是 第 2.9.13 节 第 2 章描述的在FreeBSD安装过程中通过 “Desktop Configuration”菜单来进行。 它们也可以很容易地从一个package或Ports Collection安装:

要从网络安装GNOME, 只要键入:

# pkg_add -r gnome2

从源代码编译GNOME,可以使用 ports树:

# cd /usr/ports/x11/gnome2 # make install clean

一旦GNOME被安装好, X Server必须被告知启动 GNOME以代替默认的窗口管理器。 如果在适当的位置已经定制好了文件.xinitrc, 简单地将启动当前窗口管理器的那行替换为 /usr/X11R6/bin/gnome-session。 如果没有对配置文件做过什么特殊的改动, 只需简单地键入:

% echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc

接着,键入startxGNOME桌面环境就启动了。

Note: 如果已经使用了一个像 XDM这样的显示管理器,就不能这样做。 而是,用同样的命令创建一个可执行文件.xsession。 要这样做,需要先编辑文件,然后用 /usr/X11R6/bin/gnome-session替换已存在的窗口管理命令:

% echo "#!/bin/sh" > ~/.xsession % echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession % chmod +x ~/.xsession

另一个选项是在登陆时配置显示管理器允许您选择窗口管理器;有关 KDE 细节 会解释如何使用kdmKDE显示管理器来做。


5.7.1.3. 在GNOME上使用Anti-aliased字体

X11 通过“RENDER”扩展来支持 anti-aliasing。 GTK+ 2.0 以及更高的版本(被 GNOME使用的工具包)可以使用这个功能。 配置 anti-aliasing 在 第 5.5.3 节描述。所以,使用最近的软件, anti-aliasing 可以应用在 GNOME桌面环境中。只需要依次选择 应用程序->桌面首选项->字体,然后选上 最佳形状最佳对比度,或者 像素圆滑(LCD)。对于 GTK+ 应用程序,它们不是 GNOME 桌面的一部分,在启动程序前需要设置 环境变量GDK_USE_XFT的值为 1


5.7.2. KDE


5.7.2.1. 有关 KDE

KDE 是一个容易使用的现代桌面环境。 KDE 有很多很好的特性:

  • 一个美丽的现代的桌面。

  • 一个集合了完美网络环境的桌面。

  • 一个集成的允许您方便,高效地帮助您使用 KDE 桌面和它的应用程序的帮助系统。

  • 所有的KDE应用程序具有一致的所见即所得界面。

  • 标准的菜单和工具栏,键盘布局,颜色配置等。

  • 国际化:KDE 可以使用超过40种语言。

  • 集中的一致化的桌面驱动配置。

  • 许多有用的 KDE应用程序。

KDE 中有一个基于 KDE 的 “KParts” 技术的办公套件, 它提供了电子表格、 幻灯片、 日程管理, 以及新闻组阅读器等软件。 KDE 还附带了一个叫做 Konqueror 的 web 浏览器, 是为其他运行于 UNIX 系统上的 web 浏览器的强大竞争对手。 关于 KDE 的更多详情可以在 KDE 网站 上找到。 要了解 FreeBSD 专属的 KDE 信息和资源, 请参考 FreeBSD-KDE 团队 的网站。


5.7.2.2. 安装 KDE

GNOME 或其他桌面环境一样,安装 KDE 的最容易的方法是通过 第 2.9.13 节 第 2 章所描绘的 FreeBSD 安装过程的 “Desktop Configuration” 菜单来安装。 另外,它也可以很容易地从packages或Ports Collection安装:

要从网络安装 KDE 只需要:

# pkg_add -r kde

pkg_add(1) 就会自动的下载最新版本的应用程序。

要从源代码编译 KDE, 可以使用 ports 树:

# cd /usr/ports/x11/kde3 # make install clean

KDE 安装完成后, X server必须被告知启动这个应用程序以代替默认的窗口管理器。 这可以通过编辑 .xinitrc 文件来完成:

% echo "exec startkde" > ~/.xinitrc

现在,无论您什么时候用 startx进入 X 视窗系统, KDE 就将成为您的桌面环境。

如果使用一个像 XDM这样的显示管理器, 那配置文件可能有点不同。需要编辑一个 .xsession 文件,有关 kdm 的用法会在这章的后面介绍。


5.7.3. 有关 KDE 的更多细节

现在 KDE 已经被安装在系统中了。 通过帮助页面或点击多个菜单可以发现很多东西。 WindowsMac® 用户会有回到家的感觉。

有关 KDE 的最好的参考资料是 它的在线文档。KDE 拥有它自己的 web 浏览器 Konqueror, 还有很多其他的应用程序和丰富文档。 这节的余下部分将讨论一些很难用走马观花的方法来学习的技术项目。


5.7.3.1. KDE 显示管理器

一个多用户系统的系统管理员可能希望给用户提供一个图形化的登陆界面, 像前面描述的一样,可以使用 xdm。 然而, KDE 提供了另一种选择, kdm, 它看起来很吸引人,还包含很多登陆选项。 特别的,用户可以很容易地(通过一个菜单) 选择登陆后使用哪个桌面环境 (KDEGNOME或其他)。

首先,以 root 用户身份运行 KDE 控制面板,kcontrol。 通常情况下,以 root 身份运行 X 环境是很不安全的。 您应当以普通用户来使用窗口管理器, 打开一个终端窗口(例如 xterm 或者 KDEkonsole),用 su 来切换成 root(这个用户必须首先在 /etc/groupwheel 组里),然后再键入 kcontrol

点击左边标记 系统的图标,然后选择登陆管理器 。在右面,有几个配置选项, KDE 手册会解释的更加详细一些。 点击右边的会话。 点击新类型来添加几个窗口管理器或桌面环境。 这些只是标签,所以它们用 KDEGNOME要比用 startkde或者 gnome-session来得好。 也可以是failsafe

也可以用同样方法定制其他菜单,它们主要是起修饰和自我解释用的。 完成之后,键入Apply按钮,退出控制中心。

要确信kdm理解标签 (KDEGNOME等)的意思,需要编辑一些 xdm用的文件。

Note:KDE 2.2中,这有些变化: kdm现在使用它自己的配置文件。 请看看KDE 2.2的文档。

在一个终端窗口,作为root用户,要编辑 /usr/X11R6/lib/X11/xdm/Xsession文件, 中间有一部分是这样的:

case $# in
1)
        case $1 in
        failsafe)
                exec xterm -geometry 80x24-0-0
                ;;
        esac
esac

需要在这部分加几行。 假定使用的标签是“KDE”和 “GNOME”, 就像下面这样:

case $# in
1)
        case $1 in
        kde)
                exec /usr/local/bin/startkde
                ;;
        GNOME)
                exec /usr/X11R6/bin/gnome-session
                ;;
        failsafe)
                exec xterm -geometry 80x24-0-0
                ;;
        esac
esac

为了加上KDE 的登陆桌面背景, 需要在 /usr/X11R6/lib/X11/xdm/Xsetup_0中加入下面这行:

/usr/local/bin/krootimage

现在,确信kdm/etc/ttys中列出来了,并且将被启动。 要这样做,只要跟着先前有关 XDM用法,用 /usr/X11R6/bin/xdm 程序的用法替换/usr/local/bin/kdm的用法就可以了。


5.7.3.2. Anti-aliased字体

X11 通过它的 “RENDER”扩展来支持anti-aliasing,从2.3版本开始, Qt (被KDE使用的工具包)也支持 这个扩展。在有关anti-aliasing X11字体的第 5.5.3 节节描述到了如何配置这些。 所以,对于现在的软件,anti-aliasing也可以用在 KDE桌面上。只需要到KDE 菜单,到 Preferences->Look and Feel->Fonts,然后点击 Use Anti-Aliasing for Fonts and Icons。 对于一个不是 KDE的一部分的Qt应用程序,环境变量 QT_XFT需要在启动程序前被设置成true


5.7.4. XFce

5.7.4.1. 有关XFce

XFce是以被GNOME 使用的 GTK+ 工具包为基础的桌面环境, 但是更加轻巧,适合于那些需要一个易于使用和配置并且简单而高效的桌面的人。 看起来,它非常像使用在商业UNIX系统上的 CDE环境。 XFce的主要特性有下面这些:

  • 一个简单,易于使用的桌面。

  • 完全通过鼠标的拖动和按键来控制等。

  • CDE 相似的主面板,菜单,applets和应用launchers。

  • 集成的窗口管理器,文件管理器,声音管理器, GNOME应用模块,和其他一些。

  • 可配置界面的主题。(因为它使用GTK+)

  • 快速,轻便,高效:对于比较老的/旧的机器或带有很少内存的机器仍然很理想。

更多有关XFce 的信息可以参考XFce 网站


5.7.4.2. 安装XFce

有一个二进制的XFce 软件包存在(在写作的时候)。要安装的话,执行下面的命令:

# pkg_add -r xfce4

另外,要从源代码建立,使用Ports Collection:

# cd /usr/ports/x11-wm/xfce4
# make install clean

现在,要告诉X服务器在下次X启动时执行 XFce。 只要执行下面的命令:

% echo "/usr/X11R6/bin/startxfce4" > ~/.xinitrc

接下来就是启动 X, XFce将成为您的桌面。 与以前一样,如果使用像 XDM 这样的显示管理器,需要创建一个 .xsession文件,就像有关 GNOME 的那节描述的, 使用/usr/X11R6/bin/startxfce4 命令,或者,配置显示管理器允许在启动时选择一个桌面, 就像有关kdm的那节描述的。

II. 常见的任务

前面已经介绍了必要的基础知识, 手册的这一部分将讨论 FreeBSD 的一些最常用的功能。 这些章节包括:

  • 向您介绍流行和实用的桌面应用程序: 浏览器、产品工具、文档察看程序,等等。

  • 向您介绍一系列可以在 FreeBSD 上使用的多媒体工具。

  • 介绍构建定制的 FreeBSD 内核以启用附加功能的方法。

  • 详细介绍包括桌面和网络打印机在内的打印系统设置。

  • 向您展示如何在 FreeBSD 上运行 Linux 应用程序。

某些章节希望您首先阅读过其他部分,在这些章的开头部分也会给出类似的提示。


Chapter 6. 桌面应用

Contributed by Christophe Juniet.

6.1. 概述

FreeBSD 可以运行种类繁多的桌面应用程序, 这包括像浏览器和字处理这样的软件。 绝大多数这样的程序都可以通过 package 来安装, 或者从 Ports Collection 自动地构建。 许多新用户希望能够在它们的系统中找到这样的应用程序。 这一章将向您展示如何轻松地使用 package 或者 Ports Collection 中安装这样的软件。

需要注意的是从 ports 安装意味着要编译源码。 根据编译的 ports 和电脑速度的不同, 这可能需要花费相当长的时间。 若是您觉得编译源码太过耗时的话, 绝大多数 ports 也有预编译的版本可供安装。

因为 FreeBSD 提供的二进制兼容 Linux 的特性, 许多原本为 Linux 开发的程序都可以直接用在您的桌面。 在安装任何的 Linux 应用程序之前, 强烈的推荐您阅读 第 10 章。 当您在寻找特定的 ports 时, 可以使用 whereis(1)。 一般来说, 许多利用 Linux 二进制兼容特性的 ports 都以“linux-”开头。 在下面的介绍中,都假设安装 Linux 应用程序前已经开启了 Linux 二进制兼容功能。

本章涵盖以下种类应用程序:

  • 浏览器 (例如 MozillaNetscapeOperaFirefoxKonqueror)

  • 办公、图象处理 (例如 KOfficeAbiWordGIMPOpenOffice.org)

  • 文档查看 (例如 Acrobat Reader®gvXpdfGQview)

  • 财务 (例如 GnuCashGnumericAbacus)

阅读这章之前,您应该:

  • 知道如何安装额外的第三方软件(第 4 章)。

  • 知道如何安装 Linux 软件(第 10 章)。

想要获得更多的有关多媒体环境的信息,请阅读 第 7 章。如果您想要建立和使用电子邮件, 请参考第 22 章


6.2. 浏览器

FreeBSD并没有预先安装特定的浏览器。然而,在 ports 的目录 www 有许多浏览器可以安装。如果您没有时间一一编译它们 (有些时候这可能需要花费相当长的时间) 大部分都有 package 可用。

KDEGNOME 已经提供 HTML 浏览器。 请参考第 5.7 节得到更多完整的有关设定这些桌面环境的信息。

如果您要找小型的浏览器, 可以试试看 www/dillowww/linkswww/w3m

这一节涉及如下程序:

程序名称 资源需求 安装时间 主要依赖
Mozilla 大量时间和空间 Gtk+
Netscape 轻松 兼容Linux Binary
Opera 轻松 同时有可用的 FreeBSD 和 Linux 版本。 Linux 版本需要使用 Linux 二进制兼容模块和 linux-openmotif
Firefox 中等 Gtk+
Konqueror 中等 需要 KDE

6.2.1. Mozilla

Mozilla 也许是 FreeBSD 桌面上最合适的浏览器了。它新颖稳定,且完整的移植到了 FreeBSD。拥有非常合乎标准的 HTML 支持,它也能处理邮件和阅读新闻组。 假如您打算做一个自己的主页的话,它甚至提供一个 HTML 编辑器。 Netscape 的使用者可能觉得它和 Communicator 非常相似, 两者有些部分实际上是相通的。

在 CPU 速度低于 233MHz 或者内存少于 64MB 的老式电脑上,Mozilla 会占用相当多资源而难以使用。您也许可以试试 Opera 浏览器,本章稍后将会介绍它。

也许基于某种原因,您不能或者不想编译 Mozilla,FreeBSD GNOME 团队已经为您制作好了 package。只需要通过网络安装它:

# pkg_add -r mozilla

如果没 package 可用,而您又有足够的时间和磁盘空间,您可以获取 Mozilla 的源码来编译并安装它到您的系统上。 执行以下指令既可:

# cd /usr/ports/www/mozilla
# make install clean

Mozilla 需要 root 权限执行 chrom 注册来确定正确的初始化。另外, 如果您想要一些额外的插件比如象 mouse gestures,您也必须以 root 权限执行 Mozilla 以便正确的安装。

一旦您完成了 Mozilla 安装,您就再也不需要 root 权限了。您可以用如下方式执行 Mozilla

% mozilla

也可以用如下方式直接运行电子邮件和新闻阅读器:

% mozilla -mail

6.2.2. Mozilla、Java™ 和 Macromedia® Flash

Contributed by Tom Rhodes.

安装 Mozilla 很简单,但是安装 Mozilla 的额外支持比如象 Java™ 和 Macromedia® Flash™ 却会消耗很多时间和磁盘空间。

第一件事就是使用 Mozilla 下载要安装的文件。让您的浏览器连接到 http://www.sun.com/software/java2/download.html, 在他们的页面上建立一个帐户。记得要保存用户名和密码,也许以后会用的着它。 下载 j2sdk-1_3_1-src.tar.gz 文件到 /usr/ports/distfiles/ 位置,ports 不会自动的下载它,这是因为许可证的限制。然后从 http://java.sun.com/webapps/download/Display?BundleId=7905 下载“java 环境”。 它的文件名是 j2sdk-1_3_1_08-linux-i586.bin 比较大 (大约是 25MB!)。象前边一样,这个文件必须放到 /usr/ports/distfiles/。 最后下载“java patchkit”,它在这里可以找到http://www.eyesbeyond.com/freebsddom/java/, 然后把它放在 /usr/ports/distfiles/

用标准的 make install clean 安装 java/jdk13 并且接着安装 www/flashpluginwrapper port。这个 port 需要 emulators/linux_base 这个庞大的 port。虽然有其它的 Flash 插件存在,然而他们对我来说却不能用。

如果 Mozilla 还没有安装,安装 www/mozilla port。

现在用如下方式复制 Flash 插件:

# cp /usr/local/lib/flash/libflashplayer.so \
    /usr/X11R6/lib/browser_plugins/libflashplayer_linux.so
# cp /usr/local/lib/flash/ShockwaveFlash.class \
    /usr/X11R6/lib/browser_plugins/

把下面这些行加入到 Mozilla 启动脚本 /usr/X11R6/bin/mozilla 的开头 (在 #!/bin/sh 之后)。

LD_PRELOAD=/usr/local/lib/libflashplayer.so.1
export LD_PRELOAD

这将会启用 Flash 插件.

现在只要如下启动 Mozilla

% mozilla &

并且从 Help 菜单选取 About Plug-ins 选项, 所有可用的插件列表就会出现。JavaShockwave® Flash 应该都会被列出。


6.2.3. Netscape®

Ports Collection 里包含数个版本的 Netscape 浏览器。因为 FreeBSD 版本包含有一个严重的安全问题, 强烈建议不要安装它们。作为替代,使用最近的 Linux 或者其它 UNIX 版本。

最新的稳定版的 Netscape 浏览器是 Netscape 7。它可以从 Ports Collection 安装:

# cd /usr/ports/www/netscape7
# make install clean

Caution不推荐您使用 Netscape 4.x 版本,因为它已经不适应当今的标准。然而, Netscape 7.x 和最新的版本只可以使用在 i386 平台。


6.2.4. Opera

Opera 是一个快速、拥有许多特性, 和标准兼容的浏览器。它有两个版本:“native”FreeBSD 版本和一个可运行在 Linux 模拟器下的版本。对于每个操作系统, 它都有一个免费的但是有广告和一个没有广告但是必须向 Opera web site 付费的版本。

要使用 Opera 的 FreeBSD 版本来浏览网页,安装以下的 package:

# pkg_add -r opera

有些 FTP 站点没有所有版本的 package, 您也可以通过 Ports Collection 来安装:

# cd /usr/ports/www/opera # make install clean

要安装 Linux 版本的 Opera,将上面例子中的 opera 替换为 linux-opera。Linux 版本在某些情况下非常有用,象是使用只有 Linux 版本的插件,例如 Adobe Acrobat Reader。不然的话在其它方面, FreeBSD 和 Linux 版本是完全一样的。


6.2.5. Firefox

Firefox 是基于 Mozilla 代码基础的的下一代浏览器。 Mozilla 是一个完整的应用程序套件, 包括比如浏览器、邮件客户端、聊天客户端等等。 Firefox 只是一个浏览器, 所以更小、更快。

安装软件包键入:

# pkg_add -r firefox

如果您更喜欢从源代码编译,也可以使用 Ports Collection:

# cd /usr/ports/www/firefox
# make install clean

6.2.6. Konqueror

KonquerorKDE 的一部分,不过也可以通过安装 x11/kdebase3 在非 KDE 环境下使用。 Konqueror 不止是一个浏览器, 也是一个文件管理器和多媒体播放器。

Konqueror 也带有丰富的插件, 可以在 misc/konq-plugins 下面找到。

Konqueror 也支持 Flash, 可以在 http://freebsd.kde.org/howto.php 找到一个 How To。


6.3. 办公、图象处理

当需要进行办公或者进行图象处理时, 新用户通常都会找一些好用的办公套件或者字处理软件。目前有一些桌面环境比如象 KDE 已经提供了办公套件。 FreeBSD 提供所有的要求,桌面环境也不例外。

这节涉及如下程序:

软件名称 资源需求 安装时间 主要依赖
KOffice KDE
AbiWord Gtk+GNOME
The Gimp Gtk+
OpenOffice.org GCC 3.1JDK™ 1.3Mozilla

6.3.1. KOffice

KDE 社区提供了一套办公套件, 它能用在桌面环境。它包含四个标准的组件,这些组件可以在其它办公套件中找到。 KWord 是字处理程序、 KSpread 是电子表格程序、 KPresenter 是演示文档制作管理程序、 Kontour是矢量绘图软件。

安装最新的 KOffice 之前,先确定您是否安装了最新版的 KDE

使用 package 来安装 KOffice,安装细节如下:

# pkg_add -r koffice

如果没有可用的 package,您可以使用 Ports Collection 安装。 安装 KDE3KOffice 版本,如下:

# cd /usr/ports/editors/koffice-kde3
# make install clean

6.3.2. AbiWord

AbiWord 是一个免费的字处理程序,它看起来和 Microsoft Word 的感觉很相似。 它适合用来打印文件、信函、报告、备忘录等等, 它非常快且包含许多特性,并且非常容易使用。

AbiWord 可以导入或输出很多文件格式, 包括一些象 Microsoft.doc 格式的文件。

AbiWord 也有 package 的安装方式。您可以用以下方法安装:

# pkg_add -r abiword

如果没有可用的 package,它也可以从 Ports Collection 编译。ports collection 应该是最新的。它的安装方式如下:

# cd /usr/ports/editors/abiword
# make install clean

6.3.3. GIMP

对图象的编辑或者加工, GIMP 是一个非常精通图象处理的软件。 它可以被用来当作简单的绘图程序或者一个专业的照片处理套件。 它支持大量的插件和具有脚本界面的特性。 GIMP 可以读写众多的文件格式, 支持扫描仪和手写板。

您可以用下列命令安装:

# pkg_add -r gimp

如果您在 FTP 站点没有找到这个 package,您也可以使用 Ports Collection 的方法安装。ports 的 graphics 目录也包含有 Gimp 手册。 以下是安装它们的方法:

# cd /usr/ports/graphics/gimp
# make install clean
# cd /usr/ports/graphics/gimp-manual-pdf
# make install clean

Note: Ports 中的 graphics 目录也有开发中的 GIMP 版本 graphics/gimp-devel。 HTML 版本的 Gimp 手册 可以在 graphics/gimp-manual-html 找到。


6.3.4. OpenOffice.org

OpenOffice.org 包括一套完整的办公套件: 一个字处理程序、一个电子表格程序、一个演示文档管理程序和一个绘图程序。 它和其它的办公套件的特征非常相似,它可以导入输出不同的流行的文件格式。 它包括一些不同的语言界面、拼写检查和字典。

OpenOffice.org 的字处理程序使用 XML 文件格式使它增加了可移植性和灵活性。电子表格程序支持宏语言和使用外来的数据库界面。 OpenOffice.org 已经可以平稳的运行在 WindowsSolaris™、Linux、FreeBSD 和 Mac OS X 等各种操作系统下。更多的有关 OpenOffice.org 的信息您可以在 OpenOffice网页找到。 对于特定的 FreeBSD 版本的信息,您可以在直接在 FreeBSD OpenOffice 移植团队的页面下载。

安装 OpenOffice.org 方法如下:

# pkg_add -r openoffice

Note: 如果您正在使用 FreeBSD 的 -RELEASE 版本, 一般来说这样做是没问题的。 如果不是这样, 您就可能需要看一看 FreeBSD OpenOffice 移植小组的网站, 并使用 pkg_add(1) 从那里下载并安装合适的软件包。 最新的发布版本和开发版本都可以在那里找到。

装好 package 之后, 您必须运行安装程序, 并选择 标准的工作站安装 (standard workstation installation)。 以将要使用 OpenOffice.org 的用户的身份来运行:

% openoffice-setup

如果没有可用的 OpenOffice.org package,您仍旧可以选择编译 port。然而, 您必须记住它的要求以及大量的磁盘空间和相当长的时间编译。

# cd /usr/ports/editors/openoffice-1.1
# make install clean

一旦这个完成,运行 OpenOffice.org setup 设置程序并且选择一个 标准的工作站设置 如下:

% cd /usr/ports/editors/openoffice-1.1
% make install-user

如果您想要使用一个本地化的版本,有如下一些 ports 可用:


6.4. 文档查看器

一些新的文档格式近来得到流行。它们所需要的标准查看器可能不一定在系统内。 在本节我们将了解如何安装它们。

这节涵盖如下应用程序:

软件名称 资源需求 安装时间 主要依赖
Acrobat Reader Linux二进制兼容
gv Xaw3d
Xpdf FreeType
GQview Gtk+GNOME

6.4.1. Acrobat Reader®

现在许多文档都用 PDF 格式, 根据“轻便小巧文档格式”的定义。一个被建议使用的查看器是 Acrobat Reader,由 Adobe 所发行的 Linux 版本。因为 FreeBSD 能够运行 Linux 二进制文件, 所以它也可以用在 FreeBSD 中。

安装 Acrobat Reader 5 package,如下:

# pkg_add -r acroread

通常, 如果 package 不可用或者您想要一个最新的版本, 您可以用 Ports Collection 来安装:

# cd /usr/ports/print/acroread5
# make install clean

6.4.2. gv

gvPostScript® 和 PDF 文件格式查看器。它源自 ghostview 因为使用 Xaw3d 函数库让它看起来更美观。 它很快而且界面很干净。gv 有很多特性比如象纸张大小、刻度或者抗锯齿。 大部分操作都可以用键盘或鼠标完成。

安装 gv package,如下:

# pkg_add -r gv

如果您没有可用的 package,您可以使用 Ports Collection 安装:

# cd /usr/ports/print/gv # make install clean

6.4.3. Xpdf

如果您想要一个小型的 FreeBSD PDF 查看器, Xpdf 是一个小巧并且高效的查看器。 它只需要很少的资源而且非常稳定。它使用标准的 X 字体并且不需要 Motif 或者其它的 X 工具包。

安装 Xpdf package,使用如下命令:

# pkg_add -r xpdf

如果 package 不可用或者您宁愿使用 Ports Collection,如下:

# cd /usr/ports/graphics/xpdf
# make install clean

一旦安装完成,您就可以启动 Xpdf 并且使用鼠标右键来使用菜单。


6.4.4. GQview

GQview 是一个图片管理器。 您可以单击鼠标来观看一个文件、开启一个外部编辑器、 使用预览和更多的功能。它也有幻灯片播放模式和一些基本的文件操作。 您可以管理采集的图片并且很容易找到重复的。 GQview 可以全屏幕观看并且支持国际化。

如果您想要安装 GQview package,如下:

# pkg_add -r gqview

如果您没有可用的 package 或者您宁愿使用 Ports Collection,如下:

# cd /usr/ports/graphics/gqview
# make install clean

6.5. 财务

假如,基于任何的理由,您想要在 FreeBSD Desktop 管理您个人的财政,有一些强大并且易于使用的软件可以被您选择安装。 它们中的一些与流行的文件格式兼容象 Quicken®Excel 文件。

本节涵盖如下软件:

软件名称 资源需求 安装时间 主要依赖
GnuCash GNOME
Gnumeric GNOME
Abacus Tcl/Tk

6.5.1. GnuCash

GnuCashGNOME 的一部分,GNOME 致力于为最终用户提供用户友好且功能强大的软件。使用 GnuCash,您可以关注您的收入和开支、您的银行帐户, 或者您的股票。它的界面特性看起来非常的专业。

GnuCash 提供一个智能化的注册、帐户分级系统、 很多键盘快捷方式和自动完成方式。它能分开一个单个的处理到几个详细的部分。 GnuCash 能导入和合并 Quicken QIF 文件格式。 它也支持大部分的国际日期和流行的格式。

安装 GnuCash 到您的系统,如下:

# pkg_add -r gnucash

如果 package 不可用,您可以使用 Ports Collection 安装:

# cd /usr/ports/finance/gnucash
# make install clean

6.5.2. Gnumeric

Gnumeric 是一个电子表格程序, GNOME 桌面环境的一部分。 它以通过元素格式和许多片断的自动填充系统来方便的自动“猜测”用户输入而著称。 它能导入一些流行的文件格式,比如象 ExcelLotus 1-2-3Quattro ProGnumeric 凭借 math/guppi 支持图表。 它有大量的嵌入函数和允许所有通常比如象、数字、货币、日期、 时间等等的一些单元格式。

安装 Gnumeric package,如下:

# pkg_add -r gnumeric

如果 package 不可用,您可以使用 Ports Collection 安装:

# cd /usr/ports/math/gnumeric
# make install clean

6.5.3. Abacus

Abacus 是一个小巧易用的电子表格程序。 它包含许多嵌入函数在一些领域如统计学、财务和数学方面很有帮助。 它能导入和输出 Excel 文件格式。 Abacus 可以产生 PostScript 输出。

安装 Abacus package,如下:

# pkg_add -r abacus

如果 package 不可用,您可以使用 Ports Collection 安装:

# cd /usr/ports/deskutils/abacus
# make install clean

6.6. 总结

当 FreeBSD 因为它的效能和稳定而在 ISP 之间流行时, 它也可以完全应用在桌面环境。拥有数以千计的 packages 或者 ports, 您可以为您的需要建立完美的桌面环境。

一旦您完成了您的桌面环境的安装,您可能想要进一步了解 misc/instant-workstation。 “meta-port” 允许您为一个工作站建立一个定制的 ports 设置。您可以编辑 /usr/ports/misc/instant-workstation/Makefile 定制它。 接着是缺省添加和删除 ports 的语法,和使用通常的步骤建立它。 最后,您将能建立一个适合您自己桌面的大的 package 并在您的其它的工作站上安装它!

下面是本章涉及到的所有的软件的快速回顾:

软件名称 Package 名称 Ports 名称
Mozilla mozilla www/mozilla
Netscape linux-netscape7 www/netscape7
Opera opera www/opera
Firefox firefox www/firefox
KOffice koffice-kde3 editors/koffice-kde3
AbiWord abiword editors/abiword
The GIMP gimp graphics/gimp
OpenOffice.org openoffice editors/openoffice-1.1
Acrobat Reader acroread print/acroread5
gv gv print/gv
Xpdf xpdf graphics/xpdf
GQview gqview graphics/gqview
GnuCash gnucash finance/gnucash
Gnumeric gnumeric math/gnumeric
Abacus abacus deskutils/abacus

Chapter 7. 多媒体

编辑: Ross Lippert. 中文翻译: 张 雪平.

7.1. 概述

FreeBSD 广泛地支持各种声卡, 让您可以从容地享受来自您的计算机的高保真输出。 这包括了录制和播放 MPEG Audio Layer 3 (MP3)、 WAV、 以及 Ogg Vorbis 等许多种格式声音的能力。 FreeBSD 同时也包括了许多的应用程序,让您可以录音、 增加声音效果以及控制附加的MIDI设备。

要是乐于动手, FreeBSD 也能支持播放一般的视频文件和 DVD。 对各种视频媒体进行编码、 转换和播放的应用程序比起处理声音的应用程序略少一些。 例如, 在撰写这章时, FreeBSD Ports Collection 中还没有类似 audio/sox 那样好的重编码工具能够用来在不同的格式之间转换。 不过, 这个领域的软件研发进展是很快的。

本章将介绍配置声卡的必要步骤。 X11 的安装和配置 (第 5 章) 里已经考虑到了您显卡的问题, 但要想有更好的播放效果, 仍需要调整一些东西。

读了本章后,您将知道:

  • 如何配置系统识别声卡。

  • 运用样本程序去测试声卡工作的方法。

  • 如何排除声卡安装中的问题。

  • 如何播放和编码MP3以及其它格式的音频。

  • X 服务器如何支持视频。

  • 哪些好的视频播放/压缩“ports”。

  • 如何播放DVD、 .mpg.avi 文件。

  • 如何从CD和DVD中提取文件。

  • 怎样配置电视卡。

  • 如何配置图像扫描仪。

在读本章这前,您应该:

  • 知道如何配置、安装一个新的内核 (第 8 章)

Warningmount(8) 命令去装载CD光盘,至少会产生一个错误, 更糟的情况下会产生 kernel panic。 这种媒体所用的编码与通常的ISO文件系统是不同的。


7.2. 安装声卡

贡献者 Moses Moore. Enhanced for FreeBSD 5.X by Marc Fonvieille.

7.2.1. 配置系统

在开始之前,您应该清楚声卡类型、所用的芯片以及它是 PCI 还是 ISA 卡。 FreeBSD 支持种类繁多的 PCI 和 ISA 卡。检查 Hardware Notes 中支持的音频设备列表看看是否支持您的声卡。 这份文档也只论及支持您的声卡的驱动程序。

要使用声卡, 就应装载正确的驱动程序。完成的方式有两种: 最简单的是使用命令 kldload(8) 来装载一个内核模块,在命令行输入

# kldload snd_emu10k1

或者在文件 /boot/loader.conf 里加入一行,内容如下

snd_emu10k1_load="YES"

上边实例用于 Creative SoundBlaster® Live! 声卡。 其它可装载的模块列在文件/boot/defaults/loader.conf里边。 如果不知道应该使用哪个驱动, 您可以尝试加载 snd_driver module:

# kldload snd_driver

这是个 meta 驱动,一次加载了最常见的设备驱动。 这会提高搜索正确驱动的速度。也可以通过 /boot/loader.conf 工具来加载所有的声卡驱动。

Note: 在 FreeBSD 4.X 下,要加载所有的声卡驱动,您必须加载 snd 模块而不是 snd_driver 模块。

另外,您也可以把支持您声卡的代码静态地编译到内核里去。 下一节就采用这种方式支持硬件给出提示。 关于重新编译内核,请参考 第 8 章


7.2.1.1. 定制内核使其支持声卡

要做的第一件事情就是添加通用音频驱动 sound(4) 到内核中,您需要添加下面这行到内核配置文件中:

device sound

在 FreeBSD 4.X 下,使用下面这行:

device pcm

接下来就是加入对我们所用声卡的支持了。 首先需要确定我们的声卡需要使用哪一个驱动。 您可以参考 硬件兼容列表 所列出的音频设备, 以确定您声卡的驱动。 例如, Creative SoundBlaster Live! 声卡由 snd_emu10k1(4) 驱动来支持。 要添加它, 需要在内核编译配置文件中加入下面一行:

device "snd_emu10k1"

一定要阅读驱动的联机手册了解如何使用它们。 关于内核配置文件中声卡驱动的写法, 也可以在 /usr/src/sys/conf/NOTES 文件 (对于 FreeBSD 4.X, 则是 /usr/src/sys/i386/conf/LINT)。

非即插即用的 ISA 卡可能需要您为内核提供一些关于声卡配置的信息 (IRQ、 I/O 端口, 等等)。 这项工作可以通过 /boot/device.hints 文件来完成。 系统启动时, loader(8) 将读取这个文件, 并将其中的配置传给内核。 例如, 旧式的 Creative SoundBlaster 16 ISA 非即插即用卡需要使用 snd_sbc(4) 驱动, 您可以在内核编译配置文件中增加如下配置:

device snd_sbc

还有下面这些到 /boot/device.hints中:

hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"

这样,声卡使用 0x220 I/O 端口和 IRQ 5

/boot/device.hints 文件的写法会在声卡驱动的联机手册中描述。 在 FreeBSD 4.X 上,这些设定直接写进内核配置文件中。 对于我们的 ISA 卡这种情况,我们只要使用这行:

device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15

上面所展示的是默认的配置。 有时候, 您可能需要更改 IRQ 或其他配置, 以适应声卡的实际情况。 查看 snd_sbc(4) 联机手册了解更多信息。

Note: 在 FreeBSD 4.X 下, 一些主板内建声卡设备的系统需要在内核配置文件中配置下面的选项:

options PNPBIOS

7.2.2. 测试声卡

用修改过的内核重起,或者加载了需要的模块之后, 声卡将会出现在您的系统消息缓存中 (dmesg(8)),就像这样:

pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>

声卡的状态可以通过 /dev/sndstat 文件来查询:

# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)

您系统的输出可能与此不同。如果没有看到 pcm 设备,回顾并检查一下前面做的。 重新检查您的内核配置文件并保证选择了正确的设备。 常见问题列在第 7.2.2.1 节一节。

如果一切正常,您现在应该拥有一个多功能声卡了。 如果您的 CD-ROM 或者 DVD-ROM 驱动器适当的与声卡相关联, 您可以把 CD 放入驱动器并用 cdcontrol(1) 来播放:

% cdcontrol -f /dev/acd0 play 1

许多应用程序,比如 audio/workman 可以提供一个友好的界面。 您可能想要安装一个应用程序比如 audio/mpg123 来听 MP3 音频文件。一个快速的测试声卡正在发送数据到 /dev/dsp 的方式,像这样做:

% cat filename > /dev/dsp

这里 filename 可以是任意文件。 这行命令会产生一些噪音,证明声卡果真在工作。

Note: FreeBSD 4.X 用户需要创建声卡设备节点才能使用。 如果在消息缓存中展示出来的卡是 pcm0, 您必须以 root 来运行下面这两行:

# cd /dev
# sh MAKEDEV snd0

如果检测的声卡返回 pcm1, 做上面展示的同样的步骤,只是要用 snd1 来取代 snd0

MAKEDEV 会创建一组设备节点让相关联应用程序的不同声音使用。

声卡混音级别可以通过 mixer(8) 命令更改。 更多细节可以在 mixer(8) 联机手册中找到。


7.2.2.1. 常见问题

错误信息 解决方法
unsupported subdevice XX

一个或多个设备节点没有正确地建立。重复上面的步骤。

sb_dspwr(XX) timed out

I/O端口没有设置正确。

bad irq XX

IRQ设置不正确。确信设定的IRQ和声卡的IRQ是一样的。

xxx: gus pcm not attached, out of memory

没有足够的内存空间供设置使用。

xxx: can't open /dev/dsp!

使用命令 fstat | grep dsp 进行检查是否有其它的程序打开了设备。 值得注意的是 esoundKDE 提供的声卡支持经常是造成麻烦的祸根。


7.2.3. 利用多个声源

贡献者Munish Chopra.

同时有多个声源的声音在播放, 这是完全可能的, 例如当 esound 或者 artsd 不支持与其它程序共享音频设备时。

FreeBSD可以通过 虚拟声道(Virtual Sound Channels) 来达到, 具体设置用工具 sysctl(8) 来完成。 虚拟的声道可以能过在内核里混合声音来混合声卡里播放的声道。

使用两条sysctl命令来设置虚拟声道的数目。 如果您是 root 用户, 执行下面的操作:

# sysctl hw.snd.pcm0.vchans=4
# sysctl hw.snd.maxautovchans=4

上面的实例设定了4个虚拟声道,这也是实际上所使用的数目。hw.snd.pcm0.vchanspcm0的虚拟声道数,一当链接上一个设备它就可配置了。 hw.snd.maxautovchans是分配给新的音频设备的虚拟声道数, 此时这个设备要用 kldload(8) 来链接。 因为 pcm 模块可以独立装载许多硬件驱动程序, 因此 hw.snd.maxautovchans 也就可以存储分配给以后链接到的设备的虚拟声道数。

如果不使用 devfs(5), 就必须把应用程序指向 /dev/dsp0.x, 这里x 为0到3, 因为在上面的例子里 hw.snd.pcm.0.vchans 被设为了4。 在使用devfs(5)的系统里,上边那些会自动分配给用户。


7.2.4. 如何设置混音器通道值

这一节的作者是 Josef El-Rayes.

不同的混音通道的默认音量是硬编码进 pcm(4) 驱动程序的。 同时,也有很多应用或服务程序提供了允许用户直接设置并记住这些值的功能。 不过这并不是一个很好的解决方案, 您可能希望在驱动一级有一个可以设置的默认值。 这可以通过在 /boot/device.hints 定义适当的值来实现。 例如:

hint.pcm.0.vol="100"

pcm(4) 加载时,这一设置将改变音量通道原本是100的默认值。

Note: 只有 FreeBSD 5.3 和更高版本才支持这一功能。


7.3. MP3音频

贡献者Chern Lee.

MP3 (MPEG Layer 3 Audio)达到过CD音质的效果,FreeBSD工作站没理由会缺少这样的好东东。


7.3.1. MP3播放器

目前为止, 最为流行的 X11 MP3 播放器是 XMMS (X 多媒体系统)。 Winamp 的肤面可以直接用于 XMMS, 因为它的 GUI 几乎和 Nullsoft 的 Winamp 完全一样。 另外, XMMS 也提供了内建的插件支持。

XMMS 可以通过 multimedia/xmms port 或 package 来安装。

XMMS 的界面很直观, 它提供了播放列表、 图形化均衡器等等。 如果您熟悉 Winamp, 就会感觉 XMMS 很容易使用。

audio/mpg123 port 提供了一个命令行界面的 MP3 播放器。

mpg123 可以在执行时通过命令行指定声音设备和要播放的 MP3 文件, 如下所示:

# mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!





Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

/dev/dsp1.0 应该换成您的系统上的 dsp 设备。


7.3.2. 抓取CD音轨

在对CD或CD音轨编码成MP3之前, CD上的音频数据应先抓到硬盘里。 这个可以通过复制原始的CDDA(CD数字音频)数据成为波形(WAV)文件。

工具 cdda2wavsysutils/cdrtools 套件的一部份,可用来从CD中获取音频及其相关信息。

把CD放到光驱里,下面的命令可以完成 (作为 root用户) 把整张 CD 分割成单个 (每个音轨) 的WAV文件:/para>

# cdda2wav -D 0,1,0 -B


cdda2wav 支持 ATAPI (IDE)光驱。 从IDE光驱中抓取音轨, 需要用设备名称代替SCSI的单元号。 例如, 想从 IDE 光驱中抓取第7道音轨:

# cdda2wav -D /dev/acd0a -t 7

参数 -D 0,1,0 表示 SCSI 设备 0,1,0, 与命令 cdrecord -scanbus的输出相对应。

抓取单轨,要使用选项-t,如下所示:

# cdda2wav -D 0,1,0 -t 7

这个实例用于抓取第七个音轨。要抓取一定范围的音轨,如从1到7:

# cdda2wav -D 0,1,0 -t 1+7

利用dd(1)也可以从ATAPI光驱中抓取音轨,从 第 16.6.5 节可以了解更多。


7.3.3. MP3 编码

现今,可选的MP3编码器是lameLame可以从ports树里的 audio/lame 处找到。

利用抓取的WAV文件,下边的命令就可以把 audio01.wav 转换成audio01.mp3

# lame -h -b 128 \
--tt "Foo Song Title" \
--ta "FooBar Artist" \
--tl "FooBar Album" \
--ty "2001" \
--tc "Ripped and encoded by Foo" \
--tg "Genre" \
audio01.wav audio01.mp3

128 kbits 是标准的MP3位率(bitrate)。 许多人可能喜欢更高的品质例如 160 或 192。 更高的位率, 会使 MP3 占用更多的磁盘空间--但音质会更高。选项 -h 控制 “高品质但低速度 (higher quality but a little slower)” 模式的开关。 选项 --t 表示把 ID3 标签--通常包含了歌曲的信息, 植入到MP3文件里。 其它的编码选项可以查询 lame 的联机手册。


7.3.4. MP3 解码

要把MP3歌曲刻录成音乐CD,就需要把它转换成非压缩的波形(WAV)格式。 XMMSmpg123 都支持把MP3输出成非压缩格式文件。

XMMS中输出到磁盘:

  1. 启动 XMMS.

  2. 在窗口里右击鼠标,弹出XMMS菜单。

  3. 选项(Options)里选择设定(Preference)

  4. 改变输出插件成“写磁盘插件(Disk Writer Plugin)”。

  5. 配置(Configure)

  6. 输入或选择一个目录用于存放解压的文件。

  7. 象平常一样,把MP3文件装入到XMMS里边, 把音量调节到100%并且关掉EQ设定。

  8. 按一下播放(Play) -- XMMS 如同在播放mp3一样,只是听不到声音。 实际上是在播放mp3到一个文件里。

  9. 要想再听MP3歌曲,记得把默认的输出插件设回原来的值。

mpg123进行标准输出:

  1. 执行 mpg123 -s audio01.mp3 > audio01.pcm

XMMS输出的文件是波形(WAV)格式, 而mpg123 则把MP3转换成无压缩的PCM 音频数据。两种格式都支持用 cdrecord 刻录成音乐CD。 使用 burncd(8) 您就必须使用无压缩的PCM。 如果选择波形格式, 就要注意在每道开始时的一小点杂音, 这段声音是波形文件的头部份。 可以使用工具 SoX 来轻松去除。 SoX 可从 audio/sox port 或包(package)中安装得到:

% sox -t wav -r 44100 -s -w -c 2 track.wav track.raw

阅读 第 16.6 节 这部份可以了解到更多在 FreeBSD 里刻盘的信息。


7.4. 视频回放

贡献者Ross Lippert.

视频回放是个很新并且迅速发展中的应用领域。 一定要有耐心,因为不是所有的事情都象处音频那么顺利。

在开始之前,您要了解显卡的类型以及它所用的芯片的类型。 尽管 XorgXFree86 支持大量的显卡, 但能达到好的回放效果的却寥寥无几。 在X11运行时,您可以使用命令 xdpyinfo(1) 获得使用您的显卡的X服务器所支持的扩展列表。

为了评估各种播放器和设置,您需要有一小段用作测试的MPEG文件。 由于一些DVD播放器会默认地在 /dev/dvd 里去找DVD文件, 因此, 您会发样建立符号链接到恰当的设备会很有用:

# ln -sf /dev/acd0c /dev/dvd
# ln -sf /dev/racd0c /dev/rdvd

在使用了 FreeBSD 5.X 的 devfs(5) 里, 有一个略微不同的推荐链接集:

# ln -sf /dev/acd0 /dev/dvd
# ln -sf /dev/acd0 /dev/rdvd

注意:由于devfs(5)本身的原因, 像这样手工建立的链接在重启后将不会存在。 想要无论什么时候您启动系统都能自动建立符号链接, 那就把下边这行加到 /etc/devfs.conf 里边:

link acd0 dvd
link acd0 rdvd

另外,DVD解密要求调用专用的DVD-ROM函数,要求把许可定到DVD设备里。

前面讨论的一些 ports 要正确地联编有赖于下列内核的选项设置。 在试图联编之前, 把这些选项增加到内核配置文件中去, 建立新的内核, 重启系统:

option CPU_ENABLE_SSE
option USER_LDT

Note: option USER_LDT 在FreeBSD 5.X里并不存在。

为了增强用于共享内存的X11接口,推荐增加一些 sysctl(8) 参数的值:

kern.ipc.shmmax=67108864
kern.ipc.shmall=32768

7.4.1. 测定视频的性能

在X11下有几种可以显示图像的方式。 到底哪个能工作很大程序上依赖于硬件。 首先, 下边描述的每一种方法在不同的硬件上都会有不同的品质。 其次, 在X11里的图像显示近来引起普遍的关注, 随着 XorgXFree86 的每一个版本, 都会有很大的突破。

常见图像接口列表:

  1. X11: 一般性的使用共享内存的X11输出。

  2. XVideo: 一种X11接口扩展,支持任何X11图像的可拖拉。

  3. SDL: 简单直接媒体层。

  4. DGA: 直接图片存取。

  5. SVGAlib: 低层次掌控图片层。


7.4.1.1. XVideo

XorgXFree86 4.X 有种扩展叫做XVideo (或称Xvideo, Xv, xv), 它可以通过一个特殊的加速器直接把图像显示在可拖拉的对象里。 即使在低端的计算机 (例如我的PIII 400 Mhz膝上电脑), 这个扩展也提供了很好的播放质量。

要了解这一扩展是否在正常工作, 使用 xvinfo 命令:

% xvinfo

如果显示结果如下,那您的显卡就支持XVideo:

X-Video Extension version 2.2
screen #0
  Adaptor #0: "Savage Streams Engine"
    number of ports: 1
    port base: 43
    operations supported: PutImage 
    supported visuals:
      depth 16, visualID 0x22
      depth 16, visualID 0x23
    number of attributes: 5
      "XV_COLORKEY" (range 0 to 16777215)
              client settable attribute
              client gettable attribute (current value is 2110)
      "XV_BRIGHTNESS" (range -128 to 127)
              client settable attribute
              client gettable attribute (current value is 0)
      "XV_CONTRAST" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_SATURATION" (range 0 to 255)
              client settable attribute
              client gettable attribute (current value is 128)
      "XV_HUE" (range -180 to 180)
              client settable attribute
              client gettable attribute (current value is 0)
    maximum XvImage size: 1024 x 1024
    Number of image formats: 7
      id: 0x32595559 (YUY2)
        guid: 59555932-0000-0010-8000-00aa00389b71
        bits per pixel: 16
        number of planes: 1
        type: YUV (packed)
      id: 0x32315659 (YV12)
        guid: 59563132-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x30323449 (I420)
        guid: 49343230-0000-0010-8000-00aa00389b71
        bits per pixel: 12
        number of planes: 3
        type: YUV (planar)
      id: 0x36315652 (RV16)
        guid: 52563135-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x3e0, 0x7c00
      id: 0x35315652 (RV15)
        guid: 52563136-0000-0000-0000-000000000000
        bits per pixel: 16
        number of planes: 1
        type: RGB (packed)
        depth: 0
        red, green, blue masks: 0x1f, 0x7e0, 0xf800
      id: 0x31313259 (Y211)
        guid: 59323131-0000-0010-8000-00aa00389b71
        bits per pixel: 6
        number of planes: 3
        type: YUV (packed)
      id: 0x0
        guid: 00000000-0000-0000-0000-000000000000
        bits per pixel: 0
        number of planes: 0
        type: RGB (packed)
        depth: 1
        red, green, blue masks: 0x0, 0x0, 0x0

同时注意:列出来的格式(YUV2, YUV12, 等等) 并不总是随着 XVdieo的每一次执行而存在。没有它们可能或迷惑有些人。

如果结果看起来是这样:

X-Video Extension version 2.2
screen #0
no adaptors present

那么您的显卡可以就不支持XVideo功能。

如果您的卡不支持XVideo, 则只是说明您的显示器在满足刷新图像的计算要求上存在更大的困难。 尽管显卡和处理器很重要,您仍然会有个不错的显示效果。 此外, 您也可以参考我们提供的文献, 在 第 7.4.3 节 中有所介绍。


7.4.1.2. 简单直接媒体层

简单直接媒体层(SDL),原意是做为 Microsoft Windows、BeOS 以及 UNIX 之间的端口层,允许跨平台应用发展,更高效地利用声卡和图形卡。SDL 层可以在低层访问硬件, 有时这样做就比 X11 接口层更为高效。

关于 SDL, 可以参考 devel/sdl12


7.4.1.3. 直接图形存取

直接图形存取 (Direct Graphics Access) 是一种 X11 扩展, 通过它, 应用程序能够绕过 X 服务, 并直接修改画面缓存 (framebuffer)。 由于它依赖一种底层的内存映射来实现其功能, 因此使用它的程序必须以 root 身份来执行。

DGA 扩展可以通过 dga(1) 来完成测试和性能测量。 运行 dga 时, 它将随按键改变现实的颜色。 按 q 退出这个程序。


7.4.2. Ports 和 包(Packages) 对视频的解决

这部份主要讨论在 FreeBSD Ports 集中提供的可用于视频回放的软件。 视频回放在软件发展中是个很活跃的领域, 并且各种不同程序的功能可能与这里的描述不尽相同。

首先要弄清楚的重要一点是在 FreeBSD 上使用的视频程序其发展与在 Linux 里使用的是一样的。 大部份程序都还处在β阶段。使用 FreeBSD 的包可能面对的问题:

  1. 一个应用程序不能播放其它程序制作的文件。

  2. 一个应用程序不能播放其自已制作的文件。

  3. 不同机上的同样的程序,各自重新建立(rebuild)了一次, 播放同一个文件结果也会有不同。

  4. 一个看起来没什么的过滤器, 如图像尺寸的调整, 也有可能因为一个调整例程的问题变得很不象样。

  5. 应用程序频繁地留下垃圾(dumps core)。

  6. 没有随 port 一起安装的文档可以在网上或者 port 的 work 目录中找到。

这些程序中许多也体现了 “Linux主义”。即, 有些问题来自于(程序)使用的标准库存在于Linux的发行版中, 或者有些是 Linux 内核的功能, 而该程序的作者事先所假定了的是 Linux内核。这些问题并不总是被 port 编护人员注意到或处理过, 这也就可能导致如下问题:

  1. 使用/proc/cpuinfo去检测处理器的特性。

  2. 滥用线程可能导致一个程序悬挂完成,而不是完全中止。

  3. 软件还不属于FreeBSD Ports集,而又与其它程序经常地一起使用。

现在,这些程序的开发人员也已同 port 的维护人员进行了联合, 以减少制作port时出错。


7.4.2.1. MPlayer

MPlayer 是近来开发的同时也正迅速发展着的一个视频播放器。 MPlayer 团队的目标是在 Linux 和其它 UNIX 系统中的速度和机动性能。 在团队的创始人实在受不了当时可用的播放器的性能时, 这个计划就开始了。 有人也许会说图形接口已经成为新型设计的牺牲品。 但是一但您习惯了命令行选项和按键控制方式,它就能表现得很好。


7.4.2.1.1. 创建MPlayer

MPlayer 可以从 multimedia/mplayer 找到。 MPlayer 在联编过程中会进行许多硬件检测, 而得到的可执行文件因此将无法移植到其他系统中使用。 因此, 从 ports 完成联编而不是安装预编译的包就很重要。 另外, 在 make 命令行还可以指定许多选项, 在 Makefile 中有所描述, 接下来我们开始联编:

# cd /usr/ports/multimedia/mplayer
# make
N - O - T - E

Take a careful look into the Makefile in order
to learn how to tune mplayer towards you personal preferences!
For example,
make WITH_GTK1
builds MPlayer with GTK1-GUI support.
If you want to use the GUI, you can either install
/usr/ports/multimedia/mplayer-skins
or download official skin collections from
http://www.mplayerhq.hu/homepage/dload.html

默认的 port 选项对于绝大多数用户来来说是够用了。 不过, 如果您需要 XviD 编解码器, 则必须指定 WITH_XVID 这个命令行选项。 默认的 DVD 设备也可以用 WITH_DVD_DEVICE 选项来定义, 其默认值是 /dev/acd0

撰写这一章的时候, MPlayer port 的联编过程包括了 HTML 文档和两个可执行文件, mplayermencoder, 后者是一个视频再编码工具。

MPlayer 的 HTML 文档提供了丰富的内容。 如果读者发现本章中缺少关于视频硬件的一些信息, 则 MPlayer 的文档将是十分详尽的补充。 如果您正在找关于 UNIX 中的视频支持的资料, 您绝对应该花一些时间来阅读 MPlayer 的文档。


7.4.2.1.2. 使用MPlayer

任何 MPlayer 用户必须在主目录下建立一个叫 .mplayer 的子目录。 输入下边的内容来建立这个必须的子目录:

% cd /usr/ports/multimedia/mplayer
% make install-user

mplayer的手册里列出了它的命令选项。 HTML文档里有更为详细的信息。 这部份里, 我们只是描述了很少的常见应用。

要播放一个文件,如 testfile.avi, 可以通过各种视频接口当中的某一个去设置 -vo 选项:

% mplayer -vo xv testfile.avi
% mplayer -vo sdl testfile.avi
% mplayer -vo x11 testfile.avi
# mplayer -vo dga testfile.avi
# mplayer -vo 'sdl:dga' testfile.avi

所有这些选项都是值得一试的, 因为它们的性能依赖很多因素,并且都与硬件密切相关。

要播放 DVD, 需要把 testfile.avi 改为 dvd://N -dvd-device DEVICE。 这里 N 是要播放的节目编号, 而 DEVICE 则是 DVD-ROM 的设备节点。 例如, 要播放 /dev/dvd 的第三个节目:

# mplayer -vo xv dvd://3 -dvd-device /dev/dvd

Note: 可以在编译 MPlayer 时, 通过 WITH_DVD_DEVICE 来指定默认的 DVD 设备。 系统内定的默认设备是 /dev/acd0。 更多细节, 请参考 port 的 Makefile

要停止、暂停、前进等等,可以参考设定的按键---这些可以通过 mplayer -h 得到或查看手册。

另外,回放的重要选项是:用于全屏模式的 -fs -zoom 和起辅助完成作用的-framedrop

为了让 mplayer 的命令行不是太长,使用者可以通过建立一个文件 .mplayer/config 来设定如下默认选项:

vo=xv
fs=yes
zoom=yes

最后,mplayer可以把DVD题目(title)抓取成为 .vob文件。为了从DVD中导出第二个题目,请输入:

# mplayer -dumpstream -dumpfile out.vob dvd://2 -dvd-device /dev/dvd

输出文件 out.vob 将是 MPEG 并且可以被这部份描述的其它“包”利用。


7.4.2.1.3. mencoder

在使用 mencoder 之前, 首先熟悉其 HTML 文档中所介绍的选项是一个不错的主意。 它提供了联机手册, 但如果没有 HTML 文档则帮助不大。 有无数种方法来提高视频品质、 降低比特率、 修改格式, 而这些技巧可能会影响性能。 下面是几个例子, 第一个是简单地复制:

% mencoder input.avi -oac copy -ovc copy -o output.avi

不正确的命令选项组合可能使生成的文件不能被mplayer播放。因此,如果您只是想抓取文件,一定在mplayer里使用“-dumpfile”。

转换input.avi成为带有MPEG3音频编码 (要求audio/lame )的MPEG4编码:

% mencoder input.avi -oac mp3lame -lameopts br=192 \
     -ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.avi

这样就产生了可被mplayerxine播放的输出。

input.avi 可以换成 dvd://1 -dvd-device /dev/dvd 并以 root 的身份来执行, 以重新对 DVD 节目进行编码。 由于您第一次做这样的工作时很可能会对结果不太满意, 建议您首先把节目复制成文件, 然后对它进行操作。


7.4.2.2. xine视频播放器

xine视频播放器是一个关注范围很广的项目,它不仅看准多合一的视频解决,而且出品了一个可再用的基本库和一个可扩展插件的可执行模块。发行有“包”和port版本-- multimedia/xine

xine播放器仍然很粗糙,但这很显然与好开头无关。实际上xine 即需要一个快速的带有快速显卡的CPU,也支持XVideo的扩展。图形界面(GUI)可以使用,但很勉强。

到写这章时,还没有可用于播放CSS编码的DVD文件的输入模块随同 xine一起发行。 第三方的建造(builds)里内建有这样的模块, 但都不属于FreeBSD Ports 集。

MPlayer相比,xine 为用户考虑得更多,但同时,对用户来说也少了很多有条理的控制方式。xine 播放器在XVideo接口上做得不错。

默认情况下,播放器xine启动的时后会使用图形界面。那么就可以使用菜单打开指定的文件:

% xine

另外,没有图形界面也可以使用如下命令立即打开播放文件:

% xine -g -p mymovie.avi

7.4.2.3. 使用transcode

软件transcode不是一个播放器,而是一套再编码.avi.mpg 文件的工具。使用transcode,借助标准输入输出(stdin/stdout)流接口,利用命令行工具,可以合并视频文件、修复坏文件。

MPlayer一样, transcode是个实验性软件,必须通过portmultimedia/transcode来建立。make使用了大量的选项。我们推荐:

# make WITH_LIBMPEG2=yes

如果您打算安装multimedia/avifile,那么就把选项WITH_AVIFILE加到您的make命令行里,如下所示:

# make WITH_AVIFILE=yes WITH_LIBMPEG2=yes

这里有两个使用transcode进行可调整视频输出的转换实例。第一个把输出编码成openDIVX AVI文件,第二个是编码成更为小巧的MPEG格式。

% transcode -i input.vob -x vob -V -Z 320x240 \
-y opendivx -N 0x55 -o output.avi
% transcode -i input.vob -x vob -V -Z 320x240 \
-y mpeg -N 0x55 -o output.tmp
% tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1

有个关于transcode的参考页,仅有很少的关于各种tc*(如 tcmplex)应用的文档,这也是安装了的。命令行选项 -h 有时也可以给出简单的使用格式的说明。

相比之下,transcodemencoder运行起来要慢许多,但它可以制作出更多可播放的文件。例如,用transcode创建的MPEG文件众所周知可以在Windows Media® Player 和 Apple's Quicktime®里播放。


7.4.3. 进一步了解

FreeBSD里不同的视频软件包正迅速发展中。很可能在不久的将来,这里所谈到的问题都将得到解决。同时,有些人想超越FreeBSD的声/像(A/V)能力,那他们就不得不从一些FAQ和指南里学知识,并使用一些不同的应用程序。这里就给这些读者指出一些补充信息。

MPlayer 文档是很技术性的。这些文档可以给那些希望获得关于UNIX视频高级技术的人们提供参考。MPlayer邮件列表很不喜欢没耐心阅读文档的人,如果您发现什么问题想报告给他们,请首先RTFM。

xine HOWTO里边有一章是关于提高性能的,对所有的播放器都很适应。

最后是一些很有前途的程序,读者可以试一下:


7.5. 安装电视卡

原创: Josef El-Rayes. 改编:Marc Fonvieille.

7.5.1. 介绍

电视卡可以让您在您的计算机里观看到无线或有线电视。许多卡是通过RCA或S-video输入接收复合视频,而且有些卡还带有调频广播接收器。

FreeBSD 通过bktr(4)驱动程序,提供了对基于PCI的电视卡的支持,要求这些卡使用的是Brooktree Bt848/849/878/879 或 Conexant CN-878/Fusion 878a视频采集芯片。您还要确保这个板上带的有被支持的调谐器,参考bktr(4)手册查看所支持的调谐器列表。


7.5.2. 增加驱动程序

要使用您的卡,您就要装载bktr(4)驱动程序。这个可以通过往/boot/loader.conf里边添加下边一行来实现。象这样:

bktr_load="YES"

另外,您也可以静态地这个支持编译到内核里去,要是这样的话,就把下边几行加到内核配置里去:

device  bktr
device  iicbus
device  iicbb
device  smbus

这些附加的设备驱动程序是必须的,因为卡的各组成部分是能过一根I2C总线相互连接在一起的。然后建立安装新的内核。

一旦这个支持被加到了您的系统里,您须要重启系统。在启动过程中,您的电视卡应该显示为up(启动),象这样:

bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicbus1: <Philips I2C bus> on iicbb0 master-only
smbus0: <System Management Bus> on bti2c0
bktr0: Pinnacle/Miro TV, Philips SECAM tuner.

当然,这些信息可能因您的硬件不同而有所区别。但是您应该能检查那个调制器是否被正确检测到了,可能要忽略一些检测到的同sysctl(8) MIB(管理系统库)和内核配置文件选项一起的参数。例如,如果您想强制使用Philips(飞利浦) SECAM制式的调谐器 ,您就应把下列行加到内核配置文件里:

options OVERRIDE_TUNER=6

或者,您直接使用sysctl(8)

# sysctl hw.bt848.tuner=6

查看bktr(4)手册和/usr/src/sys/conf/NOTES文件了解更多详细关于可用选项的资料。(如果您在FreeBSD 4.X下,就使用/usr/src/sys/i386/conf/LINT代替 /usr/src/sys/conf/NOTES。)


7.5.3. 有用的应用程序

要使用您的电视卡,您需要安装下列应用程序之一:

  • multimedia/fxtv提供“窗口电视(TV-in-a-window)”功能和图像/声音/图像采集功能。

  • multimedia/xawtv也是一款电视应用程序,功能同fxtv一样。

  • misc/alevt解码和显示Videotext/Teletext。

  • audio/xmradio,一款用于一些电视卡的调频电台调谐器的程序。

  • audio/wmtune,一款用于电台调谐器的便捷的桌面程序。

更多的程序在FreeBSD Ports Collection(Ports 集)里。


7.5.4. 问题解决

如果您的电视卡遇到了什么问题,您应该首先检查一下您的视频采集芯片和调谐器是不是真正的被bktr(4)驱动程序支持,并且是不是使用了正确的配置选项。想得到更多支持和关于您的电视卡的各种问题,您可以接触和使用freebsd-multimedia 邮件列表的压缩包。


7.6. 图象扫描仪

撰写人 Marc Fonvieille.

7.6.1. 介绍

像任何其他的现代操作系统一样,FreeBSD 可以使用图像扫描仪。 对扫描仪的标准的访问是通过 FreeBSD Ports Collection 中的 SANE (Scanner Access Now Easy) API 提供的。 SANE 也会使用一些 FreeBSD 设备驱动来访问扫描仪硬件。

FreeBSD 支持 SCSI 和 USB 扫描仪。 在做任何配置之前请确保您的扫描仪被 SANE 支持。SANE 有一个 支持的设备列表,可以为您提供有关扫描仪的支持情况和状态的信息。 uscanner(4) 手册页也提供了一个支持的 USB 扫描仪列表。


7.6.2. 内核配置

上面提到 SCSI 和 USB 接口都是支持的。 取决于您的扫描仪接口, 需要不同的设备驱动程序。


7.6.2.1. USB 接口

默认的 GENERIC 内核包含了支持 USB 扫描仪需要的设备驱动。 如果您决定使用一个定制的内核, 确保下面在您的内核配置文件中存在下面这些行:

device usb
device uhci
device ohci
device uscanner

取决于您主板上的 USB 芯片, 您只需要 device uhci 或者 device ohci 中的一种,但是两个都在 内核配置文件中是没有害处的。

如果您不想重新编译内核而且您的内核也不是 GENERIC 的, 您可以用 kldload(8) 命令直接加载 uscanner(4) 设备驱动模块:

# kldload uscanner

要在每次系统启动的时候加载这个模块, 添加下面这行到 /boot/loader.conf 中:

uscanner_load="YES"

在用正确的内核重新启动后, 或者在加载了需要的模块之后,插上您的 USB 扫描仪。 扫描仪会出现在您的系统消息缓存 (dmesg(8))中,就像这样:

uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2

这表明我们的扫描仪正在使用 /dev/uscanner0 设备节点。

Note: 在 FreeBSD 4.X 上,USB 进程(usbd(8)) 必须运行来检测 USB 设备。要启用它, 添加 usbd_enable="YES" 到您的 /etc/rc.conf 文件中并重新启动。


7.6.2.2. SCSI 接口

如果您的扫描仪是 SCSI 接口的, 重要的是要知道您使用哪种 SCSI 控制器。 取决于所使用的 SCSI 芯片, 您需要调整内核配置文件。 GENERIC 的内核支持最常用的 SCSI 控制器。确保阅读 NOTES 文件(在 FreeBSD 4.x 下面是 LINT)并在您的内核配置文件中添加正确的行。 除了 SCSI 适配器驱动之外, 您还需要在内核配置文件中有如下行:

device scbus
device pass

一旦完全编译好您的内核, 您就可以在启动时的系统消息缓冲中看到这些设备:

pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfers

如果您的扫描仪没有在系统启动的时候加电, 很可能还需要强制手动检测一下,用 camcontrol(8) 命令执行一次 SCSI 总线扫描:

# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful

然后扫描仪就会出现在 SCSI 设备列表里:

# camcontrol devlist
<IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)

有关 SCSI 设备的更多细节,可以查看 scsi(4)camcontrol(8) 手册页。


7.6.3. SANE 配置

SANE 系统分为两部分: 后端(graphics/sane-backends) 和前端(graphics/sane-frontends)。 后端部分提供到扫描仪自身的访问。 SANE支持设备列表详细说明了哪一个后端可以支持您的图象扫描仪。 如果您想使用您的设备,就必须为您的扫描仪选定正确的后端。 前端部分提供图形化的扫描界面 (xscanimage)。

要做的第一件事就是安装 graphics/sane-backends port 或者 package。然后,使用 sane-find-scanner 命令来检查 SANE 系统做的扫描仪检测:

# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

输出显示了扫描仪的接口类型和扫描仪连接到系统上的设备节点。 生产厂家和产品型号可能没有显示,不过不重要。

Note: 一些 USB 扫描仪需要您加载固件,后端的手册页中有这方面的解释。 您也应该阅读 sane-find-scanner(1)sane(7) 手册页。

现在我们需要检查扫描仪是否可以被扫描前端识别。 默认情况下, SANE 后端自带一个叫做 scanimage(1) 的命令行工具。 这个命令允许您列出设备以及从命令行执行图片扫描。 -L 选项用来列出扫描仪设备:

# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner

如果没有输出任何信息, 或提示没有识别到扫描仪, 则说明 scanimage(1) 无法识别它。 如果发生这种情况, 您就需要修改扫描仪支持后端的配置文件, 并定义所使用的扫描设备。 /usr/local/etc/sane.d/ 目录中包含了所有的后端配置文件。 这类识别问题经常会在某些 USB 扫描仪上发生。

例如, 对于在 第 7.6.2.1 节 中所使用的 USB 扫描仪, sane-find-scanner 会给出下面的信息:

# sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0

扫描仪被正确的探测到了,它使用 USB 接口,连接在 /dev/uscanner0 设备节点上。 我们现在可以检查看看扫描仪是否被正确的识别:

# scanimage -L

No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).

既然扫描仪没有被识别,我们就需要编辑 /usr/local/etc/sane.d/epson.conf 文件。所用的扫描仪型号是 EPSON Perfection® 1650, 这样我们知道扫描仪应使用 epson 后端。确保阅读后端配置文件中的帮助注释。 改动非常简单:注释掉导致您的扫描仪使用错误接口的所有行 (在我们这种情况下,我们将注释掉从 scsi 开始的所有行,因为我们的扫描仪使用 USB 接口),然后在文件的结尾添加指定的接口和所用的设备节点。 这种情况下,我们添加下面这行:

usb /dev/uscanner0

请确保阅读后端配置文件提供的注释以及后端手册页了解更多细节, 并使用正确的语法。我们现在可以检验扫描仪是否被识别到了:

# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner

我们的 USB 扫描仪被识别到了。如果商标和型号不匹配也不重要。 相关的关键一条是 `epson:/dev/uscanner0' 字段, 这个给了我们正确地后端名称和正确的设备节点。

一旦 scanimage -L 命令可以看到扫描仪, 配置就完成了。设备现在准备好等待扫描了。

scanimage(1) 允许我们从命令行执行图片扫描, 相比之下使用图形用户界面来执行图片扫描会更好。 SANE 提供了一个简单但实用的图形界面: xscanimage (graphics/sane-frontends)。

Xsane (graphics/xsane)是另一个流行的图形扫描前端。 这个前端提供了一些高级特性, 比如多样的扫描模式(photocopy,fax,等。), 色彩校正,批量扫描,等等。这两个程序都可以作为 GIMP 的插件使用。


7.6.4. 授予其他用户扫描权限

前面所有的操作都是用 root 权限来完成的。You may however, need 然而您可能需要让其他的用户也可以访问扫描仪。 用户需要有扫描仪所用的设备节点的读和写权限。 比如,我们的 USB 扫描仪使用设备节点 /dev/uscanner0,这个节点属于 operator 组。将用户 joe 添加到 operator 组会允许他使用扫描仪:

# pw groupmod operator -m joe

要了解更多细节, 请阅读 pw(8) 联机手册。 此外, 还需要为 /dev/uscanner0 设备节点设置正确的写入权限 (0660 或 0664), 因为默认情况下, operator 组只能读这个设备节点。 这项工作可以通过在 /etc/devfs.rules 文件中添加如下设置来自东完成:

[system=5]
add path uscanner0 mode 660

随后您还需要在 /etc/rc.conf 中添加下面的内容并重新启动:

devfs_system_ruleset="system"

关于这些配置的进一步细节请参考联机手册 devfs(8)。 对于 FreeBSD 4.X, 默认情况下 operator 组已经拥有对 /dev/uscanner0 的读和写权限。

Note: 当然, 考虑安全的原因, 在您将用户添加到任何组, 尤其是 operator 组时, 都应三思而后行。


Chapter 8. 配置FreeBSD的内核

Updated and restructured by Jim Mock. Originally contributed by Jake Hamby.

8.1. 概述

内核是 FreeBSD 操作系统的核心。 它负责管理内存、 执行安全控制、 网络、 磁盘访问等等。 尽管 FreeBSD 可以动态修改的现在已经越来越多, 但有时您还是需要重新配置和编译您的内核。

读完这章,您将了解:

  • 为什么需要建立定制的内核。

  • 如何编写内核配置文件,或修改已存在的配置文件。

  • 如何使用内核配置文件创建和联编新的内核。

  • 如何安装新内核。

  • 如何在 /dev 中创建设备节点。

  • 如何出现问题怎么办。

这一章给出的命令应该以 root 身份执行, 否则可能会不成功。


8.2. 为什么需要建立定制的内核?

过去, FreeBSD 采用称作 “单片式” 的内核。 这句话的意思是说内核是一个大的程序, 支持固定的设备, 如果您希望改变内核的行为则必须编译一个新的, 并重新启动计算机来引导它。

今天, FreeBSD 已经迅速地转移到了一个新的模型, 其重要特征是内核功能可以由能够根据需要动态加载和卸载的模块来提供。 这是的内核能够迅速地适应硬件的调整 (例如笔记本电脑的 PCMICA), 或为内核增加在最初编译它时所不具备的新的功能。 这一模式成为模块化内核。

尽管如此, 一些功能仍然需要静态地连编进内核。 一些情况是因为这些功能于内核的结合十分紧密, 而不可能将它们做成可以动态加载的。 另一种情况是因为没有人有时间来编写实现那个功能的可以动态加载的内核模块。

建造定制的内核是几乎每一个 BSD 用户所必须经历的一关。 尽管这项工作可能比较耗时, 但它能够为使用 FreeBSD 系统带来很多好处。