Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
2024.7.1 机器翻译至 16.16
2024.7.2 机器翻译完成
2024.7.6 前言部分校对完成
2024.9.27
1.1 校对完成
1.2 校对完成
1.3 校对完成
2024.9.28
2.1 校对完成
2.2 校对完成
2.3 校对完成
2.4 校对完成
2.5 校对完成
2.6 校对完成
2.7 校对完成
2.8 校对完成
2.9 校对完成
2.10 校对完成
商标
FreeBSD 是 FreeBSD 基金会的注册商标。
IBM、AIX、OS/2、PowerPC、PS/2、S/390 和 ThinkPad 是国际商业机器公司在美国、其他国家或两者之间的商标。
IEEE、POSIX 和 802 是美国电气和电子工程师协会的注册商标。
Red Hat、RPM 是 Red Hat, Inc.在美国和其他国家的商标或注册商标。
3Com 和 HomeConnect 是 3Com Corporation 的注册商标。
Adobe、Acrobat、Acrobat Reader、Flash 和 PostScript 是 Adobe Systems Incorporated 在美国和/或其他国家的注册商标或商标。
Apple、AirPort、FireWire、iMac、iPhone、iPad、Mac、Macintosh、Mac OS、Quicktime 和 TrueType 是美国和其他国家注册的 Apple Inc.商标。
Intel、Celeron、Centrino、Core、EtherExpress、i386、i486、Itanium、Pentium 和 Xeon 是 Intel Corporation 或其在美国和其他国家的子公司的商标或注册商标。
Linux 是 Linus Torvalds 的注册商标。
Microsoft、IntelliMouse、MS-DOS、Outlook、Windows、Windows Media 和 Windows NT 是 Microsoft Corporation 在美国和/或其他国家的注册商标或商标。
Motif、OSF/1 和 UNIX 是 The Open Group 在美国和其他国家的注册商标,IT DialTone 和 The Open Group 是 The Open Group 的商标。
Sun、Sun Microsystems、Java、Java Virtual Machine、JDK、JRE、JSP、JVM、Netra、OpenJDK、Solaris、StarOffice、SunOS 和 VirtualBox 是 Sun Microsystems, Inc.在美国和其他国家的商标或注册商标。
RealNetworks、RealPlayer 和 RealAudio 是 RealNetworks, Inc.的注册商标。
Oracle 是 Oracle Corporation 的注册商标。
3ware 是 3ware Inc.的注册商标。
ARM 是 ARM Limited 的注册商标。
Adaptec 是 Adaptec, Inc.的注册商标。
Android 是 Google Inc.的商标。
Heidelberg、Helvetica、Palatino 和 Times Roman 是 Heidelberger Druckmaschinen AG 在美国和其他国家注册的商标或商标。
Intuit 和 Quicken 是 Intuit Inc.或其子公司在美国和其他国家注册的商标和/或注册服务商标。
LSI Logic、AcceleRAID、eXtremeRAID、MegaRAID 和 Mylex 是 LSI Logic Corp.的商标或注册商标。
MATLAB 是 The MathWorks, Inc.的注册商标。
SpeedTouch 是 Thomson 的商标。
VMware 是 VMware, Inc.的商标。
Mathematica 是 Wolfram Research, Inc.的注册商标。
Ogg Vorbis 和 Xiph.Org 是 Xiph.Org 的商标。
XFree86 是 The XFree86 Project, Inc.的商标。
许多制造商和销售商用来区分其产品的名称被宣称为商标。在本文档中,如果 FreeBSD 项目知晓了这些商标声明,他们的名称旁将带有符号“™”或“®”。
FreeBSD 新手会发现本书的第一部分旨在引导你掌握 FreeBSD 安装过程,并逐步介绍了支撑起 UNIX® 的概念和约定。阅读此部分只需要你有探索的好奇心和接受新概念的意愿。
走完这一步路后,手册中的第二部分是全方位覆盖的主题参考,包含了 FreeBSD 系统管理员所有可能感兴趣的内容。其中某些章节可能建议你在阅读前进行预习,这在每章开头的概述中有所注明。
如需更进一步的内容,请参阅书目。
欢迎来到 FreeBSD!本手册涉及了 FreeBSD 14.0-RELEASE 和 13.2-RELEASE 的安装和日常使用。本书是许多人不懈努力的成果。有些部分可能已经过时。有志于帮助更新和增补此文档的人可以发送电子邮件至 FreeBSD 文档项目邮件列表。
可以从 FreeBSD 官网得到本书的最新版本。还可以从 https://docs.FreeBSD.org/doc/ 获取旧版本。本书可以从 FreeBSD 下载服务器和众多镜像站中下载(提供了多种文件格式和压缩方式)。可以通过手册和其他文档的搜索页面中进行搜索。
第三版是 FreeBSD 文档项目专员连续两年工作的成果。纸质版变得非常厚重,所以必须分成两卷本来出版。以下是新版本的主要变化:
配置和调优已增补,提供了有关 ACPI 电源和资源管理、系统实用程序 cron
以及更多内核调优参数的新内容。
安全已增补,提供有关虚拟专用网络(VPN)、文件系统访问控制列表(ACL)和安全通告的新内容。
此版新增了章节强制访问控制。它解释了什么是 MAC 以及如何使用该机制来保护 FreeBSD 系统。
存储已增补,包括有关 USB 存储设备、文件系统快照、文件系统配额、文件和网络支持的文件系统以及加密磁盘分区的新内容。
PPP 中新增了故障排除部分。
电子邮件已增补,包括了有关使用替代传输代理、SMTP 身份验证、UUCP、fetchmail、procmail 以及其他高级主题的新内容。
高级网络部分已增补,新增了有关在 FreeBSD 上使用蓝牙®设备、设置无线网络以及异步传输模式(ATM)网络的教程。
书中增加了一个词汇表,为全书所用技术术语的定义提供了一个集中的位置。
对全书的表格和图表进行了诸多美化。
这部分手册是面向 FreeBSD 新用户和管理员的。在本章节:
介绍了 FreeBSD。
引导读者完成安装过程。
教授 UNIX® 基础知识和基本原理。
示范如何安装用于 FreeBSD 的大量第三方应用程序。
介绍 X,即 UNIX® 窗口系统,并详细说明了如何对桌面环境进行配置,让用户使用起来更加高效。
介绍了 Wayland,它是一款新的 UNIX® 显示服务器。
我们已经尽量减少了文本中参考文献的引用数量,因此你可以通读该部分,不会遇到经常翻页的问题。
为了提供一致且易于阅读的内容,全书遵循了一些惯例。
斜体
斜体 字体用于文件名、网址、重点内容强调以及当技术术语首次出现。
等宽
monospaced
字体用于错误信息、命令、环境变量、Port、主机名、用户名、组名、设备名、变量和代码片段。
加粗
应用程序、命令和按键均使用 粗体 字体。
按键以粗体 显示, 以便与其他文本区分开来。需要同时输入的按键组合以 +
按键之间显示,例如:
Ctrl+Alt+Del
这意味着用户应该同时按下 Ctrl、Alt 和 Del 键。
需要按顺序输入的键将用逗号分隔,例如:
Ctrl+X、Ctrl+S
这意味着用户需要同时按下 Ctrl 和 X 键,然后再同时按下 Ctrl 和 S 键。
以 C:> 开头的示例表示 MS-DOS® 命令。除非另有说明,否则这些命令一般可以在现代微软® Windows® 环境上的“命令提示符”窗口中执行。
以 %
开头的示例表示应使用普通用户账户调用的命令。除非另有说明,否则一律使用 C-shell 语法来设置环境变量和其他 shell 命令。
英语 | 翻译 | 说明 |
---|---|---|
涵盖/涵盖了——>涉及
允许——>能、能把、能让、把、让、将
描述——>说明、简介、解释、介绍、讲解、概述、论述、撰写、描写
一旦——>若、如、如果、假如、xx 后、xx 以后、xx 之后
The copyleft to 著佐权. The BSD to BSD. The FreeBSD to FreeBSD. The ports to ports. The port to port. The Wrapper to Wrapper. The USB stick to U 盘. The tip to 技巧. The Video Modes to 分辨率. The tarball to 压缩包. The Procedure to 过程. The log rotation to 日志轮替. The Tuning to 调优. Kernel Limits to 内核参数. The jail to jail. The jails to jail. The disk to 磁盘. The bootstrap to 自举. The cluster to 集群/簇. The world to 世界. The reduction to 精选. The Mandatory Access Control to 强制访问控制. The committers to 提交者. The committer to 提交者. The IP masquerading to IP 伪装. The load balancing to 负载均衡. The URL to 网址. The inquiry to 轮询. The USB dongle to USB 适配器. The Ticket to 凭据. The raw device to 裸设备. The image to 镜像. The caution to 当心. The Backspace to 退格键. The keymap to 键盘布局. The key bindings to 组合键. The sticky directories to 目录粘滞位. The fork to 复刻.The hardened to 加固.The Process Accounting to 进程审计. The Disk Organization to 磁盘结构.The issue command to 执行命令.The Patchkit to 补丁包.
当前版本的手册凝聚了工作组的长久努力,工作组一直在审查和更新手册中的所有内容。以下是自第四版手册以来的主要更新。
手册已从 转换为 和 。
创建了 。
新增了 及有关在 FreeBSD 上安装和配置 Wayland 的信息。
得到大规模更新。。
全书在逻辑上被分为五个独立的部分。第一部分是 入门,涉及 FreeBSD 的安装和基本用法。预设读者会按顺序阅读这些章节(可跳过已熟悉的话题)。第二部分是 常见任务,涉及一些 FreeBSD 的常用功能。第二及后续所有部分都可以乱序阅读。每章都以简洁的概述开头,讲解本章的内容以及读者应该掌握的知识。这样设计是为了让跳读的读者也能够找到感兴趣的章节。第三部分是 系统管理,涉及管理主题。第四部分是 网络通信,涉及网络和服务器主题。第五部分是包含书目的附录。
为新用户讲解 FreeBSD。它涉及 FreeBSD 项目的历史、目标和开发模型。
指导用户使用 bsdinstall 实现 FreeBSD 9.x(及更高版本)的完整安装。
涉及 FreeBSD 操作系统的基础命令和功能。如果你熟悉 Linux® 或其他版本的 UNIX®,那么你大可以跳过本章节。
涉及使用 FreeBSD 创新的“Ports”和单个二进制包来安装第三方软件的方法。
涉及 X Window 系统简介,以及如何在 FreeBSD 上使用 X11。还包含了常见的桌面环境,如 KDE 和 GNOME。
撰写了 Wayland 显示服务器大概情况,以及如何在 FreeBSD 上使用 Wayland。还讲解了常见的混成器,如 Wayfire、Hikari 和 Sway。
列出了一些常见的桌面应用程序,例如网络浏览器和办公软件套件,并讲解如何在 FreeBSD 上进行安装。
展示如何为你的系统设置音频和视频播放功能。还讲解了一些示例音频和视频应用程序。
解释为什么你可能需要自定义新内核,并为配置、构建和安装自定义内核提供了详细的指导。
阐述在 FreeBSD 上管理打印机,包括有关横幅页面、打印机记账和初始设置的信息。
讲解了 FreeBSD 的 Linux® 兼容层功能。还为许多常用的 Linux® 应用程序(如 Oracle®、Mathematica®)提供了详细的安装说明。
解释了什么是 WINE 以及详细的安装教程。还涉及了 WINE 的操作方式,如何安装 GUI 助手,如何在 FreeBSD 上运行 Windows® 应用程序,并包含了其他注意事项和解决方案。
讲解了系统管理员可用于调整 FreeBSD 系统以获得最佳性能的参数。还涉及了 FreeBSD 中使用的各种配置文件以及它们的位置。
讲解了 FreeBSD 引导过程,并解释了如何通过配置选项控制此过程。
讲解了许多可用于帮助保持 FreeBSD 系统安全的工具,包括 Kerberos、IPsec 和 OpenSSH。
讲解了 FreeBSD 中 jail 框架的功能,以及 jail 相较于传统的 chroot 所做的改进。
讲解了什么是强制访问控制(MAC),以及如何使用这种机制来保护 FreeBSD 系统。
讲解了什么是 FreeBSD 事件审计,如何安装,配置以及如何检查和监控审计日志。
讲解了如何使用 FreeBSD 管理存储介质和文件系统。例如物理磁盘、RAID 阵列、光盘和磁带介质、内存盘和网络文件系统。
讲解了在 FreeBSD 中,什么是 GEOM 框架,以及如何配置各种受支持级别的 RAID。
讲解了 OpenZFS 存储平台,并提供了有关在 FreeBSD 下运行 OpenZFS 的快速入门指南和高级主题信息。
检查对 FreeBSD 下的非原生文件系统(如 ext2、ext3 和 ext4)的支持。
讲解了虚拟化系统提供的内容,以及如何在 FreeBSD 中使用虚拟化。
讲解了如何配置 FreeBSD 使用除英语以外的其他语言,涉及系统和应用程序级别的本地化。
解释了 FreeBSD-STABLE、FreeBSD-CURRENT 和 FreeBSD-RELEASE 间的区别。讲解了何者可以从跟踪开发系统中获益,并简述了该过程。包含用户将其系统更新到最新安全发行版本的几种方法。
介绍了如何在 FreeBSD 上配置和使用 Sun™ 开发的 DTrace 工具。动态跟踪可执行实时系统分析,用于帮助定位性能问题。
介绍了在 FreeBSD 上使用 USB 设备模式和 USB On-The-Go(USB OTG)。
介绍了如何在 FreeBSD 中使用 PPP 连接远程设备。
介绍了电子邮件服务器的构成和组件,并深入探讨了最常见的邮件服务器软件:sendmail 的简单配置话题。
提供了详细的讲解和示例配置文件,以将你的 FreeBSD 设备配置成网络文件系统服务器、域名服务器、网络信息系统服务器和时间同步服务器。
阐释了软件防火墙背后的哲学,并提供了适用于 FreeBSD 的多种防火墙的详细配置信息。
涉及许多网络主题,包括在局域网上与其他计算机共享互联网连接、高级路由主题、无线网络、蓝牙、ATM、IPv6 等。
列出了得到 FreeBSD 光盘和 DVD 的多种方法,以及多个能让你在互联网上下载并安装 FreeBSD 的网站。
全书涉及多个主题,有可能让你渴望更深层次的解释。在书目列出了许多在文中引用的优秀书籍。
涉及了供 FreeBSD 用户报告问题并参与有关 FreeBSD 的技术交流的论坛。
列出了几位 FreeBSD 开发人员的 PGP 指纹。
当前版本的在线手册凝聚着过去十年间许多贡献者的不懈努力。自 2004 年两卷本的第三版出版以来,以下是一些重要变化:
新增了 ,介绍了如何在 FreeBSD 上运行 Windows® 应用程序。
新增了 的有关信息,它是一款功能强大的性能分析工具。
新增了,介绍了 FreeBSD 中的非原生文件系统,如 Sun™ 的 ZFS。
新增了,以涉及 FreeBSD 中新的审计功能并介绍其使用方法。
增加了有关在软件上安装 FreeBSD 的内容。
新增了使用新的安装工具——用 bsdinstall 安装 FreeBSD 的方法。
以 #
开头的示例表示该命令必须用 FreeBSD 中的超级用户身份调用。你可以以普通用户身份登录并以 root
键入命令,或以普通用户身份登录并使用 获得超级用户权限。
copyleft
著佐权
copyleft 即不会施加类似于 GPL 这种版权协议的限制,如强制开源等。
Mandatory Access Control
强制访问控制
committers
提交者
masquerade
冒充
但是 IP masquerading 为 IP 伪装
remote groups
异地团体?
不知道怎么翻译,结合语境远程团队或离岸团队或远程组
layer 4-7
第 4-7 层
load balancing
负载均衡
URL
网址
Installing Applications: Packages and Ports
安装应用程序:软件包和 Ports
glossary
术语表
inquiry
轮询
connection handle
连接句柄
不知道怎么翻译
channels
信道
USB dongle
USB 适配器
需要结合语境判断是具体是什么
Internet
互联网
无需加“公开”,互联网在理论上本就是开放的
Ticket
凭据
Wrapper
Wrapper
专有名词,维持英文
Ports Collection
Ports
Collection
似乎看起来无用。Ports Collection 实际上就是 Ports,但是单个的软件则为 port
raw device
裸设备
原始设备?
media
光盘/设备/介质
不翻译为不明确的词语“介质”
PAE(Physical Address Extension)
物理地址扩展
embedded boards
嵌入式板卡
system
设备/系统
MBR
主引导记录
GPT
全局唯一标识分区表
UEFI
统一可扩展固件接口
image
镜像
bug
bug
专有名词,维持英文
slices
分片/切片
结合语境
note
注意
应该缩进加粗使用
warning
警告
应该缩进加粗使用
important
重要
应该缩进加粗使用
caution
当心
应该缩进加粗使用
USB stick
U 盘/优盘
space
空格键
空格键
Enter
回车键
回车键
Backspace
退格键
退格键
describe
说明
tip
技巧
应该缩进加粗使用
keymap
键盘布局
fully-qualified
完全限定
root-on-ZFS
使用 ZFS 作为 root 分区/ root 分区使用 ZFS
advanced users
专业用户
print spooler
打印后台处理程序
台湾是说法“列印排存器”,列印即打印,排存器不知道是什么东西
partition schemes
分区表/分区方案
stripe
条带/剥离
结合具体语境
drive
结合语境可能是“磁盘”/驱动器装置/设备
结合语境
Distribution Files
安装文件/分发文件
结合语境
Hardening Security
强化安全性
scroll-back buffer
回滚缓冲区
Network Interfaces
网络接口/网卡
Mirror
镜像站
build
构建/编译
Disk Organization
磁盘结构
3.6. Disk Organization
Video Modes
分辨率
key bindings
组合键
sticky directories
目录粘滞位
tarball
源码包/压缩文件
?
Quarterly Branche
季度分支
Latest Branche
最新分支
ports tree
树无意义,不翻译
ports skeleton
ports 框架
Procedure
过程
heckout
检出
log rotation
日志轮替/日志滚动
都可以
fork
复刻/派生
Tuning
优化/调整/调谐
# 15.4. 中为“调整”
Kernel Limits
内核参数
boot
引导
不是“启动”
Process Accounting
进程审计
“进程记账”看起来不相干。“审计”更符合原意
hash
哈希\散列
有时代指“加密方式”
Login Classes
登录分级
Export Regulations
出口管制
principal
主体
Kerberos
realm
领域
Kerberos
hardened
加固
如,APK 加固,JAVA 加固
flag
标签/标志
ACL
programmatic method
计划任务
14.10. 监测第三方安全问题
security advisory
安全公告
per-user calls
每用户调用数
core files
核心转储文件
等于 core dump
utility
软件/工具
实际上就是软件
jail
jail
一般应该小写
inode
索引节点
loopback
回环
monitoring
监控
issue command
执行命令
不是“发出”
facility
设施/机制/工具
Audit Review
审计复核
reduction
精选或精简
用于安全审计
disk
磁盘
off-site
离线
Memory Disks
内存盘
用于 18 章,不是闪存设备
memory-backed disks
内存盘
用于 18 章,不是闪存设备
provider
provider
专有名词,A provider is "a disk-like thing which appears in /dev"
world
世界
指除了内核以外的基本系统的所有部分
sound sink
声音/音频接收器
第 7.2 节出现
bootstrap
自举
custom kernel
定制内核
stateful firewall
状态防火墙
cluster
集群/族
FreeBSD 是一款开源、符合标准的类 Unix 操作系统,适用于 x86(32 位和 64 位)、ARM、AArch64、RISC-V、POWER 和 PowerPC 计算机。它提供了现今被视为理所当然的所有功能,例如抢占式多任务处理、内存保护、虚拟内存、多用户功能、SMP(对称多处理)支持,以及为不同语言和框架提供了所有的开源开发工具,以及基于 X Window 系统、KDE 和 GNOME 的桌面功能。FreeBSD 的独家优势包括:
自由的开源许可证:你可以自由修改和扩展其源代码,并将其纳入开源项目和闭源产品中,而不受典型著佐权许可证的限制,同时规避了潜在的许可证不兼容问题。
强大的 TCP/IP 网络功能:FreeBSD 实现了行业标准协议,性能和可扩展性日益增强。这使其在服务器、路由和防火墙角色中都非常适合,实际上许多公司和供应商正是出于这个目的而使用 FreeBSD。
完全集成的 OpenZFS 支持,包括在根文件系统使用 ZFS、ZFS 启动环境、故障管理、管理权限委派、对 jail 的支持、FreeBSD 特定文档和系统安装程序的支持。
海量的安全功能,包括强制访问控制框架、Capsicum 能力和沙箱机制。
三万余款预构建软件包,适用于所有受支持的架构。Ports 还可使你可以轻松构建自己的定制软件包。
文档:除了手册和由不同作者编写的书籍(涵盖系统管理到内核内部机制等主题)外,还有 man(1) 页面,不仅包含用户空间守护进程、工具和配置文件的文档,还包括了内核驱动 API(第 9 节)和单个驱动程序(第 4 节)的文档。
简单一致的存储库结构和构建系统:FreeBSD 使用单一的存储库管理所有组件——包括内核和用户空间。结合统一且易于定制的构建系统和精心设计的开发流程,使 FreeBSD 易于与你自己产品的构建基础设施集成。
恪守 Unix 哲学,更倾向于可组合性,而非单一的“全能”守护进程及硬编码行为。
与 Linux 的二进制兼容性,使 FreeBSD 能够在无需虚拟化的情况下运行许多 Linux 二进制文件。
FreeBSD 基于加州大学伯克利分校计算机系统研究小组(CSRG)发布的 4.4BSD-Lite,并延续了 BSD 系统开发的卓越传统。除了 CSRG 提供的出色工作外,FreeBSD 项目还投入了数千个小时用于扩展功能和优化系统,以实现最大性能和可靠性(尤其是在实际负载的情况下)。FreeBSD 在性能和可靠性方面能与其他开源和商业产品相媲美,并结合了独一无二的前沿特性。
FreeBSD 的应用范围仅限于你的想象力。从软件开发到工厂自动化,从库存管理到远程卫星天线的方位校正;如果可以用商业 UNIX® 产品完成,那么很可能你也可以用 FreeBSD 来实现!FreeBSD 还明显受益于全球研究中心和大学开发的数千款高质量应用程序,他们通常以极低的成本甚至免费提供。
由于 FreeBSD 的源代码可自由获取,该系统也可以根据特定应用程序和项目进行几乎前所未有的定制,这在大多数主要商业供应商的操作系统中通常是不可能的。以下只是现在人们使用 FreeBSD 的一些应用示例:
互联网服务:FreeBSD 内置的强大 TCP/IP 网络功能使其成为各种互联网服务的理想平台,例如:
Web 服务器
IPv4 和 IPv6 路由器
防火墙和 NAT(“IP 伪装”)网关
FTP 服务器
邮件服务器
存储服务器
虚拟化服务器
及更多……
教育:你是计算机科学或相关工程领域的学生吗?没有比通过 FreeBSD 提供的动手、深入体验来学习操作系统、计算机体系结构和网络的更好方法了。对那些使用计算机完成 其他 工作的用户,许多可自由获得的 CAD、数学和图形设计软件包也非常有帮助!
研究:由于整个系统的源代码都是开源的,FreeBSD 是操作系统及计算机科学其他领域研究的优秀平台。FreeBSD 的自由特性使得远程团队可以在想法和共享开发上进行合作,而无需担心特殊许可协议或受公开论坛讨论内容的限制。
网络:需要一台新的路由器?一台域名服务器(DNS)?一款防火墙来保护你的内部网络?FreeBSD 可以轻松将你角落里闲置的 PC 变成具备先进数据包过滤能力的高级路由器。
嵌入式:FreeBSD 是构建嵌入式系统的绝佳平台。支持 ARM、AArch64 和 PowerPC 平台,结合强大的网络栈、前沿特性以及宽松的 BSD 许可证,FreeBSD 为构建嵌入式路由器、防火墙和其他设备提供了良好的基石。
桌面:FreeBSD 是廉价桌面解决方案的不错选择(使用免费可选的 X11 服务器及 Wayland 显示服务器)。FreeBSD 提供了多种开源桌面环境,包括标准的 GNOME 和 KDE 图形用户界面。FreeBSD 甚至可以从中央服务器以“无盘”方式启动,使得单个工作站更加经济且易于管理。
软件开发:FreeBSD 基本系统配备了完整的开发工具套件,包括完整的 C/C++ 编译器和调试工具。通过 ports 和软件包,还可轻松获取更多其他语言支持。
FreeBSD 可以免费下载,及通过 CD-ROM 和 DVD 获取。更多有关获取 FreeBSD 的信息,请参见 获取 FreeBSD。
FreeBSD 以其强大的 web 服务器能力而闻名。可以在 FreeBSD 基金会的网站上找到基于 FreeBSD 的产品和服务的 公司推荐信列表 。维基百科也维护了一份 基于 FreeBSD 的产品列表。
你手中的这本书凝聚着全世界数百人的心血。无论是改正了错别字,还是撰写了完整的章节,一切贡献都是有用的。
有多家公司通过向作者支付全职工作的工资、支付出版费用等方式来支持本文档的编写。特别是 BSDi(后来被风河系统公司收购)曾赞助 FreeBSD 文档项目的成员全职改进本书,最后于 2000 年 3 月纸质版第一版出版(ISBN 1-57176-241-8)。随后,风河系统公司又支付了几位作者的稿酬,以改进排版打印等基础工具,并增补新章节。这项工作的最终成果是于 2001 年 11 月出版的纸质版第二版(ISBN 1-57176-303-1)。在 2003-2004 年期间,FreeBSD Mall, Inc 为几位撰稿人支付了稿酬来完善手册,为纸质版第三版做准备。纸质版第三版分成了两卷本。这两卷分别以书名《FreeBSD 手册第 3 版第 1 卷:用户指南》(The FreeBSD Handbook 3rd Edition Volume 1: User Guide,ISBN 1-57176-327-9)和《FreeBSD 手册第 3 版第 2 卷:管理员指南》(The FreeBSD Handbook 3rd Edition Volume 2: Administrators Guide,ISBN 1-57176-328-7)进行出版。
第二版是 FreeBSD 文档项目专员两年多努力的结晶。本版的主要变化如下:
添加了完整索引。
所有 ASCII 图均被图形化的图表取代。
每章都增加了独立的概述小节,以在短时间内获得该章所涉及的内容,以及读者应了解的内容。
内容上被逻辑重组为三部分:“入门指南”,“系统管理”和“附录”。
FreeBSD 基础已增补,包含了有关进程,守护程序和信号的额外信息。
安装应用程序:软件包和 Port 已增补,包含了有关使用二进制软件包管理的其他信息。
X Window 系统被完全重写,重点是在 XFree86™ 4.X 上使用现代桌面技术,如 KDE 和 GNOME。
FreeBSD 启动过程已增补。
将以前两个独立的小节“磁盘”和“备份”重写为存储。我们认为将这些主题作为单独一章呈现更易理解。还添加了有关 RAID(硬件和软件)的部分。
串行通信已完全重写并更新,适用于 FreeBSD 4.X/5.X。
PPP 已大幅更新。
高级网络中添加了许多新章节。
电子邮件已增补,包括有关配置 sendmail 的更多信息。
Linux® 二进制兼容层已增补,包括了有关安装 Oracle®和 SAP® R/3® 的信息。
以下部分提供了 FreeBSD 项目的相关背景信息,包括简史、项目宗旨和开发模型。
FreeBSD 项目始于 1993 年初,部分起因于 386BSD 非官方补丁包的最后三位协调人:Nate Williams、Rod Grimes 和 Jordan Hubbard 的构思。
最初的打算是为 386BSD 制作一个中间快照,来解决补丁包机制多个无法解决的问题。FreeBSD 项目的早期工作名称是 386BSD 0.5/386BSD Interim,就说明了这一事实。
386BSD 是 Bill Jolitz 开发的操作系统,在此之前已经被彻底无视了近一年。随着补丁包的不断膨胀,他们决定通过开发这个临时的“清理”快照来帮助 Bill。然而,当 Bill Jolitz 突然决定退出该项目,且没有明确的后续规划时,这一计划戛然而止。
三人认为,哪怕没有 Bill 的支持,这一想法仍然值得追求,因此他们采用了 David Greenman 创造的“FreeBSD”这个名字。在咨询了当前的系统用户后,初步目标确定了下来,在 FreeBSD 项目明显有望成为现实后,Jordan 便联系了 Walnut Creek CDROM,目的是为那些没有便捷互联网访问的用户改善 FreeBSD 的分发渠道。Walnut Creek CDROM 不仅帮助将 FreeBSD 分发到 CD 上,还提供了一台可供 FreeBSD 项目使用的机器和快速的互联网连接。若没有 Walnut Creek CDROM 对这个当时这个完全不为人知的项目几乎前所未有的信任,FreeBSD 不会取得今天如此迅速的发展。
第一张随 CD-ROM(以及一般的网络)分发的是 FreeBSD 1.0,发布于 1993 年 12 月。1.0 版本基于来自加州大学伯克利分校的 4.3BSD-Lite(“Net/2”)磁带,许多组件也由 386BSD 和自由软件基金会提供。作为初次发布,这一版本极为成功,并于 1994 年 5 月紧接着发布了备受好评的 FreeBSD 1.1。
在此期间,某些出乎意料的阴云浮现在地平线上,Novell 与加州大学伯克利分校就 Berkeley Net/2 磁带的法律地位达成了长期诉讼的和解。和解的一项条件是,加州大学伯克利分校承认 Net/2 的三个文件是“侵权”的代码,必须删除,因为它们是 Novell 的财产(Novell 此前就从 AT&T 那里获得了这些文件)。伯克利所获得的回报是 Novell 的“许可”,即在最终发布 4.4BSD-Lite 时,将被声明为是合规的,并强烈建议所有现有的 Net/2 用户进行切换。其中就有 FreeBSD,FreeBSD 项目被要求在 1994 年 7 月底之前停止分发自己基于 Net/2 的产品。根据协议,FreeBSD 项目被允许在截止日期前发布最后一个版本,该版本为 FreeBSD 1.1.5.1。
随后,FreeBSD 开始了一项艰苦的任务:从一个全新的、相对不完整的 4.4BSD-Lite 版本中重新创造自己。尽管仅有三个涉及 System V 共享内存和信号量的文件被移除,但已对 BSD 发行版进行了诸多其他更改和错误修复,因此将所有 FreeBSD 开发合并到 4.4BSD-Lite 中是一项艰巨的任务。直到 1994 年 11 月,FreeBSD 项目才实现这一过渡,并于 12 月向全世界发布了 FreeBSD 2.0。尽管该版本在某些方面仍显粗糙,但这是一个重要的里程碑,并于 1995 年 6 月发布了更为稳健、安装更简便的 FreeBSD 2.0.5 版本。
自那时起,FreeBSD 每次发布都在不断改善前一个版本的稳定性、速度和功能集。
目前,长期开发项目继续在 15.0-CURRENT(main)分支中进行,15.0 的快照版本持续在快照服务器上发布,随着开发的进展而更新。
FreeBSD 的项目宗旨是提供可以用于一切目的且无附加条件的软件。我们中的许多人对代码(和项目)进行了大量投入,自然也希望能偶尔获得一些经济补偿,但我们绝对不打算一定如此。我们相信,我们的首要“使命”是向所有人提供代码,无论其目的如何,以便代码能得到尽可能普遍的使用,并产生尽可能大的利益。我们认为这是自由软件最基本的宗旨之一,也是我们热情拥护的宗旨。
在我们的源代码树中,属于 GNU 通用公共许可证(GPL)和 GNU 宽通用公共许可证(LGPL)的代码附带的条件略多,尽管这些条件是要求强制开源,而非通常的限制访问。由于在商业上使用 GPL 软件可能会产生的额外复杂性,当有合理选择时,我们更倾向于选择采用以更宽松的 BSD 许可证授权的软件。
FreeBSD 的开发过程非常地开放灵活,FreeBSD 实际上是由世界各地成千上万人的贡献构成的,你可以从我们的贡献者名单中看出。FreeBSD 的开发基础设施能让这些成千上万的贡献者通过互联网进行合作。我们不断寻找新的志愿者,想要更密切参与的人可以查阅文章为 FreeBSD 贡献。
无论是独立工作还是紧密合作,有关 FreeBSD 项目及其开发过程的一些有用信息:
Git 存储库
多年来,FreeBSD 的中央源代码树由 CVS(Concurrent Versions System,并发版本系统)维护,这是一款可自由获取的源代码控制工具。2008 年 6 月,FreeBSD 项目切换至使用 SVN(Subversion)。之所以进行这次切换,是因为 CVS 施加的技术限制在源代码树的快速扩展和已存历史量面前变得愈加明显。文档项目和 Ports 的存储库分别于 2012 年 5 月、2012 年 7 月从 CVS 迁移到了 SVN。2020 年 12 月,FreeBSD 项目将源代码和文档存储库迁移至 Git,而 Ports 也于 2021 年 4 月进行了上述迁移。更多有关获取 FreeBSD src/
存储库的信息,请参阅获取源代码部分,有关获取 FreeBSD Ports 的详细信息,请参阅使用 Ports。
提交者(committer)名单
提交者 是指具有 推送 权限的人员,他们被授权对 FreeBSD 源代码进行修改(“提交者”(committer)一词源于 commit
,即用于将新更改引入仓库的源代码控制命令)。所有人都可以向 Bug数据库提交错误。在提交错误报告之前,可以使用 FreeBSD 邮件列表、IRC 频道和论坛帮助验证某个问题是否的确是个 Bug。
FreeBSD 核心团队
如果 FreeBSD 项目是一家公司,FreeBSD 核心团队 相当于公司的董事会。核心团队的主要任务是确保 FreeBSD 项目整体运行良好,并朝着正确的方向发展。招募专注且负责的开发者加入我们的提交者团队是核心团队的职能之一。此外,核心团队还负责招募新的核心团队成员,以替代离任的成员。当前核心团队于 2024 年 5 月和 6 月从提交者候选人中选举产生。选举每两年举行一次。
注意
同大多数开发者一样,在 FreeBSD 开发方面,核心团队的成员也大都是志愿者,并未从 FreeBSD 项目中获利,因此“承诺”也不应被误解为“有保障的支持”。上面提到的“董事会”类比并不十分准确,也许更恰当的说法是:这些人是在违背自己最佳利益的情况下,放弃了个人生活,投身于 FreeBSD 事业!
FreeBSD 基金会
FreeBSD 基金会是美国的一家 501(c)(3) 的非营利组织,致力于支持和促进 FreeBSD 项目及其全球社区。基金会通过项目资助支持软件开发,并提供人员以实时响应紧急问题和实现新特性和功能。基金会购买硬件以改善和维护 FreeBSD 基础设施,并资助人员以提升测试覆盖率、持续集成和自动化。基金会通过在全球技术会议和活动中推广 FreeBSD 来推动 FreeBSD。基金会还提供研讨会、教育材料和演示,以吸引更多用户和贡献者加入 FreeBSD。基金会还代表 FreeBSD 项目执行合同、许可证协议及其他需要认可法律实体的法律事务。
外部贡献者
最后但绝不是最不重要的,最大的开发者群体是用户本身,他们几乎不断地向我们提供反馈和错误修复。同 FreeBSD 基本系统开发保持联系的主要方式是订阅 FreeBSD 技术讨论邮件列表,在这里讨论这些内容。对于移植第三方应用程序,你可以访问 FreeBSD Ports 邮件列表。关于文档的内容请参考 FreeBSD 文档项目邮件列表。有关各种 FreeBSD 邮件列表的更多信息,请参见互联网上的资源。
FreeBSD 贡献者名单是一个漫长却又不断增长的名单,为什么不通过为 FreeBSD 贡献一些东西来加入其中呢?开发代码并非唯一的方式!
总之,我们的开发模型是一个松散的同心圆集。中心化模型旨在方便 FreeBSD 用户,为他们提供一种轻松跟踪单个中心代码库的方式,而不是将潜在的贡献者排除在外!我们希望呈现一个稳定的操作系统,拥有大量协调的应用程序,用户可以轻松安装和使用——这一模型在实现此目标方面非常有效。
我们对有志于加入 FreeBSD 开发者团队的人的唯一期望是,具备与当前成员相同的奉献精神,以确保 FreeBSD 项目的继续取得成功!
除了基础发行版,FreeBSD 还提供了一个移植的软件集,包含数千款常见程序。Port 列表涉及从 HTTP 服务器到游戏、语言、编辑器以及几乎所有其他类型的软件。大约有 36000 个 Port;整个 Ports 约占 3 GB 的空间。要编译一个 Port,只需切换到你希望安装的程序目录,输入 make install
,然后让系统完成其余的工作。可动态检索构建每个 Port 所需的完整原始发行文件,因此你只需要有足够的磁盘空间来构建所需的 Port 就可以了。
每个 Port 几乎也同时提供了预编译的“软件包”,那些不想从源代码自己编译 Port 的人可以通过简单的命令(pkg install
)进行安装。更多有关软件包和 Ports 的信息,请参见安装应用程序:软件包和 Ports。
所有受支持的 FreeBSD 版本在安装程序中提供了选项,可在初始系统设置期间安装位于 /usr/local/share/doc/freebsd
下的其他文档。也可以在后期通过软件包安装文档:
对于本地化版本,请将“en”替换为所选语言的前缀。请注意,某些本地化版本可能已经过时,并可能包含不再正确或相关的信息。你可以使用以下链接通过网页浏览器查看本地安装的手册:
FreeBSD 手册
/usr/local/share/doc/freebsd/en/books/handbook/handbook_en.pdf
FreeBSD 常见问题解答
/usr/local/share/doc/freebsd/en/books/faq/faq_en.pdf
你可以随时在文档网站找到最新的文档。
所有商标均为各自所有者的财产。
感谢你对 FreeBSD 的关注!以下章节涉及了 FreeBSD 项目的各个方面,如历史、目标、发展模式等。
在阅读本章后,你将会收获:
FreeBSD 与其他计算机操作系统的关系。
FreeBSD 项目的历史。
FreeBSD 项目的宗旨。
FreeBSD 开源开发模型的基础。
以及 FreeBSD 这个名字的由来。
正在施工,具体进度请看编辑日志。
旧版存档
PDF 文档
使用由 safreya 提供的脚本:
https://github.com/FreeBSD-Ask/gitbook-pdf-export 用于导出本书的 PDF 文档。该脚本使用 Python 3 编写,仅在 Windows 10、FreeBSD 14 上测试过。
具体使用方法见该项目的 README.
标题 | 临时预览网址 |
---|---|
重要
在默认情况下,出现以下信息之前,安装器将不会对磁盘进行任何更改:
在此警告之前,可以随时退出安装。如果担心某些配置错误,只需在此之前关闭计算机,设备磁盘将不会有任何变更。
本节讲解了如何从使用的说明准备的安装介质启动系统。当使用可引导 USB 闪存驱动器时,请在打开计算机之前插入 USB 闪存驱动器。当从 CD/DVD 启动时,请在打开计算机后立刻插入介质。如何配置系统从插入的介质启动取决于架构。
在系统从安装介质启动后,将显示类似如下内容的菜单:
图 1. FreeBSD 引导加载程序菜单
在默认情况下,在启动 FreeBSD 安装程序(在 FreeBSD 已安装的情况下会启动 FreeBSD)之前菜单将等待十秒钟。要暂停启动计时器来查看选项,请按 空格键。要选择某选项,请按其高亮显示的数字、字符/按键。以下选项可用。
Boot Multi User
:将继续 FreeBSD 启动过程。如果启动计时器已暂停,请按 1、大写/小写的 B 或 回车键。
Reboot
:重新启动系统。
Cons
:可通过 video
、serial
、Dual (serial primary)
或 Dual (Video primary)
继续安装。
Kernel
:加载不同的内核。
图 2. FreeBSD 引导选项菜单
引导选项菜单分为两个部分。第一部分可用于返回主引导菜单或将任何已切换的选项重置为默认值。
下一部分用于通过按选项的高亮数字/字符来切换可用选项为 On
/Off
。系统将始终使用这些选项的设置进行引导,直到它们被修改。可以通过此菜单切换几个选项:
ACPI Support
:如果在引导期间系统卡住,请尝试将此选项切换为 Off
。此选项仅在可用但非必需的情况下存在。
Safe Mode
:如果哪怕在将 ACPI Support
设置为 Off
的情况下系统仍然卡住,请尝试将此选项设置为 On
。
Verbose
:将此选项切换为 On
以查看引导过程中的详细消息。这在故障排除硬件时可能很有用。
图 3. 欢迎菜单
技巧
要查看引导消息,包括硬件设备探测,请按大写/小写的 S,然后按 回车键 以访问 shell。在 shell 提示符下,输入
more /var/run/dmesg.boot
,再使用 空格键 滚动信息。在完成后,输入exit
可返回欢迎菜单。
安装 FreeBSD 的硬件要求因架构和版本而异。每款 FreeBSD RELEASE 支持的硬件架构和设备列在 页面上。也提供了针对不同架构正确镜像的建议。
在确定设备满足安装 FreeBSD 的最低硬件要求后,就可以下载安装文件,准备安装介质了。
技巧
如果你想在已安装其他操作系统的系统上使用 FreeBSD,请考虑使用。
在进行安装之前,请检查下列清单中的项目,查看系统是否准备就绪:
备份重要数据
在安装任何操作系统之前,请 始终 先备份所有重要数据。不要将备份存储在要安装的系统上,而应将数据保存到可移动磁盘,如 USB 驱动器、网络上的其他系统和在线备份服务。请在开始安装之前测试备份,以确保它包含所有所需文件。在安装程序格式化系统磁盘后,存储在该磁盘上的所有数据都将丢失。
选择安装 FreeBSD 的位置
如果你仅安装 FreeBSD 这一个操作系统,则可以跳过此步骤。但如果 FreeBSD 将与其他操作系统共享磁盘,则需决定使用哪块磁盘和分区。
在 i386 和 amd64 架构中,可以使用两种分区方案之一将磁盘划分为多个分区。传统的 主引导记录(MBR)包含一个分区表,最多可定义四个 主分区。出于历史原因,FreeBSD 称这些主分区为 切片(slice)。其中某主分区可以作为 扩展分区,可包含多个 逻辑分区。GUID 分区表(GPT)是一种新款且更简单的磁盘分区方法。常见的 GPT 实现可使每块磁盘最多有 128 个分区,消除了对逻辑分区的需求。
FreeBSD 引导加载程序需要一个主分区/GPT 分区。如果所有主分区/GPT 分区已被使用,则必须为 FreeBSD 释放一个分区。要在不删除现有数据的情况下创建分区,可以使用分区调整工具缩小现有分区,使用释放的空间创建新分区。
另一种修改系统现有磁盘分区的方法是使用,这能让多个操作系统同时运行,而无需更改分区。
各种免费和商业的分区调整工具列在上。 是一款免费的 Live CD,内置 GParted 分区编辑器。
警告
若使用得当,磁盘缩小工具可安全地为创建新分区创造空间。由于可能选择错误的分区,请始终备份重要数据,并在修改磁盘分区之前检查备份的完整性。
包含不同操作系统的磁盘分区使在一台计算机上安装多个操作系统成为可能。
收集网络信息
某些 FreeBSD 安装方法需要网络连接用于下载安装文件。在安装后,安装程序会提供设置系统网络接口的选项。
如果网络有 DHCP 服务器,则可以用它来提供自动网络配置。如果没有 DHCP,则必须从本地网络管理员或互联网服务提供商获取以下网络信息:
所需的网络信息:
IP 地址
子网掩码
默认网关的 IP 地址
网络的域名
网络的 DNS 服务器 IP 地址
查阅 FreeBSD Errata
尽管 FreeBSD 项目努力确保每款 FreeBSD RELEASE 都尽可能地稳定,但偶尔会出现 bug。在极少数情况下,这些 bug 会影响安装过程。随着这些问题的发现和修复,它们会在每个 RELEASE 的 FreeBSD Errata 页面上注明。请在安装前查阅 errata,以确保不存在可能影响安装的问题。
可以在页面找到所有 RELEASE 的信息及 errata 。
FreeBSD 安装程序不是能在其他操作系统中运行的应用程序。请下载 FreeBSD 安装文件,将其刻录到与其文件类型和大小相对应的介质(CD、DVD 或 USB)上,然后从插入的介质安装启动系统。
安装文件类型:
-bootonly.iso
:这是最小的安装文件,仅包含安装程序。安装过程中需要一个有效的互联网连接,因为安装程序会下载完成 FreeBSD 安装所需的文件。该文件应刻录到光盘上。
-disc1.iso
:该文件包含安装 FreeBSD 所需的所有文件、源代码和 Ports。应将该文件刻录到光盘上。
-dvd1.iso
:该文件包含安装 FreeBSD 所需的所有文件、源代码和 Ports。它还包含一组流行的二进制包,用于安装窗口管理器和一些应用程序,以便可以从介质安装完整的系统,而无需连接互联网。应将该文件刻录到光盘上。
下载镜像文件后,请从同一目录下载至少一个 checksum(校验和)文件。有两个校验和文件可用,文件名包含发布编号和架构名称。例如:CHECKSUM.SHA256-FreeBSD-13.1-RELEASE-amd64
和 CHECKSUM.SHA512-FreeBSD-13.1-RELEASE-amd64
。
在 FreeBSD 中,可以通过执行以下命令自动完成校验和的验证:
校验和必须完全匹配。如果校验和不符合,则镜像文件已损坏,必须重新下载。
*memstick.img
文件是 USB 闪存驱动器内容的 镜像。它 不能 作为文件复制到目标设备。可用多个应用程序将 *.img
写入 USB 闪存驱动器。本节介绍了其中两个工具。
重要
在继续之前,请备份 USB 闪存驱动器上的所有重要数据。此过程将删除驱动器上的现有数据。
使用
dd
写入镜像的步骤警告
此示例使用
/dev/da0
作为目标设备,镜像将在此设备上写入。请 务必小心,使用正确的设备,因为此命令将删除指定目标设备上的现有数据。
此命令行工具可在 BSD、Linux® 和 Mac OS® 系统上使用。要使用
dd
刻录镜像,请插入 USB 闪存驱动器,然后确定其设备名称。接下来,指定下载的安装文件的名称和 USB 闪存驱动器的设备名称。此示例将在现有 FreeBSD 系统的首个 USB 设备上刻录 amd64 安装镜像。如果此命令失败,请检查,不应挂载 USB 闪存驱动器,并且设备名称是磁盘,而非分区。
使用 Windows® 写入镜像的步骤
警告
请确保选择了正确的驱动器字母,因为所指定驱动器上的现有数据将被覆盖和删除。
获取 Windows® 镜像写入工具
使用镜像写入工具写入镜像
双击 Win32DiskImager 图标可启动程序。验证
Device
下显示的驱动器字母是否有 USB 闪存驱动器。单击文件夹图标,选择要写入内存棒的镜像。单击 Save 以接受镜像文件名。验证一切是否正确,并确保 USB 闪存驱动器中的文件夹未在其他窗口中打开。待一切准备就绪,单击 Write 将镜像文件写入内存棒。
安装时间会因所选发行版、安装介质和计算机速度而异。一系列信息可指示进度。
首先,安装程序会格式化所选的磁盘并初始化分区。接下来,在使用 bootonly media
/mini memstick
的情况下,它会下载所选组件:
图 31. 获取分发文件
接下来,会验证发行文件的完整性,确保它们在下载过程中没有损坏或在安装介质中读取错误:
图 32. 校验分发文件
最后,经过校验的分发文件会被解压到磁盘上:
图 33. 提取发行文件
在所有请求的发行文件解压完成后,bsdinstall 将显示首次安装后的配置界面。可用的后配置选项将在下一节中概述。
bsdinstall 的欢迎菜单(见提供了选项 Live CD。这对那些仍在考虑 FreeBSD 是否适合自己的用户很有帮助,他们可以在安装之前测试一些功能。
在使用 Live CD 前应注意以下几点:
使用系统需要身份验证。用户名为 root
,密码为空。
由于系统直接从安装介质运行,性能将明显弱于安装在硬盘上的系统。
此功能仅提供命令提示符,未提供图形界面。
本部分展示了 bsdinstall 菜单的顺序以及在系统安装之前将询问的信息类型。使用箭头键高亮菜单选项,然后按 空格键 选择/取消选择该菜单项。在完成后,按 回车键 可保存选择,进入下一个界面。
在开始安装过程之前,bsdinstall 将加载键盘布局文件,如所示。
图 4. 键盘布局加载
图 5. 键盘布局选择菜单
注意
按 Esc 可退出此菜单,使用默认键盘布局。如果不确定要选择哪个键盘布局,使用 United States of America ISO-8859-1 也是一个稳妥的选择。
图 6. 键盘布局测试菜单
接下来的 bsdinstall 菜单用于为新安装的系统设置主机名。
图 7. 设置主机名
输入在网络中唯一的主机名。应为一个完全限定的主机名,例如 machine3.example.com
。
接下来,bsdinstall 将提示选择要安装的可选组件。
图 8. 选择要安装的组件
决定安装哪些组件在很大程度上取决于系统的预期用途和可用的磁盘空间。FreeBSD 内核和用户空间,统称为 基本系统,始终会被安装。根据架构,某些组件可能不会出现:
base-dbg
——含有调试符号的基础工具,如 cat 和 ls 等。
kernel-dbg
——含有调试符号的内核和模块。
lib32-dbg
——用于在 64 位版本 FreeBSD 上运行 32 位应用程序的兼容库,含有调试符号。
`lib32``——用于在 64 位版本 FreeBSD 上运行 32 位应用程序的兼容库。
警告
安装程序不会检查磁盘空间是否充足。请仅在有足够硬盘空间的情况下选择此选项。FreeBSD Ports 约占用 3 GB 磁盘空间。
src
——FreeBSD 内核和用户空间的完整源代码。虽然大多数应用程序并不需要,但可能需要构建设备驱动程序、内核模块或某些来自 Ports 的应用程序。它也用于开发 FreeBSD 本身。完整的源代码需要 1 GB 磁盘空间,重新编译整个 FreeBSD 系统需要额外的 5 GB 空间。
tests
——FreeBSD 测试套件。
图 9. 网络安装
本节涉及基本的安装故障排除,例如常见问题。
请查看 页面上列出的硬件注意事项,确保硬件受支持。
注意
某些安装问题可以通过更新各种硬件组件的固件来避免或缓解——最明显的是主板。主板固件通常被称为 BIOS。大多数主板和计算机制造商都有一个用于升级和升级信息的网站。
制造商通常建议非必要不升级主板 BIOS,应仅在出现关键更新等情况下才考虑升级。升级过程 可能 出现问题,造成 BIOS 不完整,导致计算机无法正常工作。
如果系统在启动时探测硬件时卡住,或在安装过程中表现异常,ACPI 可能是罪魁祸首。在 i386 和 amd64 平台上,FreeBSD 在引导期间检测到系统 ACPI 服务时,会大量使用它来帮助系统配置。不幸的是,ACPI 驱动程序以及系统主板和 BIOS 固件中仍然存在一些错误。可通过在第三阶段引导加载程序中设置 hint hint.acpi.0.disabled
来禁用 ACPI:
每次系统启动时,这个设置都会被重置,因此需要将 hint.acpi.0.disabled="1"
添加到文件 /boot/loader.conf
。有关引导加载程序的更多信息,请参见 。
接下来的菜单用于确定磁盘空间的分配方法。
图 10. 分区选择
bsdinstall 提供了四种磁盘空间分配方法:
Auto (ZFS)
分区可创建一个基于 ZFS 的根文件系统,并可选支持 引导环境 的 GELI 加密。
Auto (UFS)
分区可自动设置使用 UFS
文件系统的磁盘分区。
Manual
分区能让高级用户从菜单选项中创建自定义分区。
本节说明了在布置磁盘分区时需要考虑的事项。然后演示了如何使用不同的分区方法。
默认的文件系统分区布局有一个用于整个系统的文件系统。在使用 UFS
时,如果有足够的磁盘空间或多块磁盘,规划使用多个文件系统是值得的。在布局文件系统时,请记住,硬盘从外圈到内圈的数据传输速度更快。因此,较小且访问频繁的文件系统应靠近硬盘外侧,而较大的分区(如 /usr
)应放置在磁盘的内侧。创建分区的顺序建议类似于:/
、交换分区、/var
和 /usr
。
/var
分区的大小反映了预期机器的使用情况。此分区用于存放邮箱、日志文件和打印缓存。邮箱和日志文件的大小可能会因用户数量和日志文件保留时间的不同而意外增长。通常情况下,大多数用户的 /var
,无需超过约 1 GB 的空闲磁盘空间。
注意
有时,
/var/tmp
需要大量磁盘空间。当安装新软件时,打包工具会在/var/tmp
下解压缩软件包的临时副本。如果/var/tmp
下没有足够的磁盘空间,在安装大型软件包(如 Firefox/LibreOffice)时可能会很棘手。
/usr
分区存放了许多支持系统的文件,包括 FreeBSD Ports 和系统源代码。建议为此分区分配至少 2 GB 的空间。另外,用户的主目录默认放在 /usr/home
,但可以放在其他分区。在默认情况下,/home
是指向 /usr/home
的符号链接。
在选择分区大小时,请考虑空间需求。当一个分区中空间用尽,而另一个几乎未使用时可能会很麻烦。
作为经验法则,交换分区的大小应约为物理内存(RAM)大小的两倍。内存较少的系统(交换分区在较大内存配置下可更小)可能在配置更大交换分区时表现更好。配置过小的交换分区可能会导致虚拟内存页面扫描代码效率低下,并在增加更多内存时可能出现问题。
在配备多块 SCSI 磁盘或多个在不同控制器上运行的 IDE 磁盘的大型机上,建议为每个驱动器都配置交换分区,最多可达四个驱动器。交换分区的大小应大致相同。内核可以处理任意大小,但内部数据结构的规模为最大交换分区的 4 倍。保持交换分区大小相近将使内核能够在磁盘之间最优地划分交换空间。较大的交换空间可能会引发内核关于总配置交换的警告信息。如警告信息所示,通过增加用于跟踪交换分区分配的内存量,可以提高此限制。在强制重启之前,可能更容易从失控程序中恢复。
通过正确分区,较小的写入密集型分区引入的碎片将不会扩散到主要用于读取的分区。将写入负载较重的分区靠近磁盘边缘将提高这些分区的 I/O 性能。虽然较大分区中的 I/O 性能可能是必要的,但将它们更多地移向磁盘边缘不会比将 /var
移向边缘带来显著的性能提升。
选择此方法后,将显示可用磁盘的菜单。如果连接了多块磁盘,请选择要安装 FreeBSD 的磁盘。
图 11. 从多块磁盘中选择
选择磁盘后,下一菜单提示要么安装到整块磁盘,要么使用空闲空间创建分区。若选择 Entire Disk,则会自动创建填充整块磁盘的一般分区布局。选择 Partition 则会从磁盘上的未使用空间创建分区布局。
图 12. 选择整块磁盘/分区
选择 Entire Disk 选项后,bsdinstall 会显示一个对话框,指示磁盘将被擦除。
图 13. 确认
图 14. 选择分区方案
在创建分区布局后,请检查以确保满足安装需求。选择 Revert 将重置分区为其原始值。按 Auto 将重新创建自动 FreeBSD 分区。分区也可以手动创建、修改或删除。当分区正确时,选择 Finish 继续安装。
图 15. 审阅已创建的分区
磁盘配置完成后,下一菜单提供最后一次机会在格式化选定驱动器之前进行更改。如果需要更改,请选择 Back 返回到主分区菜单。选择 Revert & Exit 将在不对驱动器进行任何更改的情况下退出安装程序。选择 Commit 可开始安装过程。
图 16. 最终确认
选择此方法将打开分区编辑器:
图 17. 手动创建分区
高亮显示安装驱动器(在此示例中为 ada0
),然后选择 Create 可显示可用分区方案的菜单:
图 18. 手动创建分区
GPT 通常是 amd64 计算机最合适的选择。不兼容 GPT 的较旧计算机应使用 MBR。其他分区方案通常用于不常见或较旧的计算机。
表 1. 分区方案
选择并创建分区方案后,再次选择 Create 可创建分区。使用 Tab 可以将焦点移到字段(在循环浏览 、 和 后)。
图 19. 手动创建分区
标准 FreeBSD GPT 安装至少使用三个分区,包括 UFS 或 ZFS:
freebsd-boot
/efi
——存放 FreeBSD 启动代码。
freebsd-ufs
——FreeBSD UFS 文件系统。
freebsd-swap
——FreeBSD 交换空间。
可以创建多个文件系统分区。有些人喜欢传统布局,为 /
、/var
、/tmp
和 /usr
分配单独的分区。
技巧
Size
可以用常用缩写输入:K 代表千字节,M 代表兆字节,G 代表吉字节。
技巧
正确的扇区对齐可以提供最佳性能,且将分区大小设为 4K 字节的偶数倍有助于确保在 512 字节/4K 字节扇区的驱动器上保持对齐。一般来说,使用 1M/1G 的偶数倍分区大小是确保每个分区从 4K 的偶数倍开始的最简单方法。有个例外:由于当前引导代码的限制,freebsd-boot 分区的大小不得超过 512K。
如果分区将包含文件系统,则需要一个 Mountpoint
。如果只创建单个 UFS 分区,挂载点应为 /
。
Label
是分区的名称。驱动器名称或编号在驱动器连接到不同控制器/端口时可能会变化,但分区标签不会变化。在像 /etc/fstab
这样的文件中使用标签而不是驱动器名称和分区编号,使系统对硬件变化更具兼容性。GPT 标签在连接磁盘时出现在 /dev/gpt/
中。其他分区方案具有不同的标签功能,其标签出现在 /dev/
中的不同目录。
技巧
在每个分区上使用唯一标签以避免相同标签的冲突。可以在标签中添加计算机名称、用途或位置的一些字母。例如,可以将 UFS 根分区的标签设置为
labroot
或rootfslab
,前提是计算机命名为lab
。
示例 1. 创建传统拆分文件系统分区
对于传统的分区布局,其中
/
、/var
、/tmp
和/usr
目录在各自的分区上是单独的文件系统,创建一个 GPT 分区方案,然后按如下所示创建分区。所示的分区大小适用于 20G 的目标磁盘。如果目标磁盘上有更多空间,较大的交换分区或/var
分区可能会很有用。这里显示的标签以ex
开头表示“示例”,但读者应使用上述说明的其他唯一标签值。在默认情况下,FreeBSD 的
gptboot
期望第一个 UFS 分区为/
分区。
此分区模式仅适用于整块磁盘,将清除整块磁盘的内容。主要的 ZFS 配置菜单提供多个选项以控制池的创建。
图 20. ZFS 分区菜单
以下是此菜单中选项的概述:
Install
——使用选定的选项继续安装。
Rescan Devices
——重新填充可用磁盘的列表。
Disk Info
——此菜单可用于检查每块磁盘,包括其分区表以及设备型号和序列号等其他信息(如可用)。
Pool Name
——确定池的名称。默认名称为 zroot。
Force 4K Sectors?
——强制使用 4K 扇区。默认情况下,安装程序将自动创建与 4K 边界对齐的分区,并强制 ZFS 使用 4K 扇区。这在 512 字节扇区的磁盘上是安全的,并且可以确保在 512 字节磁盘上创建的池将来可以添加 4K 扇区的磁盘,无论是作为额外的存储空间还是替换故障磁盘。按 回车键 选择是否激活此选项。
Partition Scheme
——选择分区方案。大多数情况下推荐使用 GPT。按 回车键 在不同选项之间进行选择。
Swap Size
——确定交换空间的大小。
Mirror Swap?
——是否在磁盘之间镜像交换。请注意,启用镜像交换将破坏崩溃转储。按 回车键 激活或不激活此选项。
选择 T 可配置 Pool Type
和将构成池的磁盘。
图 21. ZFS 池类型
以下是此菜单中可以选择的 Pool Type
的摘要:
stripe
——条带化提供所有连接设备的最大存储,但没有冗余。如果仅有一块磁盘故障,池中的数据将永久丢失。
mirror
——镜像在每块磁盘上存储所有数据的完整副本。镜像提供良好的读取性能,因为数据是从所有磁盘并行读取的。写入性能较慢,因为数据必须写入池中的所有磁盘。允许除了一块磁盘外的所有磁盘故障。此选项至少需要两块磁盘。
raid10
——条带镜像。提供最佳性能,但存储容量最少。此选项需要偶数块磁盘,至少四块磁盘。
raidz1
——单重冗余 RAID。允许一块磁盘同时故障。此选项至少需要三块磁盘。
raidz2
——双重冗余 RAID。允许两块磁盘同时故障。此选项至少需要四块磁盘。
raidz3
——三重冗余 RAID。允许三块磁盘同时故障。此选项至少需要五块磁盘。
选择了 Pool Type
后,将显示可用磁盘的列表,系统会提示用户选择一块或多块磁盘以构成池。然后将验证配置,以确保选择了足够的磁盘。如果验证失败,请选择 返回磁盘列表,或选择 更改 Pool Type
。
图 22. 磁盘选择
图 23. 无效选择
如果列表中缺少一块或多块磁盘,或在启动安装程序后新加了磁盘,请选择 - Rescan Devices 可刷新可用磁盘的列表。
图 24. 重新扫描设备
为了避免意外擦除错误的磁盘,可以使用菜单 - Disk Info 检查每块磁盘,包括其分区表以及设备型号和序列号等其他信息(如果可用)。
图 25. 分析磁盘
选择 N 可配置 Pool Name
。输入所需的名称,然后选择 确定名称,或选择 返回主菜单来采用默认名称。
图 26. 池名称
选择 S 设置交换空间的大小。输入所需的交换分区大小,然后选择 确定,或选择 返回主菜单并使用默认值。
图 27. 交换大小
若所有选项设置为所需值,选择菜单顶部的选项 >>> Install。安装程序将提供最后一次取消的机会,确认所选驱动器的内容将被销毁以创建 ZFS 池。
图 28. 最后机会
如果启用了 GELI 磁盘加密,安装程序将两次提示输入用于加密磁盘的密码短语。然后将开始初始化加密。
图 29. 磁盘加密密码
图 30. 初始化加密
在进行高级安装时,bsdinstall 的分区菜单可能无法提供所需的灵活性。高级用户可以从分区菜单中选择 Shell 选项,以手动对驱动器进行分区,创建文件系统,填写 /tmp/bsdinstall_etc/fstab
,并在 /mnt
下挂载文件系统。在完成后,输入 exit
可返回 bsdinstall 继续安装。
root
密码首先,必须设置 root
密码。在输入密码时,屏幕上不会回显正在输入的字符。为防止输入错误,密码需要输入两次。
图 34. 设置 root
密码
接下来,将显示计算机上找到的网络接口列表。选择要配置的接口。
图 35. 选择网络接口
图 36. 扫描无线接入点
无线网络通过服务集标识 (SSID) 进行识别;每个网络都有个简短、独特的名称。在扫描过程中会列出找到的 SSID,然后提供该网络的可用加密类型的概述。如果所需 SSID 未出现在列表中,可选择 Rescan 进行重新扫描。若所需网络仍未出现,请检查天线连接是否存在问题,或尝试将计算机移近接入点。每次更改后都应重新扫描。
图 37. 选择无线网络
接下来,输入连接到选定无线网络的加密信息。强烈建议使用 WPA2 加密,而不是提供较少安全性的旧加密类型,如 WEP。若网络使用 WPA2,请输入密码,也称为预共享密钥 (PSK)。出于安全原因,输入框中输入的字符将以星号显示。
图 38. WPA2 设置
接下来,选择是否在以太网或无线接口上配置 IPv4 地址:
图 39. 选择 IPv4 网络
有两种方法可配置 IPv4。DHCP 会自动正确配置网络接口,如果网络提供了 DHCP 服务器,则应使用。若没有 DHCP 服务器,则需要手动输入地址信息,采用静态配置。
注意
如果可用 DHCP 服务器,请在下一个菜单中选择 Yes 以自动配置网络接口。安装程序会暂停约一分钟,用于查找 DHCP 服务器,获取系统的地址信息。
图 40. 选择 IPv4 DHCP 配置
如果没有 DHCP 服务器,请选择 No 并在此菜单中输入以下地址信息:
图 41.静态 IPv4 配置
IP Address
——分配给这台计算机的 IPv4 地址。该地址必须是唯一的,不能被局域网上的其他设备使用。
Subnet Mask
——网络的子网掩码。
Default Router
——网络默认网关的 IP 地址。
接下来的界面将询问是否应为接口配置 IPv6。如果 IPv6 可用且需要,请选择 Yes 进行选择。
图 42. 选择 IPv6 网络
若 IPv6 路由器可用,请在下个界面中选择 Yes 自动配置网络接口。安装程序会暂停约一分钟,用于查找路由器并获取系统的地址信息。
图 43. 选择 IPv6 SLAAC 配置
如果没有 IPv6 路由器,请选择 No 并在此菜单中输入以下地址信息:
图 44.静态 IPv6 配置
IPv6 Address
——分配给这台计算机的 IPv6 地址。该地址必须是唯一的,不能被局域网上的其他设备使用。
Default Router
——网络默认网关的 IPv6 地址。
最后一个网络配置菜单用于配置域名系统 (DNS) 解析器,它将主机名转换为网络地址和反向转换。如果使用 DHCP/SLAAC 自动配置了网络接口,Resolver Configuration
值可能已经填写。否则,在 Search
字段中输入本地网络的域名。DNS #1
和 DNS #2
是 DNS 服务器的 IPv4/IPv6 地址。至少需要一个 DNS 服务器。
图 45. DNS 配置
在接口配置完成后,选择一个位于与 FreeBSD 正在安装的计算机相同区域的镜像站点。当镜像站靠近目标计算机时,可以更快地下载文件,从而减少安装时间。
技巧
选择
ftp://download.freebsd.org (Main Site)
将自动路由到最近的镜像。
图 46. 选择镜像
接下来的菜单用于通过选择地理区域、国家/区域和时区来确定正确的本地时间。设置时区可以让系统自动纠正区域时间变化,例如夏令时,并正确执行其他与时区相关的功能。
下面的示例适用于位于西班牙欧洲大陆时区的机器。选择会根据地理位置而有所不同。
图 47. 选择区域
使用方向键选择适当的区域,然后按 回车键。
图 48. 选择国家/区域
使用方向键选择适当的国家/区域并按 回车键。
图 49. 选择时区
使用方向键选择适当的时区并按 回车键。
图 50. 确认时区
确认时区的缩写是否正确。
图 51. 选择日期
使用方向键选择适当的日期,然后按 Set Date。还可以通过按 Skip 来跳过日期选择。
图 52. 选择时间
使用方向键选择适当的时间,然后按 Set Time。还可以通过按 Skip 来跳过时间选择。
下个界面用于配置系统启动时将启动哪些系统服务。所有这些服务都是可选的。只启动系统功能所需的服务。
图 53. 选择要启用的附加服务
以下是可以在此菜单中启用的服务摘要:
sshd
——安全外壳(SSH)守护进程用于通过加密连接远程访问系统。应仅在允许系统远程登录时才启用此服务。
moused
——如果要在命令行系统控制台使用鼠标,请启用此服务。
ntpd
——网络时间协议(NTP)守护进程,用于自动时钟同步。如果希望将系统时钟与远程时间服务器或池同步,请启用此服务。
powerd
——系统电源控制实用程序,用于电源控制和节能。
dumpdev
——崩溃转储在调试系统问题时非常有用,因此建议用户启用它们。
下个菜单用于配置要启用的安全选项。所有这些选项都是可选的,但建议使用。
图 54. 选择安全加固选项
以下是可以在此菜单中启用的选项摘要:
hide_uids
——隐藏以其他用户(UID)身份运行的进程。防止无权限用户查看其他用户正在运行的进程。
hide_gids
——隐藏以其他组(GID)身份运行的进程。防止无权限用户查看其他组正在运行的进程。
hide_jail
——隐藏在 jail 中运行的进程。防止无权限用户查看在 jail 内部运行的进程。
random_pid
——随机化进程的 PID。
clear_tmp
——在系统启动时清理 /tmp
目录。
disable_sendmail
——禁用 sendmail 邮件传输代理。
secure_console
——使命令提示符在进入单用户模式时请求 root
密码。
下个界面提示,要创建至少一个用户账户。建议使用用户账户而不要以 root
身份登录系统。在以 root
身份登录时,几乎没有限制和保护措施。以普通用户身份登录更安全。
选择 Yes 来添加新用户。
图 55. 添加用户账户
图 56. 输入用户信息
以下是要输入的信息摘要:
Username
——用户登录时输入的名称。常见的约定是使用名字的首字母与姓氏组合,只要每个用户名在系统中是唯一的。用户名区分大小写,不应包含空格。
Full name
——用户的全名。可以包含空格,并作为用户账户的概述。
Uid
——用户 ID。通常留空,以便系统自动分配一个值。
Login group
——用户的组。通常留空以选用默认值。
Invite user into other groups?
——用户将作为成员加入的附加组。如果用户需要管理权限,请在此处输入 wheel
。
Login class
——通常留空以选择默认值。
Home directory
——用户的主目录。默认值通常是正确的。
Home directory permissions
——用户主目录的权限。默认值通常是正确的。
Use password-based authentication?
——通常选择 yes
,以便在登录时提示用户输入密码。
Use an empty password?
——通常选择 no
,因为空/空白密码不安全。
Use a random password?
——通常选择 no
,以便用户在下一个提示中可以设置自己的密码。
Enter password
——此用户的密码。输入的字符不会在界面上显示。
Enter password again
——必须再次输入密码以进行验证。
Lock out the account after creation?
——通常选择 no
,以便用户可以登录。
输入所有详细信息后,将显示摘要以供检查。如果发现错误,输入 no
以进行更正。一切正确后,输入 yes
创建新用户。
图 57. 退出用户和组管理
如果还有更多用户要添加,回答 Add another user?
的问题为 yes
。输入 no
可结束添加用户并继续安装。
在所有内容安装和配置完成后,将提供最后一次修改设置的机会。
图 58. 最终配置
使用此菜单进行任何更改或进行额外配置,然后完成安装。
Handbook
——下载、安装 FreeBSD 手册。
配置完成后,选择 Exit。
图 59. 手动配置
bsdinstall 会提示需要在重启新系统之前进行的任何额外配置。选择 Yes 以退出到新系统中的 shell,或选择 No 以继续安装的最后一步。
图 60. 完成安装
如果需要进一步的配置或特殊设置,选择 Live CD 以将安装媒体启动为 Live CD 模式。
如果安装完成,选择 Reboot 以重启计算机,启动新的 FreeBSD 系统。不要忘记移除 FreeBSD 安装媒体,否则计算机可能会再次从中启动。
在启动过程中出现的信息可以通过按 Scroll-Lock 来打开回滚缓冲区进行查看。可以使用 PgUp、PgDn 和方向键向上滚动查看信息。完成后,再次按 Scroll-Lock 解锁显示并返回控制台。要在系统运行一段时间后查看这些信息,可以从命令提示符下输入 less /var/run/dmesg.boot
。查看后按 q 返回命令行。
正确关闭 FreeBSD 计算机有助于保护数据和硬件免受损坏。在系统没有正确关闭之前,请勿关闭电源! 如果用户是 wheel
组的成员,可以在命令行输入 su
,再输入 root
密码以成为超级用户。然后,输入 shutdown -p now
,系统可安全关闭,在硬件支持的情况下回自动关机。
Boot Single User
:此模式可用于修复现有的 FreeBSD 安装,详见。按 2 或大写/小写的 S 可进入此模式。
Escape to loader prompt
:将系统引导到修复提示符,其包含少量的底层命令。此提示在中进行了说明。按 3 或 Esc 可进入此提示。
Boot Options
:打开在 中显示和说明的菜单。
Single User
:将此选项切换为 On
可修复现有的 FreeBSD 安装,详见。解决问题后,情切换回 Off
。
在做出必要的选择后,按 1 或 退格键 返回主引导菜单,然后按 回车键 继续引导 FreeBSD。随着 FreeBSD 进行硬件设备探测、加载安装程序,会出现一系列引导信息。引导完成后,将显示。
按 回车键 可选择默认的 Install 进入安装程序。本章的其余部分解释了如何使用此安装程序。还可以使用左右箭头/彩色字母选择所需的菜单项。Shell 可以用于使用 FreeBSD shell,能在安装之前使用命令行工具准备磁盘。选项 Live CD 可用于在安装之前试用 FreeBSD。Live 版本在 中进行了介绍。
可以在 上获取 FreeBSD 安装文件。每个安装文件的名称包括 FreeBSD 的发布版本、架构和文件类型。
安装文件以多种格式提供,可以使用 压缩/未压缩。格式因计算机架构和介质类型而异。
-memstick.img
:该文件包含安装 FreeBSD 所需的所有文件、源代码和 Ports。将此文件写入 USB 闪存驱动器,如所示。
-mini-memstick.img
:与 -bootonly.iso
类似,不包含安装文件,而是根据需要下载。安装过程中需要一个有效的互联网连接。应将其写入 USB 闪存驱动器,如所示。
下载其中一个文件(或两个文件)后,计算镜像文件的校验和并与 checksum 文件中显示的进行比较。请注意,你需要将计算出的校验和与正确的文件进行比较,因为它们对应于两种不同的算法:SHA256 和 SHA512。FreeBSD 提供了 、 用于计算 checksum。其他操作系统也有类似的程序。
某些操作系统可能要求使用 运行此命令。 的语法在不同平台之间略有不同;例如,Mac OS® 需要小写的 bs=1m
。像 Linux® 这样的系统可能会缓冲写入。要强制所有写入完成,请使用 。
Windows® 镜像写入工具是一款免费应用程序,可以正确地将镜像文件写入 USB 闪存驱动器。请从 下载,然后将其解压到一个文件夹中。
在加载键盘布局后,bsdinstall 将显示。使用上下箭头选择与系统接入的键盘最相符的键盘布局。按 回车键 保存选择。
此外,在选择不同的键盘布局时,用户可测试该布局,确保正确,然后再继续,如中所示。
`ports``——FreeBSD Ports 是一个文件集,可自动下载、编译和安装第三方软件包。有关如何使用 Ports 的信息,请参见。
在中显示的菜单仅在安装 -bootonly.iso
/-mini-memstick.img
时出现,因为这些安装介质未包含安装文件的副本。由于必须通过网络连接下载安装文件,因此该菜单要求必须先配置网络接口。如果在安装过程中显示此菜单,请记得遵循中的说明。
Shell
将打开命令行提示符,高级用户可使用命令行工具(如 、 和 )创建自定义分区。
下一个菜单显示可用分区方案类型的列表。对于 amd64 计算机,GPT 通常是最合适的选择。对于不兼容 GPT 的旧计算机,应使用 MBR。其他分区方案通常用于不常见或旧计算机。更多信息请参见 。
要继续安装过程,请转到 。
缩写 | 说明 |
---|
freebsd-zfs
——FreeBSD ZFS 文件系统。更多有关 ZFS 的信息,请参见 。
有关可用 GPT 分区类型的说明,请参见 。
注意,/tmp
可以稍后作为基于内存的文件系统()添加,前提是系统内存足够。
有关示例,请参见。
分区类型 | 大小 | 挂载点 | 标签 |
---|
创建自定义分区后,选择 Finish 可继续安装,并转到 。
Pool Type/Disks
——配置 Pool Type
和将构成池的磁盘。自动 ZFS 安装程序目前仅支持创建一个顶级 vdev,除非在条带模式下。要创建更复杂的池,请参阅 中的说明。
Encrypt Disks?
——加密磁盘允许用户使用 GELI 对磁盘进行加密。有关磁盘加密的更多信息,请参见 。按 回车键 选择是否激活此选项。
Encrypt Swap?
——是否加密交换。每次系统启动时将使用临时密钥加密交换,并在重启时丢弃。按 回车键 选择是否激活此选项。有关交换加密的更多信息,请参见 。
安装过程将正常进行。要继续安装,请访问。
如果选择以太网接口,安装程序将跳转到菜单。如果选择无线网络接口,系统将扫描无线接入点:
请不要乱输网络信息,因为这没用。若没有 DHCP 服务器,请从网络管理员或互联网服务提供商处获取中列出的信息。
也有两种方法可配置 IPv6。无状态地址自动配置 (SLAAC) 将自动从本地路由器请求正确的配置信息。更多有关信息,请参阅 。静态配置需要手动输入网络信息。
local_unbound
——启用本机 DNS unbound。请记住,这只是用于本机缓存转发解析器的配置。如果目标是为整个网络设置解析器,请安装 。
ntpdate
——启用启动时的自动时钟同步。请注意,该程序的功能现在已在 守护进程中提供,且 工具将很快被弃用。
read_msgbuf
——禁止无权限用户读取内核信息缓冲区。防止无权限用户使用 查看内核日志缓冲区中的信息。
proc_debug
——禁止无权限用户使用进程调试功能。禁用各种无权限的进程间调试服务,包括某些 procfs 功能、ptrace()
和 ktrace()
。请注意,这也会阻止使用诸如 、 和 的调试工具,以及某些脚本语言(如 PHP)中的一些内置调试功能。
disable_syslogd
——禁用打开 syslogd 网络套接字。在默认情况下,FreeBSD 以安全的方式运行 syslogd——使用 -s
。这防止守护进程监听端口 514 上的传入 UDP 请求。启用此选项后,syslogd 将以 -ss
运行,从而阻止 syslogd 打开任何端口。有关更多信息,请参见 。
disable_ddtrace
——DTrace 可以以影响运行内核的模式运行。除非明确启用,否则不允许使用破坏性操作。在使用 DTrace 时,请使用 -w
来启用此选项。有关更多信息,请参见 。
enable_aslr
——启用地址布局随机化。有关地址布局随机化的更多信息,请参阅。
按照提示输入用户账户的所需信息。示例中所示创建 asample
用户账户。
Shell
——输入所列值之一以设置用户的交互式 shell。有关 shell 的更多信息,请参见 。
有关添加用户和用户管理的更多信息,请参见。
Add User
—— 中概述。
Root Password
——在中概述。
Hostname
——在中概述。
Network
——在中概述。
Services
——在中概述。
System Hardening
——在中概述。
Time Zone
——在中概述。
当 FreeBSD 启动时,会显示信息信息。系统启动完成后,将显示登录提示。在 login:
提示符下,输入安装过程中添加的用户名。避免以 root
身份登录。有关如何在需要管理访问时成为超级用户的说明,请参见。
如果在中启用了 sshd,则第一次启动可能会稍慢,因为系统正在生成 SSH 主机密钥。后续启动会更快。然后将显示密钥的指纹,如以下示例所示:
有关指纹和 SSH 的更多信息,请参见 。
FreeBSD 默认不安装图形环境。有关安装和配置图形窗口管理器的更多信息,请参见 。
FreeBSD 手册
FreeBSD Port 开发者手册
FreeBSD 官方文章
《FreeBSD 项目模型》、《FreeBSD 常见问题解答》、《4.4BSD 操作系统设计与实现》
FreeBSD 架构手册
FreeBSD 开发者手册
FreeBSD 发行说明
FreeBSD 状态报告
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 使用默认值(剩余磁盘空间) |
|
|
本章介绍了 FreeBSD 操作系统的基本命令和功能。这些章节中的大部分内容对于任何类 UNIX® 操作系统都是适用的。建议 FreeBSD 新用户仔细阅读本章。
阅读本章后,你将会了解:
如何使用和配置虚拟控制台。
如何在 FreeBSD 上创建和管理用户和组。
UNIX® 文件权限和 FreeBSD 文件标志的工作原理。
默认的 FreeBSD 文件系统布局。
FreeBSD 磁盘结构。
如何挂载文件系统和卸载文件系统。
进程、守护程序和信号是什么。
Shell 是什么,如何修改默认登录环境。
如何使用基本文本编辑器。
什么是设备和设备节点。
如何阅读手册页面以获取更多信息。
FreeBSD 是一种多任务操作系统。在任何时候运行的每个程序都被称为一个进程。每个运行的命令都会启动至少一个新进程,有许多由 FreeBSD 运行的系统进程。
每个进程由一个称为进程 ID(PID)的数字唯一标识。与文件类似,每个进程都有一个所有者和组,并且所有者和组权限用于确定进程可以打开哪些文件和设备。大多数进程也有一个启动它们的父进程。例如,shell 是一个进程,shell 中启动的任何命令都是具有 shell 作为父进程的进程。例外是一个名为 init(8)的特殊进程,它总是在启动时首先启动的进程,其 PID 始终为 1。
有些程序没有被设计为接受连续的用户输入,并在第一次机会时与终端断开连接。例如,Web 服务器响应 Web 请求,而非用户输入。邮件服务器是这种类型应用程序的另一个示例。这些类型的程序被称为守护进程。守护进程一词来自希腊神话,代表一个非善非恶,并在后台中执行有用任务的存在。这就是为什么 BSD 吉祥物是一个看起来开心的守护进程,并穿着球鞋拿着草叉。
通常有一个惯例,即通常作为守护进程运行的程序的名称以字母"d"结尾。例如,BIND 是伯克利互联网名称域,但实际执行的程序是 named。Apache Web 服务器程序是 httpd,而行打印机排队守护进程是 lpd。这只是一种命名约定。例如,Sendmail 应用程序的主邮件守护进程是 sendmail,而不是 maild。
要查看系统上运行的进程,请使用 ps(1)或 top(1)。要显示当前正在运行的进程的静态列表,它们的 PID,它们正在使用的内存量以及它们启动的命令,请使用 ps(1)。要显示所有运行的进程并每隔几秒更新显示,以便交互式地查看计算机正在做什么,请使用 top(1)。
默认情况下,ps(1)只显示正在运行并由用户拥有的命令。例如:
输出应类似于以下内容:
来自 ps(1)的输出被组织成多个列。PID 列显示进程 ID。PID 从 1 开始分配,一直到 99999,然后重新开始。但是,如果 PID 已在使用中,则不会重新分配。TT 列显示程序正在运行的 tty,STAT 显示程序的状态。TIME 是程序在 CPU 上运行的时间。这通常不是程序启动后经过的时间,因为大多数程序在需要在 CPU 上花费时间之前会花费大量时间等待事情发生。最后,COMMAND 是用于启动程序的命令。
有许多不同的选项可用于更改显示的信息。其中最有用的之一是 auxww,其中 a 显示所有用户的运行进程信息,u 显示进程所有者的用户名和内存使用情况,x 显示关于守护进程的信息,ww 会导致 ps(1)显示每个进程的完整命令行,而不是在屏幕上显示过长时截断。
来自 top(1)的输出类似:
输出应该类似于以下内容:
输出分为两个部分。标题(前五或六行)显示最后运行进程的 PID、系统负载平均值(衡量系统忙碌程度的指标)、系统正常运行时间(自上次重启以来的时间)和当前时间。标题中的其他数字涉及正在运行的进程数、已使用的内存和交换空间量,以及系统在不同 CPU 状态下花费的时间。如果加载了 ZFS 文件系统模块,则会显示一行指示有多少数据是从内存缓存而不是从磁盘读取的。
在标题下是一系列列,包含与 ps(1)的输出类似的信息,如 PID、用户名、CPU 时间量和启动进程的命令。默认情况下,top(1)还显示进程占用的内存空间量。这分为两列:总大小和常驻大小。总大小是应用程序所需的内存量,常驻大小是实际正在使用的内存量。
top(1)会自动每两秒更新显示。可以使用不同的间隔进行指定。
与任何正在运行的进程或守护程序通信的一种方法是使用 kill(1)发送信号。有许多不同的信号;一些信号具有特定含义,而另一些信号在应用程序文档中有说明。用户只能向自己拥有的进程发送信号,向他人进程发送信号将导致权限被拒绝的错误。例外的是 root 用户,可以向任何进程发送信号。
操作系统也可以向进程发送信号。如果一个应用程序编写不当,并尝试访问不应该访问的内存,FreeBSD 将向进程发送"分段错误"信号( SIGSEGV )。如果一个应用程序已编写使用 alarm(3)系统调用在经过一段时间后警报的,它将被发送"闹钟"信号( SIGALRM )。
两个信号可用于停止一个进程: SIGTERM 和 SIGKILL。SIGTERM 是终止一个进程的礼貌方式,因为该进程可以读取该信号,关闭可能打开的任何日志文件,并尝试完成正在做的事情后再关闭。在某些情况下,进程可能会忽略 SIGTERM,如果它正在执行一些无法中断的任务。
无法被进程忽略 SIGKILL。向一个进程发送 SIGKILL 通常会立即停止该进程。
其他常用信号是 SIGHUP,SIGUSR1 和 SIGUSR2。由于这些是通用信号,不同的应用程序会有不同的响应。
例如,更改 Web 服务器的配置文件后,需要告知 Web 服务器重新读取其配置。重启 httpd 将导致 Web 服务器出现短暂的停机时间。相反,向守护程序发送 SIGHUP 信号。请注意,不同的守护程序会有不同的行为,因此请参考守护程序的文档,以确定是否 SIGHUP 可以实现期望的结果。
最好把文件系统视为一棵树,在 / 的根节点上,/dev,/usr 等根目录中的其他目录是分支,它们可能有自己的分支,如 /usr/local 等等。
将其中一些目录放在不同文件系统上有各种原因。/var 包含目录 log/,spool/ 和各种类型的临时文件,因此可能会被填满。塞满根文件系统不是一个好主意,因此通常更倾向于将 /var 与 / 分开。
将某些目录树放在其他文件系统上的另一个常见原因是,如果它们要存放在不同的物理磁盘上,或者是单独的虚拟磁盘,比如在“网络文件系统(NFS)”中说明的网络文件系统挂载,或者是 CDROM 驱动器。
在引导过程中 (FreeBSD 引导过程),将自动挂载 /etc/fstab 中列出的文件系统(除了包含 noauto 的条目)。该文件以以下格式包含条目:
device 如磁盘设备名称中所述的现有设备名称。
mount-point 用于挂载文件系统的现有目录。
fstype 传递给 mount(8) 的文件系统类型。FreeBSD 默认的文件系统为 ufs。
options 要么是 rw 用于读写文件系统,要么是 ro 用于只读文件系统,然后是可能需要的其他选项。一个常见参数是 noauto,用于通常不在在引导序列期间挂载的文件系统。其他参数列在 mount(8) 中。
dumpfreq 由 dump(8) 使用,以确定哪些文件系统需要转储。如果字段丢失,则默认为 0。
passno 决定了在重启后由 fsck(8) 检查 UFS 文件系统的顺序。要跳过的文件系统应将其 passno 设置为零。根文件系统需要在所有其他文件系统之前检查,其 passno 应设置为 1。其他文件系统应设置为大于 1 的值。如果多个文件系统具有相同的 passno,fsck(8) 将尝试在可能的情况下对文件系统并行检查。
有关 /etc/fstab 格式及其选项的更多信息,请参阅 fstab(5)。
使用 mount(8) 挂载文件系统。最基本的语法如下:
也可以通过提供挂载点挂载列在 /etc/fstab 中的文件系统。
该命令提供了许多选项,在 mount(8)中有说明。常用的选项包括:
挂载选项
-a 挂载列表中所有文件系统,除了那些标记为“noauto”、被排除的 -t 标志排除的文件系统,或者那些已经挂载的文件系统。
-d 做除实际挂载系统调用之外的所有事情。此选项与 -v 标志一起使用,以确定挂载(8)实际尝试执行的操作。
-f 强制挂载一个不干净的文件系统(危险),或在将文件系统的挂载状态从读写改为只读时撤销写访问权限。
-r 将文件系统挂载为只读。这与使用 -o ro 是相同的。
-t fstype 挂载指定的文件系统类型或仅挂载给定类型的文件系统,如果包括 -a。"ufs" 是默认的文件系统类型。
-u 更新文件系统的挂载选项。
-v 详细。
-w 以读写方式挂载文件系统。
可以作为逗号分隔列表传递给 -o 的选项如下:
nosuid 在文件系统上不解释 setuid 或 setgid 标志。这也是一个有用的安全选项。
使用 umount(8) 来卸载文件系统。这个命令接受一个参数,可以是挂载点,设备名称,-a 或 -A。
所有的操作都带有 -f 用于强制卸载,和 -v 用于显示详细信息。请注意,-f 通常不是一个好主意,因为它可能会导致计算机崩溃或损坏文件系统上的数据。
要卸载所有已挂载的文件系统,或者只是在 -t 后列出的文件系统类型,请使用 -a 或 -A。请注意,-A 不会尝试卸载根文件系统。
除非 FreeBSD 已被配置为在启动时自动启动图形环境,否则系统将启动到命令行登录提示符,如本示例所示:
第一行包含了有关系统的一些信息。amd64 表示 FreeBSD 正在一个 64 位 x86 系统上运行。主机名是 pc3.example.org,而 ttyv0 表示这是“系统控制台”。第二行是登录提示。
由于 FreeBSD 是一个多用户系统,它需要一种方法来区分不同用户。这是通过要求每个用户在访问系统上的程序之前进行系统登录来实现的。每个用户都有一个独特的“用户名”和个人“密码”。
要登录到系统控制台,请输入在系统安装期间配置的用户名(如“添加用户”中所述),然后按回车键。接下来输入与该用户名关联的密码并按回车键。出于安全原因,密码不会回显在屏幕上。
在输入正确的密码后,将显示每日消息(MOTD),然后显示一个命令提示符。根据创建用户时选择的 Shell,此提示符可能是字符 #
、$ 和 %。提示符表示用户现在已登录到 FreeBSD 系统控制台,并准备接受可用的命令。
尽管系统控制台可用于与系统交互,但在 FreeBSD 系统上用键盘工作的用户通常会登录到虚拟控制台。这是因为默认情况下,系统消息被配置显示在系统控制台上。这些消息会出现在用户正在处理的命令或文件上,使人难以集中精力处理手头的工作。
默认情况下,FreeBSD 配置为可提供多个用于输入命令的虚拟控制台。每个虚拟控制台都有自己的登录提示符和 shell,并且可以轻松在虚拟控制台之间切换。基本上提供了等效于在图形环境中同时打开多个窗口的命令行的功能。
FreeBSD 保留了快捷键 Alt+F1 到 Alt+F8,用于在虚拟控制台之间切换。使用 Alt+F1 切换到系统控制台( ttyv0 ),Alt+F2 访问第一个虚拟控制台( ttyv1 ),Alt+F3 访问第二个虚拟控制台( ttyv2 ),以此类推。在使用 Xorg 作为图形控制台时,快捷键变为 Ctrl+Alt+F1 以返回到基于文本的虚拟控制台。
当从一个控制台切换到下一个控制台时,FreeBSD 会管理屏幕输出。结果造成了一种幻觉:即拥有多个虚拟的屏幕和键盘,可以用来输入命令以供 FreeBSD 运行。在某个虚拟控制台启动的程序,在用户切换到另一个虚拟控制台后也不会停止运行。
参考 kdbcontrol(1)、vidcontrol(1)、atkbd(4)、syscons(4)和 vt(4),以获取 FreeBSD 控制台及其键盘驱动程序的更多技术说明。
在 FreeBSD 中,虚拟控制台的可用数量是在此部分进行配置的: /etc/ttys :
要禁用虚拟控制台,请在代表该虚拟控制台的行的开头放置注释符号( #
)。例如,要将可用虚拟控制台的数量从八个减少到四个,请在代表虚拟控制台 ttyv5 到 ttyv8 的最后四行前面放置 #
。不要注释系统控制台的 ttyv0 所在行。请注意,最后一个虚拟控制台( ttyv8 )用于访问图形环境(如果已安装了 Xorg 并按 X Window 系统进行配置)。
对于该文件中每一列的详细说明以及虚拟控制台的可用参数,请参阅 ttys(5)。
FreeBSD 启动菜单提供了一个名为 "启动单用户" 的选项。如果选择了此选项,系统将启动到名为 "单用户模式" 的特殊模式。通常用于修复无法启动的系统或在不知道密码时重置 root 密码。进入单用户模式后,网络和其他虚拟控制台不可用。但是,系统的完整 root 访问权限可用,并且默认情况下无需 root 密码。因此,要启动到此模式,需要有物理键盘访问权限,并且确定谁有物理访问键盘权时需要考虑保护 FreeBSD 系统。
控制单用户模式的设置都可在 /etc/ttys 这个部分中找到:
默认情况下,状态设置为 secure。这意味着谁有物理键盘访问权限要么不重要,要么受物理安全策略控制。如果将该设置更改为 insecure,则假设环境本身是不安全的,因为任何人都可以访问键盘。当此行更改为 insecure 时,FreeBSD 将在用户选择引导到单用户模式时提示输入 root 密码。
FreeBSD 控制台默认分辨率可调整为 1024x768、1280x1024 或显卡和显示器支持的其他尺寸。要使用不同的分辨率,请加载 VESA 模块:
要确定硬件支持哪些分辨率,请使用 vidcontrol(1)。要获取支持的分辨率列表,请执行以下操作:
这个命令的输出列出了硬件支持的分辨率。要选择新的分辨率,请使用 vidcontrol(1)作为 root 用户来指定模式:
如果新的分辨率可使用,可以通过将其添加到 /etc/rc.conf 中,在启动时永久设置它:
FreeBSD 能让多个用户同时使用计算机。虽然一次只能有一个用户坐在屏幕前并使用键盘,但任意数量的用户可以通过网络登录到系统。为了使用系统,每个用户应该有自己的用户账户。
本章说明:
FreeBSD 系统上不同类型的用户账户。
如何增加、删除和修改用户账户。
如何设置限制以控制用户和组被允许访问的资源。
如何创建组并将用户添加为组的成员。
由于所有对 FreeBSD 系统的访问都是通过账户实现的,并且所有进程都是由用户运行的,因此用户和账户管理非常重要。
有三种主要类型的账户:系统账户、用户账户和超级用户账户。
系统账户用于运行诸如 DNS、邮件和 Web 服务器等服务。这样做的原因是安全性;如果所有服务都以超级用户身份运行,它们可以无限制地行动。
系统账户的示例为 daemon,operator,bind,news 和 www。
nobody 是通用的不受特权限制的系统账户。然而,使用 nobody 的服务越多,与该用户关联的文件和进程就会越多,因此该用户的特权也就越大。
用户账户可分配给现实世界的人员,用于登录和使用系统。每个访问系统的人都应该拥有独一无二的用户账户。这使管理员可以查找谁在做什么,并防止用户覆盖其他用户的设置。
每个用户可以通过配置他们的默认 Shell、编辑器、快捷键和语言设置来设置自己的环境,以适应他们对系统的使用。
在 FreeBSD 系统上,每个用户账户都有与之关联的特定信息:
用户名
用户必须在 login: 提示符下输入用户名。每个用户必须拥有一个唯一的用户名。有一些创建有效用户名的规则,这些规则在 passwd(5)中有文档记录。建议使用由八个或更少的小写字符组成的用户名,以保持与应用程序的向后兼容。
密码每个账户都有一个关联的密码。
用户 ID(UID)
用户 ID(UID)是一个数字,用于唯一标识用户对 FreeBSD 系统的身份。允许指定用户名的命令将首先将其转换为 UID。建议使用小于 65535 的 UID,因为较高的值可能会导致与某些软件的兼容问题。
组 ID(GID)
组 ID(GID)是一个数字,用于唯一标识用户所属的主要组。组是一种基于用户 GID 而不是 UID 控制资源访问权限的机制。这可以显著减小某些配置文件的大小,并允许用户成为多个组的成员。建议使用 65535 或更低的 GID,因为较高值的 GID 可能会破坏某些软件。
登录类别
登录类别是对群组机制的扩展,提供了附加的灵活性,可以根据不同用户定制系统。有关登录类别的更多信息,请参阅配置登录类别。
默认情况下,密码永不过期。
但是,可以在每个用户基础上启用密码过期功能,强制特定或所有用户在一定时间后修改他们的密码。
默认情况下,FreeBSD 账户永不过期。
当创建需要有限生命周期的账户,比如学校中的学生账户时,请使用 pw(8)指定账户到期日期。在到期时间过去后,该账户将无法用于登录系统,尽管账户的目录和文件会保留。
用户的全名
用户名称在 FreeBSD 中唯一标识账户,但不一定反映用户的真实姓名。类似于注释,此信息支持空格,大写字符,并且长度可以超过 8 个字符。
主目录
主目录是系统上一个目录的完整路径。这是用户在登录时的起始目录。一个常见的约定是将所有用户主目录放在 /home/username 或 /usr/home/username 下。每个用户在自己的主目录中存储他们的个人文件和子目录。
用户 Shell
Shell 为用户提供与系统交互的默认环境。有许多不同类型的 shell,有经验的用户会有他们自己的偏好,这可以通过他们的账户设置体现出来。
超级用户账户,通常称为 root,用于管理系统,没有任何权限限制。因此,不应将其用于发送和接收邮件,系统的一般研究或编程等日常任务。
与其他用户账户不同,超级用户可以无限制地操作,滥用超级用户账户可能导致灾难性后果。用户账户不会因为错误而销毁操作系统,因此建议用用户账户登录,并仅在命令需要额外特权时才成为超级用户。
作为超级用户,始终要仔细检查所有执行的命令,因为多余的空格或遗漏的字符可能导致不可逆的数据丢失。
获得超级用户特权的方法有几种。虽然可以用 root 登录,但非常不建议这样做。
应该使用 su(1) 成为超级用户。如果在运行此命令时指定了 -,该用户还将继承 root 用户的环境。运行此命令的用户必须属于 wheel 组,否则命令将执行失败。用户还必须知道 root 用户账户的密码。
在此示例中,用户仅成为超级用户以便运行 make install,因为此步骤需要超级用户特权。命令完成后,用户键入了 exit 以退出超级用户账户,并退回到其用户账户的权限。
示例 1。作为超级用户安装程序
内置的 su(1) 框架适用于单个系统或只有一个系统管理员的小型网络。另一种选择是安装软件包或 port security/sudo。该软件提供了活动日志记录,并能让管理员配置,哪些用户可以作为超级用户运行哪些命令。
FreeBSD 提供了各种不同的命令来管理用户账户。最常见的命令在用于管理用户账户的实用工具中进行了总结,然后是一些用法示例。有关每个工具的更多详细信息和用法示例,请参阅手动页。
表 1. 用于管理用户账户的实用工具|命令|总结| | ----------------------------------------------------------------------------------------| ---------| | adduser(8)|增加新用户的推荐命令行应用程序。| | rmuser(8)|删除用户的推荐命令行应用程序。| | chpass(1)|用于修改用户数据库信息的灵活工具。| | passwd(1)|修改用户密码的命令行工具。| | pw(8)|修改用户账户的各个方面的强大而灵活的工具。| | bsdconfig(8)|带有账户管理支持的系统配置实用程序。|
增加新用户的推荐程序是 adduser(8)。当增加新用户时,此程序会自动更新 /etc/passwd 和 /etc/group。它还会为新用户创建一个主目录,从 /usr/share/skel 复制默认配置文件,并可以选择性地向新用户发送欢迎消息。此工具必须以超级用户身份运行。
adduser(8)实用程序是交互式的,逐步引导你创建新用户账户。如在 FreeBSD 中添加用户所示,要么输入所需信息,要么按回车键接受方括号中显示的默认值。在本例中,用户被邀请加入 wheel 组,使其能够使用 su(1)成为超级用户。完成后,实用程序将提示你要么创建另一个用户,要么退出。
FreeBSD 上添加用户的示例 2。
输出应该类似于以下内容:
要完全从系统中删除用户,请作为超级用户运行 rmuser(8)。此命令执行以下步骤:
如果存在,删除用户的 crontab(1) 条目。
删除属于用户的任何 at(1) 作业。
发送 SIGKILL 信号给所有由用户拥有的进程。
从系统的本地密码文件中删除用户。
删除用户的主目录(如果用户拥有它),包括处理实际主目录路径中的符号链接。
从 /var/mail 中删除用户的传入邮件文件。
从 /tmp 、 /var/tmp 和 /var/tmp/vi.recover 中删除用户拥有的所有文件。
从 /etc/group 中删除用户名从属的所有组。(如果一个组变成空的,并且组名与用户名相同,那么将删除该组;这补充了 adduser(8)的每个用户独特组。)
删除用户拥有的所有消息队列、共享内存段和信号量。
rmuser(8) 不能用于删除超级用户账户,因为这几乎总是大规模破坏的表现。
默认情况下,使用交互模式,如下例所示。
示例 3. rmuser 交互式删除账户
输出应类似于以下内容:
所有用户都能使用 chpass(1) 修改其默认 shell 和与其用户账户关联的个人信息。超级用户可使用此工具修改任何用户的其他账户信息。
当不使用任何参数时,除了可选的用户名外,chpass(1) 会显示包含用户信息的编辑器。当用户从编辑器退出后,用户数据库将使用新信息进行更新。
在使用 chpass 作为超级用户时,超级用户已键入 chpass jru,现在正在查看可更改此用户的字段。如果 jru 代替运行此命令,则只会显示最后六个字段,并可供编辑。这显示正在在作为常规用户使用 chpass。
例 4. 作为超级用户使用 chpass
输出应类似于以下内容:
例 5。作为普通用户使用 chpass
所有用户都可以使用 passwd(1)轻松修改他们的密码。为了防止意外或未经授权的更改,此命令将在设置新密码之前提示用户输入原始密码:
示例 6. 修改你的密码
输出应类似于以下内容:
超级用户在运行 passwd(1)时可以通过指定用户名来修改任何用户的密码。当以超级用户身份运行该工具时,它不会要求用户输入当前密码。这能让在用户忘记原密码时修改密码。
例如 7. 作为超级用户更改另一个用户的密码
输出应类似于以下内容:
pw(8)实用程序可以创建、删除、修改和查看用户和组。它充当了系统用户和组文件的前端。pw(8)具有一组非常强大的命令行参数,使其适用于 shell 脚本中的使用,但新用户可能会觉得它比本节介绍的其他命令更复杂。
群组是个用户列表。群组以其群组名称和 GID 为标识。在 FreeBSD 中,内核使用进程的 UID 及其所属的群组列表来确定进程被允许执行的操作。在大多数情况下,用户或进程的 GID 通常意味着列表中的第一个群组。
将群组名称到 GID 的映射列在 /etc/group 中。这是一个带有四个以冒号分隔的字段的纯文本文件。第一个字段是群组名称,第二个是加密密码,第三个是 GID,第四个是逗号分隔的成员列表。有关语法的完整说明,请参阅 group(5)。
超级用户可以使用文本编辑器修改 /etc/group(尽管最好应使用 vigr(8)来编辑组文件,因为它可以捕捉一些常见错误)。另外,可以用 pw(8)添加和编辑组。例如,要添加一个名为 teamtwo 的组,然后确认它存在:
示例 8. 使用 pw(8)添加组
输出应类似于以下内容:
在本示例中,1100 是 teamtwo 的 GID。现在,teamtwo 没有成员。此命令将添加 jru 作为 teamtwo 的成员。
示例 9.使用 pw(8)将用户账户添加到新组
输出应该类似于以下内容:
-M 的参数是一个逗号分隔的用户列表,用于添加到新的(空)组或替换现有组的成员。对于用户而言,这个组成员身份与(并且除了)密码文件中列出的用户的主组是不同的。这意味着当使用 pw(8)时,用户不会显示为成员,但在通过 id(1)或类似工具查询信息时会显示为成员。当 pw(8)用于将用户添加到组中时,它只操作 /etc/group,并且不尝试从 /etc/passwd 中读取附加数据。
示例 10. 使用 pw(8)向组添加新成员
输出应该类似于以下内容:
在此示例中,-m 的参数是一个逗号分隔的用户列表,这些用户将被添加到组中。与前一个示例不同,这些用户将附加到组中,而不会替换组中现有的用户。
示例 11。使用 id(1)来确定组成员身份
输出的格式应该类似于以下内容:
在这个例子中,jru 是 jru 和 teamtwo 组的成员。
关于这个命令和 /etc/group 的格式的更多信息,请参考 pw(8) 和 group(5)。
设备通常是指系统中与硬件相关的活动,包括磁盘、打印机、显卡和键盘。当 FreeBSD 启动时,大多数引导信息都是指检测到设备。引导信息保存在 /var/run/dmesg.boot。
每个设备都有设备名称和编号。例如,ada0 是第一个 SATA 硬盘,而 kbd0 代表键盘。
在 FreeBSD 中,大多数设备必须通过称为设备节点的特殊文件进行访问,这些文件位于 /dev。
FreeBSD 自带了丰富的系统工具作为基本系统的一部分。此外,FreeBSD 提供了两种互补技术用于安装第三方软件:FreeBSD Ports,用于从源代码安装;以及软件包,用于从预构建的二进制文件安装。可以使用任一方法从本地介质或网络安装软件。
阅读完本章后,你将会知道:
二进制软件包和 ports 之间的区别。
如何查找移植到 FreeBSD 的第三方软件。
如何使用 pkg 管理二进制包。
如何使用 Ports 从源代码构建第三方软件。
在安装后配置应用程序所安装的文件的方法。
如果软件安装失败怎么办。
在 FreeBSD 上最全面的文档是手册页形式的。系统上几乎每个程序都附带了一个简短的参考手册,解释基本操作和可用参数。可以使用 man 查看这些手册。
where 命令是要学习的命令的名称。例如,要了解有关 ls(1)的更多信息,请键入:
手册页面分为代表主题类型的部分。在 FreeBSD 中,提供以下部分:
用户命令。
系统调用和错误编号。
C 库中的函数。
设备驱动程序。
文件格式。
游戏和其他消遣。
其他信息。
系统维护和操作命令。
系统内核接口。
在某些情况下,相同主题可能会出现在在线手册的多个部分中。例如,有一个 chmod 用户命令和一个 chmod() 系统调用。要告诉 man(1)显示哪个部分,请指定部分编号:
这将显示用户命令 chmod(1)的手动页面。对在线手册的特定部分的引用在书面文档中通常放在括号中,因此 chmod(1)指的是用户命令,chmod(2)指的是系统调用。
如果不知道手动页面的名称,请使用 man -k 在手动页面说明中搜索关键字:
此命令显示具有说明中关键字“mail”的命令列表。这相当于使用 apropos(1)。
阅读 /usr/sbin 中所有命令的说明,请键入:
或
FreeBSD 包括了由自由软件基金会(FSF)开发的几个应用程序和工具。除了手册页,这些程序可能包括被称为 info 文件的超文本文档。可以使用 info(1) 查看它们,或者如果安装了编辑器/emacs,则可以使用 emacs 的 info 模式。
要使用 info(1),请输入:
要进行简要介绍,请输入 h。要查看快速命令参考,请输入 ?。
大多数 FreeBSD 配置是通过编辑文本文件完成的,因此掌握文本编辑器是一个好主意。FreeBSD 自带了一些作为基本系统的一部分,Ports 中还有更多可用的。
一个简单的编辑器是 ee(1),它代表易编辑器。要启动这个编辑器,请键入 ee filename,其中文件名是要编辑的文件的名称。进入编辑器,所有用于操作编辑器功能的命令都列在显示器顶部。插入符号( ^ )代表 Ctrl,因此 ^e 相当于 Ctrl+e。要离开 ee(1),请按 Esc,然后从主菜单中选择“离开编辑器”选项。编辑器会提示保存所有修改。
FreeBSD 还配备了更强大的文本编辑器,如 vi(1),作为基本系统的一部分。其他编辑器,如 editors/emacs 和 editors/vim,是 FreeBSD Ports 的一部分。这些编辑器在功能上更丰富,但学习起来更加复杂。学习像 vim 和 Emacs 这种更强大的编辑器在长远来看可节省更多时间。
许多修改文件或需要输入文本的应用程序将自动打开一个文本编辑器。要更改默认编辑器,请像 shell 中所述设置 EDITOR 环境变量。
当port无法构建和安装时,请尝试以下操作:
在问题报告数据库中搜索,看看是否有关于port的待解决问题。如果是这样,实施建议的修复可能会解决这个问题。
| 向port的维护者求助。在ports骨架中输入 make maintainer 或阅读port的 Makefile,找到维护者的电子邮件地址。发送电子邮件给维护者时,请记得包含导致错误的输出。| |||某些ports不是由个人维护,而是由一个邮件列表表示的团体维护者维护。这些地址中的许多(但并非全部)看起来像 freebsd-listname@FreeBSD.org。在发送电子邮件时,请考虑这一点。 具体来说,由 FreeBSD.org 的 ports 维护的 ports 并非由特定个人维护。因为任何修复和支持都来自订阅该邮件列表的社区。始终需要更多志愿者!| | --------------------------------------------------------------------------------------------------------| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |如果电子邮件没有得到回应,请使用 Bugzilla 根据 Writing FreeBSD Problem Reports 中的说明提交 Bug 报告。||
修复它!Porter's Handbook 包含关于 ports 基础设施的详细信息,这样你就可以修复偶尔出现的故障 port,甚至提交你自己的 port!
请按照使用二进制包管理的使用 pkg 指南安装该软件包,来代替 port。
无论软件是从二进制包还是用port安装的,大多数第三方应用程序在安装后都需要进行一定级别的配置。以下命令和位置可用于帮助确定应用程序究竟安装了些什么。
大多数应用程序至少会在 /usr/local/etc 中安装一个默认配置文件。在应用程序具有大量配置文件的情况下,将创建一个子目录来保存这些文件。通常,安装的示例配置文件以 .sample 等后缀结尾。应审核配置文件,并可能进行编辑以满足系统的需求。要编辑示例文件,请先将其复制(不带 .sample 扩展名)。
提供文档的应用程序将其安装到 /usr/local/share/doc 中,许多应用程序还安装手册页。在继续之前,应查阅此文档。
一些应用程序运行必须在启动应用程序之前添加到 /etc/rc.conf 中的服务。这些应用程序通常会在 /usr/local/etc/rc.d 中安装启动脚本。有关更多信息,请参阅“启动服务”。||按设计,应用程序安装时不运行其启动脚本,卸载或更新时也不运行其停止脚本。这个决定由系统管理员负责。| | --| --------------------------------------------------------------------------------------------------------|
csh(1)的用户应运行 rehash 来重建 shell 程序 PATH 的已知二进制列表。
使用 pkg info 来确定应用程序安装的文件、man 页面和二进制文件。
APM | Apple 分区表,供 PowerPC® 使用。 |
BSD | 无 MBR 的 BSD 标签,有时称为 危险专用模式,因为非 BSD 磁盘工具可能无法识别它。 |
GPT |
MBR |
FreeBSD port 是一组文件的,旨在自动化从源代码编译应用程序。组成 port 的文件包含了自动下载、提取、打补丁、编译和安装应用程序所需的所有必要信息。
如果软件还没有在 FreeBSD 上适配和测试过,可能需要编辑源代码才能正确安装和运行。
然而,已经有超过 36000 个第三方应用程序被移植到了 FreeBSD。在可行的情况下,这些应用程序会作为预编译软件包提供下载。
可以使用 FreeBSD 软件包管理命令来操作软件包。
软件包和 ports 都可解析依赖关系。如果使用软件包和 port来安装应用程序并且尚未安装依赖库,则将先自动安装该依赖库。
FreeBSD 软件包包含了应用程序所有命令的预编译文件,以及所有配置文件和文档。可以使用 pkg(8) 命令来操作软件包,例如 pkg install。
虽然这两种技术很相似,但软件包和 ports 各有优势。请选择符合你安装特定应用程序要求的技术。
软件包优势
通常,压缩的软件包比包含应用程序源代码的压缩包更小。
软件包不需要花时间编译。对于大型应用程序(如 Firefox、KDE Plasma 或 GNOME),这对于低性能设备非常重要。
软件包不需要理解在 FreeBSD 上编译软件所涉及的过程。
Port 好处
软件包通常使用保守参数进行编译,因为它们必须在尽可能多的系统上运行。通过从 port 编译,可以修改编译参数。
一些应用程序具有与安装的功能相关的编译时选项。例如,NGINX® 可以配置各种不同的内置选项。有些情况下,对于同一应用程序可能存在多个软件包,用于指定特定设置。例如,NGINX® 被分为软件包 nginx 和软件包 nginx-lite,具体取决于是否安装了 Xorg。如果某个应用程序有超过一两个不同的编译时选项,则创建多个软件包马上会变成不可能。
一些软件的许可协议禁止二进制分发。这些软件必须以源代码形式分发,最终用户必须编译它们。
有些人不信任二进制软件包,或者更喜欢阅读源代码以寻找潜在问题。
需要源代码才能应用自定义补丁。
要跟踪更新的 ports,请订阅 FreeBSD ports邮件列表和 FreeBSD ports错误报告邮件列表。
本章的其余部分将介绍如何使用软件包和ports在 FreeBSD 上安装和管理第三方软件。
FreeBSD 用来查找文件的最小组织单位是文件名。文件名区分大小写,这意味着 readme.txt 和 README.TXT 是两个不同的文件。FreeBSD 不使用文件的扩展名来确定文件是程序、文档还是其他形式的数据。
文件存储在目录中。一个目录可以不包含任何文件,也可以包含成百上千个文件。一个目录还可以包含其他目录,从而产生了在彼此之间组织数据的目录层次结构。
通过给出文件或目录名称,后跟一个斜杠,/,再跟上其他必要的目录名称来引用文件和目录。例如,如果目录 foo 包含一个目录 bar,bar 中包含文件 readme.txt,文件的完整名称或路径是 foo/bar/readme.txt。请注意,这与使用 \ 分隔文件和目录名称的 Windows® 不同。在路径中,FreeBSD 不使用驱动器号或其他驱动器名称。例如,在 FreeBSD 上不会使用 c:\foo\bar\readme.txt。
文件和目录存储在文件系统中。每个文件系统在顶层恰好包含一个目录,称为该文件系统的根目录。这个根目录可以包含其他目录。一个文件系统被指定为根文件系统或 /。其他每个文件系统都被挂载在根文件系统下。无论 FreeBSD 系统上有几个磁盘,每个目录看起来都是同个磁盘的一部分。
假设有三个文件系统,分别称为 A,B 和 C。每个文件系统有一个根目录,其中包含另外两个目录,称为 A1,A2 (类似地还有 B1,B2 和 C1,C2 )。
将 A 称为根文件系统。如果使用 ls(1)查看此目录的内容,它将显示两个子目录,A1 和 A2。目录树看起来像这样:
一个文件系统必须被挂载到另一个文件系统的一个目录上。当将文件系统 B 挂载到目录 A1 时,文件系统 B 的根目录会取代 A1,而 B 中的目录会相应地显示如下:
任何在 B1 或 B2 目录中的文件都可以通过路径 /A1/B1 或 /A1/B2 来访问。任何在 /A1 中的文件都被临时隐藏了。如果 B 从 A 中卸载,它们将重新显示。
如果 B 被挂载到 A2,那么该图表会是这样的:
而路径分别为 /A2/B1 和 /A2/B2。
文件系统可以相互叠加挂载。继续上一个例子,C 文件系统可以安装在 B 文件系统中 B1 目录的顶部,从而形成这种布局:
或者 C 可以直接安装到 A1 文件系统的 A 目录下:
只有一个大型的根文件系统,而未创建其他文件系统是完全有可能的。这种方法有一些缺点及一个优点。
多个文件系统的好处
不同的文件系统可以具有不同的挂载选项。例如,根文件系统可以以只读方式挂载,从而使用户无法因意外中删除或编辑关键文件。将可写用户文件系统(例如 /home )与其他文件系统分离能让它们被挂载为 nosuid。此选项可防止文件系统上存储的可执行文件的 suid / guid 位生效,可能提高安全性。
FreeBSD 能自动根据文件系统的使用方式优化文件的布局。因此,一个包含许多频繁写入的小文件的文件系统会与包含较少、较大文件的文件系统具有不同的优化。如果只有一个大文件系统,则此优化将失效。
如果发生断电,FreeBSD 的文件系统是健壮的。然而,在关键时刻断电仍可能损坏文件系统的结构。通过在多个文件系统上分离数据,系统更有可能重新开机,从而更容易根据需要从备份中恢复。
单一文件系统的好处
| 文件系统是固定大小的。如果你安装 FreeBSD 时创建文件系统,并为其指定特定大小,那么你可能会发现需要扩大分区的大小,而这并不容易实现,除非备份、使用新的大小重新创建文件系统,然后恢复备份数据。||FreeBSD 有命令 growfs(8),它可以在运行时增加文件系统的大小,消除了这一限制。文件系统只能扩展到其所在分区中的空闲空间中。如果分区之后有空间,则可以使用 gpart(8) 来扩展分区。如果分区是虚拟磁盘上的最后一个分区,并且扩展了磁盘,则可以扩展该分区。| | --| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
文件系统包含在分区中。磁盘使用多种分区方案分成分区;参见 [bsdinstall-part-manual]。较新的方案是 GPT;老的基于 BIOS 的计算机使用 MBR。GPT 支持将磁盘分成具有大小、偏移和类型的分区。它支持大量的分区和分区类型,建议在可能的情况下使用 GPT。GPT 分区使用磁盘名称加后缀,其中后缀为 p1 表示第一个分区,p2 表示第二个分区,依此类推。然而,MBR 仅支持少量的分区。在 FreeBSD 中,MBR 分区被称为 slices。切片可用于不同的操作系统。FreeBSD 切片使用 BSD 标签进一步划分成分区(参见 bsdlabel(8))。
切片号遵循设备名称,前缀为 s,从 1 开始。因此,“da0s1”是第一个 SCSI 硬盘的第一个切片。磁盘上只能有四个物理切片,但可以在适当类型的物理切片内拥有逻辑切片。这些扩展切片的编号从 5 开始,因此“ada0s5”是第一个 SATA 硬盘上的第一个扩展切片。这些设备由期望占用一整块切片的文件系统使用。
每个 GPT 或 BSD 分区只能包含一个文件系统,这意味着文件系统通常由它们在文件系统层次结构中的典型挂载点或它们所包含的分区的名称来说明。
FreeBSD 也可把磁盘空间用作交换空间,以提供虚拟内存。这使得你的计算机可以表现得比实际拥有的内存多得多。当 FreeBSD 内存不足时,它会将一些目前未被使用的数据转移到交换空间,并在需要时将其移回(将其他内容移出)。这称为分页。
一些 BSD 分区有与之相关的特定约定。
切片和“危险专用”物理驱动器包含 BSD 分区,表示为 a 到 h 的字母。此字母附加到设备名称,因此“da0a”是第一个 da 驱动器上的 a 分区,“ada1s3e”是第二个 SATA 硬盘的第三个切片中的第五个分区。
系统中的每个磁盘都被识别出来。磁盘名称以表示磁盘类型的代码开头,然后是一个数字,表示它是第几个磁盘。与分区和切片不同,磁盘编号从 0 开始。常见代码列在磁盘设备名称中。
在切片中引用分区时,包括磁盘名称, s,切片号,然后是分区字母。示例显示在示例磁盘,切片和分区名称中。GPT 分区包括磁盘名称, p,然后是分区编号。
磁盘的概念模型展示了使用 MBR 切片的磁盘布局的概念模型。
安装 FreeBSD 时,如果使用 MBR,请配置磁盘切片,并在切片内创建用于 FreeBSD 的分区。如果使用 GPT,请为每个文件系统配置分区。在任一情况下,在每个分区中创建文件系统或交换空间,并决定将每个文件系统挂载到何处。有关操作分区的信息,请参阅 gpart(8)。
磁盘设备名称表 3
表 4。样本磁盘、切片和分区名称
磁盘的概念模型示例 12。
该图显示了 FreeBSD 对系统连接的第一个 SATA 硬盘的视图。假设该硬盘的大小为 250 GB,并包含一个 80 GB 切片和一个 170 GB 切片(MS-DOS®分区)。第一个切片包含一个 Windows® NTFS 文件系统,C:,而第二个切片包含一个 FreeBSD 安装。这个示例 FreeBSD 安装有四个数据分区和一个交换分区。
四个分区分别保存一个文件系统。分区 a 用于根文件系统,d 用于 /var/,e 用于 /tmp/,f 用于 /usr/。分区字母 c 指的是整个片区,因此不用于普通分区。
FreeBSD 目录层次结构对于获得对系统的整体理解是至关重要的。最重要的目录是根目录即“/”。这个目录是在启动时第一个被挂载的,它包含了准备操作系统进行多用户操作所必需的基本系统。根目录还包含其他文件系统的挂载点,它们在过渡到多用户操作时被挂载。
挂载点是一个目录,在这个目录上可以将附加文件系统嫁接到父文件系统(通常是根文件系统)。这在磁盘组织中有进一步说明。标准挂载点包括 /usr/,/var/,/tmp/,/mnt/ 和 /cdrom/。这些目录通常与 /etc/fstab 中的条目相对应。这个文件是各种文件系统和挂载点的列表,并由系统读取。/etc/fstab 中的大多数文件系统会在引导时自动挂载,来自脚本 rc(8),除非它们的条目包括参数 noauto。详情请参阅 fstab 文件。
文件系统层次结构的完整说明请参见 hier(7)。以下表格提供了最常见目录的简要概述。
目录 | 概述 |
---|---|
在 FreeBSD 中,每个文件和目录都有一组关联的权限,并有多个实用工具可用于查看和修改这些权限。理解权限如何工作是必要的,可确保用户能够访问他们需要的文件,并且不能非法访问操作系统使用的文件和其他用户拥有的文件。
本节讨论了在 FreeBSD 中使用的传统 UNIX® 权限。要了解更细粒度的文件系统访问控制,请参考访问控制列表。
在 UNIX® 中,基本权限使用三种类型的访问分配:读取、写入和执行。这些访问类型用于确定文件对文件所有者、组和其他用户(其他所有人)的访问。读取、写入和执行权限可以表示为字母 r,w 和 x。它们也可以表示为二进制数,因为每个权限都是开启或关闭的( 0 )。当表示为数字时,顺序总是读取为 rwx,其中 r 的开启值为 4,w 的开启值为 2,而 x 的开启值为 1。
表 4.1 总结了可能的数值和字母可能性。当阅读"目录列表"列时,使用 - 表示设置为关闭的权限。
表 2. UNIX® 权限
值 | 权限 | 目录列表 |
---|---|---|
使用 -l 参数与 ls(1) 一起,可以列出一个包含有关文件所有者、组和其他人权限的信息列的长目录列表。例如,在任意目录中:
输出应该类似于以下内容:
请注意 myfile 这一行,第一个 (leftmost) 字符表示此文件是常规文件、目录、特殊字符设备、套接字或任何其他特殊伪文件设备。在此示例中,- 表示常规文件。接下来的三个字符,比如 rw-,给出了文件所有者的权限。接下来的三个字符,如 r--,给出了文件所属组的权限。最后三个字符,如 r--,给出了其他用户的权限。短划线表示权限已关闭。在此示例中,权限被设置为这样,文件所有者可以读取并写入文件,组可以读取文件,其他用户只能读取文件。根据上表,此文件的权限将为 644,其中每个数字代表文件权限的三个部分。
系统如何控制设备的权限?FreeBSD 将大多数硬件设备视为程序可以打开、读取和写入数据的文件。这些特殊设备文件存储在 /dev/。
目录也被视为文件。它们具有读取、写入和执行权限。目录的可执行位与文件的含义有所不同。当目录被标记为可执行时,这意味着可以使用 cd(1) 更改进入该目录。这也意味着可以访问该目录中的文件,但受限于文件本身的权限。
为了执行目录列表,必须在目录上设置读取权限。为了删除一个已知名称的文件,需要对包含该文件的目录具有写入和执行权限。
还有更多的权限位,但它们主要用于特殊情况,如 setuid 二进制文件和目录粘滞位。有关文件权限及如何设置它们的更多信息,请参考 chmod(1)。
符号权限使用字符而不是八进制值来为文件或目录分配权限。符号权限使用(谁) (动作) (权限)的语法,可用以下值:
这些值与 chmod(1)一起使用,但使用字母而不是数字。例如,以下命令将阻止与 FILE 关联的组的所有成员和所有其他用户访问 FILE:
当必须对文件进行一组以上的更改时,可以提供逗号分隔的列表。例如,以下命令删除 FILE 上的组和“world”写权限,并为所有人添加执行权限:
除了文件权限外,FreeBSD 还支持使用"文件标志"。这些标志为文件提供了额外的安全性和控制,但不包括目录。通过文件标志,甚至也可以阻止 root 删除和修改文件。
使用 chflags(1)来修改文件标志。例如,要在文件 file1 上启用系统不可删除标志,执行以下命令:
禁用系统不可删除标志,将 sunlink 前加上 "no" :
要查看文件的标志,请使用 -lo 与 ls(1):
有些文件标志只能由 root 用户增加和删除。在其他情况下,文件所有者可以设置其文件标志。有关更多信息,请参阅 chflags(1) 和 chflags(2)。
除了讨论过的权限之外,还有另外三个所有管理员都应该了解的特定设置。它们分别是 setuid,setgid 和 sticky 权限。
这些设置对于某些 UNIX® 操作非常重要,因为它们提供了通常不授予普通用户的功能。要理解它们,必须注意实际用户 ID 和有效用户 ID 之间的区别。
实际用户 ID 是拥有或启动进程的 UID。有效 UID 是进程以其身份运行的用户 ID。例如,当用户修改密码时,passwd(1)会使用实际用户 ID 运行。但是,为了更新密码数据库,该命令将以 root 用户的有效 ID 运行。这样用户可以更改密码而不会产生 Permission Denied 错误。
可以通过为用户添加 s 权限来以符号方式添加 setuid 权限,如下例所示:
也可以通过在权限集前加上数字四(4)来设置 setuid 权限,如下例所示:
现在 suidexample.sh 上的权限看起来像下面这样:
请注意,现在文件所有者权限集中包含了一个 s,取代了可执行位。这允许需要提升权限的实用程序,例如 passwd(1)。
要实时查看此内容,请在两个终端中打开。在一个终端中,以普通用户身份键入 passwd。在它等待新密码时,检查进程列表,并查看 passwd(1) 的用户信息:
在终端 A:
在终端 B:
尽管 passwd(1) 以普通用户身份运行,但它使用的是 root 的有效 UID。
setgid 权限执行与 setuid 权限相同的功能;唯一的区别是它会更改组设置。当应用程序或实用程序以此设置执行时,将基于拥有文件的组而不是启动该进程的用户被授予权限。
要在文件上符号性设置 setgid 权限,请使用 chmod(1) 为该组添加 s 权限:
或者,向 chmod(1) 提供一个前置的两 (2):
在下面的列表中,请注意 s 现在位于用于组权限设置的字段中:
使用 setuid 和 setgid 权限位可能降低系统安全性,因为它允许提升权限。第三个特殊权限,sticky bit,可以加强系统的安全性。
当在目录上设置粘滞位时,只允许文件所有者删除文件。这对防止用户删除公共目录中的文件(如 /tmp )很有用。要使用这个权限,请将 t 模式添加到文件中:
或者,将权限集的前缀设置为一个(1):
sticky bit 权限将显示为权限集的最后一个 t :
shell 提供了一个命令行界面,用于与操作系统进行交互。Shell 从输入通道接收命令并执行它们。许多 shell 提供了内置函数来帮助处理日常任务,如文件管理,文件 globbing,命令行编辑,命令宏和环境变量。FreeBSD 自带几种 shell,包括 Bourne shell(sh(1))和扩展的 C shell(tcsh(1))。其他 shell 可以从 FreeBSD Ports 中获取,比如 zsh 和 bash。
shell 的选择实际上是个人口味问题。C 程序员可能会觉得用类似 C 的 shell(如 tcsh(1))更舒适。Linux® 用户可能更喜欢 bash。每个 shell 都有其特性,可能与用户偏好的工作环境相符,也可能不相符,这就是为什么可以对使用哪种 shell 进行选择。
shell 的常见功能是文件名补全。用户输入命令或文件名的前几个字母后按 Tab 键,shell 会自动补全命令或文件名的剩余部分。考虑两个名为 foobar 和 football 的文件。要删除 foobar,用户可输入 rm foo,然后按 Tab 键来补全文件名。
但 shell 只显示 rm foo。它无法完成文件名自动补全,因为 foobar 和 football 都以 foo 开头。有些 shell 会发出哔哔声或显示所有匹配项,如果有多个名称匹配。用户必须继续输入更多字符以确定所需的文件名。输入 t 并再次按 Tab 键足以让 shell 确定期望的文件名并填写其余部分。
shell 的另一个特性是使用环境变量。环境变量是存储在 shell 环境中的变量/键对。这个环境可以被 shell 调用的任何程序读取,因此包含大量程序配置。常见的环境变量提供了常见环境变量及其含义的列表。请注意,环境变量的名称始终大写。
表 6. 常见的环境变量
变量 | 说明 |
---|---|
如何在不同 shell 之间设置环境变量不同。在 tcsh(1)和 csh(1)中,使用setenv
来设置环境变量。在 sh(1)和 bash 中,使用export
来设置当前的环境变量。此示例将 tcsh(1) shell 的默认 EDITOR 设置为 /usr/local/bin/emacs :
bash 的等效命令是:
要扩展环境变量以查看其当前设置,请在命令行中其名称前面输入一个 $ 字符。例如,echo $TERM 会显示当前的 $TERM 设置。
shell 将特殊字符(称为元字符)视为数据的特殊表示。最常见的元字符是 *
,它表示文件名中的任意数量字符。元字符可用于执行文件名通配。例如,echo *
等同于 ls,因为 shell 获取所有匹配 *
和 echo 的文件,并将它们列在命令行上。
为防止 shell 解释特殊字符,可以通过在特殊字符前加上反斜杠( \
)来使其脱离 shell。例如,echo $TERM 打印终端设置,而 echo $TERM 字面打印字符串 $TERM。
永久修改默认 shell 的最简单方法是使用 chsh。运行此命令将打开配置在 EDITOR 环境变量中的编辑器,默认情况下设置为 vi(1)。将 Shell: 行更改为新 shell 的完整路径。
或者,使用 chsh -s,它将设置指定的 shell 而不会打开编辑器。例如,要将 shell 更改为 bash :
在提示处输入密码并按回车键以修改你的 shell。注销然后重新登录以开始使用新的 shell。
UNIX® shell 不仅仅是一个命令解释器,它还是一个强大的工具,能让用户执行命令,重定向它们的输出,重定向它们的输入,并链接命令以改善最终的命令输出。当这种功能与内置命令混合在一起时,用户将获得一个可以最大化效率的环境。
shell 重定向是将命令的输出或输入发送到另一个命令或文件的操作。例如,要将 ls(1)命令的输出捕获到一个文件中,请将输出重定向到:
现在将列出目录内容 directory_listing.txt。有些命令可用于读取输入,比如 sort(1)。要对此列表进行排序,请重定向输入:
输入将被排序并显示在屏幕上。要将该输入重定向到另一个文件,可以通过混合方向重定向 sort(1)的输出:
在所有之前的示例中,命令都在使用文件描述符执行重定向。每个 UNIX®系统都有文件描述符,其中包括标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。每个都有一个目的,其中输入可以是键盘和鼠标等提供输入的东西。输出可以是屏幕和打印机上的纸。错误将是用于诊断或错误消息的任何内容。所有三个都被视为基于 I/O 的文件描述符,有时被视为流。
通过使用这些描述符,shell 能通过各种命令传递输出和输入,并将其重定向到文件中。另一种重定向的方法是管道运算符。
UNIX®管道运算符"|"能把将一个命令的输出直接传递或定向到另一个程序。基本上,管道能把一个命令的标准输出作为另一个命令的标准输入,例如:
在该示例中,directory_listing.txt 的内容将被排序,并将输出传递给 less(1)。这能让用户按自己的节奏浏览输出并防止其滚动到屏幕外。
pkg(8) 提供了一个操作软件包的接口:注册、增加、卸载和更新软件包。
对于只希望使用从 FreeBSD 镜像站使用预构建的二进制软件包的网站来说,使用 pkg(8)进行软件包管理可能已经足够了。
但是,对于那些从源代码构建的网站来说,将需要单独的port管理工具。
由于 pkg(8)仅适用于二进制软件包,它并不能取代这些工具。这些工具可用于从二进制软件包和 ports 安装,而 pkg(8)仅安装二进制软件包。
所有受支持的 FreeBSD 版本现在都包含了 /usr/sbin/pkg 即 pkg(7)。这只是个小占位符,只包含了安装真正的 pkg(8) 所需的最低功能。
运行 pkg(8) 命令行:
输出应类似于以下内容:
pkg(7) 将拦截该命令,如果你确认这是你的意图,将下载 pkg(8) 压缩包,从中安装 pkg(8),初始化本地软件包数据库,然后继续运行你最初请求的命令。
pkg(7)的更近期版本将 pkg -N 作为一种测试,用于查看是否安装了 pkg(8)而不触发安装,反之,使用 pkg bootstrap[-f]安装 pkg(8)(或强制重新安装)而不执行任何其他操作。
可以在 pkg(8)手册页面或通过运行 pkg 不带额外参数获得pkg 的用法信息。有关更多 pkg 配置选项的信息,请参阅 pkg.conf(5)。
每个 pkg 命令参数在特定命令手册页面中都有说明。
阅读 pkg install 的手册页面,例如,运行此命令:
本节的其余部分演示了可以使用 pkg(8)执行的常见二进制软件包管理任务。每个演示命令都提供许多开关来自定义其使用。有关详细信息和更多示例,请参考命令的帮助或手册页面。
该季度分支为用户提供更可预测和稳定的port和软件包安装升级体验。这主要通过仅允许非功能更新来实现。季度分支旨在接收安全补丁(可能是版本更新,或提交的回溯),错误修复和ports合规性或框架更改。季度分支每年(每季度)在一月,四月,七月和十月初切自 HEAD。分支名称根据创建年(YYYY)和季度(Q1-4)命名。例如,2023 年一月创建的季度分支,命名为 2023Q1。而 Latest 分支为用户提供软件包的最新版本。
要将 pkg(8)从季度切换到最新版,请执行以下命令:
然后运行此命令,更新本地软件包仓库目录至最新分支:
pkg(8)工具使用的系统级配置文件是pkg.conf(5)。该文件的默认位置是 /usr/local/etc/pkg.conf。
文件中以"#
"开头的行是注释,会被忽略。
该文件采用 UCL 格式。有关 libucl(3)语法的更多信息,请访问官方 UCL 网站。
识别以下类型的选项 - 布尔选项、字符串选项和列表选项。
如果配置文件中指定以下任一值,则将布尔选项标记为启用 - 是,真和开。
要搜索软件包,可以使用 pkg-search(8):
输出应类似于以下内容:
要安装二进制软件包,可以使用 pkg-install(8)命令。此命令使用存储库数据来确定要安装软件的版本,以及它是否具有任何未安装的依赖项。例如,要安装 curl:
输出应类似于以下内容:
可以在已安装软件包列表中查看新软件包及安装的任何附加软件包作为依赖项:
输出应类似于以下内容:
要获取一个包并稍后在其他地方安装,请使用 pkg-fetch(8)。例如,要下载 nginx-lite :
-d :用于获取所有依赖项
-o :用于指定下载目录
输出应类似于以下内容:
要安装下载的软件包,可以使用 pkg-install(8)如下方式:
可以通过运行 pkg-info(8)来查看系统上安装的软件包信息,当不带参数时运行,将列出所有已安装的软件包或指定软件包的软件包版本。
例如,要查看已安装的 pkg 的版本,运行:
输出应类似于以下内容:
安装的软件包可以使用 pkg-upgrade(8) 升级到它们的最新版本:
此命令将比较已安装的版本与存储库目录中可用的版本,并从存储库中升级它们。
第三方应用程序经常发现软件漏洞。为了解决这个问题,pkg 包含一个内置的审计机制。要确定系统上已安装的软件是否存在已知漏洞,请使用 pkg-audit(8):
输出应类似于以下内容:
不再需要的软件包可以使用 pkg-delete(8) 来卸载。
例如:
输出应类似于以下内容:
卸载软件包可能会留下不再需要的依赖项。可以使用 pkg-autoremove(8)自动检测并卸载已安装但不再需要的依赖项(叶子软件包)。
输出应该类似于以下内容:
安装为依赖关系的软件包称为自动软件包。非自动软件包,即明确安装而不是作为另一个软件包的依赖项的软件包,可以使用以下方式列出:
输出应该类似于以下内容:
pkg prime-list 是在 /usr/local/etc/pkg.conf 中声明的别名命令。还有许多其他命令可用于查询系统的软件包数据库。例如,命令 pkg prime-origins 可用于获取上述列表中的 port 目录:
输出应类似于以下内容:
此列表可用于使用构建工具(例如 ports-mgmt/poudriere 或 ports-mgmt/synth)重建系统上安装的所有软件包。
用以下方法可以将安装的软件包标记为自动:
若软件包是叶子软件包并标记为自动,它将被选择 pkg autoremove。
用以下方法可以将安装的软件包标记为非自动:
默认情况下,pkg 将二进制软件包存储在由 pkg.conf(5)中定义的缓存目录中。只保留最新安装的软件包。较老版本的 pkg 会保留所有先前的软件包。要删除这些过时的二进制软件包,请运行:
可以通过运行以下命令来清除全部缓存:
pkg-lock(8) 用于锁定软件包,防止重新安装、修改或删除。pkg-unlock(8) 解锁指定的软件包。任何一种变体只对当前安装的软件包产生影响。因此,无法通过此机制阻止新软件包的安装,除非该安装意味着更新被锁定的软件包。
例如,要锁定 nginx-lite :
要解锁 nginx-lite :
FreeBSD Ports 中的软件可能会经历主版本号的修改。为了解决这个问题,pkg 具有内置命令来更新包来源。例如,如果 lang/python3 更名为 lang/python311,这将非常有用,这样 lang/python3 现在可以表示版本 3.11。
要更改上述示例的软件包来源,请运行:
作为另一个示例,要将 lang/ruby31 更新为 lang/ruby32,请运行:
ports 是一组 Makefiles,补丁和说明文件。这些文件集用于在 FreeBSD 上编译和安装单个应用程序,并被称为port。
默认情况下,Ports 本身存储为 /usr/ports 的子目录。
Ports 包含了软件类别的目录。在每个类别内部,有各个应用程序的子目录。每个应用程序子目录包含一组文件,告诉 FreeBSD 如何编译和安装该程序,称为 ports 骨架。每个 port 骨架包括这些文件和目录:
Makefile:包含指定应用程序应如何编译以及其组件应安装到何处的代码。
distinfo:包含必须下载的文件的名称和校验和,以构建 port。
files/:此目录包含编译和在 FreeBSD 上安装程序所需的任何补丁。此目录还可能包含用于构建 port 的其他文件。
提供程序的更详细说明。
pkg-plist: 将由port安装的所有文件列表。它还告诉ports系统在卸载时要删除哪些文件。
某些ports包括 pkg-message 或其他文件来处理特殊情况。有关这些文件以及ports的更多详细信息,请参阅 FreeBSD Porter's Handbook。
该port不包含实际的源代码,也被称为 distfile。构建port的解压缩部分将自动将下载的源代码保存到 /usr/ports/distfiles。
在使用port编译应用程序之前,必须先安装ports 。如果在安装 FreeBSD 期间没有安装它,请使用以下方法之一进行安装:
** 过程:Git 方法**
如果需要对 ports 树有更多控制,或者需要维护本地更改,或者运行 FreeBSD-CURRENT,可以使用 Git 来获取 Ports 。有关 Git 的详细说明,请参阅 Git Primer。
我们在 git 命令行中添加 --depth 1 来克隆树而不获取提交历史,这样可以节省时间,对大多数用户来说是可以接受的。如果你对 ports 树有自己的更改,或者因任何原因需要历史记录,请省略下面的 --depth 1 参数。
Git 必须安装好才能用来检出 ports 树。如果已经有一份 ports 源代码,请这样安装 Git:
如果 ports 不可用,或者正在使用 pkg 管理软件包,则可以通过软件包安装 Git:
检出 ports 树的 HEAD 分支的副本:
或者,检出一个季度分支的副本:
根据需要,在初始的 Git 检出后更新 /usr/ports :
根据需要,将 /usr/ports 切换到另一个季度分支:
本节提供了有关使用ports 安装或删除软件的基本说明。可在ports(7)中获取可用 make 目标和环境变量的详细说明。
使用Ports 假设你有工作的互联网连接。它还需要超级用户特权。
要编译和安装port,切换到要安装的port目录,然后在提示符处键入 make install。消息将指示进度:
由于 lsof 是以增加特权运行的程序,在安装时显示安全警告。安装完成后,提示符将返回。
一些 shells 会在列在 PATH 环境变量中的目录中保留命令的缓存,以加快查找这些命令的可执行文件的速度。tcsh shell 的用户应该输入 rehash,这样新安装的命令就可以在不指定其完整路径的情况下使用。对于 sh shell,请使用 hash -r。有关更多信息,请查阅 shell 的文档。
在安装过程中,会创建一个包含编译期间使用的所有临时文件的工作子目录。删除这个目录可以节省磁盘空间,并最大限度地减少升级到新版本的 port 时出现问题的几率:
4.5.2.1. 自定义 Ports 安装
有些 ports 提供构建选项,可以用于启用或禁用应用程序组件,提供安全选项,或能进行其他定制。示例包括 www/firefox 和 security/gpgme。如果 port 依赖于其他具有可配置选项的 ports,它可能会在几个地方暂停,等待用户交互,因为默认行为是提示用户从菜单中选择选项。为了避免这种情况,并在一次批处理中执行所有配置,请在 port 框架中运行 make config-recursive。然后,运行 make install [clean] 来编译和安装 port。
有几种方法可以在构建完port之后重新访问port的构建选项菜单,以添加、删除或更改这些选项。一种方法是 cd 到包含port的目录,并键入 make config。另一个选项是使用 make showconfig。另一个选项是执行 make rmconfig,这将删除所有已选择的选项,使你可以重新开始。所有这些选项以及其他选项都在ports(7)中详细解释。
ports系统使用 fetch(1)下载源文件,支持各种环境变量。如果 FreeBSD 系统位于防火墙或 FTP/HTTP 代理后面,则可能需要设置 FTP_PASSIVE_MODE 、 FTP_PROXY 和 FTP_PASSWORD 变量。有关支持的变量的完整列表,请参阅 fetch(3)。
对于不能始终连接到互联网的用户,可以在 /usr/ports 内运行 make fetch,以获取所有 distfiles,或在一个类别中运行,例如 /usr/ports/net,或在特定的port骨架中运行。请注意,如果port有任何依赖项,则在类别或ports骨架中运行此命令将无法获取来自另一个类别的ports的 distfiles。而是使用 make fetch-recursive 也获取port的所有依赖项的 distfiles。
在罕见情况下,比如当一个组织有一个本地 distfiles 存储库时,MASTER_SITES 变量可以用来覆盖 Makefile 中指定的下载位置。在使用时,请指定替代位置:
WRKDIRPREFIX 和 PREFIX 变量可以覆盖默认的工作目录和目标目录。例如:
将port编译在 /usr/home/example/ports 中,并将所有内容安装在 /usr/local 下。
将 port 编译在 /usr/ports 并安装在 /usr/home/example/local。和:
将两者合并。
这些也可以设置为环境变量。请参考你的 shell 手册了解如何设置环境变量。
已安装 ports 可以使用 pkg delete 进行卸载。使用该命令的示例可以在 pkg-delete(8) 手册页中找到。
或者,make deinstall 可以在 port 的目录中运行:
推荐阅读消息,因为 port 已被卸载。如果 port 有任何依赖于它的应用程序,将显示此信息但卸载将继续。在这种情况下,重新安装应用程序可能更好,以防止破坏依赖关系。
随着时间的推移,更高版本的软件会在 Ports 中变得可用。本节说明了如何确定应升级哪些软件以及如何执行升级。
确定已安装 ports 的更新版本是否可用,请确保安装了ports树的最新版本,使用"Git 方法"中说明的更新命令。下面的命令将列出已安装的过时 ports。
4.5.4.1. 用于升级和管理 Ports 的工具
ports 包含多个实用工具,用于执行实际升级。每个工具都有其优势和劣势。
从历史来看,大多数安装都使用 Portmaster 或 Portupgrade。Synth 是一个更新的选择。
4.5.4.2。使用 Portmaster 升级 Ports
ports-mgmt/portmaster 是一个非常小的实用程序,用于升级已安装的 ports。它旨在使用安装在 FreeBSD 基本系统中的工具,而不依赖于其他 ports 或数据库。要将此实用程序安装为 port:
Portmaster 定义了 ports 的四个类别:
根 port:没有依赖项,也不是任何其他ports 的依赖项。
主干 port:没有依赖项,但其他ports 依赖它。
分支 port:有依赖项,其他ports 依赖它。
叶port:有依赖项,但没有其他ports依赖它。
要列出这些类别并搜索更新:
此命令用于升级所有过时的ports:
如果在升级过程中遇到错误,请添加 -f 以升级并重建所有 ports:
Portmaster 也可用于在系统上安装新 ports,在构建和安装新 port 之前升级所有依赖项。要使用此功能,请在 Ports 中指定 port 的位置。
ports-mgmt/portmaster 的详细信息可在其 pkg-descr 中找到。
4.5.4.3. 使用 Portupgrade 升级 Ports
ports-mgmt/portupgrade 是另一个可以用于升级 ports 的实用程序。它安装了一套可以用来管理 ports 的应用程序。但是,它依赖于 Ruby。要安装 port:
使用此实用工具执行升级之前,建议扫描已安装的ports列表,使用 pkgdb -F 并修复报告的所有不一致性。
要升级系统上安装的所有过时ports,请使用 portupgrade -a。另外,包括 -i 以便在每个单独的升级时进行确认:
要仅升级指定的应用程序而不是所有可用的ports,请使用 portupgrade pkgname。非常重要的是首先包括 -R 以升级给定应用程序所需的所有ports:
如果包含 -P,Portupgrade 将在列在 PKG_PATH 中的本地目录中搜索可用的软件包。如果本地没有可用的软件包,则会从远程站点获取软件包。如果在本地找不到软件包或无法从远程获取,则 Portupgrade 将使用 ports。要完全避免使用 ports,请指定 -PP。最后一组选项告诉 Portupgrade 如果没有可用的软件包就中止:
要仅获取 port 资源文件,或者如果指定 -P,而不构建或安装任何内容,请使用 -F。要获取所有可用开关的进一步信息,请参阅 portupgrade 的手册页面。
有关 ports-mgmt/portupgrade 的更多信息,请参阅其 pkg-descr。
使用 Ports 会随着时间使用磁盘空间。构建和安装 port 后,在 ports 骨架中运行 make clean 将清理临时 work 目录。如果使用 Portmaster 安装 port,它将自动删除此目录,除非指定了 -K。如果安装了 Portupgrade,此命令将删除在本地 Ports 的副本中找到的所有 work 目录:
另外,过时的源分发文件会随着时间在 /usr/ports/distfiles 中累积。要使用 Portupgrade 删除任何不再被任何 ports 引用的所有 distfiles:
Portupgrade
可以删除系统上当前未被任何已安装软件包引用的所有 distfiles:
如果已安装 Portmaster
,请使用:
默认情况下,此命令是交互式的,并提示用户确认是否删除 distfile。
除了这些命令外,ports-mgmt/pkg_cutleaves 可自动完成移除不再需要的已安装ports操作。
poudriere 是一个基于 BSD 许可,用于创建和测试 FreeBSD 软件包的工具。它使用 FreeBSD jail 来设置隔离的编译环境。这些 jail 可以用于为与安装它的系统不同的 FreeBSD 版本构建软件包,也可以用于在主机为 amd64 系统的情况下构建 i386 的软件包。软件包构建完成后,它们的布局与官方镜像完全相同。这些软件包可被 pkg(8) 和其他软件包管理工具使用。
poudriere 是使用包或 port ports-mgmt/poudriere 进行安装的。安装包含了一个示例配置文件 /usr/local/etc/poudriere.conf.sample。请将此文件复制到 /usr/local/etc/poudriere.conf。编辑复制的文件以适应本地配置。
虽然运行 poudriere 无需 ZFS,但ZFS是有好处的。当使用 ZFS 时,必须在 /usr/local/etc/poudriere.conf 中指定 ZPOOL 并且 FREEBSD_HOST 应设置为附近的镜像。定义 CCACHE_DIR 可以启用使用 devel/ccache 来缓存编译并减少经常编译代码的构建时间。将 poudriere 数据集放在一个隔离的树中并挂载到 /poudriere 可能更方便。其他配置值的默认值是足够的。
检测到的处理器核心数量用于定义并行运行多少个构建。提供足够的虚拟内存,可以使用 RAM 和交换空间。如果虚拟内存耗尽,编译 jail 将会停止并被清除,导致出现奇怪的错误信息。
配置后,初始化 poudriere,使其安装jail,并附带所需的 FreeBSD 树和一个ports树。使用 -j 指定jail的名称,并使用 -v 指定 FreeBSD 版本。在运行 FreeBSD/amd64 的系统上,架构可以通过 -a 设置为 i386 或 amd64。默认是 uname 所显示的架构。
在一台计算机上,poudriere 可以使用多个配置构建ports,可以在多个jail上进行构建,并且可以从不同的port树构建。这些组合的自定义配置称为。安装了ports-mgmt/poudriere 或ports-mgmt/poudriere-devel 后,详细信息请参阅 poudriere(8)的 CUSTOMIZATION 部分。
这里显示的基本配置将单个jail,port和特定于设置的 make.conf 放在 /usr/local/etc/poudriere.d 中。在此示例中,文件名是通过组合jail名称,port名称和设置名称 13amd64-local-workstation-make.conf 创建的。系统 make.conf 和这个新文件在构建时结合在一起,以创建构建jail使用的 make.conf。
要构建的软件包在 13amd64-local-workstation-pkglist 中输入(通过 FLAVORS 定义了ports,可以使用@FLAVOR):
针对指定ports配置选项和依赖项:
终于,包已构建,包存储库已创建:
在运行时,按下 Ctrl + t 键会显示当前构建状态。poudriere 还会在 /poudriere/logs/bulk/jailname 中构建文件,这些文件可与 Web 服务器一起使用,用于显示构建信息。
完成后,新包现在可以从 poudriere 存储库进行安装。
有关使用 poudriere 的更多信息,请参阅 poudriere(8) 和主网站 https://github.com/freebsd/poudriere/wiki。
尽管可能同时使用自定义存储库和官方存储库,但有时禁用官方存储库会很有用。这可以通过创建覆盖并禁用官方配置文件的配置文件来完成。创建一个包含以下内容的 /usr/local/etc/pkg/repos/FreeBSD.conf :
通常,最容易将 poudriere 存储库通过 HTTP 服务提供给客户机。设置一个 Web 服务器来提供软件包目录,例如: /usr/local/poudriere/data/packages/13amd64,其中 13amd64 是构建的名称。
如果不希望将软件包存储库暴露到互联网上,可以使用 file:// 协议直接指向存储库:
。
。
分区 | 惯例 |
---|---|
驱动器类型 | 驱动器设备名称 |
---|---|
名字 | 意义 |
---|---|
选项 | 字母 | 代表 |
---|---|---|
如果软件包存储库的网址是: ,那么 /usr/local/etc/pkg/repos/custom.conf 中的存储库配置文件将如下所示:
a
通常包含根文件系统。
b
通常包含交换空间。
c
通常与包围的切片大小相同。这能让需要处理整个切片的实用程序(例如坏块扫描程序)在 c 分区上工作。文件系统通常不会在此分区上创建。
d
分区 d 以前具有特殊含义,尽管现在已经消失,d 可能像其他普通分区一样工作。
SATA 和 IDE 硬盘驱动器
ada
SCSI 硬盘驱动器和 USB 存储设备
da
NVMe 存储
nvd 或 nda
SATA 和 IDE 光盘驱动器
cd
SCSI CD-ROM 驱动器
cd
软盘
fd
SCSI 磁带驱动器
sa
RAID 驱动器
示例包括 Adaptec® AdvancedRAID 的 aacd,Mylex® 的 mlxd 和 mlyd,AMI MegaRAID® 的 amrd,Compaq Smart RAID 的 idad,3ware® RAID 的 twed。
ada0s1a
第一个切片上的第一个分区( a )位于第一个 SATA 磁盘( ada0 )上的第一个位置( s1 )。
da1s2e
第二个 SCSI 硬盘的第二个切片( s2 )上的第五个分区( e )。
/
文件系统的根目录。
/bin/
对单用户和多用户环境都至关重要的用户实用程序。
/boot/
操作系统引导过程中使用的程序和配置文件。
/boot/defaults/
默认引导配置文件。有关详细信息,请参阅 loader.conf(5)。
/dev/
由 devfs(5)管理的设备特殊文件。
/etc/
系统配置文件和脚本。
/etc/defaults/
默认系统配置文件。有关详细信息,请参考 rc(8)。
/etc/periodic/
通过 cron(8) 每日、每周和每月运行的脚本。有关详细信息,请参考 periodic(8)。
/lib/
Critical system libraries needed for binaries in /bin
and /sbin
/libexec/
Critical system files
/media/
Contains subdirectories to be used as mount points for removable media such as CDs, USB drives, and floppy disks
/mnt/
通常由系统管理员用作临时挂载点的空目录。
/net/
自动挂载的 NFS 共享;参见 automaster(5)。
/proc/
进程文件系统。有关详细信息,请参阅 procfs(5),mountprocfs(8)。
/rescue/
在 rescue(8)中说明的用于紧急恢复的静态链接程序。
/root/
root 账户的主目录。
/sbin/
对单用户和多用户环境都至关重要的系统程序和管理实用程序。
/tmp/
临时文件,通常不会在系统重启时保留。通常在 /tmp 挂载一个基于内存的文件系统。这可以使用 rc.conf(5) 中与 tmpmfs 相关的变量自动化完成,或者在 /etc/fstab 中添加一个条目;有关详细信息,请参阅 mdmfs(8)。
/usr/
大多数用户实用程序和应用程序。
/usr/bin/
常用实用程序,编程工具和应用程序。
/usr/include/
标准的 C 头文件。
/usr/lib/
存档库。
/usr/libdata/
杂项实用数据文件。
/usr/libexec/
系统守护进程和被其他程序执行的系统实用程序。
/usr/local/
本地可执行文件和库。同样用作 FreeBSD ports框架的默认目标。在 /usr/local 中,应使用由 hier(7)为 /usr 勾画的一般布局。例外是 man 目录,它直接位于 /usr/local 而不是 /usr/local/share 下,而ports文档位于 share/doc/port 中。
/usr/ports/
FreeBSD ports (可选)。
/usr/sbin/
用户执行的系统守护程序和系统实用程序。
/usr/share/
与架构无关的文件。
/usr/src/
BSD 和/或本地源文件。
/var/
多用途日志,临时,瞬态和卷绕文件。
/var/log/
杂项系统日志文件。
/var/tmp/
通常会在系统重启后保留的临时文件。
0
无读取、无写入、无执行
---
1
无读取、无写入、执行
--x
2
无读取、写入、无执行
-w-
3
无读取、写入、执行
-wx
4
读取、无写入、无执行
r--
5
读取、无写入、执行
r-x
6
读取、写入、无执行
rw-
7
读取、写入、执行
rwx
(谁)
你
用户
(谁)
g
组所有者
(谁)
o
其他
(谁)
一个
所有(“世界”)
(动作)
+
添加权限
(操作)
-
删除权限
(操作)
=
明确设置权限
(权限)
r
读
(权限)
w
写
(权限)
xt: x
执行
(权限)
text: t
粘滞位
(权限)
s
设置 UID 或 GID
在安装应用程序之前,请检查 https://vuxml.freebsd.org/ 以查看相关的安全问题。 对已安装的软件包进行已知漏洞的审计,请运行 pkg audit -F。
USER
当前登录用户的名称。
PATH
以冒号分隔的目录列表,用于搜索二进制文件。
DISPLAY
连接到的 Xorg 显示器的网络名称,如果可用。
SHELL
当前的 Shell。
TERM
用户终端类型的名称。用于确定终端的功能。
TERMCAP
执行各种终端功能的终端转义码的数据库条目。
OSTYPE
操作系统的类型。
MACHTYPE
系统的 CPU 架构。
EDITOR
用户首选的文本编辑器。
PAGER
用户首选的逐页查看文本的实用程序。
MANPATH
用于搜索手册页面的目录的冒号分隔列表。
Xorg 的默认字体对于典型的桌面开发应用来说并不理想。大号的演示字体显示得很不清晰,不够专业,而小号的字体几乎完全没有可读性。然而,有几款免费的高质量 Type1(PostScript®)字体可供 Xorg 随时使用。
URW 字体(x11-fonts/urwfonts)包括标准 Type1 字体(Times Roman™,Helvetica™,Palatino™ 等)的高质量版本。Freefonts (x11-fonts/freefonts)包含更多字体,但其中大多数是为图形软件(如 Gimp)使用而设计的,并不完整到足以用作屏幕字体。此外,Xorg 可以很容易地配置为使用 TrueType® 字体。有关更多详情,请参阅 X(7) 手册页面或 TrueType® 字体。
要安装上述 Type1 字体的二进制软件包,请运行以下命令:
同样,对于 freefont 或其他也是一样。要让 X 服务器检测这些字体,请向 X 服务器配置文件(/usr/local/etc/X11/xorg.conf.d/90-fonts.conf)添加一行适当的内容,内容如下:
或者,在 X 会话的命令行中运行:
这将起作用,但在关闭 X 会话时将会丢失,除非将其添加到启动文件(/.xinitrc 适用于正常 startx 会话,或者在像 XDM 这样的图形登录管理器登录时为/.xsession)。第三种方法是使用新的/usr/local/etc/fonts/local.conf,如《抗锯齿字体》所示。
Xorg 内置支持呈现 TrueType®字体。有两个不同的模块可以启用此功能。在此示例中使用 freetype 模块,因为它与其他字体呈现后端更一致。要启用 freetype 模块,只需将以下行添加到/usr/local/etc/X11/xorg.conf.d/90-fonts.conf 的 "Module" 部分。
现在为 TrueType®字体创建一个目录(例如,/usr/local/share/fonts/TrueType),并将所有 TrueType®字体复制到此目录。请记住,TrueType®字体不能直接从 Apple® Mac®中获取;它们必须以 UNIX®/MS-DOS®/Windows®格式供 Xorg 使用。若文件被复制到此目录中,请使用 mkfontscale 创建一个 fonts.dir,以便 X 字体呈现器知道这些新文件已被安装。mkfontscale 可以作为一个软件包安装:
然后在目录中创建 X 字体文件的索引:
现在将 TrueType® 目录添加到字体路径中。这与 Type1 字体中说明的内容完全相同:
或者在 xorg.conf 中添加 FontPath 行。
Gimp、LibreOffice 和所有其他 X 应用程序现在应该能够识别已安装的 TrueType® 字体。现在,在高分辨率显示器上的文本(如网页上的文本)和在 LibreOffice 中的极大字体将会看起来好得多。
Xorg 中的所有字体,位于 /usr/local/share/fonts/ 和 ~/.fonts/ 中的字体,都会自动提供给支持 Xft 的应用程序进行抗锯齿处理。大多数最新的应用程序都支持 Xft,包括 KDE、GNOME 和 Firefox。
控制反锯齿哪些字体,或配置反锯齿属性,请创建(如果尚不存在则编辑)文件 /usr/local/etc/fonts/local.conf。可以使用此文件调整 Xft 字体系统的几个高级功能;本节仅介绍一些简单可能性。有关更多详细信息,请参阅 fonts-conf(5)。
此文件必须为 XML 格式。要注意大小写,并确保所有标签正确闭合。文件以通常的 XML 标头开头,后跟一个 DOCTYPE 定义,然后是 <fontconfig>
标签:
如前所述,/usr/local/share/fonts/ 中的所有字体以及 ~/.fonts/ 中的字体都已提供给支持 Xft 的应用程序。要添加到这两个目录树之外的另一个目录,请向 /usr/local/etc/fonts/local.conf 添加类似以下行:
添加新字体,特别是新字体目录后,重新生成字体缓存:
抗锯齿会使边框略显模糊,这使得非常小的文本更易读,并移除大文本的“阶梯”,但如果应用于普通文本可能会导致眼部疲劳。要从抗锯齿中排除小于 14 磅的字体大小,请包含以下行:
某些等宽字体的间距在抗锯齿下可能不合适。这似乎是 KDE 的一个问题。一个可能的修复方法是强制使这些字体的间距为 100。添加以下内容:
(这别名为 "mono" 的固定字体)并且添加:
某些字体,比如 Helvetica,在抗锯齿时可能会出现问题。通常表现为字体在垂直方向被切成两半。最糟糕的情况下可能导致应用程序崩溃。为了避免这种情况,考虑在 local.conf 中添加以下内容:
在编辑 local.conf 后,请确保以 标签结尾。如果不这样做,将导致更改被忽略。
用户可以通过创建自己的 ~/.config/fontconfig/fonts.conf 文件来添加个性化设置。该文件使用上述相同的 XML 格式。
最后一点:对于液晶屏幕,可能需要进行亚像素抽样。基本上是分别处理(水平分离的)红、绿和蓝色分量,以提高水平分辨率;结果可能会很惊人。要启用此功能,请在 local.conf 的某处添加以下行:
有关如何在 FreeBSD 上安装和配置字体的更多信息,请阅读文章《字体和 FreeBSD》。
Xorg 支持大多数常见的显卡卡、键盘和指向设备。
Xorg 在多个目录中查找配置文件。在 FreeBSD 上,/usr/local/etc/X11/ 是这些文件的推荐目录。使用这个目录有助于将应用文件与操作系统文件保持分开。
使用每个配置特定设置的多个文件比传统的单个 xorg.conf 更容易。这些文件存储在 /usr/local/etc/X11/xorg.conf.d/ 子目录中。
显卡的驱动程序可以在/usr/local/etc/X11/xorg.conf.d/目录中指定。
要在配置文件中配置 Intel®驱动程序:
例 14。在文件中选择 Intel®视频驱动程序
/usr/local/etc/X11/xorg.conf.d/20-intel.conf
要在配置文件中配置 AMD®驱动程序:
例 15。在文件中选择 AMD®视频驱动程序
/usr/local/etc/X11/xorg.conf.d/20-radeon.conf
要在配置文件中配置 NVIDIA®驱动程序:
例 16。在文件中选择 NVIDIA®视频驱动程序
/usr/local/etc/X11/xorg.conf.d/20-nvidia.conf
配置 VESA 驱动程序的配置文件:
示例 17. 在文件中选择 VESA 视频驱动程序
/usr/local/etc/X11/xorg.conf.d/20-vesa.conf
配置 SCFB 驱动程序在配置文件中:
示例 18. 在文件中选择 SCFB 视频驱动程序
/usr/local/etc/X11/xorg.conf.d/20-scfb.conf
配置多个视频卡,可以添加 BusID。执行以下命令可以显示视频卡总线 ID 的列表:
输出应类似于以下内容:
示例 19.在文件中选择 Intel®视频驱动程序和 NVIDIA®视频驱动程序
/usr/local/etc/X11/xorg.conf.d/20-drivers.conf
几乎所有显示器都支持扩展显示识别数据标准 ( EDID )。Xorg 使用 EDID 与显示器通信,以侦测支持的分辨率和刷新率。然后它选择与该显示器一起使用的最合适的设置组合。
显示器支持的其他分辨率可通过将所需分辨率设置在配置文件中或在启动 X 服务器后使用 xrandr(1) 选择。
5.4.4.1. 使用 RandR(重新调整和旋转)
运行 xrandr(1) 而不带任何参数以查看视频输出和检测到的显示器模式列表:
输出应该类似于以下内容:
这表明 VGA-1 输出被用来显示分辨率为 1280x960 像素,刷新率约为 60 Hz 的屏幕。LVDS-1 用作辅助显示器,显示分辨率为 1280x800 像素,刷新率约为 60 Hz。显示器未连接到 HDMI-1,HDMI-2,DP-1,DP-2 和 DP-3 连接器。
任何其他显示模式均可通过 xrandr(1)选择。例如,要切换到 1280x1024,60 Hz:
使用 Xorg 配置文件 5.4.4.2。
显示器配置也可以在配置文件中设置。
在配置文件中设置屏幕分辨率为 1024x768。
示例 20。在文件中设置屏幕分辨率
/usr/local/etc/X11/xorg.conf.d/10-monitor.conf
Xorg 通过 x11/libinput 支持绝大部分输入设备。
例如,要配置键盘布局:
例 21. 设置键盘布局
/usr/local/etc/X11/xorg.conf.d/00-keyboard.conf
使用 bsdinstall 安装 FreeBSD 时,并不会自动安装图形用户界面。本章撰写了如何选择、安装和配置 Wayland 混成器,从而提供图形化环境。
读本章之前,你应该:
知道如何安装额外的第三方软件。
如何识别和配置显卡的驱动程序。
阅读完本章后,你将会了解:
如何配置 FreeBSD 以托管 Wayland 图形环境。
如何安装和配置 Wayland 混成器。
如何运行为较老的 X Window 系统设计的程序。
如何配置远程桌面访问 Wayland 图形环境。
Hikari 混成器使用围绕生产力的几个概念,例如 sheets,工作区等。从这个角度来看,它类似于平铺式窗口管理器。具体来说,混成器从单个工作区开始,类似于虚拟桌面。Hikari 使用单个工作区或虚拟桌面进行用户交互。工作空间由几个视图组成,这些视图是混成器中作为 sheets 或 groups 分组的工作窗口。sheets 和 groups 都由一系列视图组成;再次强调,这些窗口被分组在一起。在 sheets 或 groups 之间切换时,活跃的 sheet 或 group 将集体成为工作空间。手册页面将进一步解释每个功能的信息,但在本文档中,请考虑单个工作区使用单个 sheet。Hikari 安装将包括一个单一包,x11-wm/hikari,和一个终端模拟器 alacritty :
Hikari 使用一个配置文件,hikari.conf,该文件可以放在 XDG_RUNTIME_DIR 中,也可以在启动时使用 -c 参数指定。不需要自动启动配置文件,但可能会使迁移到这个混成器更容易一些。开始配置是创建 Hikari 配置目录并复制配置文件进行编辑:
配置分为各种部分,如 ui、outputs、layouts 等。对于大多数用户,默认设置将运行良好;但是,应该进行一些重要的更改。例如,$TERMINAL 变量通常未在用户环境中设置。更改此变量或修改 hikari.conf 文件如下:
使用绑定的按键按下将启动 alacritty 终端。在阅读配置文件时,应注意使用大写字母来为用户映射键。例如,用于启动终端的 L 键 L+Return 实际上是先前讨论过的超级键或 Windows 徽标键。因此,按住 L/super/Windows 键并按回车键将使用默认配置打开指定的终端模拟器。将其他键映射到应用程序需要创建操作定义。为此,动作项应列在 actions 段中,例如:
然后,可以在键盘段下映射一个动作,该键盘段在绑定段中定义:
在重启 Hikari 后,按住 Windows 徽标按钮并在键盘上按下 b 键将启动 Web 浏览器。混成器没有菜单栏,建议用户在迁移之前至少设置一个终端模拟器。手册页面包含大量文档,应在执行完整迁移之前阅读。关于 Hikari 的另一个积极方面是,在迁移到混成器时,Hikari 可以在 Plasma 和 GNOME 桌面环境中启动,能让在完全迁移之前进行试用。
在 Hikari 中锁定屏幕很容易,因为默认的 pam.d 配置文件和解锁实用程序已与软件包捆绑在一起。锁定屏幕的键绑定为 L(Windows 徽标键)+ Shift + Backspace。值得注意的是,所有未标记为公共的视图将被隐藏。这些视图在锁定时将不接受输入,但请注意敏感信息可能会可见。对于一些用户来说,可能更容易迁移到其他屏幕锁定实用程序,比如本节讨论的 swaylock-effects。要启动 Hikari,请使用以下命令:
Wayland 是一个新的显示服务器,但它与 Xorg 在几个重要方面有所不同。首先,Wayland 只是一个协议,作为客户端之间的中介,使用不同的机制,这消除了对 X 服务器的依赖。Xorg 包括了 X11 协议,用于运行远程显示,X 服务器将接受连接并显示窗口。在 Wayland 下,由混成器和窗口管理器提供显示服务器,而不是传统的 X 服务器。
由于 Wayland 不是 X 服务器,传统的 X 屏幕连接(如 VNC 或 RDP)将需要使用其他方法来进行远程桌面管理。其次,Wayland 可以将客户端与混成器之间的复合通信作为一个单独的实体进行管理,不需要支持 X 协议。
Wayland 相对较新,还没有更新所有软件以在没有 Xwayland 支持的情况下本地运行。因为 Wayland 不提供 X 服务器,并期望复合器提供该支持,尚不支持 Wayland 的 X11 窗口管理器将要求以 -rootless 参数不启动 Xwayland。去除 -rootless 参数将恢复对 X11 窗口管理器的支持。
目前,许多软件在 Wayland 上都可以正常运行,包括 Firefox。此外,还有一些可用的桌面环境,比如 Compiz Fusion 的替代品 Wayfire 和 i3 窗口管理器的替代品 Sway。
对于混成器,必须存在支持 evdev(4)驱动程序的内核才能利用快捷键功能。这是默认内建在通用内核中的;但是,如果它已经被定制并且 evdev(4)支持被剥离,evdev(4)模块将需要被加载。另外,Wayland 的用户需要是 video 组的成员。要快速进行这一更改,请使用 pw 命令:
安装 Wayland 很简单;协议本身并不需要太多配置。大部分的组合将取决于所选择的混成器。通过现在安装 seatd,作为混成器安装和配置的一部分,跳过了一个步骤,因为 seatd 需要为某些设备提供非 root 访问。
这里说明的所有混成器应该与图形/drm-kmod 开源驱动程序一起工作;然而,NVIDIA®显卡卡在使用专有驱动程序时可能会出现问题。首先安装以下软件包:
若协议和支持软件包安装完毕,混成器必须创建用户界面。后面的几节将涉及几个使用 Wayland 的混成器。所有使用 Wayland 的混成器都需要在环境中定义一个运行目录,这可以通过在 Bourne shell 中使用以下命令来实现:
注意:大多数混成器将在 XDG_RUNTIME_DIR 目录中搜索配置文件。在这里包含的示例中,将使用一个参数来指定配置文件在 ~/.config 中,以保持临时文件和配置文件分开。建议为每个混成器配置一个别名,以加载指定的配置文件。
seatd 守护程序可帮助管理对非根用户在混成器中共享系统设备的访问权限;这包括显卡。对于传统的 X11 管理器,不需要 seatd,比如 Plasma 和 GNOME,但是对于这里讨论的 Wayland 混成器,需要在系统中启用它并在启动混成器环境之前运行。要立即启用并启动 seatd 守护程序,并将其纳入系统初始化:
之后,需要安装一个类似于 X11 桌面的排版器,用于 GUI 环境。这里讨论了三种,包括基本配置选项、设置屏幕锁定以及更多信息的建议。
Wayfire 是一个旨在轻量化和可定制的混成器。它具有多种功能,并且从之前发布的 Compiz Fusion 桌面中带回了几个元素。所有部分在现代硬件上看起来都很美观。要启动和运行 Wayfire,请首先安装所需的软件包:
alacritty 软件包提供了一个终端模拟器。但完全不需要,因为已经测试并验证了其他终端模拟器,比如 kitty 和 XFCE-4 Terminal 在 Wayfire 混成器下可以工作。Wayfire 配置相对简单;它使用一个文件,应该查看任何自定义。要开始,请复制示例文件到运行时环境配置目录,然后编辑文件:
对于大多数用户来说,默认设置应该就可以。在配置文件中,像著名的 cube 这样的项目是预先配置的,并且有帮助可用设置的说明。一些需要注意的主要设置包括:
在这个例子中,从配置文件中,屏幕输出应该是列出的模式在列出的赫兹下。例如,模式应设置为 widthxheight@refresh_rate。位置将输出放置在指定的像素位置上。对于大多数用户来说,默认设置应该很好。最后,transform 设置一个背景变换,scale 将输出按指定比例因子进行缩放。这些选项的默认设置通常是可以接受的;有关更多信息,请参阅文档。
正如所提到的,Wayland 是新的,不是所有的应用程序都支持这个协议。目前,sddm 似乎不支持在 Wayland 中启动和管理混成器。在这些示例中,取而代之的是 swaylock 实用程序。配置文件包含运行 swayidle 和 swaylock 的选项,用于屏幕的空闲和锁定。
在系统空闲时定义要采取的操作的选项如下所示:
锁定超时是使用以下行配置的:
第一个选项将在 300 秒后锁定屏幕,再过 300 秒,屏幕将通过 dpms_timeout 选项关闭。
最后需要注意的一点是键位。大多数配置都提到了这个键位,它是键盘上传统的 Windows 键。大多数键盘都有这个 Win 键;但是,如果没有,应该在此配置文件中重新映射它。例如,要锁定屏幕,请按住 Win 键、Shift 键,然后按 Esc 键。除非映射已更改,否则这将执行 swaylock 应用程序。swaylock 的默认配置将显示灰屏;但是,该应用程序可以高度定制,并且有很好的文档。此外,由于安装的是 swaylock-effects 版本,有几个选项可用,比如模糊效果,可以使用以下命令查看:
还有一个 --clock 参数,将在锁定屏幕上显示带有日期和时间的时钟。安装 x11/swaylock-effects 时,包含了默认的 pam.d 配置。它提供了适合大多数用户的默认选项。更高级的选项可用;有关更多信息,请参阅 PAM 文档。
在这一点上,是时候测试 Wayfire,看看它是否可以在系统上启动。只需键入以下命令:
现在混成器应该启动并显示屏幕顶部的背景图片和菜单栏。Wayfire 将尝试列出桌面上安装的兼容应用程序,并在此下拉菜单中展示它们;例如,如果安装了 XFCE-4 文件管理器,它将显示在此下拉菜单中。如果特定应用程序是兼容的并且对于键盘快捷键非常有价值,可以使用 wayfire.ini 配置文件将其映射到键盘序列。Wayfire 还有一个名为 Wayfire 配置管理器的配置工具。它位于下拉菜单栏中,但也可以通过在终端中发出以下命令来启动:
可以通过该应用程序启用、禁用或配置各种 Wayfire 配置选项,包括合成特效。此外,为了获得更加用户友好的体验,可以在配置文件中启用背景管理器、面板和停靠应用程序。
最后,在 wayfire.ini 中列出的默认启动器是 x11/wf-shell,用户可以根据需要替换为其他面板。
在 FreeBSD 上,可以把 Xorg 当成一个软件来包来安装。
二进制元包安装速度快,但参数较少,且无法自定义:
这些安装方式中的任一种都会安装完整的 Xorg 系统。
当前用户必须是 video 组的成员。要将用户添加到 video 组,请执行以下命令:
Sway 混成器是一种平铺式混成器,旨在取代 i3 窗口管理器。它应该可以与用户当前的 i3 配置一起工作;但是,新功能可能需要一些额外的设置。在即将介绍的示例中,将假定进行全新安装,而不迁移任何 i3 配置。要安装 Sway 和有价值的组件,请以 root 用户身份执行以下命令:
为了基本配置文件,执行以下命令,然后在复制后编辑配置文件:
基本配置文件有许多默认值,对于大多数用户来说,这将是很好的。应该进行几个重要的更改,如下所示:
在前面的示例中,加载了 evdev(4) 事件的 xkb 规则,并将 $mod 键设置为用于快捷键的 Windows 徽标键。接下来,终端模拟器被设置为 alacritty,并定义了一个屏幕锁定命令;稍后将详细介绍这些内容。还告知输出关键字、模式、位置、背景壁纸以及要求 Sway 拉伸此壁纸以填充屏幕。最后,设置 swaylock 以将进程变为守护进程并在超时后锁定屏幕,将屏幕或监视器在 600 秒后置于睡眠模式。还在此定义了 000000 的锁定背景颜色,即黑色。使用 swaylock-effects,也可以通过 --clock 参数显示时钟。查看手册页以获取更多选项。还应该查阅 sway-output(5) 手册页;它包含大量关于自定义可用输出选项的信息。
当在 Sway 中时,要打开应用程序菜单,请按住 Windows 徽标键(mod)并按下 d 键。可以使用键盘上的箭头键导航菜单。还有一种方法可以操作栏的布局并添加托盘;请阅读 sway-bar(5)手册页面了解更多信息。默认配置会在右上角添加日期和时间。请参阅配置文件中的 Bar 节以查看示例。默认情况下,配置不包括锁定屏幕,除非像上面的示例一样启用锁定计时器。要创建锁定键绑定,需要将以下行添加到 Key bindings 部分:
现在可以使用按住 Windows 徽标键,同时按住 Shift 键,最后按回车来锁定屏幕。当安装 Sway 时,无论是从软件包还是 FreeBSD ports 安装,都会安装一个默认的 pam.d 文件。默认配置对大多数用户应该是可以接受的,但也有更高级的选项。请阅读 PAM 文档了解更多信息。
最后,要退出 Sway 并返回shell,请按住 Windows 徽标键、Shift,并按下按键 e。将显示一个提示,询问是否要退出 Sway。在迁移期间,可以通过 X11 桌面上的终端模拟器(如 Plasma)启动 Sway。这使得在完全迁移到这个混成器之前测试不同的修改和快捷键更加容易。要启动 Sway,请执行以下命令:
在本文档早些时候指出,Wayland 不提供与 Xorg 提供的相同的 X 服务器样式访问。但用户可以自由选择远程桌面协议,如 RDP 和 VNC。FreeBSD Ports 包含了 wayvnc,可以支持基于 wlroots 的复合器,如本文中讨论的那些复合器。可以使用以下方式安装此应用程序:
与其他软件包不同,wayvnc 不自带配置文件。幸运的是,手册中记录了重要参数,它们可以被推导成一个简单的配置文件:
需要生成关键文件,并强烈建议用于增加连接的安全性。当调用时,wayvnc 将在 ~/.config/wayvnc/config 中搜索配置文件。在启动服务器时,可以使用 -C configuration_file 选项覆盖此文件。因此,要启动 wayvnc 服务器,请执行以下命令:
下表显示了 FreeBSD 支持的不同显卡,应安装的软件包以及相应的模块。
第 7 表 显卡列表
品牌 | 类型 | 软件包 | 模块 |
---|---|---|---|
以下命令可用于识别系统中安装的显卡:
输出应类似于以下内容:
输出应类似于以下内容:
英特尔®显卡指的是集成在与英特尔® CPU 同一芯片上的显卡芯片类别。维基百科提供了关于英特尔 HD Graphics 世代变化和名称使用的良好概述。
软件包graphics/drm-kmod 间接提供了一系列用于英特尔®显卡配套使用的内核模块。可以通过执行以下命令安装英特尔®驱动程序:
然后将模块添加到 /etc/rc.conf 文件中,执行以下命令:
软件包 graphics/drm-kmod 间接了提供一系列与 AMD®显卡配合使用的内核模块。可以使用模块 amdgpu 和 radeonkms,具体取决于硬件的世代。FreeBSD 项目维护着一个 AMD 显卡支持矩阵,以确定必须使用哪个驱动程序。
可以通过执行以下命令来安装 AMD®驱动程序:
对于后-HD7000 或 Tahiti 显卡,在 /etc/rc.conf 文件中添加模块,执行以下命令:
对于旧的显卡(前-HD7000 或前-Tahiti),在 /etc/rc.conf 文件中添加模块,执行以下命令:
FreeBSD 支持专有 NVIDIA®驱动程序的不同版本。使用更新的显卡的用户应安装 x11/nvidia-driver 软件包。那些使用旧显卡的用户需要查看下面哪个版本支持它们。
NVIDIA®驱动程序的支持版本
表格 8.
最新的 NVIDIA® 驱动程序可通过运行以下命令进行安装:
然后将该模块添加到 /etc/rc.conf 文件中,执行以下命令:
虽然已有了好几个登录管理器,并且其他的也正在逐渐迁移到 Wayland,其中一个选择是 x11/ly 文本用户界面(TUI)管理器。需要最小配置,ly 将通过在系统初始化时显示登录窗口来启动 Sway,Wayfire 和其他应用程序。要安装 ly,请执行以下命令:
将会出现一些配置提示,导入步骤是将以下行添加到 /etc/gettytab 中:
然后修改 /etc/ttys 中的 ttyv1 行以匹配以下行:
系统重启后,会出现登录界面。要配置特定设置(如语言),请编辑 /usr/local/etc/ly/config.ini。至少,此文件应具有之前在 /etc/ttys 中指定的终端号。
当登录窗口出现时,使用左右箭头键将在不同支持的窗口管理器之间切换。
建立有线和无线连接是 FreeBSD 用户的常见任务。本节将展示如何识别有线和无线网络适配器以及如何配置它们。
在开始配置之前,有必要了解以下网络数据:
如果网络有 DHCP
如果网络没有 DHCP,则需使用静态 IP
网络掩码
默认网关的 IP 地址
FreeBSD 支持各种有线和无线网络适配器。查看所用 FreeBSD 发行版的硬件兼容性列表,看看该网络适配器是否受支持。
要获取系统使用的网络适配器,请执行以下命令:
输出应类似于以下内容:
“@
” 符号之前的文本是控制设备的驱动程序的名称。在这种情况下,这些是 em(4)和 iwn(4)。
或者,在启动时将驱动程序作为模块加载,将以下行放入/boot/loader.conf 中:
大多数无线网络都基于 IEEE® 802.11 标准。
FreeBSD 支持使用 802.11a、802.11b、802.11g 和 802.11n 运行的网络。
一个基本的无线网络由多个站点组成,这些站点使用在 2.4GHz 或 5GHz 频段广播的无线电进行通信,尽管这根据地区而异,并且也在变化中,以实现在 2.3GHz 和 4.9GHz 频段的通信。
配置无线网络有三个基本步骤:
扫描并选择接入点
对站点进行身份验证
配置 IP 地址或使用 DHCP。
以下各节讨论每个步骤。
连接 FreeBSD 到现有无线网络是一种非常常见的情况。
这个过程显示所需的步骤:
第一步将是从网络管理员获取该无线网络的 SSID(服务集标识)和 PSK(预共享密钥)。
第二步是将此网络添加到 /etc/wpa_supplicant.conf 的条目中。如果文件不存在,请创建之:
无线网络的 SSID。用无线网络的名称替换它。 |
---|
最后一步将是重启 netif 服务,执行以下命令:
第一步将是配置无线网络卡至一个接口。要找出系统中有哪些无线网络卡,请查看识别网络适配器部分。
要使更改持续到重启,执行以下命令:
要使设置持续下去,将其添加到 /etc/rc.conf 中:
可以使用 ifconfig(8)来扫描可用的无线网络。
要列出无线网络,请执行以下命令:
输出应类似于以下内容:
SSID / MESH ID 标识网络的名称。
BSSID 标识访问点的 MAC 地址。
CAPS 字段标识着每个网络的类型以及在那里操作的站点的功能(有关更多详细信息,请参见 ifconfig(8)中的 list scan 的定义)。
从扫描的网络列表中选择了无线网络之后,就需要执行连接和认证。在绝大多数的无线网络中,认证是通过在路由器中配置密码来完成的。其他方案要求在数据流量可以流动之前完成加密握手,可以使用预共享密钥或密码,也可以使用涉及后端服务(如 RADIUS)的更复杂方案。
7.4.4.1. 使用 WPA2/WPA/Personal 进行身份验证
无线网络中的认证流程由 wpa_supplicant(8)管理。
wpa_supplicant(8)的配置将在/etc/wpa_supplicant.conf 文件中进行。更多信息,请参阅 wpa_supplicant.conf(5)。
扫描无线网络,选择接入拥有密码(PSK)的网络,该信息将被添加到文件/etc/wpa_supplicant.conf 中,如下例所示:
下一步将是在文件 /etc/rc.conf 中配置无线连接。
要使用静态地址,需要执行以下命令:
使用动态地址需要执行以下命令:
然后执行以下命令重启网络:
7.4.4.2. 使用开放网络进行身份验证
完成无线网络扫描并选择了无线网络的 SSID后,执行以下命令:
然后执行 dhclient(8)获取配置的地址:
有线连接提供更好的性能和可靠性,而无线连接提供灵活性和移动性。笔记本电脑用户通常希望在这两种连接类型之间无缝漫游。
在 FreeBSD 上,可以以“故障转移”方式将两个甚至更多的网络接口组合在一起。这种类型的配置使用一组网络接口中最优先和可用的连接,并在链接状态发生变化时,操作系统会自动切换。
链路聚合和故障转移在链路聚合和故障转移中进行了介绍,并提供了一个关于使用有线和无线连接的故障转移模式示例。
在安装 Wayland 时,应该已安装了 Xwayland 二进制文件,除非 Wayland 是在没有 X11 支持的情况下构建的。如果没有 /usr/local/bin/Xwayland 这个文件,请使用以下命令进行安装:
Xwayland 安装完成后,在所选混成器中进行配置。对于 Wayfire,wayfire.ini 文件中需要以下行:
对于 Sway 混成器,默认情况下应该启用 Xwayland。即便如此,建议在~/.config/sway/config 中手动添加一个配置行,如下所示:
最后,对于 Hikari,不需要任何修改。支持 Xwayland 默认已构建。要禁用此功能,请从 ports 重新构建软件包并在那时禁用 Xwayland 支持。
进行这些更改后,通过命令行启动混成器,并从快捷键启动终端。在此终端中,发出 env 命令并搜索 DISPLAY 变量。如果混成器能够正确启动 Xwayland X 服务器,则这些环境变量应该看起来类似于以下内容:
在此输出中,有一个默认的 Wayland 显示和为 Xwayland 服务器设置的显示。验证 Xwayland 是否正常工作的另一种方法是使用安装和测试小软件包:[x11/eyes] 并检查输出。如果 xeyes 应用程序启动并眼睛跟随鼠标指针,那么 Xwayland 就正常工作。如果显示类似于以下内容的错误,那么在 Xwayland 初始化期间发生了某些问题,可能需要重新安装:
对于一些混成器,比如 Wayfire,Xwayland 可能无法正常启动。因此,env 将显示有关 DISPLAY 环境变量的以下信息:
即使已经安装和配置了 Xwayfire,X11 应用程序也无法启动,会出现显示问题。为解决此问题,请验证是否已经有一个实例正在使用 UNIX 套接字的 Xwayland。首先,检查从 sockstat 输出的内容,并搜索 X11-unix:
应该有类似以下信息:
这表明存在一个 X11 套接字。可以通过在运行在混成器下的终端模拟器中手动尝试执行 Xwayland 来进一步验证这一点:
如果已经存在一个 X11 套接字,将向用户呈现以下错误:
由于存在一个活动的 X 显示器,使用显示为 0,环境变量只是设置不正确,要修正这个问题,将 DISPLAY 环境变量更改为 :0,然后尝试再次执行应用程序。以下示例使用 mail/claws-mail 作为需要 Xwayland 服务的应用程序:
修改后,程序 mail/claws-mail 现在应该开始使用 Xwayland 并正常运行。
Wayland 的一个有用的工具是 waybar,所有的混成器都能用。虽然 Wayfire 也带有一个启动菜单,但易于使用和快速的任务栏对于所有混成器和桌面管理器来说都是一个好的附件。waybar是一个快速且易于配置的 Wayland 兼容任务栏。要安装该软件包和一个支持音频控制的实用程序,请输入以下命令:
创建配置目录并复制默认配置文件,请执行以下命令:
实用程序lavalauncher 为各种应用程序提供了启动栏。软件包中没有提供示例配置文件,因此必须执行以下操作:
仅包含 Firefox 并放在右侧的示例配置文件如下:
如加载了正确的驱动程序,就需要配置网络适配器。FreeBSD 使用驱动程序名称后跟一个单元编号来命名网络接口适配器。单元编号表示在引导时检测适配器的顺序,或者稍后被发现的顺序。
例如, em0 是系统上使用 em(4) 驱动程序的第一块网卡 (NIC)。
要显示网络接口配置,请输入以下命令:
输出应类似于以下内容:
在这个例子中,显示了以下设备:
em0 :以太网接口。
lo0 :环回接口是一个软件环回机制,可用于性能分析、软件测试/本地通信。有关更多信息,请参阅 lo(4)。
这个例子表示 em0 正在运行。
关键参数是:
UP 表示界面已配置准备就绪。
接口具有 IPv4 互联网 ( inet ) 地址,192.168.1.19。
接口具有 IPv6 互联网 ( inet6 ) 地址,fe80::21f:16ff:fe0f:275a%em0。
它有一个有效的子网掩码 ( netmask ),其中 0xffffff00 与 255.255.255.0 相同。
它具有有效的广播地址, 192.168.1.255。
接口的 MAC 地址( ether )是 00:1f:16:0f:27:5a。
物理媒体选择处于自动选择模式( media: Ethernet autoselect (1000baseT ) )。
连接( status )的状态为 active,表示检测到载波信号。对于 em0,当未插入以太网电缆时,status: no carrier 状态正常。
如果 ifconfig(8)的输出显示类似于下一个输出,它表示接口尚未配置:
本节提供了在 FreeBSD 系统上配置静态 IPv4 地址的指南。
可以通过 ifconfig(8) 命令行配置网卡,但除非配置也添加到 /etc/rc.conf 中,否则在重启后不会保留。
IP 地址可以通过执行以下命令进行设置:
要使更改跨重启生效,请执行以下命令:
添加默认路由器执行以下命令:
将 DNS 记录添加到/etc/resolv.conf:
然后重启 netif 和 routing,执行以下命令:
可以使用 ping(8)来测试连接:
输出应该类似于以下内容:
如果网络有 DHCP 服务器,非常容易配置网络接口以使用 DHCP。FreeBSD 使用 dhclient(8)作为 DHCP 客户端。dhclient(8)将自动提供 IP、子网掩码和默认路由器。
使界面与 DHCP 配合工作,请执行以下命令:
dhclient(8)可以通过运行以下命令来手动使用:
输出应类似如下:
通过这种方式可以验证使用 DHCP 的地址分配是否正确。
然后重启 netif 执行以下命令:
可以使用 ping(8)来测试连接:
输出应该类似于以下内容:
IPv6 是众所周知的 IP 协议的新版本,也称为 IPv4。
IPv6 提供了许多优于 IPv4 以及许多新功能的优势:
其 128 位地址空间能让拥有 340,282,366,920,938,463,463,374,607,431,768,211,456 个地址。这解决了 IPv4 地址短缺和最终 IPv4 地址枯竭的问题。
路由器仅在其路由表中存储网络聚合地址,从而将路由表的平均空间减少到 8192 个条目。这解决了与 IPv4 相关的可伸缩性问题,IPv4 要求 Internet 路由器之间交换每个分配的 IPv4 地址块,导致它们的路由表变得太大,无法实现有效的路由。
地址自动配置 (RFC2462)。
强制组播地址。
内置 IPsec(IP 安全)。
简化的标头结构。
支持移动 IP。
IPv6 到 IPv4 的过渡机制。
FreeBSD 包含 KAME 项目 IPv6 参考实现,并配备了使用 IPv6 所需的一切。
本节重点介绍如何配置和运行 IPv6。
IPv6 地址有三种不同类型。
单播发送到单播地址的数据包将到达属于该地址的接口。
任播这些地址在语法上无法与单播地址区分,但它们寻址一组接口。发送到任播地址的数据包将到达最近的路由器接口。任播地址只被路由器使用。
多播这些地址标识一组接口。发送到多播地址的数据包将到达属于多播组的所有接口。IPv4 的广播地址通常为 xxx.xxx.xxx.255,在 IPv6 中通过多播地址来表示。
当阅读 IPv6 地址时,规范形式表示为 xxxx:x,其中每个 x 代表一个 16 位十六进制值。一个示例是 FEBC:A574:382B:23C1:AA49:4592:4EFE:9982。
通常,一个地址会有很长的全零子串。一个 :: (双冒号)可用于替换每个地址的一个子串。此外,每个十六进制值最多可以省略前三个领先的 0。例如,fe80::1 对应于规范形式 fe80:0000:0000:0000:0000:0000:0000:0001。
第三种形式是使用众所周知的 IPv4 表示法写入最后 32 位。例如,2002::10.0.0.1 对应于十六进制规范表示 2002:0000:0000:0000:0000:0000:0a00:0001,而这又等同于 2002::a00:1。
查看 FreeBSD 系统的 IPv6 地址,请执行以下命令:
输出应类似于以下内容:
在此示例中,em0 接口正在使用 fe80::21f:16ff:fe0f:275a%em0,这是一个自动从 MAC 地址生成的自动配置的链路本地地址。
一些 IPv6 地址是保留的。可以在以下表中查看保留地址的列表:
表 9. 示例 IPv6 保留地址
关于 IPv6 地址结构的进一步信息,请参阅 RFC3513。
要将 FreeBSD 系统配置为具有静态 IPv6 地址的 IPv6 客户端,需要设置 IPv6 地址。
执行以下命令以满足要求:
指定其地址来分配默认路由,请执行以下命令:
如果网络有 DHCP 服务器,则很容易配置网络接口以使用 DHCP。dhclient(8)将自动提供 IP、子网掩码和默认路由。
使界面在没有 DHCP 的情况下工作,请执行以下命令:
本节演示如何在 IPv6 路由器上设置 rtadvd(8)以广播 IPv6 网络前缀和默认路由。
启用 rtadvd(8),执行以下命令:
指定要执行 IPv6 路由器通告的接口非常重要。例如,告诉 rtadvd(8) 使用 em0 :
接下来,创建配置文件,/etc/rtadvd.conf,示例如下:
用 em0 替换要使用的接口,用 2001:db8:1f11:246:: 替换分配的前缀。
对于专用 /64 子网,无需更改其他内容。否则,将 prefixlen# 更改为正确的值。
当在服务器上启用 IPv6 时,可能需要启用 IPv4 映射的 IPv6 地址通信。这个兼容选项能让 IPv4 地址表示为 IPv6 地址。能让 IPv6 应用程序与 IPv4 通信,反之亦然,可能存在安全问题。
在大多数情况下可能不需要此选项,仅供兼容性使用。此选项将能让仅支持 IPv6 的应用程序与双栈环境中的 IPv4 一起工作。这对于可能不支持仅 IPv6 环境的第三方应用程序非常有用。
要启用此功能,请执行以下命令:
本章将深入探讨网络配置和性能,展示了 FreeBSD 操作系统强大的网络能力。无论是使用有线还是无线网络,本章都提供了在 FreeBSD 中配置和优化网络连接的全面指南。
在深入了解细节之前,读者最好对协议、网络接口和寻址等网络概念有一个基本的了解。
本章内容包括:
在 FreeBSD 中配置有线网络的能力,包括网络接口设置、寻址和自定义选项。
在 FreeBSD 中配置无线网络的技能,包括无线网络接口设置、安全协议和故障排除技术。
FreeBSD 的网络功能及其出色网络性能的声誉。
了解 FreeBSD 支持的各种网络服务和协议,以及 DNS、DHCP 等的配置说明。
有关如何在中进行高级网络配置的更多信息…
包 | 支持的硬件 |
---|---|
显示供应商的名称 |
---|
SSID 扫描技术。只有在网络隐藏时才需要使用此选项。 |
---|
IPv6 地址 | 前缀长度(位) | 说明 | 备注 |
---|
英特尔®
开源
drm
i915kms
AMD®
开源
drm
amdgpu 和 radeonkms
NVIDIA®
专有
nvidia-driver
nvidia 或 nvidia-modeset
VESA
开源
xf86-video-vesa
vesa
SCFB
开源
xf86-video-scfb
scfb
VirtualBox®
开源
虚拟盒-ose-添加
VirtualBox® OSE 添加包括 vboxvideo 驱动程序。
VMware®
开源
xf86-video-vmware
vmwgfx
x11/nvidia-driver-304
x11/nvidia-driver-340
x11/nvidia-driver-390
x11/nvidia-driver-470
x11/nvidia-driver
显示设备名称 |
网络名称。 |
无线网络的密码。 |
:: | 128 位 | 未指定 | 等同于 IPv4 中的 0.0.0.0。 |
::1 | 128 位 | 环回地址 | 等同于 IPv4 中的 127.0.0.1。 |
::00:xx:xx:xx:xx | 96 位 | 嵌入式 IPv4 | 低 32 位是对应的 IPv4 地址。 |
::ff:xx:xx:xx:xx | 96 位 | IPv4 映射的 IPv6 地址 | 对于不支持 IPv6 的主机,低 32 位是 IPv4 地址。 |
fe80::/10 | 10 位 | 链路本地 | 等同于 IPv4 中的 169.254.0.0/16。 |
fc00::/7 | 7 位 | 唯一本地 | 唯一本地地址用于本地通信,仅在一组合作站点内可路由。 |
ff00:: | 8 位 | 组播 |
2000::-3fff:: | 3 位 | 全局单播 | 所有全局单播地址都从该池中分配。前 3 位是 001。 |
无线网络的 PSK。用无线网络的密码替换它。 第三步将是添加网络条目以配置启动时的网络: |
在排除硬件和软件配置问题时,首先检查简单的事情。
网线插好了吗?
网络服务配置正确吗?
防火墙配置正确吗?
FreeBSD 支持该网卡吗?
路由器正常工作吗?
如果网卡正常工作,但性能不佳,请阅读优化(7)。同时,检查网络配置,因为错误的网络设置可能会导致连接速度变慢。
如果系统无法将数据包路由到目标主机,则会出现 No route to host 消息。如果没有指定默认路由或网线未连接,就可能会发生这种情况。检查 netstat -rn 的输出,并确保存在到主机的有效路由。如果没有,请阅读网关和路由。
错误消息ping: sendto: Permission denied 常常由错误配置的防火墙引起。如果在 FreeBSD 上启用了防火墙但没有定义规则,则默认策略是拒绝所有流量,甚至是 ping(8)。有关更多信息,请参阅防火墙。
本节介绍了一些步骤,以帮助排除常见的无线网络问题。
如果在扫描时未列出所需WiFi,请检查配置是否将无线设备限制在有限的一组信道上。
如果设备无法连接到WiFi,请验证配置是否与WiFi上的设置匹配。这包括认证方案和任何安全协议。尽量简化配置。如果使用诸如 WPA2 和 WPA 之类的安全协议,请为开放认证和无安全性配置WiFi,以查看是否可以传输流量。
如果系统能够接入 WiFi,使用诸如 ping(8)之类的工具来诊断网络配置。
有许多底层调试工具。比如可以使用 wlandebug(8)在 802.11 协议支持层中启用调试消息。
现在基础知识已经讲解完毕。本书的这一部分讨论了 FreeBSD 的一些常用功能。这些章节包括:
介绍受欢迎和有用的桌面应用程序:浏览器、办公工具、文档查看器等。
介绍用于 FreeBSD 的多媒体工具。
解释构建自定义 FreeBSD 内核的过程,以实现额外的功能。
详细说明桌面和网络连接打印机设置中的打印系统。
展示如何在 FreeBSD 系统上运行 Linux 应用程序。
这些章节中的某些建议需要先进行阅读,这在每个章节的简介中都有注明。
尽管 FreeBSD 因其性能和稳定性而在服务器上大受欢迎,但它也非常适合作为桌面使用。在 FreeBSD 的 Ports 中有超过 36000 个应用程序可用,可以轻松构建一个定制的桌面,可以运行各种桌面应用程序。本章介绍了如何安装流行的桌面环境,以及诸如网页浏览器、生产力软件、文档查看器和财务软件等桌面应用程序。
先决条件:
本章的读者应已了解如何在 FreeBSD 上安装 X Window 系统或 Wayland。
本章中的读者应安装官方软件包。请参阅使用ports 从ports构建定制软件包的部分。
多媒体章节提供了有关 FreeBSD 上多媒体支持的概述。多媒体软件和技术已经成为现代计算机的一个重要组成部分,FreeBSD 为各种多媒体硬件和软件提供了强大可靠的支持。本章涉及各种多媒体组件,如音频、视频和图像处理。它还讨论了各种媒体格式和编解码器,以及用于多媒体创作和播放的工具和应用程序。此外,本章还涉及多媒体系统配置、故障排除和优化。无论你是多媒体爱好者还是专业内容创作者,FreeBSD 都能为多媒体工作提供了强大的平台。本章旨在帮助充分利用 FreeBSD 的多媒体功能,提供有用信息和实际示例,以帮助入门。
内核是 FreeBSD 操作系统的核心。它负责管理内存,实施安全控制,网络,磁盘访问等。虽然 FreeBSD 的许多部分是动态配置的,但有时仍然需要配置和编译自定义内核。
阅读本章后,你将会知道:
何时构建自定义内核。
如何进行硬件清单。
如何定制内核配置文件。
如何使用内核配置文件来创建和构建新内核。
如何安装新内核。
如果出了问题如何解决。
本章节示例中列出的所有命令都应该作为 root 执行。
默认情况下,FreeBSD 将自动检测设备使用的声卡。FreeBSD 支持各种各样的声卡。可以在 sound(4)中查阅受支持的声卡列表。
如果不知道系统使用哪种声卡,或者要使用哪个模块,可以通过执行以下命令加载 snd_driver 元驱动程序。
或者可在启动时将驱动程序作为模块加载,将以下行放入/boot/loader.conf 中。
要确认是否检测到了声卡,可执行以下命令:
输出应该类似于以下内容:
也可以使用此命令进行查看声卡的状态:
输出应类似于以下内容:
如果未列出任何 pcm 设备,请再次检查是否加载了正确的设备驱动程序。如果一切顺利,声卡现在应该在 FreeBSD 中工作了。
beep(1) 可用于产生一些声音,以确认声卡工作与否:
FreeBSD 有不同的实用程序可用于设置和显示内置在 FreeBSD 声音系统上的声卡混音器值:
支持的混音器软件包表 1
显卡通常配备自己集成的声音设备,可能不清楚哪个被用作默认设备。要确认,请运行 dmesg 并查看 pcm 条目来确定系统如何枚举输出。执行以下命令:
输出看起来像这样:
显卡(NVIDIA®)在声卡(Realtek®)之前被枚举,声卡显示为 pcm4。系统可以通过执行以下命令将声卡配置为默认设备:
要使此更改永久生效,请将下一行添加到 /etc/sysctl.conf:
某些设备可能在音频输出之间切换时遇到困难,但幸运的是,FreeBSD 能让在 device.hints 中配置自动切换。
通过执行以下命令来确定系统是如何枚举音频输出的:
输出看起来有点像这样:
将以下行添加到 /boot/device.hints:
某些常见的错误消息及其解决方案:
表 2. 常见错误消息
使用音频 / pulseaudio 的程序可能需要重启音频 / pulseaudio 守护进程,以使修改生效。或者,可以在运行时更改音频 / pulseaudio 设置。pacmd(1) 打开到音频 / pulseaudio 守护进程的命令行连接:
以下命令将默认的 sink 更改为卡号 4,如前面的示例所示:
在 FreeBSD 中,对图像扫描仪的访问是通过 SANE(Scanner Access Now Easy)提供的,它在 FreeBSD ports 中可用。
在尝试任何配置之前,重要的是检查扫描仪是否受 SANE 支持。
连接扫描仪后,运行以下命令以获取所有已连接的 USB 设备:
输出应该类似如下:
运行以下命令以获得 idVendor 和 idProduct :
输出应类似于以下内容:
若获得 idVendor 和 idProduct,有必要检查 SANE 支持设备列表,通过 idProduct 进行过滤以查看是否支持该扫描仪。
SANE 通过后端提供对扫描仪的访问。为了能够在 FreeBSD 上进行扫描,必须通过运行以下命令安装 graphics/sane-backends 软件包:
在安装必要的软件包之后,必须配置 devd(8) 以能让 FreeBSD 访问扫描仪。
将 saned.conf 文件添加到 /usr/local/etc/devd/saned.conf 中,内容如下:
之后,必须通过运行以下命令重启 devd(8):
SANE 后端包括 scanimage(1),可以用来列出设备并执行图像采集。
使用 -L 参数执行 scanimage(1)以列出扫描仪设备:
输出应该类似于以下内容:
如果 scanimage(1)无法识别扫描仪,将出现此消息:
若 scanimage(1)看到扫描仪,配置就完成了,扫描仪现在已经可以使用。
要激活服务并让其在引导时运行,请执行以下命令:
虽然 scanimage(1)可用于在命令行中执行图像采集,但通常更好的选择是使用图形界面来执行图像扫描。
图形扫描程序表 6
本节介绍了如何在 FreeBSD 系统上对常见的桌面环境进行安装和配置。桌面环境可以是简单的窗口管理器,也可以是完整的桌面应用程序套件。
支持的桌面环境表 1
名称 | 许可证 | 软件包 |
---|---|---|
KDE Plasma 是一个易于使用的桌面环境。这个桌面提供了一套具有一致外观和感觉的应用程序,标准化的菜单和工具栏,快捷键,颜色方案,国际化以及集中的、对话框驱动的桌面配置。有关 KDE 的更多信息,请访问 KDE 主页。要获取特定于 FreeBSD 的信息,请查阅 KDE 的 FreeBSD 主页。
安装 KDE Plasma 元包,包含 KDE 框架、Plasma 桌面和应用程序,执行:
安装最小化的 KDE Plasma 执行:
KDE Plasma 使用 dbus-daemon(1)作为消息总线和硬件抽象层。这个应用程序会自动安装为 KDE Plasma 的依赖。
在 /etc/rc.conf 中启用 D-BUS 服务以便在系统启动时启动:
增加消息大小,请执行:
KDE Plasma 首选的显示管理器是 x11/sddm。要安装 x11/sddm,请执行:
在 /etc/rc.conf 中启用 SDDM 服务以便在系统启动时启动:
可以通过运行以下命令在 SDDM 中设置键盘语言(例如,对于西班牙语):
通过手动调用 startx(1)的方式启动 KDE Plasma 的第二种方法。为了使其正常工作,需要在~/.xinitrc 中添加以下行:
GNOME 是个用户友好的桌面环境。它包括一个面板用于启动应用程序和显示状态,一个桌面,一组工具和应用程序,以及一组使应用程序易于合作并与彼此一致的约定。
要通过软件包安装 GNOME 元包(含桌面及应用程序),请执行:
要通过软件包安装 GNOME-lite 元包(仅含桌面所必需的),请执行;
GNOME 需要挂载 /proc。添加此行 /etc/fstab 以在系统启动时自动挂载此文件系统:
GNOME 使用 dbus-daemon(1) 来进行消息总线和硬件抽象。该应用程序会自动作为 GNOME 的依赖进行安装。
启用 D-BUS 服务在 /etc/rc.conf 中,以便在系统启动时启动:
GNOME 显示管理器是 GNOME 的首选显示管理器。GDM 是 GNOME 套件的一部分,已一起安装。
在 /etc/rc.conf 中启用 GDM 以在系统启动时启动:
启动 GNOME 的另一种方法是通过手动调用 startx(1)。为了使其工作,需要在 ~/.xinitrc 中添加以下行:
XFCE 是基于 GTK+ 的桌面环境,轻量级且提供简单、高效、易于使用的桌面环境。它是完全可配置的,有一个带有菜单、小程序和应用启动器的主面板,提供文件管理器和声音管理器,并且支持主题定制。由于它快速、轻量且高效,非常适合内存有限的旧款或较卡的计算机。
要安装 XFCE 元包,请执行:
XFCE 需要挂载 /proc。添加此行 /etc/fstab 以在系统启动时自动挂载此文件系统:
XFCE 使用 dbus-daemon(1) 来进行消息总线和硬件抽象。该应用程序会自动作为 XFCE的依赖进行安装。
在 /etc/rc.conf 中启用 D-BUS 以便在系统启动时启动:
x11/lightdm 是一个支持多种显示技术的显示管理器,作为选择非常轻量级,需要少量内存,性能高。
要安装它,请执行:
在 /etc/rc.conf 中启用 lightdm 以便在系统启动时启动:
第二种启动 XFCE 的方法是手动调用 startx(1)。为使此方法起作用,需要在 ~/.xinitrc 中添加以下行:
MATE 桌面环境是 GNOME 2 的延续。它提供了一个使用传统GNOME 的直观和吸引人的桌面环境。
安装包含 MATE 桌面及一些额外应用程序(如文本编辑器、档案管理器等)的 MATE 元包,请执行:
要安装仅包含 MATE 桌面基本内容的 MATE 轻量级元包,请执行:
MATE 需要挂载 /proc。添加此行 /etc/fstab 以在系统启动时自动挂载此文件系统:
MATE 使用 dbus-daemon(1)来进行消息总线和硬件抽象。该应用程序会自动作为 MATE的依赖进行安装。
在 /etc/rc.conf 中启用 D-BUS 以便在系统启动时启动:
x11/lightdm 是一个支持多种显示技术的显示管理器,是一个很好的选择,因为它非常轻量级,占用内存小,且性能高。
要安装它,请执行:
将 lightdm 在 /etc/rc.conf 中启用以在系统启动时启动:
第二种启动 MATE 的方法是手动调用 startx(1)来实现。为了使此方法起作用,在 ~/.xinitrc 中需要以下行:
Cinnamon 是一款 UNIX® 桌面,提供先进的创新功能和传统的用户体验。桌面布局与 Gnome 2 相似。其底层技术源自 Gnome Shell。其重点是让用户有宾至如归的感觉,并为他们提供易于使用和舒适的桌面体验。
要安装 cinnamon,请执行:
Cinnamon 需要 /proc 被挂载。在系统启动时,将以下行添加到 /etc/fstab 以在系统启动时自动挂载此文件系统:
cinnamon 使用 dbus-daemon(1) 作为消息总线和硬件抽象。此应用程序会自动作为 Cinnamon 依赖项安装。在 /etc/rc.conf 中启用 D-BUS 以在系统启动时启动:
x11/lightdm 是一款支持不同显示技术的显示管理器,它是一个很好的选择,因为它非常轻量级,需要很少的内存使用,并且具有快速的性能。
要安装它,执行:
在 /etc/rc.conf 启用 lightdm 以在系统引导时启动:
另一种启动 Cinnamon 的方法是手动调用 startx(1)。要使此方法起作用,需要在 ~/.xinitrc 中添加以下行:
LXQt 是基于 Qt 技术的先进、易用、快速的桌面环境。它专为注重简单、快速和直观界面的用户量身定制。与大多数桌面环境不同,LXQt 还能在性能较弱的机器上正常运行。
要安装 LXQT 元软件包,请执行
LXQT 需要挂载/proc 。将此行添加到 /etc/fstab 以在系统启动期间自动挂载此文件系统:
LXQT 使用 dbus-daemon(1) 作为消息总线和硬件抽象。此应用程序会作为 LXQT 的依赖自动安装。
在 /etc/rc.conf 上启用 D-BUS 以在系统启动时启动:
LXQT 首选的显示管理器是 x11/sddm。要安装 x11/sddm,请执行:
在 /etc/rc.conf
中启用 SDDM 服务,以便在系统启动时启动:
可通过运行以下命令在 SDDM 中设置键盘语言(如西班牙语):
第二种启动 LXQT 的方法是手动调用 startx(1)。
为此,需要在 ~/.xinitrc
中加入以下一行:
自 UNIX® 诞生以来,一些新的文档格式流行了起来,但是它们所需的查看器可能在基本系统中无法使用。本节展示了如何安装以下文档查看器:
支持的文档查看器表 5
名称 | 许可证 | 软件包 | 所需资源 |
---|---|---|---|
Okular 是 KDE Plasma 项目的通用文档查看器。
Okular 将出色的功能与支持各种不同类型文档的多功能性相结合,如 PDF,Postscript,DjVu,CHM,XPS,ePub 等。
要安装 Okular,请执行:
Evince 是一款用于多种文档格式的文档查看器,包括 PDF 和 Postscript。属于 GNOME 项目。evince 的目标是用一个简单的应用程序取代文档查看器(如 ggv 和 gpdf)。
要安装 Evince,请执行:
ePDFView 是一款轻量级的 PDF 文档查看器,只使用 Gtk+和 Poppler 库。ePDFView 的目标是创建一款简单的 PDF 文档查看器,类似于 Evince,但不使用 GNOME 库。
要安装 ePDFView,请执行:
对于喜欢使用小型 FreeBSD PDF 阅读器的用户,Xpdf 提供了一款轻量级高效的阅读器,需要很少的资源。它使用标准的 X 字体,不需要任何额外的工具包。
要安装 Xpdf,请执行:
Zathura 是一款高度可定制且功能强大的文档查看器。它提供了一个极简和节省空间的界面,主要侧重于键盘交互的易用性。
要安装 zathura,并具有 PDF 支持,请执行:
此外,还可以安装 graphics/zathura-pdf-poppler 以获得其他的 PDF 支持,安装 graphics/zathura-ps 以获得 PostScript 支持,安装 graphics/zathura-djvu 以获得 DjVu 支持,以及安装 graphics/zathura-cb 以获得漫画支持。
本节讲解了如何在 FreeBSD 系统上安装和配置常见的网络浏览器,从资源消耗高的完整网络浏览器到资源使用较少的命令行网络浏览器。
支持的浏览器表格 2
名称 | 许可证 | 软件包 | 所需资源 |
---|---|---|---|
火狐浏览器是一款开源浏览器,具有符合标准的 HTML 显示引擎、标签式浏览、弹出屏蔽、扩展、改进的安全性等功能。Firefox 基于 Mozilla 的存储库。
要安装最新发行版本的 Firefox 软件包,请执行:
要安装 Firefox Extended Support Release (ESR)版本,请执行:
Chromium 是一款旨在构建更安全、更快速、更稳定的网络浏览体验的开源浏览器项目。Chromium 具有分页浏览、弹出窗口阻止、扩展等功能。Google Chrome 浏览器就基于 Chromium 这个开源项目。
要安装 Chromium,请执行:
Iridium browser 是 Chromium 存储库的免费、开源、自由浏览器修改版,在几个关键领域增强了隐私保护。自动传输部分查询、关键词、指标到中央服务被禁止,只有在获得同意的情况下才会发生。
安装 Iridium browser execute:
falkon 是一款较新且非常快速的 QtWebEngine 浏览器。它旨在成为一个轻量级的 web 浏览器,可在所有主要平台上使用。法尔肯具有所有人们可以从 web 浏览器中期望的标准功能。它包括书签、历史记录(侧边栏中也都有)和选项卡。除此之外,AdBlock 插件可以阻止广告,Click2Flash 可以阻止 Flash 内容,而 SSL 管理器可以编辑本地 CA 证书数据库。
安装 Falkon,请执行:
Konqueror 不仅是一个网页浏览器,还是一个文件管理器和多媒体查看器。它支持 WebKit,这也是许多现代浏览器(包括 Chromium)使用的渲染引擎,以及它自己的 KHTML 引擎。
安装 Konqueror,请执行:
Gnome Web (Epiphany) 是一款设计得尽可能轻量和快速的网页浏览器,牺牲了许多其他浏览器中的功能。
安装 Gnome Web(Epiphany),执行:
Qutebrowser 是一款以键盘为焦点的浏览器,拥有最小化的 GUI。它基于 Python 和 PyQt5,并且是根据 GPL 许可的自由软件。
安装 qutebrowser,请执行:
Dillo 旨在成为一款多平台的替代浏览器,体积小,稳定,开发者友好,易用,快速且可扩展。这个新的、实验性的 Dillo 版本基于 FLTK 工具包,而不是 GTK1,并且已经进行了大幅重写。
安装 Dillo,请执行:
它是一款类似 Lynx 的具有文本和图形模式的 Web 浏览器,具有许多功能,如显示表格、菜单等。
安装 Links,请执行:
w3m 是一款分页器/基于文本的网页浏览器。它类似于 Lynx 应用程序,但它具有几个 Lynx 没有的功能,如表格渲染和框架渲染。
安装 w3m,请执行:
对于在 FreeBSD 桌面上管理个人财务,可以安装一些强大且易于使用的应用程序。某些应用程序兼容广泛使用的文件格式,比如 Quicken 和 Excel 使用的格式。
本部分涉及这些程序:
支持的金融程序表 6
名称 | 许可 | 包 | 所需资源 |
---|---|---|---|
KMyMoney 是由 KDE 社区创建的个人财务应用程序。KMyMoney 的目标是提供商业个人财务管理应用程序中重要的功能。它还突出了易用性和正确的复式记账。KMyMoney 可以导入标准的 Quicken QIF 文件,跟踪投资,处理多种货币,并提供丰富的报告。
要安装 KMyMoney,请执行:
GnuCash 是 GNOME 努力提供用户友好又功能强大的应用程序的一部分。GnuCash 可以用来跟踪收入和支出、银行账户和股票。它拥有直观的界面,同时保持专业水准。
GnuCash 提供智能登记簿、账户的分层系统,以及许多键盘加速器和自动完成方法。它可以将单个交易拆分为几个更详细的部分。GnuCash 可以导入和合并 Quicken QIF 文件。它还能处理大多数国际日期和货币格式。
要安装 GnuCash,请执行:
DNS 可以被理解为一个电话簿,在其中 IP 地址与主机名相互对应。
FreeBSD 系统处理 DNS 交互的三个文件是 hosts(5)、resolv.conf(5)和 nsswitch.conf(5)。
除非在/etc/nsswitch.conf 文件中另有说明,FreeBSD 将查看/etc/hosts 文件中的地址,然后是/etc/resolv.conf 文件中的 DNS 信息。
例如,在使用 nscd(8)服务的情况下,可以通过保留以下行来修改偏好顺序。
/etc/hosts 文件是一个简单的文本数据库,用于提供主机名到 IP 地址的映射。可以将通过局域网连接的本地计算机的条目添加到此文件中,以便简化命名,而不是设置 DNS 服务器。此外,/etc/hosts 可用于提供互联网名称的本地记录,减少了查询外部 DNS 服务器以获取常用名称的需求。
例如,在本地环境中有一个名为 www/gitlab-ce 的本地实例的情况下,可以将其添加到/etc/hosts 文件中如下:
FreeBSD 系统如何访问互联网域名系统(DNS)受 resolv.conf(5)控制。
/etc/resolv.conf 中最常见的条目有:
一个典型的 /etc/resolv.conf 看起来像这样:
当使用 DHCP 时,dhclient(8) 通常会使用从 DHCP 服务器接收的信息重写 /etc/resolv.conf。
要启动 local unbound(8)服务,请执行以下命令:
本节概述了在 FreeBSD 系统上安装和配置一些流行的开发工具的方法。
支持的开发工具
表 3
名称 | 许可证 | 包 | 所需资源 |
---|---|---|---|
Visual Studio Code 是一种工具,它将代码编辑器的简单性与开发人员在核心编辑构建调试周期中所需的功能相结合。它提供全面的编辑和调试支持,具有可扩展性模型,并与现有工具轻量级集成。
要安装 Visual Studio Code,请执行:
Qt Creator 是专为 Qt 开发人员需求量身定制的跨平台集成开发环境。Qt Creator 包含的功能包括:
具有 C++、QML 和 ECMAscript 支持的代码编辑器;
快速代码导航工具;
当你输入时,提供静态代码检查和样式提示;
上下文敏感的帮助;
可视化调试器;
集成的 GUI 布局和表单设计器。
要安装 Qt Creator,请执行:
开源、功能丰富、插件可扩展的 C/C++和其他编程语言 IDE。它基于 KDevPlatform 以及 KDE 和 Qt 库,自 1998 年以来一直在开发中。
要安装 KDevelop,请执行:
Eclipse 平台是一款开放可扩展的 IDE,可以用于任何事情,但没有特定用途。Eclipse 平台提供构建块和构建及运行集成软件开发工具的基础。Eclipse 平台能让工具构建者独立开发能与其他人的工具集成的工具。
要安装 Eclipse IDE,请执行:
Vim 是一种高度可配置的文本编辑器,旨在实现高效的文本编辑。它是大多数 UNIX 系统中分发的 vi 编辑器的改进版本。
Vim 经常被称为 “程序员的编辑器”,对于编程非常有用,许多人认为它是整个 IDE。不过,Vim 不仅适用于程序员。从撰写电子邮件到编辑配置文件,Vim 都非常适用于各种文本编辑。
安装 Vim,请执行:
Neovim 是编辑器/vim 的一个激进改写。它代表了对代码库的完全改造,包括合理的默认设置,内置终端模拟器,异步插件架构以及为速度和可扩展性而设计的强大 API。它几乎保留与所有 Vim 插件和脚本的完全兼容性。
安装 Neovim,执行:
GNU Emacs 是一款可扩展、可定制、自由的文本编辑器。其核心是用于 Emacs Lisp 解释器,这是一种带有扩展以支持文本编辑的 Lisp 编程语言方言。
要安装 GNU Emacs,请执行:
谈到生产力,用户通常会寻找办公套件或易于使用的文字处理软件。虽然一些桌面环境如 KDE Plasma 提供了办公套件,但不是默认的生产力套件。在 FreeBSD 上有几个办公套件和图形文字处理软件可供选择,无论安装了哪个桌面环境。
本节演示如何安装以下流行的办公软件,并指出应用程序是否需要大量资源,需要从ports编译,或者有任何重要依赖。
支持的桌面办公生产力套件
表 4
名称 | 许可证 | 包 | 所需资源 |
---|---|---|---|
LibreOffice 是由 The Document Foundation 开发的免费软件办公套件。它与其他主要办公套件兼容,并可在多种平台上使用。它是 Apache OpenOffice 的重新品牌复刻,并包括在完整办公生产力套件中找到的应用程序:文字处理器、电子表格、演示文稿管理器、绘图程序、数据库管理程序以及用于创建和编辑数学公式的工具。它提供多种不同语言版本,并且国际化已扩展到界面、拼写检查和词典。有关 LibreOffice 的更多信息,请访问 libreoffice.org。
要安装 LibreOffice,请执行:
LibreOffice 软件包仅默认提供英文版本。要获得针对本地区的 LibreOffice 版本,需要安装语言包。例如,安装西班牙语本地化版本,需要使用以下命令安装 editors/libreoffice-es 软件包:
KDE Plasma 桌面环境包含一个办公套件,可与 KDE Plasma 分开安装。Calligra 包含其他办公套件中常见的标准组件。Words 是文字处理程序,Sheets 是电子表格程序,Stage 用于管理幻灯片演示,Karbon 用于绘制图形文档.
安装 Calligra,请执行:
AbiWord 是一款免费的文字处理程序,外观和感觉类似于 Microsoft® Word。它速度快,功能丰富,使用方便。
AbiWord 可以导入或导出许多文件格式,包括某些专有格式,如 Microsoft® .rtf。
要安装 AbiWord,请执行:
本节介绍了可以用于视频播放的 FreeBSD ports 中的一些软件。
第四页 视频播放器软件包
名称 | 许可证 | 包 | 工具包 |
---|---|---|---|
MPlayer 是一个多媒体播放器和编码器套件,可在多个平台上运行,并在命令行上工作。它可以播放大量不同的文件格式和编解码器,包括流行的 DivX、XviD、H.264 流,以及 DVD 和 SVCD,以及许多流行的音频编解码器。
安装 MPlayer,请执行:
有关 MPlayer 工作原理的示例,请参阅 mplayer(1)。
SMPlayer 意图成为 MPlayer 的完整前端,从播放视频,DVD 和 VCD 等基本功能到支持 MPlayer 滤镜等更高级功能。
要安装 SMPlayer,请执行:
VLC 媒体播放器是一款极度便携的多媒体播放器,支持多种音频和视频格式(MPEG-1、MPEG-2、MPEG-4、DivX、mp3、ogg 等),以及 DVD、VCD 和各种流媒体协议。它还可以用作服务器,在高带宽网络上以单播或组播的方式进行流媒体传输,VLC 还具有实时转码媒体以进行流媒体或保存到硬盘的能力。
要安装 VLC,请执行:
Kodi(以前被称为 XBMC)是一个免费开源的跨平台媒体播放器和娱乐中心。它能让用户播放和观看来自本地和网络存储媒体以及互联网的大多数视频,音乐,播客和其他数字媒体文件。
要安装 Kodi,请执行:
为了创建自定义内核配置文件并构建自定义内核,必须首先安装完整的 FreeBSD 源代码树。
如果 /usr/src/ 不存在或为空,则源代码未安装。可以使用 Git 按照“使用 Git”中的说明安装源代码。
安装源代码后,请查看 /usr/src/sys 目录的内容。该目录包含许多子目录,包括代表以下支持的架构的目录:amd64、i386、powerpc 和 sparc64。每个支持的架构都有一个包含该架构的 GENERIC 内核配置文件的 conf 子目录。
请勿对 GENERIC 进行编辑。而是将文件复制到不同的名称并对副本进行编辑。约定使用全大写字母命名。在维护具有不同硬件的多个 FreeBSD 机器时,将其命名为主机名是个好主意。该示例创建了一个名为 MYKERNEL 的 GENERIC 配置文件的副本,该配置文件适用于 amd64 架构。
MYKERNEL 现在可以使用任何 ASCII 文本编辑器进行自定义。默认编辑器是 vi,不过 FreeBSD 还安装了一款面向初学者更容易使用的编辑器,名为 ee。
内核配置文件的格式很简单。每行包含表示设备或子系统的关键字,一个参数,以及一个简短的说明。在 # 之后的任何文本都被视为注释并被忽略。要移除对设备或子系统的内核支持,请在代表该设备或子系统的行的开头放置 #。不要为你不理解的任何行添加或移除 #。
除了本文件中提供的简要说明外,其他说明内容包含在 NOTES 中,可以在与该架构的 GENERIC 文件相同目录中找到。对于独立于架构的选项,请参考/usr/src/sys/conf/NOTES。
配置文件中可用 include 指令。这能让将另一个配置文件包含在当前文件中,从而便于维护相对于现有文件的小更改。如果只需要一小部分额外的选项或驱动程序,则可以保持与 GENERIC 的增量,就像这个示例中所示:
使用此方法,本地配置文件表达了与 GENERIC 内核的本地差异。随着升级的进行,将会向本地内核添加到 GENERIC 中添加的新功能,除非使用 nooptions 或 nodevice 明确阻止。可以在 config(5)中找到配置指令及其说明的详尽列表。
保存自定义配置文件的编辑后,就可以使用以下步骤编译内核的源代码:
过程:构建内核
切换到这个目录:
通过指定自定义内核配置文件的名称来编译新内核:
安装与指定内核配置文件相关联的新内核。此命令将新内核复制到/boot/kernel/kernel,并将旧内核保存到/boot/kernel.old/kernel。
关闭系统并重启到新内核。如果出现问题,请参考内核无法启动。
默认情况下,编译自定义内核时,所有内核模块都将被重新构建。为了更快地更新内核或仅构建自定义模块,请在开始构建内核之前编辑/etc/make.conf。
例如,此变量指定要构建的模块列表,而不使用构建所有模块的默认设置:
或者,此变量列出要从构建过程中排除的模块:
有其他可用的变量。有关详情,请参阅 make.conf(5)。
构建自定义内核时可能出现的四种故障分类:
config 失败
如果 config 失败,它将打印出不正确的行号。例如,对于以下消息,请确保第 17 行通过将其与 GENERIC 或 NOTES 进行比较而正确输入:
make 失败
如果 make 失败,通常是由于内核配置文件中的错误,这种错误不严重到足以被 config 捕捉到。检查配置,如果问题不明显,请发送电子邮件到 FreeBSD 常见问题邮件列表中,其中包含内核配置文件。
内核无法启动
如果新内核无法启动或无法识别设备,请不要惊慌!幸运的是,FreeBSD 有一个出色的机制来从不兼容的内核中恢复。只需在 FreeBSD 引导加载程序中选择要启动的内核即可。当系统引导菜单出现时,可以通过选择“转到加载程序提示”选项来访问这个功能。在提示符下,键入 boot kernel.old,或任何其他已知可以正确启动的内核的名称。
启动后,使用良好的内核,检查配置文件并尝试重新构建。一个有用的资源是/var/log/messages,它记录了每次成功启动的内核消息。此外,dmesg(8)将打印当前启动的内核消息。
内核可以工作,但是 ps(1)不行
如果内核版本与系统实用程序构建的版本不同,例如,在-RELEASE 系统上安装了从-CURRENT 源构建的内核,许多系统状态命令如 ps(1)和 vmstat(8)将无法工作。要解决此问题,请使用与内核相同版本的源树重新编译和安装 world。使用与操作系统的其余部分不同版本的内核绝非明智之举。
传统上,FreeBSD 使用一个单 olithic 内核。内核是一个庞大的程序,支持固定的设备列表,并且要更改内核的行为,必须编译然后重启到一个新的内核中。
今天,FreeBSD 内核中的大部分功能都包含在模块中,这些模块可以根据需要动态加载和卸载。这使运行中的内核可以立即适应新的硬件,并将新功能引入内核。这被称为模块化内核。
偶尔仍然需要执行静态内核配置。有时,所需的功能与内核紧密相关,无法动态加载。一些安全环境阻止加载和卸载内核模块,并要求只需将所需功能静态编译到内核中。
为高级 BSD 用户构建自定义内核通常是一种仪式性行为。虽然这个过程很耗时,但可以为 FreeBSD 系统带来好处。与必须支持各种硬件的 GENERIC 内核不同,自定义内核可以精简到仅支持该计算机的硬件。这有许多好处,例如:
引导时间更快。由于内核仅探测系统中的硬件,系统启动所需的时间可以减少。
更低的内存使用率。自定义内核通常通过省略未使用的功能和设备驱动程序,比 GENERIC 内核使用更少的内存。这一点非常重要,因为内核代码始终驻留在物理内存中,防止该内存被应用程序使用。因此,在具有少量 RAM 的系统上,自定义内核非常有用。
附加硬件支持。自定义内核可以为不存在于 GENERIC 内核中的设备添加支持。
构建自定义内核之前,请考虑这样做的原因。如果需要特定硬件支持,可能已存在为模块。
内核模块存在于 /boot/kernel 中,并可以使用 kldload(8) 动态加载到运行的内核中。大多数内核驱动程序均具有可加载模块和手册页。例如,ath(4) 无线网络驱动程序在其手册页中具有以下信息:
将 if_ath_load="YES" 添加到 /boot/loader.conf 将在启动时动态加载此模块。
在某些情况下,在/boot/kernel 中没有关联的模块。这在某些子系统中大多是真实的。
名称 | 许可证 | 软件包 | 工具包 |
---|---|---|---|
错误 | 解决方案 |
---|---|
vendor :是通过运行 usbconfig -d 3.2 dump_device_desc 命令之前获得的 idVendor。 | |
---|---|
名字 | 许可证 | 包 |
---|---|---|
KDE Plasma
GPL 2.0 或更高
x11/kde5
GNOME
GPL 2.0 或更高版本
x11/gnome
XFCE
GPL,LGPL,BSD
x11-wm/xfce4
MATE
GPL 2.0,LGPL 2.0
x11/mate
cinnamon
GPL 2.0 或更高版本
x11/cinnamon
LXQT
GPL,LGPL
x11-wm/lxqt
Okular
GPL 2.0
重
Evince
GPL 2.0
中等
ePDFView
GPL 2.0
中等
Xpdf
GPL 2.0
轻
Zathura
Zlib
轻
Firefox
MPL 2.0
重
Chromium
BSD-3 和其他
重
Iridium browser
BSD-3 和其他
重
Falkon
MPL 2.0
重
Konqueror
GPL 2.0 或更高版本
中
Gnome Web (Epiphany)
GPL 3.0 或更高版本
中
qutebrowser
GPL 3.0 或更高版本
中
Dillo
GPL 3.0 或更高版本
轻
Links
GPL 2.0 或更高版本
轻
w3m
MIT
轻
KMyMoney
GPL 2.0
重
GnuCash
GPL 2.0 和 GPL 3.0
重
nameserver
域名解析器应查询的名称服务器的 IP 地址。服务器按照列出的顺序查询,最多三个。
search
用于主机名查找的搜索列表。这通常由本地主机名的域确定。
domain
本地域名。
Visual Studio Code
MIT
重
Qt Creator
QtGPL (特许)
重
Kdevelop
GPL 2.0 或更高版本和 LGPL 2.0 或更高版本
重
Eclipse IDE
EPL
重
Vim
VIM
轻
Neovim
Apache 2.0
轻
GNU Emacs
GPL 3.0 或更高版本
轻
LibreOffice
MPL 2.0
重
Calligra Suite
LGPL 和 GPL
中等
AbiWord
GPL 2.0 及更高
中等
BSD-2
包含在基本系统中
CLI
dsbmixer
BSD-2
Qt
KDE Plasma 音频小部件
GPL 2.0
Qt
mixertui
BSD-2
TUI
xxx: can’t open /dev/dsp!
输入 fstat | grep dsp 以检查是否有其他应用程序打开了设备。值得注意的麻烦制造者是 esound 和 KDE 的声音支持。
product :是通过运行 usbconfig -d 3.2 dump_device_desc 命令之前获得的 idProduct。
skanlite
GPL 2.0
graphics/skanlite
GNOME Simple Scan
GPL 3.0
graphics/simple-scan
XSANE
GPL 2.0
graphics/xsane
MPlayer
GPL 2.0
CLI
SMPlayer
GPL 2.0
Qt
VLC media player
GPL 2.0
Qt
Kodi (XBMC)
GPL 2.0
X11
FreeBSD 支持多种架构,包括 amd64、ARM®、RISC-V® 和 PowerPC®。根据架构和平台,可以下载不同镜像来安装或者直接运行 FreeBSD。
镜像类型包括:
虚拟机磁盘镜像,如 qcow2
、vmdk
、vhd
和裸设备镜像。这些不是安装镜像,而是已预安装 FreeBSD 的镜像,可准备执行安装后的任务。虚拟机镜像在云环境中也很常用。
SD 卡镜像,适用于嵌入式设备,如树莓派。必须解压缩这些文件,以裸镜像写入 SD 卡,卡板将从中启动。
安装镜像,用于从 ISO/USB 设备引导,可在常规桌面、笔记本电脑和服务器系统上安装 FreeBSD。
本章的其余部分概述了第三种情况,解释如何使用名为 bsdinstall(基于文本)安装程序安装 FreeBSD。安装程序和此处所示内容之间可能存在细微差异,因此请将本章作为通用指南,而不是逐字逐句的指令。
阅读完本章后,你将了解:
如何获取 FreeBSD 镜像,创建 FreeBSD 安装介质。
如何启动 bsdinstall。
bsdinstall 将询问的问题,它们的含义以及如何回答。
如何排除安装失败的故障。
如何在安装之前使用 FreeBSD 的 Live 版本。
FreeBSD 可用软件的列表在不断增长。有多种方法可以找到要安装的软件:
FreeBSD 网站维护着最新的可搜索的所有可用应用程序列表,位于Ports门户网站。可以按应用程序名称或软件类别搜索ports。
Dan Langille 维护着 FreshPorts,提供了全面的搜索工具,还跟踪Ports 中应用程序的更改。注册用户可以创建自定义监视列表,以便在其监视的ports更新时收到自动电子邮件。
如果查找特定应用程序变得困难,请尝试搜索诸如 SourceForge 或 GitHub 之类的网站,然后返回Ports门户网站查看应用程序是否已被移植。
使用 pkg(8)命令搜索二进制软件包存储库中的应用程序
使用 bsdinstall 安装 FreeBSD 时,不会自动安装图形用户界面。本章讲解了如何安装和配置 Xorg,它提供了开源的 X Window 系统,用于提供图形环境。然后讲解了如何查找和安装桌面环境或窗口管理器。
在阅读本章之前,你应该:
了解如何安装附加的第三方软件,如《安装应用程序:软件包包和 Ports》中所述。
阅读完本章后,你将会知道:
X Window 系统的各个组件以及它们如何互相协作。
如何安装和配置 Xorg。
如何在 Xorg 中使用 TrueType® 字体。
如何为图形登录(XDM)设置系统。
本节介绍了 FreeBSD Ports 中提供的一些软件,可用于音频播放。
音频播放器包
名字 | 许可证 | 包 | 工具包 |
---|---|---|---|
Elisa 是由 KDE 社区开发的音乐播放器,致力于简单易用。
安装 Elisa,请执行:
GNOME 音乐是新的 GNOME 音乐播放应用程序。它旨在将优雅沉浸式的浏览体验与简单直观的控件结合在一起。
安装 GNOME Music,请执行:
Audacious 是一个开源音频播放器。作为 XMMS 的后代,它以你希望的方式播放音乐,而不会从其他任务中夺走你计算机的资源。
安装 Audacious,请执行:
MOC(音乐控制台)是一款设计强大且易于使用的控制台音频播放器。
MOC 在播放时非常流畅,不受系统或 I/O 负载影响,因为它在单独的线程中处理输出缓冲区。它不会在文件之间留下间隙,因为在播放当前文件时会预先缓存接下来要播放的文件。
要安装 MOC(音乐控制台),执行:
Elisa
LGPL 3.0
Qt
GNOME Music
GPL 2.0
GTK+
Audacious
BSD-2
Qt
MOC (music on console)
GPL 2.0
TUI
在编辑内核配置文件之前,建议对计算机的硬件进行清查。在双启动系统上,清查可以从其他操作系统中创建。例如,Microsoft®的设备管理器包含了安装设备的信息。
如果 FreeBSD 是唯一安装的操作系统,请使用 dmesg(8) 来确定在引导探测期间找到并列出的硬件。FreeBSD 上的大多数设备驱动程序都有一个手册页面,列出了该驱动程序支持的硬件。例如,以下行指示 psm(4) 驱动程序找到了鼠标。
由于存在这些硬件,因此不应该从自定义内核配置文件中删除此驱动程序。
如果 dmesg 的输出未显示引导探测输出的结果,请读取/var/run/dmesg.boot 的内容。
查找硬件的另一种工具是 pciconf(8),它提供更详细的输出。例如:
此输出显示 ath 驱动程序找到了一个无线以太网设备。
人(1)手册的 -k 标志可用于提供有用的信息。例如,它可以用于显示包含特定设备品牌或名称的手册页列表:
创建硬件清单后,参考它以确保在编辑自定义内核配置时不要删除已安装硬件的驱动程序。
FreeBSD 桌面环境可用于加入视频会议。本节将解释如何配置网络摄像头以及 FreeBSD 支持哪些视频会议应用程序。
为了能让 FreeBSD 访问网络摄像头并执行其配置,需要安装某些实用程序:
multimedia/webcamd 是一个守护进程,可以启用数百种不同的基于 USB 的网络摄像头和 DVB USB 设备的使用。
多媒体/pwcview 是一个可以用来查看网络摄像头视频流的应用程序。
要安装所需的实用工具,请执行:
在 /etc/rc.conf 中启用 webcamd(8) 服务,以便在系统启动时启动它。
The user must belong to the webcamd
group. To add the user to webcamd
group execute the following command:
Since needs the module this module must be loaded by executing the following command:
To load at system boot, execute the command:
若安装了实用程序,可以使用 webcamd(8)显示可用网络摄像头的列表:
输出应类似于以下内容:
配置可用的网络摄像头,执行以下命令:
必须通过执行以下命令启动 webcamd(8)服务:
输出应该类似于以下内容:
可以使用 multimedia/pwcview 检查网络摄像头的正常工作。可以使用以下命令来执行 multimedia/pwcview:
然后 multimedia/pwcview 将显示网络摄像头:
FreeBSD 目前支持用于进行视频会议的以下工具。
表 5。会议软件
名字 | 火狐支持 | Chromium 支持 | Website |
---|
Microsoft Teams | 不支持 | 支持 |
Google Meet | 不支持 | 支持 |
Zoom | 支持 | 支持 |
Jitsi | 不支持 | 支持 |
BigBlueButton | 不支持 | 支持 |