diff --git a/zh_CN.GB2312/books/handbook/basics/chapter.sgml b/zh_CN.GB2312/books/handbook/basics/chapter.sgml index 1176bb2535..dfa0274e70 100644 --- a/zh_CN.GB2312/books/handbook/basics/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/basics/chapter.sgml @@ -1,2341 +1,2370 @@ Chris Shumway Rewritten by UNIX 基础 概述 下列章节的命令和功能适用于FreeBSD操作系统。 同时这里许多内容和一些 类-&unix; 操作系统相关。 假如您已经熟悉这些内容可跳过不阅读。 假如您是FreeBSD新手, 那您应该认真详细地从头到尾读一遍这些章节。 读取这些内容,您将了解: 怎样在FreeBSD使用 虚拟控制台 在 &unix; 中文件权限如何运作, 以及理解 &os; 中的文件标志。 &os; 默认文件系统的架构。 &os;磁盘架构。 怎样挂接或卸下文件系统。 什么是进程、守护进程、信号。 什么是shell,应当怎样去改变登录进入的默认环境。 怎样使用基本的文本编辑器。 什么是设备,什么是设备节点。 &os; 下,使用的是什么可执行文件格式。 怎样使用 man 手册并取得更多资讯。 虚拟控制台和终端 虚拟控制台 终端 可以用多种不同的方式使用 FreeBSD, 在文本终端输入命令是其中之一。 通过使用这种方式, 您可以容易地使用 FreeBSD 来获得 &unix; 操作系统的灵活而强大的功能。 这一节将介绍 终端控制台, 以及如何在 FreeBSD 中使用它们。 控制台 控制台 假如您没有设置 FreeBSD 在启动期间开启图形登录界面, 那么系统将在引导和启动脚本正确运行完成后,给您一个登录的提示。 您会看到类似这样的界面: Additional ABI support:. Local package initialization:. Additional TCP options:. Fri Sep 20 13:01:06 EEST 2002 FreeBSD/i386 (pc3.example.org) (ttyv0) login: 这些信息可能和您的系统稍微有点不同,但不会有很大差别。 最后两行是我们感兴趣的, 理解这一行: FreeBSD/i386 (pc3.example.org) (ttyv0) 这一行是您刚才启动的系统信息其中一块, 您所看到的是一个FreeBSD控制台, 运行在一个Intel或兼容的x86体系架构上面 现在理解一下i386的含义。 请注意尽管您的 FreeBSD 并非在 Intel 386 CPU 上运行, 但也会显示为 i386。 这不是指您的处理器, 而是指处理器的 体系结构 。 这台计算机的名字 (每台 &unix; 计算机都有自己的名字) 叫 pc3.example.org, 就是现在这个系统控制台—这个 ttyv0 终端的样子。 在最后,最后一行一直保持这样: login: 这里, 您将可以输入用户名 username 并登录到 &os; 系统中。 接下来的一节, 将介绍如何登录系统。 进入FreeBSD FreeBSD是一个多用户多任务的系统, 换句话来说就是一个系统中可以容纳许多不同的用户, 而这些用户都可以同时在这台机器中运行大量的程序。 每一个多用户系统都必须在某方面去区分 user, 在 FreeBSD 里 (以及 类-&unix; 操作系统), 完成这方面工作是有必要的, 因而, 每位使用者在运行程序之前都必须首先 登录, 而每位用户都有与之对应的用户名 (username) 和密码 (password)。 FreeBSD 会在用户进入之前作出询问这两项信息。 启动脚本 当 FreeBSD 引导并运行完启动脚本之后, 启动脚本这些程序在FreeBSD在启动过程中运行。 它们的主要功能为其他每方面的运行作好准备, 和运行您的配置所用到的相关环境。 , 它会给出一个提示, 并要求输入有效的用户名: login: 举个例子更容易理解,我们假设您的用户名叫 john。 在提示符下输入 john 并按 Enter, 此时您应该看到这个提示 password login: john Password: 现在输入 john的密码并按下 Enter。 输入密码时是 不回显的! 不必为此担心, 这样做是出于安全考虑。 假如您输入的密码是正确的, 这时你应该已进入 FreeBSD, 并可以开始尝试可用的命令了。 您应该看见 MOTD 或者出现一个命令提示符 (#$% 字符). 这表明您已成功登录进入FreeBSD。 多个控制台 在一个控制台运行 &unix; 命令虽说很好, 但 FreeBSD 具有一次运行 多个程序的能力。 仅使用一个控制台只会浪费 FreeBSD 同时运行多任务的能力。 而 虚拟控制台 在这方面发挥强大的功能。 FreeBSD 能配置出给您不同需求的虚拟控制台, 在键盘上您用一组键就能从各个虚拟控制台之间切换。 各个控制台有自己的传输通道, 当您从各个控制台切换时 FreeBSD 会切换到合适的键盘传输通道和显示器传输通道。 FreeBSD 各个控制台之间可利用特殊组键切换并保留原有控制台 关于 FreeBSD 的控制台和键盘设备这些详细资料或使用技巧可在手册里找到: &man.syscons.4;、&man.atkbd.4;、&man.vidcontrol.1; 和 &man.kbdcontrol.1;。 我们不在这里详细介绍, 但是爱好者总会在手册里找到详细的答案。 ,您可这样做: AltF1AltF2, 一直到 AltF8 在FreeBSD里切换到其中一个虚拟控制台。 同样地, 您正在从其中某个控制台切换到另一个控制台的时候, FreeBSD 会保存正在使用和恢复将要使用屏幕传输通道。 这种结果形成一种 错觉, 您拥有许多虚拟屏幕和键盘可以输入很多的命令。 这些程序需要在一个虚拟控制台不能停止运行而又不需要观察它, 它继续运行而您可以切换到其他的虚拟控制台。 <filename>/etc/ttys</filename>文件 FreeBSD 虚拟控制台的默认配置为8个,但并不是硬性设置, 您可以很容易设置虚拟控制台的个数增多或减少。 虚拟控制台的的编号和设置在 /etc/ttys 文件里。 您可以使用 /etc/ttys 文件在 FreeBSD 下配置虚拟控制台。 文件里每一未加注释的行都能设置一个终端或虚拟控制台 (当行里含有 # 这个字符时不能使用) 。 FreeBSD 默认配置是配置出9个虚拟控制台而只能启动8个, 以下这些行是 ttyv 一起启动: # name getty type status comments # ttyv0 "/usr/libexec/getty Pc" cons25 on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" cons25 on secure ttyv2 "/usr/libexec/getty Pc" cons25 on secure ttyv3 "/usr/libexec/getty Pc" cons25 on secure ttyv4 "/usr/libexec/getty Pc" cons25 on secure ttyv5 "/usr/libexec/getty Pc" cons25 on secure ttyv6 "/usr/libexec/getty Pc" cons25 on secure ttyv7 "/usr/libexec/getty Pc" cons25 on secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure 如果要了解这个文件中每一列的详细介绍, 以及虚拟控制台上所能使用的配置, 请参考联机手册 &man.ttys.5;。 单用户模式的控制台 关于 单用户模式 详细介绍在 这里可以找到。 当您运行单用户模式时只能使用一个控制台, 没有多个虚拟控制台可使用。 单用户模式的控制台同也可以在 /etc/ttys 文件设置, 可在这行找到要启动的控制台 # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure 这个 console 已经注释掉, 您可编辑这行把 secure 改为 insecure。 这样, 当用单用户进入 FreeBSD 时, 它仍然要求提供 root 用户的密码。 在把这个选项改为 insecure 的时候一定要小心, 如果您忘记了 root用户的密码, 进入单用户会有点麻烦。 尽管仍然能进入单用户模式, 但如果您不熟悉它就会非常令人头疼。 + + + 改变控制台的显示模式 + + FreeBSD 控制台默认的显示模式可以被调整为 1024x768, 1280x1024, + 或者任何你的显卡芯片和显示器所支持的其他尺寸。 + 要使用一个不同的显示模式, + 你必须首先重新编译内核并包含以下2个选项: + + OPTIONS VESA +OPTIONS SC_PIXEL_MODE + + 在内核用这2个选项编译完成后,你就可以使用 &man.vidcontrol.1; + 工具来测定你的硬件支持何种显示模式了。 以 root + 身份在控制台键入以下命令来获得一份所支持的显示模式列表。 + + &prompt.root; vidcontrol -i mode + + 这个命令的输出是一份你的硬件所支持的显示模式列表。 + 你可以在以 root 身份在控制台上键入以下命令来改变显示模式: + + &prompt.root; vidcontrol MODE_279 + + 如果你对于新的显示模式满意,那么可以把它加入到 + /etc/rc.conf 使机器在每次启动的时候都能生效, + 我们使用了上一个例子中的模式: + + allscreens_flags="MODE_279" + 权限 UNIX FreeBSD,是 BSD &unix; 的延续, 并基于几个关键的 &unix; 观念。 从一开始就多处提到 FreeBSD 是一个多用户的操作系统, 它能分别处理几个同时工作的用户所分配的毫无关联任务。 并负责为每位用户的硬件设备、 外设、 内存和 CPU 处理时间作出合理安排。 因为系统有能力支持多用户, 在每一方面系统都会作出谁能读、 写和执行的资源权力限制。 这点权限以三个八位元的方式储存着, 一个是表示文件所属者, 一个是表示文件所属群组, 一个是表示其他人。 这些数字以下列方式表示: 权限 文件权限 数值 权限 目录列表 0 不能读,不能写,不能执行 --- 1 不能读,不能写,可执行 --x 2 不能读,可写,不能执行 -w- 3 不能读,可写,可执行 -wx 4 可读,不能写,不能执行 r-- 5 可读,不能写,可执行 r-x 6 可读,可写,不能执行 rw- 7 可读,可写,可执行 rwx ls 目录 使用命令的 (&man.ls.1;) 参数可以显示出文件的所属者、 所属组和其他人等属性。 请看以下的例子: &prompt.user; ls -l total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt ... 使用 ls -l 在每行的开始出现了: -rw-r--r-- 从左边起的第一个字,告诉我们这个文件是一怎样的文件: 普通文件?目录?特殊设备?socket?或是设备文件? 在这个例子, - 表示一个普通文件。 接下来三个字是 rw- 是文件拥有者的权限。 再接下来的三个字是 r-- 是文件所属群组的权限。 最後三个字是 r-- 是其他人的权限。 以这一个文件为例,他的权限设定是拥有者可以读写这个文件、群组可以读取、 其他使用者也能读取这个文件。 根据上面的表格, 用数字表示这个文件其三部分的权限应该是 644 这样很好,但系统怎样对设备进行权限控制的? 事实上 FreeBSD 将大部份设备(的每一个设备)当作一个文件看待, 用程序能打开、读取、写入数据就如其他的文件一样。 而设备文件放在 /dev 目录。 目录也视为一种文件,也有读取、写入、执行的权限。 但目录的执行权限意义并不与普通文件相同, 实际上执行权限是进入权限。 当一个目录是被标示可以执行的时, 表示可以进入它, 或者换言之, 利用 cd (改变当前目录) 进入它。 此外, 这也表示有权进入目录的用户, 可以访问其下的已知名字的文件 (当然目录下的文件也受到访问限制)。 详细方面,想读取一个目录的列表就必须设为可读权限, 同时想删除一个已知的文件,就必须把目录下这个文件设为可写 执行权限。 还有更多权限设定, 但是他们大多用在特殊状况下如一个setuid的执行文件和粘贴性目录, 如果想要得知有关文件权限和如何设定的更多资讯,请看手册&man.chmod.1;。 Tom Rhodes Contributed by 权限的符号化表示 权限符号 权限符号,某些时候就是指符号表达式, 使用八进制的字符给目录或文件分配权限。 权限符号的使用语法是 (谁) (作用) (权限)。 看看下列数值的在那些地方所起什么样的作用: 选项 字母 介绍 (谁) u 用户 (谁) g 所属群体 (谁) o 其他人 (谁) a 所有人 (全部) (作用) + 增加权限 (作用) - 减少权限 (作用) = 确定权限 (权限) r 可读 (权限) w 可写 (权限) x 执行 (权限) t 粘贴位 (权限) s 设置 UID 或 GID 这些数值 &man.chmod.1; 以习惯标定的。 举个例子,用以下命令阻止其他人访问 FILE文件: &prompt.user; chmod go= FILE 如果需要对文件一次进行多项变动, 则可用逗号分开, 在下面的例子中, 将去掉 FILE 文件的群体和 全体其他用户 可写权限, 并为所有人增加可执行权限: &prompt.user; chmod go-w,a+x FILE Tom Rhodes Contributed by &os; 文件标志 在前面所介绍的文件权限的基础之上, &os; 还支持使用 文件标志。 这些标志为文件提供了进一步的安全控制机制, 但这些控制并不适用于目录。 这些文件标志提供了针对文件的进一步控制, 帮助确保即使是 root 用户也无法删除或修改文件。 文件标志可以通过使用 &man.chflags.1; 工具来修改, 其用户界面很简单。 例如, 要在文件 file1 上应用系统禁删标志, 应使用下述命令: &prompt.root; chflags sunlink file1 要禁用系统禁删标志, 只需在前述命令中的 标志前加 no。 例如: &prompt.root; chflags nosunlink file1 要显示文件上的标志, 应使用命令 &man.ls.1; 的 参数: &prompt.root; ls -lo file1 输出结果应类似于: -rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1 许多标志只可以由 root 用户来增加, 而另一些, 则可以由文件的所有者来增加。 建议管理员仔细阅读 &man.chflags.1; 和 &man.chflags.2; 联机手册, 以对其加深理解。 目录架构 目录层次 理解 FreeBSD 的目录层次结构对于建立对系统整体的理解十分重要的基础。 其中, 最重要的概念是根目录, /。 这个目录是系统引导时挂借的第一个目录, 它包含了用以准备多用户操作所需的操作系统基础组件。 根目录中也包含了用于在启动时转换到多用户模式之前挂接其他文件系统所需的挂接点。 挂接点 (mount point) 是新增的文件系统在接入现有系统时的起点位置 (通常是根目录)。 在 对此进行了详细的阐述。 标准的挂接点包括 /usr/var/tmp/mnt, 以及 /cdrom。 这些目录通常会在 /etc/fstab 文件中提及。 /etc/fstab 是一张包含系统中各个文件系统及挂接点的表。 在 /etc/fstab 中的绝大多数文件系统都会在启动时由 &man.rc.8; 脚本自动挂接, 除非特别指定了 选项。 更多细节请参考 您可以通过 &man.hier.7; 来了解完整的文件系统层次说明。 现在, 让我们先来看一看绝大多数的常见的目录以供参考。 目录 介绍 / 文件系统的根目录。 /bin/ 在单个用户和多用户环境下的基本工具目录。 /boot/ 在操作系统在启动加载期间所用的程序和配置。 /boot/defaults/ 默认每步引导启动的配置内容,请查阅&man.loader.conf.5;。 /dev/ 设备节点,请查阅 &man.intro.4;。 /etc/ 系统启动的配置和脚本。 /etc/defaults/ 系统默认的启动配置和脚本,请参考 &man.rc.8; 。 /etc/mail/ 关系到邮件系统运作的配置, 请参考 &man.sendmail.8;。 /etc/namedb/ named 配置文件,请参考 &man.named.8;。 /etc/periodic/ 每天、每星期和每月周期性地运行的脚本, 请通过 &man.cron.8;查阅 &man.periodic.8;。 /etc/ppp/ ppp配置文件,请查阅&man.ppp.8;。 /mnt/ 由管理员习惯使用挂接点的临时空目录。 /proc/ 运行中的文件系统,请参阅 &man.procfs.5; 和 &man.mount.procfs.8;。 /rescue/ 用于紧急恢复的一组静态联编的程序; 参见 &man.rescue.8;。 /root/ root用户的Home(主)目录。 /sbin/ 在单个用户和多用户环境下的存放系统程序和管理所需的基本实用目录。 /tmp/ 临时文件。 /tmp 目录中的内容, 一般不会在系统重新启动之后保留。 通常会将基于内存的文件系统挂在 /tmp 上。 这一工作可以用一系列 tmpmfs 相关的 &man.rc.conf.5; 变量来自动完成。 (或者, 也可以在 /etc/fstab 增加对应项; 参见 &man.mdmfs.8;)。 /usr/ 存放大多数用户的应用软件。 /usr/bin/ 存放实用命令,程序设计工具,和应用软件。 /usr/include/ 存放标准 C include 文件. /usr/lib/ 存放库文件。 /usr/libdata/ 存放各种实用工具的数据文件。 /usr/libexec/ 存放系统实用或后台程序 (从另外的程序启动执行)。 /usr/local/ 存放本地执行文件, 库文件等等, 同时也是 FreeBSD ports 安装的默认安装目录。 /usr/local/usr 中的目录布局大体相同, 请查阅 &man.hier.7;。 但 man 目录例外, 它们是直接放在 /usr/local 而不是 /usr/local/share 下的, 而 ports 说明文档在 share/doc/port /usr/obj/ 通过联编 /usr/src 得到的目标文件。 /usr/ports 存放 FreeBSD 的 Ports Collection (可选)。 /usr/sbin/ 存放系统后台程序 和 系统工具 (由用户执行)。 /usr/share/ 存放架构独立的文件。 /usr/src/ 存放 BSD 或者本地源码文件。 /usr/X11R6/ 存放 X11R6 可执行文件、 库文件、 配置文件等的目录(可选)。 /var/ 多用途日志、 临时或短期存放的, 以及打印假脱机系统文件。 有时会将基于内存的文件系统挂在 /var 上。 这一工作可以通过在 &man.rc.conf.5; 中设置一系列 varmfs 变量 (或在 /etc/fstab 中加入一行配置; 参见 &man.mdmfs.8;) 来完成。 /var/log/ 存放各种的系统记录文件。 /var/mail/ 存放用户mailbox(一种邮件存放格式)文件。 /var/spool/ 各种打印机和邮件系统spooling(回环)的目录。 /var/tmp/ 临时文件。 这些文件在系统重新启动时通常会保留, 除非 /var 是一个内存中的文件系统。 /var/yp NIS 映射。 磁盘组织 FreeBSD 查找文件的最小单位是文件名。 而文件名区分大小写,这就意味着 readme.txtREADME.TXT 是两个不相同的文件。 FreeBSD 不凭文件扩展名 (.txt) 去识别这个文件是 程序、 文档, 或是其他格式的数据。 各种文件存放在目录里。 一个目录可以含有许许多多的文件, 允许含有其他的目录,同样允许您添加不同层次的目录在里面。 可以轻松地组织您的数据。 可以通过文件或目录名来指定文件和目录, 在目录名后面加上一个斜线, /, 如果需要的话。 如果您有一个名为 foo 的目录, 它包含另一个目录 bar, 后者包括一个叫 readme.txt 的文件, 则全名, 或者说到文件的 路径 就是 foo/bar/readme.txt 在文件系统里目录和文件的作用是存储数据。 每一个文件系统都有且只有一个顶级目录 根目录, 这个根目录则可以容纳其他目录。 您也许在其他的一些操作系统碰到类似这里的情况, 当然也有不同的情况。 举些例子, &ms-dos; 是用 \ 分隔文件名或目录名, 而 &macos; 则使用: FreeBSD在路径方面不使用驱动器名符号或驱动器名称, 在FreeBSD里您不能这样使用: c:/foo/bar/readme.txt 为了代替(驱动器名符号), 一个文件系统会指定 根 文件系统, 根文件系统的根目录是 /。 其他每一个文件系统 挂接在根文件系统下。 无论有多少磁盘在FreeBSD 系统里, 每个磁盘都会以目录的方式加上。 假设您有三个文件系统, 名为 ABC。 每个文件系统有一个根目录, 而各自含有两个其他的目录, 名为 A1, A2 ( B1, B2C1, C2)。 看看 A 这个根文件系统。 假如您用 ls 命令来查看这个目录您会见到两个子目录: A1A2。 这个目录树是这个样子: / | +--- A1 | `--- A2 一个文件系统必须挂到另一个文件系统的某一目录, 所以现在假设把 B 文件系统挂到 A1目录, 那 B 根目录因此代替 了 A1,而显示出 B 目录(的内容): / | +--- A1 | | | +--- B1 | | | `--- B2 | `--- A2 无论B1B2 目录在那里而延伸出来的路径必须为 /A1/B1/A1/B2。 而在 /A1 里原有的文件会临时隐藏。 想这些文件再出现把 B 从 A 挂接释放 B 挂接在 A2 那图表的样子就是这样子: / | +--- A1 | `--- A2 | +--- B1 | `--- B2 这个路径分别是 /A2/B1/A2/B2 文件系统能把顶部挂接上另一个文件系统上。 继续这个例子, 把 C 文件系统挂接在 B 文件系统里的 B1 目录, 排列如下: / | +--- A1 | `--- A2 | +--- B1 | | | +--- C1 | | | `--- C2 | `--- B2 或者把 C 文件系统挂接在 A 文件系统里的A1目录: / | +--- A1 | | | +--- C1 | | | `--- C2 | `--- A2 | +--- B1 | `--- B2 假如您熟悉 &ms-dos; 并知道 join 命令, 尽管不相同,其实是相似的。 这方面不是普通知识而且涉及到您自己所关心的, 当您安装FreeBSD并在以后添加新磁盘时, 您必须知到该如何新建文件系统和挂接上。 (FreeBSD系统)它有一个主要的根文件系统, 不需要另外新建立, 但当需要手工处理时,这是一个有用的知识。 多样性文件系统的益处 不同的文件系统可用不同的 挂接参数。 举些例子, 仔细想一下, 根文件系统能用只读的方式挂接上, 防止不经意删除或编辑到一个危险的文件。 把各用户能写入的文件系统分开, 像/home这样, 由另外的文件系统分别用 nosuid 参数挂接,这个参数防止 suid/guid 在执行这个文件系统中的文件时生效, 从而缓解了一些安全问题。 FreeBSD 对一个文件系统的文件布局自动优化, 并依赖文件系统的使用习惯。 所以一个文件系统应有一个针对大量小型文件频繁写入的优化, 另外大型文件系统的优化也应落实。 FreeBSD 的文件系统能够在断电时尽可能避免损失。 然而, 在关键点时的电源失效仍然可能会破坏文件系统的结构。 将您的文件系统分成多个有助于分散风险, 并方便备份和恢复。 统一文件系统的益处 文件系统是固定大小的。 当安装FreeBSD时新建一个文件系统并设定一个大小, 您会在稍后发觉到必须去建一个大的分区。 如果配置不当, 则需要备份、 重新创建文件系统, 然后再恢复数据。 FreeBSD 提供了 &man.growfs.8; 命令。 这使得能够实时地调整文件系统的大小, 因而不再受其限制。 文件系统是和分区一一对应的。 这里的分区和常用的术语分区 (例如, &ms-dos; 分区) 的意思并不一样, 这是由于 &os; 的 &unix; 传统造成的。 每一个分区使用一个从 ah 的字母来表示。 每个分区只能包含一个文件系统, 这意味着文件系统通常可以由它们在文件系统目录结构中的挂接点, 或对应的分区字母来表示。 FreeBSD 的 交换分区 也需要使用磁盘空间。 交换分区是给 FreeBSD 作 虚拟内存 使用的, 这样能令您的计算机有更多的内存可使用, 当FreeBSD在运行而内存不够的时候, 它会把其他一些可转移的数据转移到交换分区, 空出内存的位置以供使用。 某些 partitions 的用途是确定的。 分区 约定 a 通常指定为根文件系统 b 通常指定为交换分区 c 通常它和所在的 slice 大小相同。 c 分区上工作时必定会影响到事整个 slice (举个例子,坏块扫描器)。 您通常不愿意在这个partition建立文件系统。 d 分区 d 曾经有特殊的含义, 不过这种意义在现时的系统上已不再适用, 因此 d 可以和任何其它普通的分区一样使用了。 每一个包含了文件系统的分区被保存在 FreeBSD 称为 slice 的部分上。 Slice 是一个 FreeBSD 术语, 通常被叫做分区, 再次强调, 这是由于 FreeBSD 的 &unix; 背景。 Slices 有其编号, 从1到4。 slices partitions 专用 (dangerously dedicated) Slice 编号在设备名后面, 并有一个 s 前缀, 从 1 开始。 因此 da0s1 是第一个 SCSI 驱动器的第一个 slice。 每个磁盘上只能有四个物理的 slices, 但您可以在物理 slice 中使用适当的类型来创建逻辑 slice。 这些扩展 slice 编号从 5 开始, 因此 ad0s5 是第一个 IDE 磁盘中的第一个 扩展 slice。 文件系统所使用的设备应该占满 slice。 Slices, 专项指定 物理驱动器, 和其他驱动器都包含partitions, 那几个的partitions都是用字母从 ah来标定的, 而这些字母都在驱动器名字之后,所以 da0a 是指首个da设备的 a partition, 而那个就是 专项指定ad1s3e 是指IDE磁盘第三个slice的第五个partition。 最终,每个磁盘都被系统识别。 一个磁盘名字是用磁盘类型代码和编号来标识的, 它不像slices,磁盘的编号是由0开始的。 对应代码请看这里所列出的 当在 FreeBSD 中指定 partition 名字时, 必须同时包含这个分区的 slice 和磁盘的名字; 类似地, 在指定 slice 时, 也应该给出包含该 slice 的磁盘名字。 可这样列出: 磁盘名称,s,slice 编号,和partition标定字母。 例子请看 这里显示了一个磁盘的布局,有更清楚的帮助。 在安装FreeBSD时,您首先要配置好磁盘slices, 然后在FreeBSD使用的slice上建立partitions。 并在每个partition上建立一个文件系统(或交换分区), 和指定文件系统的挂接位置。 磁盘设备的代码 代码 说明 ad ATAPI (IDE) 磁盘 da SCSI 直接存取磁盘 acd ATAPI (IDE) 光驱 cd SCSI 光驱 fd 软驱
样例磁盘, Slice, 和 Partition 它们的命名 命名 说明 ad0s1a 在首个IDE磁盘(ad0)上的 第一个slice (s1)里的 第一个partition (a)。 da1s2e 在第二个SCSI磁盘(da1)上的 第二个slice(s2)里的 第五个partition(e)。 一个磁盘的布局 从在系统里的首个IDE磁盘图表可以显示出FreeBSD的见解。 假设磁盘大小为4 GB,它里面包含了两个2 GB 大小的slices (但在&ms-dos;叫partitions)。 首个slice是一个&ms-dos;磁盘叫C:, 而第二个slice是FreeBSD配置好的slice。 FreeBSD配置好的slice有三个partitions和另一个交换分区。 这三个partitions各自控制一个文件系统。 partitiona 用于根文件系统, partitione 用于 /var 目录层, partitionf 用于 /usr 目录层。 .-----------------. --. | | | | DOS / Windows | | : : > First slice, ad0s1 : : | | | | :=================: ==: --. | | | Partition a, mounted as / | | | > referred to as ad0s2a | | | | | :-----------------: ==: | | | | Partition b, used as swap | | | > referred to as ad0s2b | | | | | :-----------------: ==: | Partition c, no | | | Partition e, used as /var > file system, all | | > referred to as ad0s2e | of FreeBSD slice, | | | | ad0s2c :-----------------: ==: | | | | | : : | Partition f, used as /usr | : : > referred to as ad0s2f | : : | | | | | | | | --' | `-----------------' --'
文件系统的挂接和卸下 这种文件系统就像一棵树那样用/确立根部, 是比较理想的文件系统。 而/dev/usr和其他目录 就是根目录的分枝, 另外这些目录可以再分枝,例如/usr/local 根文件系统 应该考虑给某些目录一些空间从而分散文件系统。 /var 之下包含目录 log/,目录spool/, 和不同类型的临时文件,很可能把它塞满。 把什么都塞进根文件系统不是一个好主意, 好的做法是应该把 /var/分离出去。 另一个要考虑的是,给物理设备或虚拟磁盘这些自带空间的文件系统确定目录结构树。 例如 网络文件系统 或光驱的挂接。 <filename>fstab</filename> 文件 文件系统 使用fstab的挂接 引导过程 期间, 自动挂上/etc/fstab所列出的文件系统。 (除非他们注明为 选项)。 /etc/fstab 文件包含的各行的列表格式如下: device /mount-point fstype options dumpfreq passno device 设备名称(设备必须存在), 说明在 . mount-point 目录 (目录必须存在), 用在那个挂接上的文件系统上。 fstype 文件系统类型,请通过&man.mount.8;查阅。 默认的FreeBSD文件系统类型是ufs options 设为可读写文件系统的选项, 或设为只读文件系统的选项, 或其他一些选项,可随意选一个。 一个常用的选项 用在不需在引导过程期间挂接的文件系统。 其他的选项在 &man.mount.8; 手册里列出。 dumpfreq &man.dump.8; 使用这项去决定那个 文件系统必须移贮。假如缺少这项,默认的数值为0。 passno 这一项决定文件系统的检查顺序, 文件系统想跳过检查应将passno设为0。 根文件系统(那个是在每方面开始之前必须检查的) 应该将它的 passno 设为1, 其他文件系统的 passno 必须把数值设到大于1。假如多个文件系统的passno的值相同, 那么 &man.fsck.8; 在允许的情况下将尝试并行地去检查文件系统。 请参阅 &man.fstab.5; 联机手册, 以获得关于 /etc/fstab 文件格式, 以及其中所包含的选项的进一步信息。 <command>mount</command> 命令 文件系统 挂接 这个 &man.mount.8; 命令是挂接文件系统的基本运用。 使用最多的基本格式: &prompt.root; mount device mountpoint 它的选项非常多,而&man.mount.8; 手册同样提及, 但常用的都在这里: 挂接的各种选项 挂接/etc/fstab里所有列出的文件系统。 除非标记为 noauto 或作了排除在外的 类型标记,或者在这之前已挂上。 除了实际上系统调用以外,可以完成任何事情,这个选项是和 参数一起连在一块使用,可以决定&man.mount.8;所做的事情。 强制去挂接一个未知的文件系统(会有危险), 或当把一个文件系统挂接状态由可读写降为只读时,强制撤消可写通道。 以只读方式挂接文件系统。 这和在指定了 选项配合 (对于 &os; 5.2 之前的版本来说, 则是 ) 参数的效果是一样的。 fstype 根据给出的文件系统类型挂接文件系统, 假如给于选项,仅挂接这个类型的文件系统。 ufs 是默认的文件系统类型。 在文件系统上修改挂接选项。 版本模式。 以可读写方式挂接文件系统。 The 选项采用一个逗号分开以下多个选项: noexec 不允许文件系统上的二进制程序执行。这也是一个有用的安全选项。 nosuid 不允许文件系统上的 setuid 或 setgid 标记生效。这也是一个有用的安全选项。 <command>umount</command> 命令 文件系统 卸下 &man.umount.8; 命令同样采用一个参数、一个挂接点、一个设备名。 或采用选项,又或采用选项。 所有格式都可采用 去强行卸下, 或采用 用那适当的版本。 但警告,采用 并不是一个好主意, 强行卸下文件系统可能损坏计算机或破坏文件系统上的数据。 会卸下所有已挂接的文件系, 可能通过后面列出的文件系统进行修改, 但无论如何,都不会尝试去卸下根文件系统。 进程 FreeBSD 是一个多任务操作系统。 这就意味着好像一次可以运行一个以上的程序。 每个占用一定时间运行的程序就叫process。 每个程序启动运行时至少有一个新进程,并在所有运行的时候保持有一个系统进程的编号, 而一直由系统对它监管。 每个进程用来标识的一个编号就叫 进程 ID, 或叫 PID。 而且,就像文件那样,每个进程也有所属用户和所属群体。 所属用户和所属群体使用在这方面:确定这个进程可以打开那些文件和那些设备, 从而在初期使用文件的权限。 多数的进程都同样有一个父进程, 而进程是依靠父进程来启动的。 例如,假如您把命令输入到shell里那shell是一个进程,而您运行的各个命令同样是进程, 那么,shell就是您各个运行进程的父进程。 而这方面有一个例外的进程就叫&man.init.8;。 init始终是首个进程,,所以他的PID始终是1, 而init在FreeBSD起动时由内核自动启动。 在系统上,有两个命令对进程观察非常有用:&man.ps.1; 和 &man.top.1;。 这个ps命令作用是观察当前运行进程的状态, 显示他们的PID,使用了多少内存,它们启动的命令行。 而top命令则是显示所有运行进程,并在以秒计的短时内更新数据。 您能交互式的观察您计算机的工作。 默认情况下, ps仅显示出您自己所运行的命令。 例如: &prompt.user; ps PID TT STAT TIME COMMAND 298 p0 Ss 0:01.10 tcsh 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) 37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) 48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi 48730 p0 IW 0:00.00 (dns helper) (navigator-linux-) 72210 p0 R+ 0:00.00 ps 390 p1 Is 0:01.14 tcsh 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y 6688 p3 IWs 0:00.00 tcsh 10735 p4 IWs 0:00.00 tcsh 20256 p5 IWs 0:00.00 tcsh 262 v0 IWs 0:00.00 -tcsh (tcsh) 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish 在这个例子里您可看到,从 &man.ps.1; 输出的每一列是有规律的。 PID 就是进程ID,这个较早前已讨论过了。 PID号的分配由 1一直上升直到99999, 当您运行到超过限制时,这些编号会回转分配 (仍在使用中的 PID 不会分配给其他进程)。 TT这一列显示了程序运行所在的终端, 目前可以安全地忽略。 STAT 显示程序的状态,也可以安全地被忽略。 TIME是程序在CPU处理时间—运行的时间量, 并不是指您程序启动到现在的所用的时间。 许多程序碰巧遇到某方面在他们之前要花费大量CPU处理时间时,他们就必须等候。 最后, COMMAND 是运行程序时使所用的命令行。 &man.ps.1;支持使用各种选项去改变显示出来的内容, 最有用的一个就是auxww选项显示出所有运行进程的内容, 而不仅仅是您的进程。 选项显示出进程所归属的用户名字以及内存使用, 选项显示出后台进程。 而 选项表示为 &man.ps.1; 把每个进程的整个命令行全部显示完, 而不是由于命令行过长就把它从屏幕上截去。 下面和从&man.top.1;输出是类似的,一个示例式对话就象这样子: &prompt.user; top last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 47 processes: 1 running, 46 sleeping CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free Swap: 256M Total, 38M Used, 217M Free, 15% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm 48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt ... 这个输出分成两部份。 前面部份(起始前五行) 显示了:运行于最后进程的PID、 系统负载均衡 (那个是指系统繁忙时的调节方式)、 系统正常运行时间 ( 指从启动算起所用的时间) 和当前时间。 前面部份另外的图表 涉及:多少进程在运行(这个情况是47), 多少内存和多少交换分区在使用, 和在不同CPU状态里系统消耗多少时间。 在那下面一连串的纵列和从&man.ps.1;输出的的内存是相似的。 如以前&man.ps.1;一样,您能见到:PID、用户名、CPU处理时间合计、运行的命令。 &man.top.1;默认是显示您的进程所用内存空间的合计。 内存空间这里分成两列,一列为总体大小,另一列是必须请求驻留大小是多少内存—总体大小。 而驻留大小实际上是瞬间使用的多少。 在以上那个例子,您会看到那&netscape;总计需要30 MB内存, 但实际只用了9 MB。 &man.top.1; 每两秒自动刷新一次,您可以用改变刷新的秒数。 守护进程,信号和杀死进程 当您运行一个编辑器时它是很容易控制的,告诉它去加载文件它就加载。 您之所以能这样做,是因为编辑器提供这样便利去这样做,和因为有编辑器去附上的终端。 一些程序在运行中不需要连续的用户输入,一有机会就从终端里分离到后台去。 例如,一个web系统整天都在作web请求的响应,他不需要您输入任何东西就能完成, 这个类别的另一个例子就是把email的传送。 我们把那些程序叫 守护进程。 守护神是希腊神话中的一些人物,非正非邪,他们是些守护小精灵, 大体上为人类作出贡献。 许多类似web服务或mail服务的系统对于今天仍有用途, 这就是为什么在那么长的时间里,BSD的吉祥物保持为一双鞋加一把钢叉的守护神模样。 守护进程的程序命名通常在最后加一个 dBIND 是伯克利互联网域名服务 (而实际执行的程序名称则是 named), Apache web系统的程序就叫 httpd, 在行式打印机上的打印守护进程就是 lpd。 这只是一种惯例,不是标准或硬性规定。 例如,为Sendmail而应用的主要mail守护进程就叫sendmail, 却不叫maild,这和您推测的一样。 有时可能会需要与守护进程进行通讯。 而 信号 则是其中的一种通讯机制。 可以发送信号给守护进程 (或相关的另一些进程) 来与它进行通信, 不同的信号都有自己的数字编号—其中一些有特殊的含义, 其它的则可以被应用程序自己进行解释, 而一般来说, 应用程序的文档会告诉哪些信号会被如何处理。 您只能给所属于您的进程发信号,假如您给其他人的进程发信号, 进程就会用&man.kill.1; 或 &man.kill.2;权限进行拒绝。 当然,root 用户会例外,它能把各种信号发送给每个进程。 在某些情况下,FreeBSD也会向应用软件发送信号。 假如一个应用软件含有恶意写入并试图去访问内存,那是不可想象的,FreeBSD会向那个进程发送 段式违规 信号 (SIGSEGV)。 假如一个应用软件使用&man.alarm.3;系统去进行周期性调用闹钟功能,每当达到时间时, FreeBSD会向应用软件发送闹钟信号(SIGALRM)。 有两个信号可以停止进程:SIGTERMSIGKILLSIGTERM比较友好,进程能捕捉这个信号, 根据您的需要来关闭程序。在关闭程序之前,您可以结束打开的记录文件和完成正在做的任务。 在某些情况下, 假如进程正在进行作业而且不能中断,那么进程可以忽略这个 SIGTERM信号。 对于SIGKILL信号,进程是不能忽略的。 这是一个 '我不管您在做什么,立刻停止'的信号。 假如您发送SIGKILL信号给进程, FreeBSD就将进程停止在那里。 有点不正确—少数的东西是不能中断的。 例如, 假如进程试图读取网络上另一计算机上的文件, 而那个的计算机会因为某些原因拿走了这个文件, 那这个进程从上述情况来看是 不能中断。 最终这个进程会超时,典型的两分钟。一出现超时进程将被杀死。 . 您可能会去使用 SIGHUPSIGUSR1SIGUSR2信号。 这都是些通用的信号,各种应用程序都可以应用 在各方面的信号发送。 假如您改变了web系统的配置文件—并想web系统去重读它的配置, 您可以停止然后再启动httpd。但这样做web系统会导致一个短暂 的中断周期,那样是不受欢迎的。几乎所有的守护进程在编写时,都会指定对SIGHUP 信号进行响应从而重读配置文件。 所以, 最好的方法, 就不是杀死并重启 httpd, 而是发一个 SIGHUP 信号给它。 因为在这方面没有一个标准,不同的守护进程有不同的用法,所以不了解时应读一下守护进程的文档。 发送信号可用&man.kill.1; 命令, 请参考&man.kill.1;所列出的例子。 发送一个信号给进程 这个例子显示了怎样去发一个信号给&man.inetd.8;。 inetd配置文件是/etc/inetd.conf, 如果想inetd 去重读文件系统的话,可以给它发一个SIGHUP 信号。 寻找您要发送信号的进程ID,可以用&man.ps.1; 加 &man.grep.1;来完成。 &man.grep.1;命令被用在搜索输出方面,搜索您指定的字符串。 这命令是由普通用户来执行的,而&man.inetd.8;是root用户运行的, 所以必须给&man.ps.1;带上选项。 &prompt.user; ps -ax | grep inetd 198 ?? IWs 0:00.00 inetd -wW 得出 &man.inetd.8; PID号是198。 有时 grep inetd 命令也出现在输出中, 这是因为在这方面 &man.ps.1; 也是寻找列表中运行进程。 使用 &man.kill.1; 去发送信号。 因为 &man.inetd.8; 是由 root启动的, 您必须使用 &man.su.1; 去 变为 root 用户。 &prompt.user; su Password: &prompt.root; /bin/kill -s HUP 198 和大多数 &unix; 命令一样, &man.kill.1; 如果完成了任务, 就不会给出任何消息。 假如您发送信号给一个不属于您的进程, 您会看到 kill: PID: Operation not permitted. 假如输错了PID号,把信号发送到其他进程,那是坏事。 或者您侥幸,把信号发送到不存在的进程, 您会看见 kill: PID: No such process. 为什么使用 <command>/bin/kill</command>? 许多shell提供了内建kill命令, 这样, shell就能直接发送信号,而不是运行 /bin/kill。 这点非常有用, 但不同shell有不同的语法来指定发送信号的名字, 与其试图把它们学完倒不如简单地直接使用 /bin/kill ... 发送其他的信号也很相似,只要在命令行替换TERMKILL就行了。 在系统上随意杀死进程是个坏主意,特别是&man.init.8;,它的进程ID是1,它非常特殊。 可以运行 /bin/kill -s KILL 1 命令来让系统迅速关机。 当您按下 Return 键之前, 一定要 详细检查您运行 &man.kill.1; 时所指定的参数。 Shells shells 命令行 在FreeBSD里,每日有一大堆工作是在命令行的界面完成的,那就叫做shell。 一个shell的主要功能就是从输入是取得命令然后去执行他。 许多的shell同样能帮我们完成内建的每日功能,例如:文件管理、文件寻找、命令行编辑、 宏指令和环境变量。FreeBSD内含了一些shell,例如:sh、Bourne Shell、 tcsh和改良过的C-shell。 另外也有些shell也可在FreeBSD的Ports得到,例如:zshbash 您想使用那一种shell取决于您的喜好, 假如您是C程序设计师,您可能选择一个C-like shell例如tcsh。 假如您是从Linux过来的或是一个命令行的新手,您可能会试一下bash。 这一点告诉我们每一个shell都有各自的特性,可能适用于您的工作环境,也可能不适用于您的工作环境。 每个shell都有一个共通点就是文件名补全。 输入命令或文件名的前几个字,然后按Tab键,就能靠shell的自动补全功能得出 命令或文件名。这里有一个例子,假设您有两个文件叫 foobarfoo.bar,而您想删除 foo.bar, 可这样在键盘上输入 rm fo[Tab].[Tab] 那么shell就会输出 rm foo[BEEP].bar 这个[BEEP] 是这控制台铃声, 那个是告诉我们它不能完成文件名补全,因为有多个文件名符合。 foobarfoo.bar 都是以 fo开头, 它只可以补全到 foo。 输入 .并再按一次 Tab,shell才把其余的文件名全部显示出来。 环境变量 另一个特点就是shell利用环境变量运行。环境变量是贮存在shell环境空间上相对应的键和可变值, 这个空间能够补程序从shell里读出,而且包含了许多程序的配置。 这个一个常用环境变量列和其含义的列表: environment variables (环境变量) 变量 说明 USER 当前登录进入的用户名。 PATH 搜索程序路径,以两点的冒号分隔开。 DISPLAY 假如有这个变量的话,就是X11显示器的网络名称。 SHELL 当前所用的shell。 TERM 用户终端的名字,通常用在确定终端的能力。 TERMCAP 各种终端功能所用终端分离编码的基本数据项目。 OSTYPE 操作系统类型,默认是FreeBSD。 MACHTYPE 是指系统上运行的CPU体系结构。 EDITOR 用户首选的文本编辑器。 PAGER 用户首选的文本页面调度程序 。 MANPATH 搜索联机手册路径,以两点的冒号分隔开。 Bourne shells 不同的shell设置环境变量也不相同。举个例子, 在如tcshcsh这样的C-Style shell, 您必须使用setenv去设置环境变量。 而在如shbash这样的Bourne shell, 您必须使用export去设置当前环境变量。 再举个例子,要去设置或改变EDITOR环境变量, 在cshtcsh下将EDITOR设为 /usr/local/bin/emacs: &prompt.user; setenv EDITOR /usr/local/bin/emacs 而在Bourne shell下,则是: &prompt.user; export EDITOR="/usr/local/bin/emacs" 您也可以在命令行上加一个$字符在变量之前从而取得环境变量。 举个例子,用echo $TERM 就会显示出$TERM的设定值, 其实就是shell取得$TERM并传给echo来显示的。 shell里有许多特别的字符代表着特别的资料,我们把叫做meta-characters。 最常用的就是*字符,它可代表文件名的任何字符。 这些特别字符应用到文件名全域方面。假如,输入 echo *和输入 ls的效果是相同的,其实就是 shell 取得了全部符合 *的文件名,并传给 echo 在命令行下显示出来。 为了防止shell去分析这些特别字符, 我们可在它之前加一个 \字符去说明它只是普通字符。 echo $TERM就会显示出您的终端情况, 而 echo \$TERM 就会显示出 $TERM 这几个字。 改变您用的Shell 改变您的Shell的最简单方法是使用 chsh 命令。 执行 chsh 将根据您设定的EDITOR 环境变量进入到那个编辑器,假如没有设定,就会进入vi编辑器。 请改变Shell:这行对应值。 您可使用chsh选项, 这样就能设置您的shell却又不用编辑器。假如您想把shell改为bash 可用下面的技巧。 &prompt.user; chsh -s /usr/local/bin/bash 您使用的shells必须/etc/shells 文件里列出。 假如您从 ports里装一个shell, 那就不用做这步了。 假如您手工装一个shell,那就要手工添加进去。 举个例了子,假如您手工把 bash装到 /usr/local/bin里,您还要进行这一步: &prompt.root; echo "/usr/local/bin/bash" >> /etc/shells 然后运行chsh 文本编辑器 文本编辑器 编辑器 FreeBSD 的很多配置都可以通过编辑文本文件来完成。 因此, 最好能熟悉某种文本编辑器。 FreeBSD 基本系统中提供了一些, 您也可以从 Ports Collection 安装其它编辑器。 ee editors ee 最容易学的而又简单的编辑器是 ee编辑器, 是个标准的简易编辑器。 要启动 ee,首先就要在命令行输入 ee filenamefilename 是一个要编辑的文件名。 例如,要编辑 /etc/rc.conf就要输入 ee /etc/rc.conf,在 ee的控制内, 编辑器所有功能的操作方法都显示在最上方。 这个^ 字符代表 键盘上的Ctrl 键, 所以^e 就是 Ctrle组合键。 假如想离开ee, 按Esc键,就可选择离开编辑器。 当您修改了内容的时候,编辑器会提示您保存。 vi 编辑器 vi emacs 编辑器 emacs FreeBSD本身也带许可多有强大功能的文本编辑器, 例如 vi。还有其他在FreeBSD Ports里几种, 像 emacsvim。 这些编辑器有着强大的功能,但同时学习起来比较复杂。 不管怎样,假如您从事文字编辑方面的工作, 学习如vimemacs 这些有强大功能的编辑器用法, 在长时间工作里会帮您节省不少的时间。 设备和设备节点 在一个系统里,硬件描述通常用法就是一个设备对应一个术语,包括磁盘、打印机、显卡和键盘。 当 FreeBSD 启动过程中,大多数的设备都能探测到并显示出来, 您也可以查阅/var/run/dmesg.boot, 引导时所有信息都在里面。 例如, acd0 就是 首个 IDE 光盘设备, 而 kbd0 则代表键盘。 在&unix;操作系统里,大多数设备存在的特殊访问文件就是叫做设备节点, 他们都定位在/dev目录里。 建立设备节点 当在系统中添加新设备或将附加设备的支持编译进内核之后, 都必须为其建立设备节点。 <literal>DEVFS</literal> (DEVice 文件系统) 这个设备文件系统, 或叫 DEVFS, 为内核的设备命名在整体文件系统命名里提供通道, 并不是建立或更改设备节点, DEVFS只是为您的特别文件系统进行维护。 请参见 &man.devfs.5; 联机手册以了解更多细节。 二进制文件格式 要理解为什么 &os; 使用 &man.elf.5; 格式, 您必须首先了解一些 &unix; 系统中的 三种 主要 可执行文件格式的有关知识: &man.a.out.5; 是最古老和经典的 &unix; 目标文件格式, 这种格式在其文件的开始处有一个短小而又紧凑的首部, 该首部带有一个魔幻数字,用来标识具体的格式(更多详情参见&man.a.out.5;)。 这种格式包含3个要装载入内存的段:.text, .data, 和 .bss,以及 一个符号表和一个字符串表。 COFF SVR3目标文件格式。其文件头现在包括一个区段表(section table), 因此除了.text,.data,和.bss区段以外,您还可以包含其它的区段。 &man.elf.5; COFF 的后继, 其特点是可以有多个区段, 并可以使用32位或64位的值。 它有一个主要的缺点: ELF 在其设计时假设每个系统体系结构只有一种 ABI。 这种假设事实上相当错误, 甚至在商业化的SYSV世界中都是错误的 (它们至少有三种ABI: SVR4, Solaris, SCO)。 FreeBSD试图在某种程度上解决这个问题,它提供一个工具,可以 对一个已知的ELF可执行文件 标识它所遵从的ABI的信息。 更多这方面的知识可以参见手册页&man.brandelf.1; FreeBSD从经典阵营中来,因此使用了&man.a.out.5;格式, 众多BSD版本的发行(直到3.X分支的开始)也证明了这种格式的有效性。 虽然在那以前的某段时间,在FreeBSD系统上创建和运行ELF格式 的二进制可执行文件(和内核)也是可能的,但FreeBSD一开始并不积极进步 到使用ELF作为其缺省的格式。为什么?噢,当Linux阵营完成了 转换到ELF格式的痛苦历程后,却发现并不足以由此而放弃 a.out可执行文件格式,因为正是由于它们不灵活的, 基于跳转表的共享库机制,使得销售商和开发者们构建共享库非常困难。 直到已有的ELF工具提供了一种解决共享库问题的办法, 并被普遍认为是前进方向以后,迁徙的代价在FreeBSD界才被接受, 并由此完成了迁徙。FreeBSD的共享库机制其基础更类似于Sun &sunos;的共享库机制, 并且正因为此,其易用性很好。 那么,为什么会有这么多不同的格式呢? 回溯到蒙昧和黑暗的过去,那时只有简单的硬件。这种简单的硬件支撑了一个简单 和小型的系统。在这样的简单系统上(PDP-11)a.out格式 足以胜任表达二进制文件的任务。当人们将&unix;从这种简单的系统中移植出来的时候, a.out格式被保留了下来,因为对于早期将&unix移植到 Motorola 68k,VAXen等系统来说,它还是足够可用的。 然后,一些聪明的硬件工程师认为,如果可以让软件完成一些简单的聪明操作, 那么他们就可以在硬件设计中减少若干门电路,并可以让CPU核心运行得更快。 当a.out格式用于这种新型的硬件系统时(现在我们叫它 RISC),显得并不合适。因此,人们设计了许多新的格式 以便在这样的硬件系统上能获得比简单的a.out格式更优越 的性能。诸如COFFECOFF,还有其它 一些晦涩难懂的格式正是在这个阶段被发明出来的,人们也研究了这些格式的局限性, 慢慢地最终落实到ELF格式。 同时,程序的大小变得越来越大,磁盘空间(以及物理内存)相对来说却仍然较小, 因此共享库的概念便产生了。VM系统也变得越来越复杂了。当所有这些进步都建立在 a.out格式的基础上的时候,它的可用性随着每个新特性 的产生就受到了严重考验。并且,人们还希望可以在运行时动态装载某些东西,或者 在初始化代码运行以后可以丢弃部分程序代码,以便节约主存储器和交换区。编程语言 也变得越来越复杂,人们希望可以在main()函数执行之前自动执行某些代码。为了实现 所有这些功能,人们对a.out格式作了很多改动(hack), 他们在某个阶段里基本也是可行的。随着时间的推移,a.out格式 不得不增加大量的代码和复杂度来满足这些需求。虽然ELF格式 解决了许多这样的问题,但是从一个可用的系统迁移到另一个系统却是痛苦的。因此 直到继续保留a.out格式的代价比迁移到ELF格式 的代价还大的时候,人们才会最终转换到ELF格式。 然而,随着时间的推移,FreeBSD系统本身的编译工具(特别是汇编器和装载器) 赖以派生的编译工具,其发展却形成了两个平行的分支。FreeBSD这个分支增加了共享库, 并修改了一些错误。而原先编写了这些工具的GNU人则重写了这些工具,并对交叉编译提供了 更简化的支持,还随意插入了不同格式的支持,等等。虽然很多人希望创建针对FreeBSD的 交叉编译器,但他们却并未如愿以偿,因为FreeBSD的asld的源代码更为老旧,所以无法完成这个任务。 新的GNU工具链(binutils)则确实支持交叉编译,ELF 格式,共享库,C++扩展,等等。并且,由于很多供应商都发布ELF格式的 二进制文件,因而让FreeBSD能够运行它们将是一个很好的事情。 ELF格式比a.out格式开销要大些,同时也 允许基础系统有更好的扩展性。ELF格式的有关工具有着更好的维护, 并且提供交叉编译支持,这对许多人来说是很重要的。ELF格式可能会稍微 慢一些,但很难测量出来。另外,在这两者之间,有许多细节也是不同的,比如它们映射页面的方式, 处理初始化代码的方式,等等。所有这些都不太重要,但这也确实是不同之处。在将来的适当时候, GENERIC内核将不再支持a.out格式,并且, 当不再需要运行遗留的a.out格式程序时,内核也将不再提供对其的支持。 取得更多的资讯 联机手册 联机手册 最详细的使用说明文档莫过于 FreeBSD 里的联机手册了。 几乎每一个程序都会附上一份简短说明, 以介绍这个程序的的基本功能以及参数的用法。 我们能通过 man 命令来阅读这些说明, 而使用 man 命令却是简单的事情: &prompt.user; man command command 就是您要了解的命令命称。 举个例子,想了解 ls 命令就输入: &prompt.user; man ls 这些在线手册分下列章节: 用户命令。 系统调用以及错误代码。 C 库文件里的函数说明。 设备驱动程序。 文件格式。 游戏以及其他娱乐。 各种资讯。 系统维护以及命令。 内核开发情况。 在某些情况下,同样的主题也会出现在在线手册的不同章节。 举个例子,系统里有chmod这个用户命令,而又有个 chmod() 系统调用。 在这种情形下,您应当向 man 命令指定需要的内容: &prompt.user; man 1 chmod 这样就会显示出手册里的用户 chmod 命令。 传统上,我们在写入文档时把特定详细参考内容在在线手册括号里注明。 所以 &man.chmod.1; 是指 chmod 用户命令, 而 &man.chmod.2; 是指系统调用。 如果您已经知道命令的名字,只是不知道要怎样使用的话,那就比较好办。 但您连名字都不知道呢?这个时候您就可以利用 man 的搜寻功能, 它会在手册的介绍部份找寻您要搜寻的关键字,它的选项是 &prompt.user; man -k mail 当您使用这个命令的时候,man会把介绍里含有mail关键字 的命令列出来,实际上这和apropos命令的功能是相同的。 有时您会看到/usr/bin 下有许多命令但不知他们的用途, 您只需这样做: &prompt.user; cd /usr/bin &prompt.user; man -f * 或者这样做 &prompt.user; cd /usr/bin &prompt.user; whatis * 两个命令是一样的。 GNU Info 文件 Free软件基金会 FreeBSD许多应用软件以及实用工具来自Free软件基金会(FSF)。 作为手册的扩充,这些程序提供了一种更具有活力的超文档说明info, 您可用info命令来阅读他们。 假如您装上emacs,也能利用emacs 的info模式来阅读。 使用 &man.info.1; 这个命令只需简单地输入: &prompt.user; info 想得到简单介绍, 请按 h。 想快速得到的命令说明, 请按 ?
diff --git a/zh_CN.GB2312/books/handbook/install/chapter.sgml b/zh_CN.GB2312/books/handbook/install/chapter.sgml index 514d1b89d3..d7932d18a2 100644 --- a/zh_CN.GB2312/books/handbook/install/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/install/chapter.sgml @@ -1,4221 +1,4239 @@ Jim Mock 结构、组织重整, 部分重写 Randy Pratt sysinstall 操作流程、屏幕抓图以及一般性文件 安装 FreeBSD 概述 installation FreeBSD 提供了一个以文字为主,简单好用的安装程序,叫做 sysinstall 。这是 FreeBSD 默认使用的安装程序; 厂商如果想,也可以提供适合自己需要的安装程序。本章说明如何使用 sysinstall 来安装 FreeBSD。 学习完本章之后,您将会知道: 如何制作 FreeBSD 安装磁盘 FreeBSD如何参照及分割您的硬盘 如何启动 sysinstall. 在执行 sysinstall 时您将要回答的问题、 问题代表什么意义,以及该如何回答它们。 在阅读本章之前,您应该: 阅读您要安装的 FreeBSD 版本所附的硬件支持列表以确定您的硬件有没有被支持。 一般来说,此安装说明是针对 &i386; (PC 兼容机) 体系结构的电脑。 如果有其它体系结构(如Alpha)的安装说明,我们将一并列出。 虽然本文档经常保持更新,但有可能与您安装版本上所带的说明文档有些许出入。 在这里建议您使用本说明文章作为一般性的安装指导参考手册。 硬件需求 最小配置 安装 &os; 所需的最小硬件配置, 随 &os; 版本和硬件架构不同而有所不同。 关于安装所需的最低硬件配置信息, 可以在 &os; 网站的 发行版信息 部分中的 安装说明书 中找到。 在接下来的几节中, 给出了这些信息的一些总结。 随您安装 &os; 的方式不同, 可能需要使用软驱或为 &os; 支持的 CDROM 驱动器, 有时候也可能需要的是一块网卡。 这将在 中进行介绍。 &os;/&arch.i386; 和 &os;/&arch.pc98; &os;/&arch.i386; 和 &os;/&arch.pc98; 版本, 都需要 486 或更高的处理器, 以及至少 24 MB 的 RAM。 您需要至少 150 MB 的空闲硬盘空间, 才能完成最小的安装配置。 对于老旧的硬件而言, 多数时候, 装配更多的 RAM 和腾出更多的硬盘空间, 要比使用更快的处理器更有用。 &os;/&arch.alpha; Alpha 要安装 &os;/&arch.alpha;, 您使用的必须是某种受支持的平台 (参见 ) 而且 &os; 必须独占一个硬盘。 目前 &os; 还无法与其它操作系统共享磁盘。 这个磁盘必须接在 SRM 固件支持的 SCSI 控制器上, 或者如果您机器上的 SRM 支持从 IDE 硬盘启动, 则应装到 IDE 硬盘上。 ARC Alpha BIOS SRM 此外您还需要用于您的平台 SRM 控制台固件。 有时, 可以在 AlphaBIOS (或 ARC) 固件和 SRM 之间切换。 如果没有, 则需要从制造商网站上下载并安装新的固件。 对于 Alpha 的支持, 从 &os; 7.0 版本开始已经不再提供。 &os; 6.X 系列发行版, 是最后一批支持这种硬件平台的版本。 &os;/&arch.amd64; 架构 有两类处理器同时能够支持运行 &os;/&arch.amd64;。 第一种是 AMD64 处理器, 包括 &amd.athlon;64、 &amd.athlon;64-FX、 &amd.opteron; 以及更高级别的处理器。 能够使用 &os;/&arch.amd64; 的另一种处理器是包含了采用 &intel; EM64T 架构支持的处理器。 这类处理器包括 &intel; &core; 2 Duo、 Quad、 以及 Extreme 系列处理器, 以及 &intel; &xeon; 3000、 5000、 和 7000 系列处理器。 如果您的计算机使用 nVidia nForce3 Pro-150, 则 必须 使用 BIOS 配置, 禁用 IO APIC。 如果您没有找到这样的选项, 可能就只能转而禁用 ACPI 了。 Pro-150 芯片组存在一个 bug, 目前我们还没有找到绕过这一问题的方法。 &os;/&arch.sparc64; 要安装 &os;/&arch.sparc64;, 必须使用它支持的平台 (参见 )。 &os;/&arch.sparc64; 需要独占一块磁盘。 目前还没有办法与其它操作系统共享一块磁盘。 支持的硬件 支持的硬件列表, 会作为 &os; 发行版本的 &os; 兼容硬件说明提供。 这个文档通常可以在 CDROM 或 FTP 安装文件的顶级目录找到, 它的名字是 HARDWARE.TXT, 此外, 在 sysinstall 的 documentation 菜单也可以找到。 它针对特定的硬件架构列出了 &os; 已知支持的硬件。 不同发行版本和架构上的硬件支持列表, 可以在 &os; 网站的 发行版信息 页面上找到。 安装前的准备工作 列出您电脑的硬件清单 在安装 FreeBSD 之前,您应该试着将您电脑中的硬件清单列出来。FreeBSD 安装程序会将这些硬件(磁盘、网卡、光驱等等)以及型号及制造厂商列出来。 FreeBSD 也会尝试为这些设备找出最适当的 IRQ 及 IO 端口的设定。但是因为 PC 的硬件种类实在太过复杂,这个步骤不一定总是能成功。 这时,您就可能需要手动更改有问题的设备的设定值。 - 如果您已经安装了其它的操作系统,如 &windows; 或 Linux,那么您可以先由 - 这些系统所提供的工具来查看您的设备设定值是怎么分配的。如果您真的没办法 - 确定某些接口卡用什么设定值,那么您可以检查看看,说不定它的设定已经标示 - 在卡上。常用的 IRQ 号号码为 3、5 以及 7;IO 端口的值通常以 16 进制位表示,例如 - Ox330。 + 如果您已经安装了其它的操作系统,如 &windows; 或 Linux, + 那么您可以先由这些系统所提供的工具来查看您的设备设定值是怎么分配的。 + 如果您真的没办法确定某些接口卡用什么设定值,那么您可以检查看看, + 说不定它的设定已经标示在卡上。常用的 IRQ 号码为 3、5 以及 7; + IO 端口的值通常以 16 进制位表示,例如 Ox330。 我们建议您在安装 FreeBSD 之前把这些信息打印或记录下来,做成表格 的样子也许会比较有帮助,例如: 硬件设备清单 设备名 IRQ IO 端口号 备注 第一块硬盘 N/A N/A 40 GB,Seagate 制造,第一个 IDE 接口主设备 CDROM N/A N/A 第一个 IDE 接口从设备 第二块硬盘 N/A N/A 20 GB,IBM 制造, 第二个 IDE 接口主设备 第一个 IDE 控制器 14 0x1f0 网卡 N/A N/A &intel; 10/100 Modem N/A N/A &tm.3com; 56K faxmodem,位于 COM1 口
在清楚地了解了您计算机的配置之后, 需要检查它是否符合您希望安装的 &os; 版本的硬件需求。
备份您的数据 如果您的电脑上面存有重要的数据资料,那么在安装 FreeBSD 前请确定 您已经将这些资料备份了,并且先测试这些备份文档是否有问题。FreeBSD 安装程序在要写入任何资料到您的硬盘前都会先提醒您确认,一旦您确定要 写入,那么以后就没有反悔的机会。 决定要将 FreeBSD 安装到哪里 如果您想让 FreeBSD 使用整个硬盘,那么请直接跳到下一节。 但是,如果您想让 FreeBSD 跟您已有的系统并存,那么您必须对您数据 存在硬盘的分布方式有深入的了解以及其所造成的影响。 &os;/&arch.i386; 体系结构的硬盘分配方式 一个 PC 硬盘可以被细分为许多块。 这些块被称为 partitions (分区)。 由于 &os; 内部也有分区的概念, 如此命名很容易导致混淆, 因此我们在 &os; 中, 将其称为磁盘 slice, 或简称为 slices。 例如, FreeBSD 提供的用于操作 PC 磁盘分区的工具 fdisk 就将其称为 slice 而不是 partition。 由于设计的原因, 每个硬盘仅 支持四个分区;这些分区叫做主分区(Primary partion)。 为了突破这个限制以便能使用更多的分区,就有了新的分区类型,叫做 扩展分区(Extended partition)。一个硬盘可以拥有一个扩展分区。在 扩展分区里可以建立许多个所谓的逻辑分区(Logical partitions) 每个分区都有其独立的分区号(partition ID), 用以区分每个分区的数据类型。FreeBSD 分区的分区号为 165 一般而言,每种操作系统都会有自己独特的方式来区别分区。例如 DOS 及其 之后的 &windows;, 会分配给每个主分区及逻辑分区一个 驱动器字符, 从 C: 开始。 FreeBSD 必须安装在主分区。 FreeBSD 可以在这个分区上面存放系统数据 或是您建立的任何文件。然而,如果您有多个硬盘,您也可以在这些硬盘上(全部 或部分)建立 FreeBSD 分区。在您安装 FreeBSD 的时候,必须要有一个分区可以给 - FreeBSD 使用。这个分区可以是尚未规划的分区或是已经划好,但是里面的数据 - 您都不想保存的分区。 + FreeBSD 使用。这个分区可以是尚未规划的分区, + 或是已经存在且存有数据但您不再需要的分区。 - 如果您已经用完了您硬盘上的所有分区,那么您必须使用其它操作系统所 - 提供的工具(如 DOS 或 &windows; 下的 fdisk)来腾出一个分区 - 给 FreeBSD 使用。 + 如果您已经用完了您硬盘上的所有分区, + 那么您必须使用其它操作系统所提供的工具 + (如 DOS 或 &windows; 下的 fdisk) + 来腾出一个分区给 FreeBSD 使用。 如果您的某个分区有多余的空间,您可以使用它。但是使用前您需要先整理 一下这些分区。 FreeBSD 最小安装需要约 100 MB 的空间,但是这仅是 非常 基本的安装,几乎没有剩下多少空间可以建立您自己的文件。一个较理想的最小安装是 250 MB,不含图形界面;或是 350 MB 以上,包含图形界面。如果您还需要安装 其它的第三方厂商的套件,那么将需要更多的硬盘空间。 您可以使用商业软件,例如 &partitionmagic; (硬盘分区魔术师) 或类似 GParted 这样的免费工具来调整分区尺寸, 为 FreeBSD 腾出空间。 FreeBSD 光盘的 tools 目录包含两个免费的工具也可以完成这个工作:FIPS 以及 PResizer,它们的文档可以在同一目录中找到。FIPSPResizer,和 &partitionmagic; 能够改变 FAT16 以及 FAT32 分区的大小 — - 它们可以在 &ms-dos; 以及 &windows; ME 系统中使用。 这些工具的说明文件可以在同一个目录下面找到 + 它们可以在 &ms-dos; 以及 &windows; ME 系统中使用。 这些工具的说明文件可以在同一个目录下面找到。 &partitionmagic;GParted 都能改变 NTFS 分区的尺寸。 GParted 在许多 Live CD Linux 发行版, 如 SystemRescueCD 中均有提供。 目前已经有报告显示改变 µsoft; Vista 分区尺寸时会出现问题。 在进行此类操作时, 建议您准备一张 Vista 安装 CDROM。 - 此外, 与其他磁盘维护操作类我我, 强烈建议您事先进行备份。 + 如同其他的磁盘维护操作一样, 强烈建议您事先进行备份。 不当的使用这些工具可能会删掉您硬盘上的数据资料!在使用这些工具前 确定您有最近的、没问题的备份数据。 使用已存在的分区 假设您只有一个 4GB 的硬盘,而且已经装了 &windows; 然后您将这个硬盘分成两个分区 C:D:,每个分区大小为 2 GB。在 C: 分区上存放有 1 GB 的数据、 D:分区上存放 0.5 GB 的数据。 这意味着您的盘上有两个分区,一个驱动器符号是一个分区(如 c:、d:)。 您可以把所有存放在 D: 分区上的数据复制到 C: 分区,这样就空出了一个分区(d:)给 FreeBSD 使用。 缩减已现在的分区 假设您只有一个 4 GB 的硬盘,而且已经装了 &windows;。您在安装 &windows; 的时候 把 4 GB 都给了 C: 分区,并且已经使用了 1.5 GB 的空间。 您想将剩余空间中的 2 GB 给 FreeBSD 使用。 为了安装 FreeBSD,您必须从下面两种方式中选择一种: 备份 &windows; 的数据资料,然后重新安装 &windows;,并给 &windows; 分配 2 GB 的空间。 - 使用上面提及的 &partitionmagic; 来整理 - 或切割您的分区。 + 使用上面提及的 &partitionmagic; + 来整理或切割您的分区。 Alpha 体系结构的硬盘分配方式 Alpha - 在 Alpha 上,您必须使用一整颗硬盘给 FreeBSD,没有办法在同一个硬盘上跟 - 其它操作系统共存。根据不同的 Alpha 机器,您的硬盘可以是 SCSI 或 IDE 硬盘,只要 - 您的机器可以从这些硬盘开机就可以。 + 在 Alpha 上,您必须使用一整颗硬盘给 FreeBSD, + 没有办法在同一个硬盘上跟其它操作系统共存。 + 根据不同的 Alpha 机器,您的硬盘可以是 SCSI 或 IDE 硬盘, + 只要您的机器可以从这些硬盘开机就可以。 按照 Digital/Compaq 使用手册书写的惯例,所有 SRM 输入的部分都用大写 表示。注意,SRM 大小写有别。 要想得知您硬盘的名称以及型号,可以在 SRM console 提示符下使用 SHOW DEVICE 命令: >>>SHOW DEVICE dka0.0.0.4.0 DKA0 TOSHIBA CD-ROM XM-57 3476 dkc0.0.0.1009.0 DKC0 RZ1BB-BS 0658 dkc100.1.0.1009.0 DKC100 SEAGATE ST34501W 0015 dva0.0.0.0.1 DVA0 ewa0.0.0.3.0 EWA0 00-00-F8-75-6D-01 pkc0.7.0.1009.0 PKC0 SCSI Bus ID 7 5.27 pqa0.0.0.4.0 PQA0 PCI EIDE pqb0.0.1.4.0 PQB0 PCI EIDE 此范例使用 Digital Personal Workstation 433au 并且显示出此机器联接 有三个硬盘。第一个是 CDROM,叫做 DKA0;另外两个 是两个硬盘,分别叫做 DKC0DKC100 硬盘名称中有 DKx 字样的是 SCSI 硬盘。例如 DKA100 表示是一个 SCSI 设备,其 SCSI ID 为 1,位于 第一个 SCSI 接口 (A)。 DKC300 表示一个 SCSI 硬盘, SCSI ID 为 3,位于第三个 SCSI 接口 (C)。设备名称 PKx 表示 SCSI 控制卡。由以上 SHOW DEVICE 指令的输出结果看来, SCSI 光盘也被视为是 SCSI 硬盘的一种。 IDE 硬盘的名称类似 DQx,而 PQx 则表示相对应的硬盘控制器。 收集您的网络配置相关资料 如果您想通过网络(FTP 或是 NFS)安装 FreeBSD,那么您就必须知道您的网络配置 信息。在安装 FreeBSD 的过程中将会提示您输入这些资料,以顺利完成安装过程。 使用以太网或电缆/DSL Modem 如果您通过局域网或是要通过网卡使用电缆/DSL 上网,那么您必须准备下面 的信息: IP 地址。 默认网关 IP 地址。 主机名称。 DNS 服务器的 IP 地址。 子网掩码。 如果您不知道这些信息,您可以询问系统管理员或是您的网络服务提供者。 他们可能会说这些信息会由 DHCP 自动分配;如果这样的话, 请记住这一点就可以了。 使用 Modem 连接 如果您由 ISP 提供的拨号服务上网,您仍然可以通过它安装 FreeBSD, 只是会需要很长的时间。 您必须知道: 拨号到 ISP 的电话号码。 您的 modem 是连接到哪个 COM 端口。 您拨号到 ISP 所用的账号和密码。 检查 FreeBSD 发行勘误 虽然我们尽力确保每个 FreeBSD 发行版本的稳定性,但偶尔也会有一些错误进入发行版。 极少数情况下,这些问题甚至可能会影响安装。 当发现和修正问题之后,它们会列在 FreeBSD 网站中的 FreeBSD 发行勘误 中。 在您安装之前,应该首先看一看这份勘误表,以了解可能存在的问题。 关于所有释出版本的信息,包括勘误表,可以在 FreeBSD 网站发行版信息 一节中找到。 准备安装介质 FreeBSD 可以通过下面任何一种安装介质进行安装: 安装介质 CDROM 或 DVD 在同一计算机上的 DOS 分区 SCSI 或 QIC 磁带 软盘 网络 通过防火墙的一个 FTP 站点,或使用 HTTP 代理。 NFS 服务器 一个指定的并行或串行接口 如果您购买了 FreeBSD 的 CD 或 DVD,那么您可以直接进入下一节 如果您还没有 FreeBSD 的安装文件,您应该回到 一节, 它介绍了如何准备所需要的安装介质。之后,您就可以回到这一节, 并从 继续。 准备引导介质 FreeBSD 的安装过程开始于将您的电脑开机进入 FreeBSD 安装环境—-并非在 其它的操作系统上运行一个程序。计算机通常使用安装在硬盘上的操作系统进行 引导,也可以配置成使用一张bootable(可引导)的软盘进行启动。 大多数现代计算机都可以从光驱进行引导系统。 如果您有 FreeBSD 的安装光盘或 DVD(或者是您购买的,或者是您自己准备的。) 并且您的计算机可以从光驱进行启动 (通常在 BIOS 中会有 Boot Order 或类似的选项可以设置),那么您就可以跳过此小节。因为 FreeBSD 光盘及 DVD 光盘都是可 以引导的,用它们开机您不用做什么特别的准备。 一般来说,要建立安装盘(软盘)请依照下列步骤: 获取开机软盘映像文件 开机软盘映像文件可以在您的安装介质的 floppies/ 目录下找到, 另外您也可以从下述网站的 floppies 目录下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/<架构名>/<版本>-RELEASE/floppies/. 将 <架构名><版本> 替换为您使用的计算机体系结构和希望安装的版本号。 例如,用于安装 &i386; 上的 &os;/&arch.i386; &rel.current;-RELEASE 的文件的地址, 应该是 软盘映像文件的扩展名是 .flp。 在 floppies/ 目录中包括了许多不同的映像文件, 随您安装的 FreeBSD 版本, 某些时候也随硬件的不同, 您需要使用的映像文件可能会有所不同。 您通常会需要四张软盘, 即 boot.flpkern1.flpkern2.flp, 以及 kern3.flp。 请查阅同一目录下的 README.TXT 文件以了解关于这些映像文件的最新信息。 您的 FTP 程序必须使用 二进制模式 来下载这些映 像文件。有些浏览器只会用 text (或ASCII ) 模式来传输数据, 用这些浏览器下载的映像文件做成的软盘将无法正常开机。 准备软盘 - 您必须为您下载的每一个映像文件准备一张软盘。并且请避免使用到坏掉的 - 软盘。最简单的方式就是您先将这些软盘格式化,不要相信所谓的已格式化的软 - 盘。在 &windows; 下的格式化程序不会告诉您出现多少坏块,它只是简单的标记它 - 们为 bad 并且忽略它们。根据建议您应该使用全新的软盘来存放 - 安装程序。 + 您必须为您下载的每一个映像文件准备一张软盘。 + 并且请避免使用到坏掉的软盘。 + 最简单的方式就是您先将这些软盘格式化, + 不要相信所谓的已格式化的软盘。在 &windows; + 下的格式化程序不会告诉您出现多少坏块, + 它只是简单的标记它们为 bad 并且忽略它们。 + 根据建议您应该使用全新的软盘来存放安装程序。 如果您在安装 FreeBSD 的过程中造成当机、冻结或是其它怪异现象,第一个 要怀疑的就是引导软盘。请用其它的软盘制作映像文件再试试看。 将映像文件写入软盘中 .flp 文件 并非 一般的文件, 您不能直接将它们复制到软盘上。事实上它是一张包含完整磁盘内容的映像文件。这 表示您 不能 简单的使用 DOS 的 copy 命令将文件写到软盘上, 而必须使用特别的工具程序将映像文件直接写到软盘中。 DOS 如果您使用 &ms-dos; 或 &windows; 操作系统来制作引导盘,那么您可以使用我们提供 的 fdimage 程序来将映像文件写到软盘中。 如果您使用的是光盘,假设光盘的驱动器符号为 E:, 那么请执行下面的命令: E:\> tools\fdimage floppies\boot.flp A: 重复上述命令以完成每个 .flp 文件的写入,每换一个 映像文件都必须更换软盘;制作好的软盘请注明是使用哪个映像文件做的。如果您的映 像文件存放在不同的地方,请自行修改上面的指令指向您存放 .flp 文件的地方。要是您没有 FreeBSD 光盘,您可以到 FreeBSD 的 FTP 站点tools 目录 中下载。 如果您在 &unix; 系统上制作软盘(例如其它 FreeBSD 机器),您可以使用 &man.dd.1; 命令来将映像文件写到软盘中。如果您用 FreeBSD,可以执行下面的命令: &prompt.root; dd if=boot.flp of=/dev/fd0 在 FreeBSD 中,/dev/fd0 指的是第一个软驱(即 A: 驱动器);/dev/fd1B: 驱动器,依此类推。其它的 &unix; 系统可能会用 不同的的名称,这时您就要查阅该系统的说明文件。 您现在可以安装 FreeBSD 了
开始安装 默认情况下, 安装过程并不会改变任何您硬盘中的数据,除非您看到 下面的讯息: Last Chance: Are you SURE you want continue the installation? If you're running this on a disk with data you wish to save then WE STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding! We can take no responsibility for lost disk contents! 在看到这最后的警告讯息前您都可以随时离开安装程序面不会变更您的硬盘。 如果您发现有任何设定错误,这时您可以直接将电源关掉而不会造成任何伤害。 开机启动 引导 &i386; 系统 从电脑尚未开机开始说起 将电脑电源打开。刚开始的时候它应该会显示进入系统设置菜单或 BIOS 要按哪个键,常见的是 F2F10Del Alt S 。不论是要按哪个键,请按它进入 BIOS 设置画面。有时您的计算机 可能会显示一个图形画面,典型的做法是按 Esc 将关掉这个图形 画面,以使您能够看到必要的设置信息。 找到设置开机顺序的选项,它的标记为 Boot Order 通常会列出一些设备让您选择,例如:FloppyCDROMFirst Hard Disk 等等。 如果您要用软盘安装,请确定选到 floppy disk;如果您要用光盘安装, 请选择 CDROM。为了避免疑惑,请参考您的主板说明手册。 储存设定并离开,系统应该会重新启动。 如果您用软盘安装,请将在 一节中制作好的第一张引导盘,里面包含kern.flp boot.flp 文件的那张盘, 放入软盘驱动器中。 如果您是从光盘安装, 那么开机后请将 FreeBSD 光盘放入光驱中。 如果您开机后如往常一样并没有从软盘或光盘引导,请检查: 是不是软盘或光盘太晚放入面错失开机引导时间。 如果是, 请将它们放入后重新开机。 BIOS 设定不对,请重新检查 BIOS 的设定。 您的 BIOS 不支持从这些安装介质引导。 FreeBSD 即将启动。如果您是从光盘引导,您会见到类似下面的画面: Booting from CD-Rom... CD Loader 1.2 Building the boot loader arguments Looking up /BOOT/LOADER... Found Relocating the loader and the BTX Starting the BTX loader BTX loader 1.00 BTX version is 1.01 Console: internal video/keyboard BIOS CD is cd0 BIOS drive C: is disk0 BIOS drive D: is disk1 BIOS 639kB/261120kB available memory FreeBSD/i386 bootstrap loader, Revision 1.1 Loading /boot/defaults/loader.conf /boot/kernel/kernel text=0x64daa0 data=0xa4e80+0xa9e40 syms=[0x4+0x6cac0+0x4+0x88e9d] \ 如果您从软盘启动, 则应看到类似下面的画面: Booting from Floppy... Uncompressing ... done BTX loader 1.00 BTX version is 1.01 Console: internal video/keyboard BIOS drive A: is disk0 BIOS drive C: is disk1 BIOS 639kB/261120kB available memory FreeBSD/i386 bootstrap loader, Revision 1.1 Loading /boot/defaults/loader.conf /kernel text=0x277391 data=0x3268c+0x332a8 | Insert disk labelled "Kernel floppy 1" and press any key... 请根据提示将 boot.flp 软盘取出, 插入 kern1.flp 这张盘, 然后按 Enter。 您只需从第一张软盘启动, 然后再需要时根据提示插入其他软盘就可以了。 不论是从软盘或光盘引导, 接下来都会进入 &os; 引导加载器菜单:
&os; Boot Loader Menu
您可以等待十秒, 或按 Enter
引导 Alpha 系统 Alpha 从电脑尚未打开电源开始。 打开电脑电源并等待屏幕上出现开机提示信息。 如您需要制作用于安装的软盘, 请参考 , 将其中一张制作为第一片引导盘, 其中包含 boot.flp。 将这张软盘插进软驱, 并输入下列命令, 以便从软盘启动 (请视实际情况修改命令中的软驱盘符): >>>BOOT DVA0 -FLAGS '' -FILE '' 如果您要从光盘引导,请将光盘放入光驱中然后输入下列命令开始安装 (请视情况修改命令中的光驱盘符): >>>BOOT DKA0 -FLAGS '' -FILE '' 然后 FreeBSD 就会启动。如果您从软盘引导,到某个阶段您会看到下面的信息: Insert disk labelled "Kernel floppy 1" and press any key... 此时应按照提示取出 boot.flp 软盘, 换上 kern1.flp 软盘, 然后按 Enter 键。 不论从软盘或光盘引导,您都会看到下面这段信息: Hit [Enter] to boot immediately, or any other key for command prompt. Booting [kernel] in 9 seconds... _ 您可以等待 10 秒或是按 Enter 跳过。之后就会进入内核 设定菜单。 引导 &sparc64; 多数 &sparc64; 系统均配置为从硬盘自动引导。 如果希望安装 &os;, 就需要从网络或 CDROM 启动了, 这需要首先进入 PROM (OpenFirmware)。 要完成这项工作, 首先需要重启系统, 并等待出现引导消息。 具体的信息取决于您使用的型号, 不过它应该会是类似下面这样: Sun Blade 100 (UltraSPARC-IIe), Keyboard Present Copyright 1998-2001 Sun Microsystems, Inc. All rights reserved. OpenBoot 4.2, 128 MB memory installed, Serial #51090132. Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4. 如果您的系统此时开始了从硬盘引导的过程, 则需要按下 L1AStopA, 或者在串口控制台上发送 BREAK (例如, 在 &man.tip.1; 或 &man.cu.1; 中是 ~#) 以便进入 PROM 提示符。 它应该是类似下面这样: ok ok {0} 这是在只有一颗 CPU 的系统上的提示。 这是用于 SMP 系统的选项, 这里的数字, 是系统中可用的 CPU 数量。 这时, 将 CDROM 插入驱动器, 并在 PROM 提示符后面, 输入 boot cdrom
查看设备探测的结果 前面屏幕显示的最后几百行字会存在缓冲区中以便您查阅。 要浏览缓冲区,您可以按下 Scroll Lock 键,这会开启画面的 卷动功能。然后您就可以使用方向键或 PageUpPageDown 键来上下翻阅。再按一次 Scroll Lock 键将停止画面卷动。 在您浏览的时候会看到类似 的画面。 真正的结果依照您的电脑装置而有所不同。
典型的设备探测结果 avail memory = 253050880 (247120K bytes) Preloaded elf kernel "kernel" at 0xc0817000. Preloaded mfs_root "/mfsroot" at 0xc0817084. md0: Preloaded image </mfsroot> 4423680 bytes at 0xc03ddcd4 md1: Malloc disk Using $PIR table, 4 entries at 0xc00fde60 npx0: <math processor> on motherboard npx0: INT 16 interface pcib0: <Host to PCI bridge> on motherboard pci0: <PCI bus> on pcib0 pcib1:<VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0 pci1: <PCI bus> on pcib1 pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11 isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0 isa0: <iSA bus> on isab0 atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0 ata0: at 0x1f0 irq 14 on atapci0 ata1: at 0x170 irq 15 on atapci0 uhci0 <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci 0 usb0: <VIA 83572 USB controller> on uhci0 usb0: USB revision 1.0 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr1 uhub0: 2 ports with 2 removable, self powered pci0: <unknown card> (vendor=0x1106, dev=0x3040) at 7.3 dc0: <ADMtek AN985 10/100BaseTX> port 0xe800-0xe8ff mem 0xdb000000-0xeb0003ff ir q 11 at device 8.0 on pci0 dc0: Ethernet address: 00:04:5a:74:6b:b5 miibus0: <MII bus> on dc0 ukphy0: <Generic IEEE 802.3u media interface> on miibus0 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xec00-0xec1f irq 9 at device 10. 0 on pci0 ed0 address 52:54:05:de:73:1b, type NE2000 (16 bit) isa0: too many dependant configs (8) isa0: unexpected small tag 14 orm0: <Option ROM> at iomem 0xc0000-0xc7fff on isa0 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq2 on isa0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5” drive> on fdc0 drive 0 atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0 atkbd0: <AT Keyboard> flags 0x1 irq1 on atkbdc0 kbd0 at atkbd0 psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: model Generic PS/@ mouse, device ID 0 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 sc0: <System console> at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=0x300> sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 sio0: type 16550A sio1 at port 0x2f8-0x2ff irq 3 on isa0 sio1: type 16550A ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 pppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/15 bytes threshold plip0: <PLIP network interface> on ppbus0 ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master UDMA33 acd0: CD-RW <LITE-ON LTR-1210B> at ata1-slave PIO4 Mounting root from ufs:/dev/md0c /stand/sysinstall running as init on vty0
请仔细检查探测结果以确定 FreeBSD 找到所有您期望出现的设备。 如果系统没有找到设备, 则不会将其列出。 定制内核 能够让您为系统添加默认的 GENERIC 内核所不支持的设备, 如声卡等。 在 &os; 6.2 和更高版本中, 在探测完系统设备之后, 将显示 。 请使用光标键来选择国家或地区。 接着按 Enter, 系统将自动设置地区及键盘映射。 您也可以很容易地退出 sysinstall 程序并从头来过。
选择国家及地区菜单
选择离开 Sysinstall
在主界面使用方向键选择 Exit Install 您会看到 如下的信息: User Confirmation Requested Are you sure you wish to exit? The system will reboot (be sure to remove any floppies/CDs/DVDs from the drives). [ Yes ] No 如果 CDROM 还留在光驱里,而且选择了 &gui.yes;, 则安装程序将重新启动。 如果您是从软盘启动, 则在重启系统之前, 需要将 boot.flp 软盘取出。
介绍 Sysinstall sysinstall 是 FreeBSD 项目所提供的安装程序。 它以 console(控制台)为主,分为多个菜单及画面让您配置及控制安装过程。 sysinstall 菜单画面由方向键、EnterTabSpace, 以及其它按键所控制。在主画面的 Usage 菜单有这些按键的说明。 要查看这些说明,请将光标移到 Usage 项目,然后 [Select] 按键被选择,, 然后按下 Enter 键。 安装画面的使用说明会显示出来,阅读完毕请按 Enter 键回到主 画面。
选取 Sysinstall 主菜单的 Usage 项目
选择 Documentation(说明文件) 菜单 用方向键从主菜单选择 Doc 条目然后按 Enter键。
选择说明文件菜单
这将会进入说明文件菜单。
Sysinstall 说明文件菜单
阅读这些说明文件很重要。 要阅读一篇文章,请用方向键选取要阅读的文章然后按 Enter 键。 阅读中再按一下 Enter 就会回到说明文件画面。 若要回到主菜单,用方向键选择 Exit 然后按下 Enter 键。
选择键盘对应(Keymap)菜单 如果要改变键盘按键的对应方式,请在主菜单选取 Keymap 然后按 Enter 键。一般情况下不改变此项,除非您使用了非标准键盘或非 美国键盘。
Sysinstall 主菜单
您可以使用上下键移动到您想使用的键盘对应方式,然后按下 Space 键以选取它;再按 Space 键可以取消选取。当您完成后,请选择 &gui.ok; 然后按 Enter 键。 这一屏幕只显示出部分列表。选择 &gui.cancel; 按 Tab 键将使用 默认的键盘对应,并返回到主菜单
Sysinstall 键盘对应菜单
安装选项设置画面 选择 Options 然后按 Enter 键。
Sysinstall 主菜单
Sysinstall 选项设置
预设值通常可以适用于大部分的使用者,您并不需要改变它们。版本名称要 根据安装的版本进行变化。 目前选择项目的描述会在屏幕下方以蓝底白字显示。注意其中有一个项目是 Use Defaults(使用默认值)您可以由此项将所有的 设定还原为预设值。 可以按下 F1 来阅读各选项的说明。 Q 键可以回到主画面。
开始进行标准安装 Standard(标准) 安装适用于那些 &unix; 或 FreeBSD 的初级使用者。用方向键选择 Standard 然后按 Enter 键可开始进入标准安装。
开始进行标准安装
分配磁盘空间 您的第一个工作就是要分配 FreeBSD 用的硬盘空间以便 sysinstall 先做好一些准备。为了完成这个工作,您必须先对 FreeBSD 如何找到 磁盘信息做一个了解。 BIOS 磁盘编号 当您在系统上安装配置 FreeBSD 之前,有一个重要的事情一定要注意,尤其 是当您有多个硬盘的时候。 DOS Microsoft Windows 在 pc 架构,当您跑像 &ms-dos; 或 µsoft.windows; 这种跟 BIOS 相关的操作 系统的时候,BIOS 有能力改变正常的磁盘顺序,然后这些操作系统会跟着 BIOS 做改变。 这让使用者不一定非要有所谓的 primary master 硬盘开机。许多人发 现最简单而便宜备份系统的方式就是再去买一块一模一样的硬盘,然后定期将数据从第 一块硬盘复制到第二个硬盘,使用 GhostXCOPY。所以,当第一个硬盘死了,或者是被病毒破坏, 或者有坏轨道,他们可以调整 BIOS 中的开机顺序而直接用第二块硬盘开机。这跟将机壳 拆开,把第二块硬盘跟第一块硬盘对调(要调jumper)有同样的效果,差别就是不用拆壳; 因此,对有这方面需求的人而言,直接在 BIOS 中设定非常方便。 SCSI BIOS 比较昂贵,配有 SCSI 控制卡的系统通常可以延伸 BIOS 的功能来让 SCSI 设备(可达七个) 达到类似改变顺序的功能。 习惯于使用这种方式的使用者可能会感到惊讶,因为在 FreeBSD 中并非如此。 FreeBSD 不会参考 BIOS,而且也不知道所谓的 BIOS 逻辑磁盘对应。 是怎么回事。这会让人感觉很疑惑,明明就是一样的硬盘而且资料也完全从另一块 复制过来的,结果却没办法像以前那样用。 当使用 FreeBSD 以前,请将 BIOS 中的硬盘开机顺序调回正常的顺序,并且以后 不要再改变。 如果一定要交换硬盘顺序, 那请用硬件的方式, 打开机壳并调整调线。 范例:Bill 和 Fred 的安装历险 Bill 替 Fred 把旧的 Wintel 的机器装上了 FreeBSD。他装了一台 SCSI 硬盘, ID 是 0,然后把 FreeBSD 装在上面。 Fred 开始使用他新的 FreeBSD 系统;但是过了几天,他发现这旧的 SCSI 硬盘发生了许多小问题。之后,他就跟 Bill 说起这件事。 又过了几天,Bill 决定是该解决问题的时候了,所以他从后面房间的硬盘 收藏 中找出了一个一模一样的硬盘,并且经过表面测试后显示这块 硬盘没有问题。因此,Bill 将它的 ID 调成 4,然后安装到 Fred 的机器,并且将资料从 磁盘 0 复制到磁盘 4。现在新硬盘装好了,而且看起来好像一切正常;所以,Bill 认为 现在应该可以开始用它了。Bill 于是到 SCSI BIOS 中设定 SCSI ID 4 为开机盘,用磁盘 4 重新开机后,一切跑得很顺利。 继续用了几天后,Bill 跟 Fred 决定要来玩点新的:该将 FreeBSD 升级了。Bill 将 ID 0 的硬盘移除(因为有问题)并且又从收藏区中拿了一块一样的硬盘来。然后他 用 Fred 神奇的网络 FTP 磁盘将新版的 FreeBSD 安装在这块硬盘上;安装过程没什么问 题发生。 Fred 用了这新版本几天后,觉得它很适合用在工程部门…是时候将以前放在旧 系统的工作资料复制过来了。因此,Fred 将 ID4 的 SCSI 硬盘(里面有放着旧系统中复制 过来的最新资料)mount 起来,结果竟然发现在 ID4 的硬盘上,他以前的所有资料都不见 了! 资料跑到哪里去了呢? 当初 Bill 将 ID0 硬盘的资料复制到 ID4 的时候,ID4 即成为一个 新的副本。 而当他调 SCSI BIOS 设定 ID4 为开机盘,想让系统从 ID4 开机, 这其实只是他自己笨,因为大部分的系统可以直接调 BIOS 而改变开机顺序,但是 FreeBSD 却会把开机 顺序还原成正常的模式,因此,Fred 的 FreeBSD 还是从原来那块 ID0 的硬盘开机的。所有 的资料都还在那块硬盘上,而不是在想象之中的 ID4 硬盘。 幸运的是, 在我们发现这件事的时候那些资料都还在, 我们将这些资料从最早的那块 ID0 硬盘取出来并交还给 Fred, 而 Bill 也由此了解到计算机计数是从 0 开始的。 虽然我们这里的例子使用 SCSI 硬盘,但是相同的概念也可以套用在 IDE 硬盘上。 使用 FDisk 创建分区 如果不再做改变,数据将会写进硬盘。如果您犯了一个错误想重新开始,请选择 sysinstall 安装程序的退出按钮(exit)。或按 U 键来 Undo 操作。如果您的操作没有结果,您总可以重新启动您 的计算机来达到您的目的。 当您在 sysinstall 主菜单选择使用标准安装 后,您会看到下面的信息: Message In the next menu, you will need to set up a DOS-style ("fdisk") partitioning scheme for your hard disk. If you simply wish to devote all disk space to FreeBSD (overwriting anything else that might be on the disk(s) selected) then use the (A)ll command to select the default partitioning scheme followed by a (Q)uit. If you wish to allocate only free space to FreeBSD, move to a partition marked "unused" and use the (C)reate command. [ OK ] [ Press enter or space ] 如屏幕指示,按 Enter 键,然后您就会看到一个列表 列出所有在探测设备的时候找到的硬盘。 范例显示的是有找到两个 IDE 硬盘的情形,这两个硬盘分别为 ad0ad2
选择要分区的硬盘
您可能正在奇怪,为什么 ad1 没有列出来? 为什么遗失了呢? 试想,如果您有两个 IDE 硬盘,一个是在第一个 Primary master,一个是 Secondary master,这样会发生什么事呢?如果 FreeBSD 依照找到的顺序来为他们 命名,如 ad0ad1 那么就不会有什么问题。 但是,现在问题来了。如果您现在想在 primary slave 加装第三个硬盘, 那么这个硬盘的名称就会是 ad1,之前的 ad1 就会变成ad2。 这会造成什么问题呢?因为设备的名称(如ad1s1a) 是用来寻找文件系统的,因此您可能会发现,突然,您有些文件系统从此无法正确 地显示出来,必须修改 FreeBSD 配置文件(译注:/etc/fstab)才可以正确显示。 为了解决这些问题,在配置内核的时候可以叫 FreeBSD 直接用 IDE 设备所 在的位置来命名,而不是依据找到的顺序。使用这种方式的话,在 secondary master 的 IDE 设备就 永远是 ad2, 即使您的系统中没有ad0ad1 也不受影响。 此为 FreeBSD 内核的默认值,这也是为什么上面的画面只显示 ad0ad2的原因。 画面上这台机器的两颗硬盘是装在 primary 及 secondary 的 master 上面;并没有任何一个 硬盘安装在 slave 插槽上。 您应该选择您想安装 FreeBSD 的硬盘,然后按下 &gui.ok;。之后 FDisk 就会开始,您会看到类似 的画面。 FDisk 的显示画面分为三个部分。 第一部分是画面上最上面两行,显示的是目前所选择的硬盘的信息。包含它的 FreeBSD 名称、硬盘分布以及硬盘的总容量。 第二部分显示的是目前选择的硬盘上有哪些分区,每个分区的开始及结束位置、 所占容量、FreeBSD 名称、它们的描述以及类别(sub-type)。此范例显示有两个分区、 一个大的 FAT 分区,(很可能是 &ms-dos; 或 &windows; 的 C: )、以及一个扩展分区(在 &ms-dos; 或 &windows; 里 面还可以包含逻辑分区)。 第三个部分显示 FDisk 中可用的命令。
典型的尚未编辑前的 Fdisk 分区表
接下来要做的事跟您要怎么给您的硬盘分区有关。 如果您要让 FreeBSD 使用整个硬盘(稍后您确认要 sysinstall 继续安装后会删除所有这个硬盘上的资料),那么您就可以按 A 键(Use Entire Disk ) 目前已有的分区都会被删除,取而代之的是一个小的,标示为 unused 的分区,以及一个大的 FreeBSD 分区。之后,请用方向键将光标移到这个 FreeBSD 分区,然后按 S 以将此分区标记为启动分区。 您会看 到类似 的画面。 注意, 在 Flags 栏中的 A 记号表示此分区是 激活 的, 因而启动将从此分区进行。 要删除现有的分区以便为 FreeBSD 腾出空间, 您可以将光标移动到要删除的分区后按 D 键。 然后就可按 C 键, 并在弹出的对话框中输入将要创建的分区的大小。 输入合适的大小后按 Enter 键。 一般而言, 这个对话框中的初始值是可以分配给该分区的最大值。 它可能是最大的邻接分区或未分配的整个硬盘大小。 如果您已经建立好给 FreeBSD 的分区(使用像 &partitionmagic; 类似的工具),那么您可以按下 C 键来建立一个新 的分区。同样的,会有对话框询问您要建立的分区的大小。
Fdisk 分区使用整个硬盘
完成后,按 Q 键。您的变更会存在 sysinstall 中,但是还不会真正写入您的硬盘。
安装多重引导 在这步骤您可以选择要不要安装一个多重引导管理器。一般而言,如果碰到 下列的情形,您应该选择要安装多重引导管理程序。 您有一个以上的硬盘,并且 FreeBSD 并不是安装在第一个硬盘上。 您可以在一个硬盘上,除了 FreeBSD,您还有安装其它的操作系统;然后 您想要选择在开机的时候要进入哪个系统。 如果您在这台机器上只安装一个 FreeBSD 操作系统,并且安装在第一个硬盘, 那么选择 Standard 安装就可以了。如果您已经使用 了一个第三方的多重引导程序,那么请选择 None 选择好配置后请按 Enter
Sysinstall 多重引导管理程序
按下 F1 键所显示的在线说明中有讨论一些操作系统共存 可能发生的问题。
在其它硬盘上创建分区 如果您的系统上有一个以上的硬盘,在选择完多重引导管理程序后会再回到 选择硬盘的画面。如果您要将 FreeBSD 安装在多个硬盘上,那么您可以在这里选择 其它的硬盘,然后重复使用 FDisk 来建立分区。 如果您想让 FreeBSD 来管理其它的硬盘,那么两个硬盘都必须安装 FreeBSD 的多重引导管理程序。
离开选择硬盘画面
Tab 键可以在您最后选择的硬盘、 &gui.ok; 以及 &gui.cancel; 之间进行切换。 Tab 键将光标移动到 &gui.ok;然后按 Enter 键继续安装过程。
使用 <application>bsdlabel</application> 创建分区 您现在必须在刚刚建立好的 slice 中规划一些 label。 请注意, 每个 label 的代号是 ah, 另外, 习惯上 bcd 是有特殊用途的, 不应该随意变动。 某些应用程序可以利用一些特殊的分区而达到较好的效果,尤其是分区分散 在不同的硬盘的时候。但是,现在您是第一次安装FreeBSD,所以不需要去烦恼如 何分割您的硬盘。最重要的是,装好FreeBSD然后学习如何使用它。当您对FreeBSD 有相当程度的熟悉后,您可以随时重新安装FreeBSD,然后改变您分区的方式。 下面的范例中有四个分区—一个是磁盘交换分区,另外三个是文件系统。 为第一个硬盘分区 分区 文件系统 大小 描述 a / 128 MB 这是一个根文件系统(root filesystem)。任何其它的文件系统都会 挂在根目录(译注:用根目录比较亲切)下面。 128 MB 对于此目录来说 是合理的大小,因为您往后并不会在这里存放太多的数据;在安装FreeBSD后会 用掉约 40 MB 的根目录空间。剩下的空间是用来存放临时文件用的,同时, 您也应该预留一些空间,因为以后的FreeBSD版本可能会需要较多的 /(根目录)空间。 b N/A 2-3 x RAM b 分区为系统磁盘交换分区(swap space)。 选择正确的交换空间大小可是一门学问唷。 一般来说,交换空间的大小应该是您系统上内存(RAM) 大小的2到3倍。 交换空间至少要有 64 MB。 因此, 如果您的电脑上的 RAM 比 32 MB 小,请将交换空间大小设为 64 MB。 如果您有一个以上的硬盘,您可以在每个硬盘上都配置交换分区。 FreeBSD 会利用每个硬盘上的交换空间, 这样做能够提高 swap 的性能。 如果是这种情形, 先算出您总共需要的交换空间大小 (如128 MB), 然后除以您拥有的硬盘数目(如2块), 算出的结果就是每个硬盘上要配置的交换空间的大小。 在这个例子中, 每个硬盘的交 换空间为 64 MB。 e /var 256 MB /var 目录会存放不同长度的文件、日志以及 其它管理用途的文件。大部分这些文件都是FreeBSD每天在运行的时候会读取或 是写入的。当这些文件放在另外的文件系统(译注:即/var)可以避免影响到 其它目录下面类似的文件存取机制。 f /usr 剩下的硬盘空间 您所有的其它的文件通常都会存在/usr 目录以及其子目录下面。
如果您要将FreeBSD安装在一个以上的硬盘,那么您必须在您配置的其它分区上 再建立分区。最简单的方式就是在每个硬盘上建立两个分区,一个是交换分区,一个 是文件系统分区。 为其它磁盘分区 分区 文件系统 大小 描述 b N/A 见描述 之前提过,交换分区是可以跨硬盘的。但是,即使 a 分区没有使用,习惯上还是会把交换分区放在 b 分区上。 e /diskn 剩下的硬盘空间 剩下的空间是一个大的分区,最简单的做法是将之规划为 a分区而不是e分区。然而, 习惯上a分区是保留给根目录 (/) 用的。您不一定要遵守这个习惯,但是sysinstall 会,所以照着它做会使您的安装比较清爽、干净。您可以将这些文件系统挂在任何 地方,本范例建议将它们挂在/diskn 目录,n 依据每个硬盘而有所不同,但是,您喜欢的话 也可将它们挂在别的地方。
分区的配置完成后,您可以用sysinstall. 来建立它们了。您会看到下面的信息: Message Now, you need to create BSD partitions inside of the fdisk partition(s) just created. If you have a reasonable amount of disk space (200MB or more) and don't have any special requirements, simply use the (A)uto command to allocate space automatically. If you have more specific needs or just don't care for the layout chosen by (A)uto, press F1 for more information on manual layout. [ OK ] [ Press enter or space ] 按下 Enter 键开始FreeBSD分区表编辑器,称做 Disklabel 显示您第一次执行 Disklabel的画面。画面分为三个区域。 前几行显示的是您正在编辑的硬盘以及您正在建立的slice位于哪个分区上。 (在这里, Disklabel 使用的是 分区名称 而不是 slice 名)。此画面也会显示slice还有 多少空间可以使用;亦即,有多余的空间,但是尚未指派分区。 画面中间区域显示已建立的区区,每个分区的文件系统名称、所占的大小以及 一些关于建立这些文件系统的参数选项。 下方的第三区显示在 Disklabel中可用的按键。
Sysinstall Disklabel 编辑器
Disklabel 您可以自动配置分区以及给它们预设 的大小。您可以按 A键使用此功能。您会看到类似 的画面。根据您硬盘的大小,自动分配所配置 的大小不一定合适。但是没有关系,您并不一定要使用预设的大小。 默认情况下会给/tmp 目录一个独立分区,而不是附属在 / 之下。这样可以 避免将一些临时文件放到根目录中(译注:可能会用完根目录空间)。
Sysinstall Disklabel 编辑器-使用自动配置
如果您不想使用默认的分区布局, 则需要用方向键移动光标并选中第一个分区, 然后按 D 来删除它。 重复这一过程直到删除了所有推荐的分区。 要建立第一个分区 (a, 作为 / — 根文件系统), 请确认您已经在屏幕顶部选中了正确的 slice, 然后按 C。 接下来将出现一个对话框, 要求您输入新分区的尺寸 (如 所示)。 您可以输入以块为单位的尺寸, 或以 M 表示MB、 G 结尾表示GB, 或者 C 表示柱面数的方式来表达尺寸。 从 FreeBSD 5.X 开始, 用户可以: 使用 Custom Newfs (Z) 选项来选择 UFS2 (在 &os; 5.1 和更高版本中的默认值)。 用 Auto Defaults 来创建, 然后用 Custom Newfs 选项, 或在创建文件系统时指定 。 如果您使用了 Custom Newfs选项, 不要忘记增加 来启用 SoftUpdates!
根目录使用空间
如果使用此处显示的默认尺寸, 则会创建一个占满整个 slice 空余空间的 partition。 如果希望使用前面例子中描述的 partition 尺寸, 则应按 Backspace 键删除这些数字, 并输入 128M, 如 所示。 然后, 按下 &gui.ok;。
编辑要分区大小
输入完大小后接着问您要建立的分区是文件系统还是交换空间,如 所示。第一个分区是文件系统,所以 确认选择 FS后按Enter键。
选择根分区类型
最后,因为您要建立的是一个文件系统,所以必须告诉 Disklabel 这个文件系统要挂接在什么地方,如 所示。根文件系统的挂接点 /, 所以请输入 /,然后按 Enter键。
选择根挂接点
刚刚制作好的分区会显示在画面上。您应该重复上述的动作以建立其它的 分区。当建立交换空间的时候,系统不会问您要将它挂接在哪里,因为交换空间是不用 挂在系统上的。当您在建立最后一个分区/usr的时候,您可以 直接使用默认的大小,即所有此分区剩余的空间。 您最终的 FreeBSD DiskLabel 编辑器画面会类似 , 实际数字按您的选择而有所不同。按下 Q 键完成分区的建立。
Sysinstall Disklabel 编辑器
选择要安装的软件包 选择要安装的软件包 安装哪些软件包在很大程度上取决于系统将被用来做什么,以及有多少可用的磁盘空间。 内建的选项包括了运行所需要的最小系统,到把所有软件包全都装上的常用配置。 &unix; 或 FreeBSD 新手通常直接选择一个设定好的软件包就可以了, 而有经验的使用者则可以考虑自己订制安装哪些软件包。 按下 F1 可以看到有关软件包的更多选项信息, 以及它们都包含了哪些软件,之后,可以按 Enter 回到软件包选择画面。 如果您想要使用图形界面, 则必须选择软件包名称开头是 X 的那些软件包。 对于 X 服务器的配置, 以及选择默认的桌面管理器这样的工作必须在 &os; 安装完成之后才能作。 关于配置 X 服务器的更多资料可以在 找到。 默认安装的 X11 版本是 &xorg; 如果需要定制内核, 您还需要选择包含源代码的那个选项。 要了解为什么应该编译和构建新的内核, 请参见 显然, 包含所有组件的系统是最万能的。 如果磁盘空间足够, 用光标键选择 中的 All 并按 Enter。 如果担心磁盘空间不够的话, 则选择最合适的选项。 不要担心选择的是否是最合适的, 因为其他软件包可以在安装完毕后再加入进来。
选择软件包
安装ports软件包 当选择完您想要安装的部分后,接着会询问您要不要安装FreeBSD Ports 软件包;Ports软件包可以让您简单方便地安装软件包。Ports本身并不包含编辑 软件所需要的程序源代码,而是一个包含自动下载、编辑以及安装的文档集合。 一章讨论如何使用Ports. 安装程序并不会检查您是否有足够的硬盘空间来放ports,所以,如果要安装 ports软件所,请先确定您有足够的硬盘空间。 FreeBSD &rel.current;版本 FreeBSD Ports Collection 大约占用 &ports.size; 大小的硬盘空间。您要为 这些版本设置大一点的值来安装它们。 User Confirmation Requested Would you like to install the FreeBSD Ports Collection? This will give you ready access to over &os.numports; ported software packages, at a cost of around &ports.size; of disk space when "clean" and possibly much more than that if a lot of the distribution tarballs are loaded (unless you have the extra CDs from a FreeBSD CD/DVD distribution available and can mount it on /cdrom, in which case this is far less of a problem). The Ports Collection is a very valuable resource and well worth having on your /usr partition, so it is advisable to say Yes to this option. For more information on the Ports Collection & the latest ports, visit: http://www.FreeBSD.org/ports [ Yes ] No 选择 &gui.yes; 将会安装 Ports Collection, 而选择 &gui.no; 则将跳过它。 选好后按 Enter 继续。 此后, 选择安装的软件包的屏幕将再次出现。
确认您要安装的软件包
如果对您的选择感到满意,请选择Exit 退出,确保&gui.ok; 被高亮显示,然后按Enter 继续。
选择您要使用的安装介质 如果要从 CDROM 或 DVD安装,使用方向键将光标移到 Install from a FreeBSD CD/DVD。确认 &gui.ok; 被选取,然后按 Enter 开始安装程序。 如果要使用其它的方式安装,请选择适当的安装介质然后按照屏幕指示 进行安装。 F1 可以显示安装介质的在线说明。按一下 Enter 可返回选择安装介质画面。
选择安装介质
FTP安装模式 installation network FTP 使用FTP安装,有三种方式:主动式(active)FTP、被动式(passive)FTP 或是透过HTTP代理服务器。 主动式FTP: 从FTP服务器安装 这个选项将会使所有的FTP传输使用 Active模式。 这将无法通过防火墙,但是可以使用在那些比较早期,不支持被动模式的FTP站。 如果您的连接在使用被动(默认值)模式卡住了,请换主动模式看看! 被动模式FTP: 通过防火墙从FTP服务器安装 FTP passive mode 此选项会让 sysinstall 使用 Passive模式来安装。这使得使用者可以穿过 不允许用非固定TCP PORTS连入的防火墙。 FTP 透过 HTTP 代理服务器: 透过HTTP代理服务器,由 FTP服务器安装 FTP via a HTTP proxy 此选项会让 sysinstall 通过HTTP协议 (像浏览器一样)连到proxy服务器。proxy服务器会解释送出的请求, 然后通知FTP服务器。因为通过HTTP协议,所以可以穿过防火墙。 要用这种方式,您必须指定proxy服务器的地址。 对于一个 FTP 代理服务器而言,通常在使用者登入名称中加入您要登入的 服务器的用户名,加在 @ 符号后面。然后代理服务器就会 假装 成一个真的服务器。 例如, 假设您要从 ftp.FreeBSD.org 安装,通过 FTP 代理服务器 foo.example.com,使用1234端口。 在这种情况下,您可以到 options 菜单,将 FTP username 设为 ftp@ftp.FreeBSD.org,密码设为您的电子邮件地址。 安装介质部分,指定FTP (或是被动式 FTP,如果代理服务器支持的话) 以及URL为 ftp://foo.example.com:1234/pub/FreeBSD 因为ftp.FreeBSD.org/pub/FreeBSD 目录会被抓取到 foo.example.com之下,您就可以从 这台 机器 (会从 ftp.FreeBSD.org 抓取文件) 安装。
安装确认 到此为止,可以开始进行安装了,这也是您避免更动到您的硬盘的最后机会。 User Confirmation Requested Last Chance! Are you SURE you want to continue the installation? If you're running this on a disk with data you wish to save then WE STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding! We can take no responsibility for lost disk contents! [ Yes ] No 选择 &gui.yes; 然后按下 Enter 确认安装 安装所需的时间会根据您所选择的软件、安装介质以及您电脑的速度而有所不同。 在安装的过程中会有一些信息来显示目前的进度。 当您看到下面的信息表示已经安装完成了: Message Congratulations! You now have FreeBSD installed on your system. We will now move on to the final configuration questions. For any option you do not wish to configure, simply select No. If you wish to re-enter this utility after the system is up, you may do so by typing: /usr/sbin/sysinstall. [ OK ] [ Press enter or space ] 按下 Enter 以进行安装后的配置。 选择 &gui.no; 然后按 Enter 会取消安装,不会对您的系统造成更动。您会看到下面的信息: Message Installation complete with some errors. You may wish to scroll through the debugging messages on VTY1 with the scroll-lock feature. You can also choose "No" at the next prompt and go back into the installation menus to retry whichever operations have failed. [ OK ] 产生这个信息是因为什么东西也没有安装,按下 Enter 后会离开安装程序回到主安装界面。从主安装界面可以退出安装程序。 安装后的配置 安装成功后, 就可以进行进一步的配置了。 引导新安装的 FreeBSD 系统之后, 使用 sysinstall (/stand/sysinstall 如果您使用的是 &os; 5.2 之前的版本), 并选择 Configure 配置网卡 如果您之前配置用 PPP 通过 FTP 安装,那么这个画面将不会出现;正像所说 的那样,您可以稍后再做配置。 如果想更多的了解网卡或将FreeBSD配置为网关或路由器,请参考 Advanced Networking 的相关文章。 User Confirmation Requested Would you like to configure any Ethernet or SLIP/PPP network devices? [ Yes ] No 如果要配置网卡,请选择 &gui.yes; 然后按 Enter。 否则请选择 &gui.no; 继续。
选择网卡设备
用方向键选择您要配置的网卡接口,然后按Enter User Confirmation Requested Do you want to try IPv6 configuration of the interface? Yes [ No ] 目录私人区域网络IP协议IPv4已经足够,所以选择 &gui.no; 然后按 Enter 如果想试试新的IP通信协议 IPv6 ,使用 RA 服务,请选择 &gui.yes; 然后按 Enter。 寻找 RA 服务器将会花费几秒的时间。 User Confirmation Requested Do you want to try DHCP configuration of the interface? Yes [ No ] 如果您不需要 DHCP (Dynamic Host Configuration Protocol 动态主机配置协议) ,选择 &gui.no; 然后按Enter 选择 &gui.yes; 会执行dhclient, 如果成功,它会自动将网络配置信息填上。更多的信息请参考 下面的网络配置显示了怎样把以太网设备配置成区域网络网关的角色。
配置 ed0接口
使用Tab 键可以在各个栏目之间进行切换,请输入适当 的信息: Host(机器名称) 完整的机器名称,例如本例中的 k6-2.example.com Domain(域名) 您机器所在的域名称,如本例的 example.com IPv4 Gateway(IPv4网关) 输入将数据包传送到远端网络的机器IP地址。只有当机器是网络上的 一个节点时才要输入。如果这台机器要作为您局域网的网关, 请将此处设为空白。IPv4网关,也被称作默认网关或 默认路由器。 域名服务器 本地网络中的域名服务器的IP地址。本例中假设机器所在的网络中 没有域名服务器,所以填入的是ISP提供的域名服务器地址 (208.163.10.2。) IPv4 地址 本机所使用的IP地址。本例为 192.168.0.1 子网掩码 在这个局域网中所使用的地址块是 192.168.0.0 - 192.168.0.255, 对应的子网掩码是 255.255.255.0 ifconfig 额外参数设定 任何ifconfig命令跟网卡接口有关的参数。 本范例中没有。 使用 Tab 键选择 &gui.ok;然后按 Enter键。 User Confirmation Requested Would you like to Bring Up the ed0 interface right now? [ Yes ] No 选择 &gui.yes; 然后按 Enter 将会将机器的网卡转为启用状态。机器下次启动 的时候即可使用。
配置网关 User Confirmation Requested Do you want this machine to function as a network gateway? [ Yes ] No 如果这台机器要作为本地网络和其它机器之间传送数据包的网关,请选择 &gui.yes; 然后按 Enter。 如果这台机器只是网络上的普通节点,请选择 &gui.no; 并按 Enter 继续。 配置网络服务 User Confirmation Requested Do you want to configure inetd and the network services that it provides? Yes [ No ] 如果选择 &gui.no;, 许多网络服务,如 telnetd 将不会启用。 这样, 远端用户将无法 telnet 进入这台机器。 本机上的用户还是可以 telnet到远端机器的。 这些服务可以在安装完成后修改/etc/inetd.conf 配置文件来启用它们。请参阅 以获得更多的信息。 如果您想现在就配置这些网络服务,请选择 &gui.yes;, 然后会看到下面的信息: User Confirmation Requested The Internet Super Server (inetd) allows a number of simple Internet services to be enabled, including finger, ftp and telnetd. Enabling these services may increase risk of security problems by increasing the exposure of your system. With this in mind, do you wish to enable inetd? [ Yes ] No 选择 &gui.yes; 继续。 User Confirmation Requested inetd(8) relies on its configuration file, /etc/inetd.conf, to determine which of its Internet services will be available. The default FreeBSD inetd.conf(5) leaves all services disabled by default, so they must be specifically enabled in the configuration file before they will function, even once inetd(8) is enabled. Note that services for IPv6 must be separately enabled from IPv4 services. Select [Yes] now to invoke an editor on /etc/inetd.conf, or [No] to use the current settings. [ Yes ] No 选择 &gui.yes; 将允许您添加网络服务 (或将相应网络服务每行开头的 # 除掉即可。)
编辑 <filename>inetd.conf</filename>配置文件
在加入您想启用的服务后,按下 Esc键会出现一个 对话框可以让您离开以及保存修改。
启用 SSH 登录 SSH sshd User Confirmation Requested Would you like to enable SSH login? Yes [ No ] 选择 &gui.yes; 便会启用 &man.sshd.8;, 也就是 OpenSSH 服务程序。 它能够让您以安全的方式从远程访问机器。 如欲了解关于 OpenSSH 的进一步详情, 请参见 匿名 FTP FTP anonymous User Confirmation Requested Do you want to have anonymous FTP access to this machine? Yes [ No ] 不允许匿名 FTP访问 选择默认的 &gui.no; 并按下 Enter 键将仍然可以让在这台机器上有账号的用户访问 FTP。 允许匿名 FTP访问 如果您选择允许匿名 FTP 存取,那么网络中任何人都可以使用FTP来访问您 的机器。在启用匿名访问之前应该考虑网络的安全问题。如果要知道更多有关网络 安全的信息,请参阅 要启用FTP匿名访问,用方向键选择 &gui.yes; 并按 Enter键。 系统会给出进一步的确认信息: User Confirmation Requested Anonymous FTP permits un-authenticated users to connect to the system FTP server, if FTP service is enabled. Anonymous users are restricted to a specific subset of the file system, and the default configuration provides a drop-box incoming directory to which uploads are permitted. You must separately enable both inetd(8), and enable ftpd(8) in inetd.conf(5) for FTP services to be available. If you did not do so earlier, you will have the opportunity to enable inetd(8) again later. If you want the server to be read-only you should leave the upload directory option empty and add the -r command-line option to ftpd(8) in inetd.conf(5) Do you wish to continue configuring anonymous FTP? [ Yes ] No 这些信息会告诉您 FTP 服务还需要在 /etc/inetd.conf 中启用。 假如您希望允许匿名 FTP 连接, 请参见 。 选择 &gui.yes; 并按 Enter 继续; 系统将给出下列信息:
默认的匿名 FTP 配置
使用 Tab 在不同的信息字段之间切换, 并填写必要的信息: UID 用于分配给匿名 FTP 用户的用户 ID。 所有上传的文件的属主都将是这个 ID。 Group 匿名 FTP 用户所在的组。 Comment 用于在 /etc/passwd 中描述该用户的说明性信息。 FTP Root Directory 可供匿名 FTP 用户使用的文件所在的根目录。 Upload Subdirectory 匿名 FTP 用户上传的文件的存放位置。 默认的 FTP 根目录将放在 /var 目录下。 如果您的 /var 目录空间不足以应付您的FTP需求, 您可以将FTP的根目录改为 /usr 目录下的 /usr/ftp 目录。 当您对一切配置都满意后,请按 Enter 键继续。 User Confirmation Requested Create a welcome message file for anonymous FTP users? [ Yes ] No 如果您选择 &gui.yes; 并按下 Enter键,系统会自动打开文本编辑器让您编辑FTP的欢迎信息。
编辑FTP欢迎信息
此文本编辑器叫做 ee。按照指示修改信息文本或是 稍后再用您喜爱的文本编辑器来修改。请记住画面下方显示的文件位置。 Esc 将弹出一个默认为 a) leave editor的对话框。按 Enter 退出并继续。再次按 Enter 将保存修改。
配置网络文件系统 网络文件系统 (NFS) 可以让您可以在网络上共享您的文件。一台机器可以 配置成NFS服务器、客户端或两者并存。请参考 以获得更多的信息。 NFS 服务器 User Confirmation Requested Do you want to configure this machine as an NFS server? Yes [ No ] 如果您不想安装网络文件系统,请选择 &gui.no; 然后按 Enter键。 如果您选择 &gui.yes; 将会出现一个对话框提醒您 必须先建立一个 exports 文件。 Message Operating as an NFS server means that you must first configure an /etc/exports file to indicate which hosts are allowed certain kinds of access to your local filesystems. Press [Enter] now to invoke an editor on /etc/exports [ OK ] Enter 键继续。系统会启动文本编辑器让您编辑 exports 文件。
编辑 <filename>exports</filename>文件
按照指示加入真实输出的文件目录或是稍后用您喜爱的编辑器自行编辑。 请记下画面下方显示的文件名称及位置。 按下 Esc 键会出现一具对话框,默认选项是 a) leave editor。按下 Enter 离开并继续。
NFS 客户端 NFS 客户端允许您的机器访问NFS服务器。 User Confirmation Requested Do you want to configure this machine as an NFS client? Yes [ No ] 按照您的需要,选择 &gui.yes; 或 &gui.no; 然后按 Enter
配置系统终端 系统提供了几个选项可以让您配置终端的表现方式。 User Confirmation Requested Would you like to customize your system console settings? [ Yes ] No 要查阅及配置这些选项,请选择 &gui.yes; 并按Enter
系统终端配置选项
最常用的选项就是屏幕保护程序了。使用方向键将光标移动到 Saver 然后按Enter
屏幕保护程序选项
选择您想使用的屏幕保护程序,然后按 Enter。 之后回到系统终端配置画面。 默认开启屏幕保护程序的时间是300秒。如果要更改此时间,请再次选择 Saver 。然后选择 Timeout 并按 Enter键。系统会弹出一个对话框如下:
屏幕保护时间设置
您可以直接改变这个值,然后选 &gui.ok;并按 Enter 键回到系统终端配置画面。
退出系统终端配置
选择 Exit 然后按下 Enter 键会回到安装后的配置画面。
配置时区 配置您机器的时区可以让系统自动校正任何区域时间的变更并且在执行 一些跟时区相关的程序时不会出错。 例子中假设此台机器位于美国东部的时区。请参考您所在的地理位置来配置。 User Confirmation Requested Would you like to set this machine's time zone now? [ Yes ] No 选择 &gui.yes; 并按下 Enter键以配置时区。 User Confirmation Requested Is this machine's CMOS clock set to UTC? If it is set to local time or you don't know, please choose NO here! Yes [ No ] 这里按照您机器时间的配置,选择 &gui.yes; 或 &gui.no; 然后按 Enter
选择您所处的地理区域
请选择适当的区域然后按 Enter
选择您所在的国家
选择您所在的国家然后按 Enter
选择您所在的时区
选择您所在的时区然后按 Enter Confirmation Does the abbreviation 'EDT' look reasonable? [ Yes ] No 检查一下时区的缩写是否正确,如果没错,请按 Enter 返回系统安装后的配置画面。
Linux 兼容性 User Confirmation Requested Would you like to enable Linux binary compatibility? [ Yes ] No 选择 &gui.yes; 并按下Enter 键,将允许您在FreeBSD中执行Linux的软件。安装程序会安装一些为了跟Linux 兼容的软件包。 如果您是通过FTP安装,那么您必须连到网络上。有时候FTP站并不会包含 所有的安装软件包(例如Linux兼容软件包);不过,稍后您还可以再安装这个 项目。 配置鼠标 此选项可以让您在终端上使用三键鼠标剪贴文字。如果您用的鼠标是两个 按钮,请参考手册 &man.moused.8;;以取得有关模拟三键鼠标的信息。范例中 使用的鼠标不是USB接口。(例如ps/2或com接口的鼠标): User Confirmation Requested Does this system have a PS/2, serial, or bus mouse? [ Yes ] No 如果您使用的是 PS/2、 串口或 Bus 鼠标,请选择 &gui.yes;, 如果是 USB 鼠标, 则应选择 &gui.no; 并按 Enter
选择鼠标类型
使用方向键选择 Type 然后按 Enter
设置鼠标协议
在这个例子中使用的类型是ps/2鼠标,所以可以使用默认的 Auto(自动) 。 您可以用方向键选择合适的项目, 确定选择了 &gui.ok; 后按 Enter 键离开此画面。
配置鼠标端口
选择 Port 然后按 Enter
配置鼠标端口
假设这台机器用的是ps/2鼠标,您可以采用默认的 PS/2 选项。请选择适当的项目然后按 Enter
启动鼠标服务进程
选择Enable然后按 Enter 来启动和测试鼠标。
测试鼠标功能
鼠标指针可以在屏幕上移动,指明鼠标服务已经正常启用。那么请选择 &gui.yes; 按 Enter键。否则鼠标没 有配置成功 — 选择 &gui.no; 并尝试不同的配置 选项。 选择 Exit 并按 Enter 退回到系统安装完成后的配置画面。
安装预编译的软件包 (package) Package 是事先编译好的二进制文件, 因此, 这是安装软件的一种便捷的方式。 在这里作为例子我们将给出安装一个 package 所需的过程。 如果需要, 还可以在这一阶段加入其他 package。 安装完成之后, sysinstall 依然可以用来安装其他 package。 User Confirmation Requested The FreeBSD package collection is a collection of hundreds of ready-to-run applications, from text editors to games to WEB servers and more. Would you like to browse the collection now? [ Yes ] No 选择 &gui.yes; 并按 Enter 将进入 package 选择界面:
选择 Package 类别
在任何时候, 只有当前安装介质上存在的 package 才可以安装。 如果选择了 All 或某个特定的分类, 则系统会列出全部可用的 package。 用光标键移动光棒选中需要的 package, 并按 Enter 系统会显示可供选择的 package:
选择 Package
如图所示, 我们选择了 bash shell。 您可以根据需要使用 Space 键来勾选选定的 package。 在屏幕左下角会给出 package 的简短说明。 反复按下 Tab 键, 可以在最后选中的 package、 &gui.ok; 和 &gui.cancel; 之间来回切换。 当您把需要的 package 都标记为安装之后, 按一下 Tab 切换到 &gui.ok;, 随后按下 Enter 就可以回到 package 选择菜单了。 左右方向键可以用于在 &gui.ok; 和 &gui.cancel; 之间进行切换。 这种方法也可以用来选择 &gui.ok;, 随后按下 Enter 也可以回到 package 选择菜单。
安装预编译软件包
使用 Tab 和左右方向键选择 [ Install ] 并按 Enter。 接下来需要确认将要安装的预编译包:
确认将要安装的预编译包
选择 &gui.ok; 并按下 Enter 就可以开始预编译包的安装了。 在这个过程中您会看到安装的相关信息, 直到安装完成为止。 请留意观察是否有错误信息出现。 在完成预编译包的安装之后, 就进入了最后的配置阶段。 如果您没有选择任何预编译包, 并希望直接进入最后的配置阶段, 则可以选择 Install 来跳过。
添加用户和组 在安装系统的过程中, 您应添加至少一个用户, 以避免直接以 root 用户的身份登录。 用以保存其用户数据的根分区通常很小, 因此用 root 身份运行程序可能将其迅速填满。 下面的提示信息介绍了这样做可能带来的更大隐患: User Confirmation Requested Would you like to add any initial user accounts to the system? Adding at least one account for yourself at this stage is suggested since working as the "root" user is dangerous (it is easy to do things which adversely affect the entire system). [ Yes ] No 选择 &gui.yes; 并按 Enter 即可开始创建用户的过程。
选择用户
用箭头键来选择 User 然后按 Enter
添加用户信息
下面的描述信息会出现在屏幕的下方,可以使用 Tab 键来切换不同的项目,以便输入相关信息: Login ID 新用户的登录名(强制性必须写) UID 这个用户的ID编号(如果不写,系统自动添加) Group 这个用户的登录组名(如果不写,系统自动添加) Password 这个用户的密码(键入这个需要很仔细!) Full name 用户的全名(解释、备注) Member groups 这个用户所在的组 Home directory 用户的主目录(如果不写,系统自动添加) Login shell 用户登录的shell(默认是/bin/sh)。 你可以将登录 shell 由 /bin/sh 改为 /usr/local/bin/bash, 以便使用事先以 package 形式安装的 bash shell。 不要使用一个不存在的或您不能登录的shell。最通用的shell是使用 BSD-world 的 C shell,可以通过指定/bin/tcsh来修改。 用户也可以被添加到 wheel 组中成了一个超级用户, 从而拥有 root权限。 当您感觉满意时,键入 &gui.ok; 键,用户和组管理菜单将会重新出现。
退出用户和组管理
如果有其他的需要, 此时还可以添加其他的组。 此外, 还可以通过 sysinstall (在 &os; 5.2 以前的版本中是 /stand/sysinstall) 在安装完成之后添加它们。 当您完成添加用户的时候,选择Exit 然后键入Enter 继续下面的安装。
设置 <username>root</username> 密码 Message Now you must set the system manager's password. This is the password you'll use to log in as "root". [ OK ] [ Press enter or space ] 键入 Enter 来设置 root 密码。 密码必须正确地输入两次。 毋庸讳言, 您需要选择一个不容易忘记的口令。 请注意您输入的口令不会回显, 也不会显示星号。 New password: Retype new password : 密码成功键入后,安装将继续。 退出安装 如果您需要设置 其他网络设备, 或需要完成其他的配置工作, 可以在此时或者事后通过 sysinstall (对于 &os; 5.2 之前的版本是 /stand/sysinstall) 来进行配置。 User Confirmation Requested Visit the general configuration menu for a chance to set any last options? Yes [ No ] 选择 &gui.no; 然后键入 Enter 返回到主安装菜单。
退出安装
选择 [X Exit Install] 然后键入 Enter。您可能需要确认是否真的退出安装: User Confirmation Requested Are you sure you wish to exit? The system will reboot (be sure to remove any floppies/CDs/DVDs from the drives). [ Yes ] No 选择 &gui.yes; 取出软盘。CDROM驱动器将被锁定, 直到机器重新启动。CDROM然后就可以从驱动器中取出来了。 此后系统将重新启动, 因此请留意是否会出现一些错误信息。 进一步的细节, 请参见
Tom Rhodes 原作 配置其他网络服务 如果之前缺少这一领域的经验, 那么配置网络服务对于新手而言, 很可能会是一件很有挑战的事情。 网络, 包括 Internet, 对于包括 &os; 在内的所有现代操作系统而言都至关重要。 因此, 首先对 &os; 提供的丰富的网络性能加以了解会很有帮助。 在安装过程中了解这些知识, 能够确保用户更好地理解他们可以用到的各种服务。 网络服务是一些可以接收来自网络上任何地方的人所提交的输入信息的程序。 人们一直都在努力确保这些程序不会做任何 有害的 事情。 不幸的是, 程序员们并不是十全十美的完人, 因此, 网络服务程序中的漏洞, 便有可能被攻击者利用来做一些坏事。 因而, 只启用那些您知道自己需要的服务就很重要了。 如果存在疑问, 那么就最好不要在您发现需要它之前启动任何网络服务。 您可以事后通过再次运行 sysinstall 或直接手工配置 /etc/rc.conf 来随时启用这些服务。 选择 Networking 选项将下显示一个类似下面的菜单:
网络配置之上层配置
第一个选项, Interfaces, 已经在前面的 中做过配置, 因此现在可以略过它。 选择 AMD 选项, 将添加对于 BSD 自动挂接程序的支持。 这个程序通常会和 NFS 协议 (详情参见下文) 配合使用, 以便自动挂载远程文件系统。 启用它不需要在此时进行特殊的额外配置。 下一行是 AMD Flags 的参数选项。 选择它之后,会弹出一个让您选择 AMD 参数的子菜单。 菜单中包含一系列的选项: -a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map 选项用来设置默认的挂接位置, 这里使用的是 /.amd_mnt目录。 指定默认的 日志 文件; 但是,当使用 syslogd 时, 所有在日之中记录的活动, 都会发送到系统日志服务去。 /host 用来挂接远程主机上输出的文件系统, 而 /net 目录则用来挂接从特定 IP 地址输出的文件系统。 /etc/amd.map 文件定义了用于 AMD 的默认输出选项。 FTP anonymous (匿名) Anon FTP 允许匿名 FTP 访问。 选中这个选项, 可以使这台机器成为一台匿名 FTP 服务器。 要注意启用这个选项的安全风险。 系统将使用另外的菜单来说明安全风险和进一步的配置。 Gateway 选项可以使将本机配置成为一台以前我们介绍过的网关。 如果您在安装过程中不小心选中了 Gateway, 也可以在这里用这个选项来取消。 Inetd 选项用来配置或完全禁用前面讨论过的 &man.inetd.8; 服务程序。 Mail 用来配置系统默认的 MTA 或邮件传输代理。 选择这个选项将出现下面的菜单:
选择默认的 MTA
这里给您提供了一个安装MTA 并将其配置为默认值的机会。 MTA 是一种能够将邮件头递给本系统或互联网上的用户的邮件服务。 选择 Sendmail 将会安装十分流行的 sendmail 服务, 这也是 &os; 的默认配置。 Sendmail local 选项表示将 sendmail 设为默认的 MTA, 但禁止其从 Internet 上接收邮件的能力。 此外还有一些其他选项, PostfixEximSendmail 的功能类似。 它们两者也可以投递邮件; 不过, 有些用户会喜欢使用它们代替 sendmail MTA 选择 MTA 或决定不挑选 MTA 之后, 网络配置菜单的下一项将是 NFS client NFS client 客户端可以使系统通过 NFS 与服务器进行通信。 NFS 服务器通过 NFS 协议可以使其它在网络上的机器来访问自己的文件系统。 如果这台机器要作为一台独立的服务器,这个选项可以保留不选。 如果启用它, 您在之后还需要进行更多的其他配置; 请参见 以了解关于配置客户机和服务器的进一步详情。 接下来的 NFS server 选项, 可以让您将本机系统配置为 NFS 服务器。 这会自动将启动 RPC 远程过程调用的信息写入配置文件。 RPC 是一种在多个主机和程序之间进行连接组织的机制。 下一项是 Ntpdate 选项, 它能够处理时间同步。 当选择它后, 会出现一个像下面所似的菜单:
Ntpdate 配置
从这个菜单选择一个离您最近的服务器。 选择较近的服务器, 有助于提高时间同步的精度, 因为较远的服务器的连接延迟可能会比较大。 下一个选项是 PCNFSD。 这个选项将安装第三方软件包 net/pcnfsd。 它可以用来为无法自行提供 NFS 认证服务的操作系统, 如微软的 &ms-dos; 提供服务。 滚屏到下一页看一下其它选项:
网络配置之下层配置
&man.rpcbind.8;, &man.rpc.statd.8; 和 &man.rpc.lockd.8; 这三个程序是用来提供远程过程调用 (RPC) 服务的。 rpcbind 程序管理 NFS 服务器和客户端的通信, 这是 NFS 正确工作的必要前提。 rpc.statd 程序可以和其它主机上 rpc.statd 程序交互, 以提供的状态监控。 这些状态报告默认情况下会保存到 /var/db/statd.status 文件中。 最后的一项是 rpc.lockd 选项, 如果启用, 则将提供文件上锁服务。 通常将它和 rpc.statd 联用, 以监视哪些主机会请求对文件执行上锁操作, 以及这种操作的频繁程度。 尽管后两项功能对于调试非常有用, 但它们并不是 NFS 服务器和客户端正常运行所必需的。 下一个项目是Routed,这是一个路由程序。 &man.routed.8; 程序管理网络路由表,发现多播路由, 并且支持在网络上与它物理相连的主机来复制它的路由表的请求。 它被广泛地应用在本地网络中并扮演着网关的角色。 当选择它后,一个子菜单会来询问您这个程序的默认位置。 默认的位置已经被定义过, 您可以选择 Enter 键, 也可以按下其它的键。 这时会出来另一个菜单来询问您传递给 routed程序的参数。 默认的是 参数。 接下来是 Rwhod 选项,选中它会启用 &man.rwhod.8; 程序 在系统初时化的时候。 rwhod程序通过网络周期性的广播系统 信息或以客户的身份来收集这些信息。更多的信息可以查看 &man.ruptime.1; 和&man.rwho.1; 手册页。 倒数第二个选项是&man.sshd.8; 程序。它可以通过使用 OpenSSH 来提供安全的shell服务, 我们推荐通过使用它来使用 telnetFTP 服务。 sshd 服务通过使用加密技术来创建从一台机器到另一台机器的安全连接。 最后有一个 TCP 扩展选项。这可以用来扩展在 RFC 1323 和 RFC 1644 里定义的TCP 功能。当许多主机以高速连接本机时,可 能会引起某些连接被丢弃。我们不推荐使用这个选项,但是当使用独立的主机 时可以从它上面得到一些好处。 现在您已经配置完成了网络服务,您可以滚动屏幕到顶部选择 Exit 项,退出进入下一个配置部分。 现在您已经配置完成了网络服务,您可以滚动屏幕到顶部选择 X Exit 项, 退出进入下一个配置部分, 或简单地选择两次 X Exit 之后选择 [X Exit Install] 来退出 sysinstall
&os; 的启动过程 &os;/&arch.i386; 的启动过程 如果启动正常,您将看到在屏幕上有很多信息滚动,最后您会看到登录命令行。 您可以通过键入 Scroll-Lock和使用 PgUpPgDn来查看信息,再键入 Scroll-Lock 回到命令行。 记录信息可能不会显示(缓冲区的限制)。您可以通过键入 dmesg 来查看。 使用您在安装过程中设置的用户名/密码来登录。(例子中使用 rpratt)。除非必须的时候请不要用 root 用户登录。 典型的启动信息:(忽略版本信息) Copyright (c) 1992-2002 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. Timecounter "i8254" frequency 1193182 Hz CPU: AMD-K6(tm) 3D processor (300.68-MHz 586-class CPU) Origin = "AuthenticAMD" Id = 0x580 Stepping = 0 Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX> AMD Features=0x80000800<SYSCALL,3DNow!> real memory = 268435456 (262144K bytes) config> di sn0 config> di lnc0 config> di le0 config> di ie0 config> di fe0 config> di cs0 config> di bt0 config> di aic0 config> di aha0 config> di adv0 config> q avail memory = 256311296 (250304K bytes) Preloaded elf kernel "kernel" at 0xc0491000. Preloaded userconfig_script "/boot/kernel.conf" at 0xc049109c. md0: Malloc disk Using $PIR table, 4 entries at 0xc00fde60 npx0: <math processor> on motherboard npx0: INT 16 interface pcib0: <Host to PCI bridge> on motherboard pci0: <PCI bus> on pcib0 pcib1: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0 pci1: <PCI bus> on pcib1 pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11 isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0 isa0: <ISA bus> on isab0 atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0 ata0: at 0x1f0 irq 14 on atapci0 ata1: at 0x170 irq 15 on atapci0 uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0 usb0: <VIA 83C572 USB controller> on uhci0 usb0: USB revision 1.0 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1 uhub0: 2 ports with 2 removable, self powered chip1: <VIA 82C586B ACPI interface> at device 7.3 on pci0 ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xe800-0xe81f irq 9 at device 10.0 on pci0 ed0: address 52:54:05:de:73:1b, type NE2000 (16 bit) isa0: too many dependant configs (8) isa0: unexpected small tag 14 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0 fdc0: FIFO enabled, 8 bytes threshold fd0: <1440-KB 3.5" drive> on fdc0 drive 0 atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0 atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0 kbd0 at atkbd0 psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: model Generic PS/2 mouse, device ID 0 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 sc0: <System console> at flags 0x1 on isa0 sc0: VGA <16 virtual consoles, flags=0x300> sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0 sio0: type 16550A sio1 at port 0x2f8-0x2ff irq 3 on isa0 sio1: type 16550A ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/15 bytes threshold ppbus0: IEEE1284 device found /NIBBLE Probing for PnP devices on ppbus0: plip0: <PLIP network interface> on ppbus0 lpt0: <Printer> on ppbus0 lpt0: Interrupt-driven port ppi0: <Parallel I/O> on ppbus0 ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33 ad2: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata1-master using UDMA33 acd0: CDROM <DELTA OTC-H101/ST3 F/W by OIPD> at ata0-slave using PIO4 Mounting root from ufs:/dev/ad0s1a swapon: adding /dev/ad0s1b as swap device Automatic boot in progress... /dev/ad0s1a: FILESYSTEM CLEAN; SKIPPING CHECKS /dev/ad0s1a: clean, 48752 free (552 frags, 6025 blocks, 0.9% fragmentation) /dev/ad0s1f: FILESYSTEM CLEAN; SKIPPING CHECKS /dev/ad0s1f: clean, 128997 free (21 frags, 16122 blocks, 0.0% fragmentation) /dev/ad0s1g: FILESYSTEM CLEAN; SKIPPING CHECKS /dev/ad0s1g: clean, 3036299 free (43175 frags, 374073 blocks, 1.3% fragmentation) /dev/ad0s1e: filesystem CLEAN; SKIPPING CHECKS /dev/ad0s1e: clean, 128193 free (17 frags, 16022 blocks, 0.0% fragmentation) Doing initial network setup: hostname. ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255 inet6 fe80::5054::5ff::fede:731b%ed0 prefixlen 64 tentative scopeid 0x1 ether 52:54:05:de:73:1b lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 Additional routing options: IP gateway=YES TCP keepalive=YES routing daemons:. additional daemons: syslogd. Doing additional network setup:. Starting final network daemons: creating ssh RSA host key Generating public/private rsa1 key pair. Your identification has been saved in /etc/ssh/ssh_host_key. Your public key has been saved in /etc/ssh/ssh_host_key.pub. The key fingerprint is: cd:76:89:16:69:0e:d0:6e:f8:66:d0:07:26:3c:7e:2d root@k6-2.example.com creating ssh DSA host key Generating public/private dsa key pair. Your identification has been saved in /etc/ssh/ssh_host_dsa_key. Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub. The key fingerprint is: f9:a1:a9:47:c4:ad:f9:8d:52:b8:b8:ff:8c:ad:2d:e6 root@k6-2.example.com. setting ELF ldconfig path: /usr/lib /usr/lib/compat /usr/X11R6/lib /usr/local/lib a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout starting standard daemons: inetd cron sshd usbd sendmail. Initial rc.i386 initialization:. rc.i386 configuring syscons: blank_time screensaver moused. Additional ABI support: linux. Local package initialization:. Additional TCP options:. FreeBSD/i386 (k6-2.example.com) (ttyv0) login: rpratt Password: 生成 RSA 和 DSA密钥在比较慢的机器上可能要花很长时间。这只是一个 新安装后的首次启动,以后的启动会变得更快一点。 如果已经完成 X 服务器的配置, 且指定了默认的桌面窗口管理器, 就可以在命令行键入 startx 来启动它了。 &os;/&arch.alpha; 的启动过程 Alpha 一旦安装完成,您就可以键入下面的命令来启动FreeBSD: >>>BOOT DKC0 这是从指定的固定硬件进行引导。如果要使 FreeBSD 下次能够自动启动, 使用下面的命令: >>> SET BOOT_OSFLAGS A >>> SET BOOT_FILE '' >>> SET BOOTDEF_DEV DKC0 >>> SET AUTO_ACTION BOOT 启动信息跟启动 &i386;机器时差不多。(但不完全一样) FreeBSD 关机 正确的关闭操作系统是很重要的。不要仅仅关闭电源。首先,您需要成为一个超 级用户,通过键入 su 命令来实现。然后输入 root 密码。这需要用户是 wheel 组的一名成员。然后,以root键入 shutdown -h now命令。 The operating system has halted. Please press any key to reboot. 当shutdown命令发出后,屏幕上出现 Please press any key to reboot 信息时,您就可以安全的关闭计算机了。如果按下任意一个键,计算机将重新启动。 您也能够使用 Ctrl Alt Del 组合键来重新启动计算机,但是不推荐使用这个操作。
常见问题 安装 常见问题 下面将介绍一些在安装过程中常见的问题,像如何报告发生的问题,如何 双重启动 FreeBSD 和 &ms-dos; 或 &windows;。 当您遇到错误时,应该怎么做? 由于 PC 结构的限制, 硬件检测不可能 100% 地可靠, 但是有些问题是您可以自己解决的。 首先检查一下您使用的 &os; 版本的 硬件兼容说明 文档看看您使用的是否是被支持的硬件。 如果您使用的硬件是系统支持的, 但仍然遇到了死机或其他问题, 则需要联编 定制的内核。 这能够支持默认的 GENERIC 内核所不支持的设备。 在引导盘上的内核假定绝大多数的硬件, 均为按出厂设置的方式配置了 IRQ、 IO 地址和 DMA 通道。 如果您的硬件重新进行了配置, 则可能需要编辑内核配置, 并重新编译内核, 以便告诉 &os; 到哪里去查找设备。 除此之外, 也可能遇到这种情况吗, 即探测某种并不存在的设备时, 会干扰到其他设备的检测并使其失败。 这种情况吗下应禁止驱动程序检测可能导致冲突的设备。 有些安装问题可以借助更新硬件的程序来解决,特别是主板的 BIOS 。大部分的主板制造商都会提供网站给用户下载新的 BIOS以及提供如何更新的说明。 也有许多制造商强烈建议,除非必要否则不要轻易更新 BIOS 。因为更新的过程可能 会发生问题,进而损害BIOS 芯片。 使用 &ms-dos; 和 &windows; 文件系统 目前, &os; 尚不支持通过 Double Space™ 程序压缩的文件系统。 因此, 如果希望 &os; 访问数据, 则应首先解压缩这些文件系统。 这项工作, 可以通过位于 Start> Programs > System Tools 菜单的 Compression Agent 来完成。 - &os;可以支持基于 &ms-dos; 的文件系统 (FAT16 和 FAT32)。 - 这要求您使用带参数的 &man.mount.8; 命令。 最常使用的是: + &os; 可以支持基于 &ms-dos; 的文件系统 (有时被称为 FAT + 文件系统)。 &man.mount.msdosfs.8; + 命令能够把这样的文件系统挂接到现有的目录结构中, + 并允许访问 FAT 文件系统上的内容。 通常我们并不直接使用 + &man.mount.msdosfs.8;,它一般会在 /etc/fstab + 中的某一行被调用或者被 &man.mount.8; 工具并配合适当的参数来调用。 + + /etc/fstab中一个典型的例子: + + /dev/ad0sN /dos msdosfs rw 0 0 + + /dos 目录必须事先存在。 + 更多关于 /etc/fstab 的细节, + 请参阅 &man.fstab.5;。 + + 一个使用 &man.mount.8; 挂载 &ms-dos; 文件系统的例子: &prompt.root; mount -t msdosfs /dev/ad0s1 /mnt 在此例子中, &ms-dos; 文件系统位于主硬盘的第一个分区。您的情况可能与引不同, 查看命令 dmesgmount 的输出。它们应该 可以让您得到足够的分区信息。 - &ms-dos; 的扩展分区会被映射在 &os;分区的末尾。换句话说,分区号要大于 - &os; 正在使用的分区号。例如,第一个 &ms-dos; 分区可能位于 - /dev/ad0s1,&os; 分区可能位于 - /dev/ad0s2,跟着是 &ms-dos; 的扩展分区位于 - /dev/ad0s3。这可能会使您感觉迷茫。 + &os; 可能使用和其他操作系统不同计数方法来标记磁盘 slices, + 特别需要指出的是, &ms-dos; + 的扩展分区通常会比 &ms-dos; 主分区被标记为更高的数值。 + 可以使用 &man.fdisk.8; 工具来帮助测定哪些 slices 属于 &os; + 哪些是属于其他的操作系统。 NTFS 分区也可以通过类似 &man.mount.ntfs.8; 命令挂接在FreeBSD上。 排除故障时的常见问题和解决方法 我的系统在引导到探测硬件时发生了死机、 安装过程中行为异常, 或没有检测到软驱。 &os; 5.0 和更高版本在启动过程中广泛使用了 i386、 amd64 及 ia64 平台提供的 ACPI 服务来检测系统配置。 不幸的是, 在 ACPI 驱动和主板 BIOS 中存在一些 bug。 如果遇到这种情况, 可以在系统引导时禁用 ACPI, 其方法是在第三阶段引导加载器时使用 hint hint.acpi.0.disabled set hint.acpi.0.disabled="1" 这一设置会在系统重启之后失效, 因此, 如果需要的话, 您应在 /boot/loader.conf 文件中增加 hint.acpi.0.disabled="1"。 关于引导加载器的进一步详情, 请参见 在硬盘安装 &os; 之后的首次启动时, 内核加载并检测了硬件, 但给出下列消息并停止运行: changing root device to ad1s1a panic: cannot mount root 这是怎么回事? 我该怎么做? 另外引导帮助信息里提到的 bios_drive:interface(unit,partition)kernel_name 是什么? 系统在处理引导盘非系统中的第一块盘时有一个由来已久的问题。 BIOS 采用的编号方式有时和 &os; 不一致, 而设法将其变为一样则很难正确地实现。 因而, 在发生这种情况时, &os; 可能会需要一些帮助才能找到磁盘。 有两种常见的情况, 在这些情况下您都需要手工告诉 &os; 根文件系统模块的位置。 这是通过告诉引导加载器 BIOS 磁盘编号、 磁盘类型以及 &os; 中的该种磁盘的编号来实现的。 第一种情况是有两块 IDE 硬盘, 分别配置为对应 IDE 总线上的主 (master) 设备, 并希望 &os; 从第二块硬盘上启动。 BIOS 将两块硬盘识别为磁盘 0 和磁盘 1, 而 &os; 则将其分别叫做 ad0ad2 &os; 位于 BIOS 磁盘 1, 其类型是 ad 而 &os; 磁盘编号则是 2, 因此, 您应输入: 1:ad(2,a)kernel 注意, 如果您的主总线上有从设备, 则这一配置是不必要的 (因为这样配置是错的)。 第二种情况是从 SCSI 磁盘启动, 但系统中安装了一个或多个 IDE 硬盘。 这时, &os; 磁盘编号会比 BIOS 磁盘编号小。 如果您有两块 IDE 硬盘, 以及一块 SCSI 硬盘, 则 SCSI 硬盘将会是 BIOS 磁盘 2, 类型为 da 而 &os; 磁盘编号是 0, 因此, 您应输入: 2:da(0,a)kernel 来告诉 &os; 您希望从 BIOS 磁盘 2 引导, 而它是系统中的第一块 SCSI 硬盘。 假如只有一块 IDE 硬盘, 则应以 1: 代替。 一旦您确定了应选用的正确配置, 就可以用标准的文本编辑器把它写到 /boot.config 文件中了。 除非另行指定, &os; 将使用这个文件的内容, 作为对 boot: 提示的默认回应。 在硬盘安装 &os; 之后的首次启动时, Boot Manager 只是给出了 F? 的菜单提示, 但并不继续引导过程。 在您安装 &os; 进行到分区编辑器时所设置的磁盘尺寸信息不对。 请回到分区编辑器并指定正确的磁盘尺寸。 这种情况必须重新安装 &os;。 如果您无法确定在您机器上的正确尺寸信息, 可以用一个小技巧: 在磁盘开始的地方安装一个小的 DOS 分区, 并在其后安装 &os;。 安装程序能够看到这个 DOS 分区, 并利用它推测磁盘的尺寸信息, 这通常会有所帮助。 下面的技巧不再推荐使用, 在这里仅供参考:
如果您正准备建立只运行 &os; 的服务器或工作站, 而无需考虑 (之后) 与 DOS、 Linux 或其他操作系统的兼容性, 也可以使用整个硬盘 (分区编辑器中的 A), 选择 &os; 独占整个硬盘每一个扇区的非标准选项。 这会扫除关于磁盘尺寸的一切烦恼, 但会限制您以后运行 &os; 以外的其他操作系统的能力。
系统找到了 &man.ed.4; 网卡, 但总是报设备超时 (device timeout) 错误。 您的网卡可能使用了与 /boot/device.hints 文件中指定的 IRQ 不同的中断请求号。 &man.ed.4; 驱动默认情况下并不支持 配置 (在 DOS 中使用 EZSETUP 配置的值), 但如果您在网卡的 hints 中指定 -1, 便会使用软配置。 您应使用网卡的跳线进行硬配置 (根据需要修改内核设置) 或通过 hint hint.ed.0.irq="-1" 将 IRQ 指定为 -1。 这会告诉内核使用软配置。 另一个可能是您的网卡使用 IRQ 9, 这会与 IRQ 2 共用同一中断请求线, 同时也是导致问题的一个常见原因 (特别是 VGA 卡使用 IRQ 2 的时候!)。 您应尽量避免使用 IRQ 2 或 9。
Valentino Vaschetto Contributed by 高级安装指南 这节主要描述在一些特殊情况下如何安装FreeBSD。 在一个没有显示器或键盘的系统上安装FreeBSD installation headless (serial console) serial console 这种类型的安装叫做 headless install(无关安装), 因您正要安装FreeBSD的机器不是没带显示器,就是没有显卡。您可能会问那怎么安装? 可以使用一个串行控制台。串行控制台基本上是使用另外一台机器来充当主显示设备 和键盘。要这样做,只要执行下面的步骤:创建安装软件,请看 一节说明。 按下面的步骤,修改这些软盘用来引导进入一个串行控制台: 通过启动软盘来引导进入一个串行控制台 mount 如果您想用软盘,FreeBSD将进入它通常的安装模式。我们要把FreeBSD 引导进入串行控制台,需要这样做,您必须使用 &man.mount.8;命令在FreeBSD系统 上挂接 boot.flp 的那个软盘。 &prompt.root; mount /dev/fd0 /mnt 现在您已经挂上了软盘, 需要进入 /mnt 目录: &prompt.root; cd /mnt 这儿是您必须设置软盘引导进入串行控制台的地方。您必须制作一个包含 /boot/loader -h这行的叫做boot.config 的文件。所有这些是为了给引导程序一个标记以引导进入串行控制台。 &prompt.root; echo "/boot/loader -h" > boot.config 现在您已经正确配置好了软盘,您必须使用 &man.umount.8; 命令卸下软盘。 &prompt.root; cd / &prompt.root; umount /mnt 现在您可以从软盘驱动器中取出软盘了。 连接您的 Null-modem 线 null modem cable 您现在需要一根null modem线来连接两台机器。 只要连接两台机器的串口。 普通的串行线是不行的,您需要使用一根null modem的线, 因为它在一些十字交叉口有金属线。 开始启动安装 现在开始启动安装。把 boot.flp 的那张软盘 插入软盘驱动器,然后开启电源。 连接您的无头机器 cu 现在您已经通过&man.cu.1;连接到了那台机器。 &prompt.root; cu -l /dev/cuad0 在 &os; 5.X 上, 应使用 /dev/cuaa0 代替例子中的 /dev/cuad0 就这样! 您已经能够通过您的cu session对话来控制那台 无头机器了。 它将要求您把 kern1.flp 的那张软盘插入驱动器, 然后它将提示选择使用哪种终端。 只要选择 FreeBSD 的彩色控制台, 然后继续您的安装。 准备您自己的安装介质 为了避免重复 FreeBSD disc 在这里指 FreeBSD CDROM or DVD 那即意味着您要购买或自己制做。 有好几个原因需要您创建自己的FreeBSD安装介质。这可能是物理介质,如磁带, 使用 sysinstall程序找到的安装文件,FTP站点或 &ms-dos;分区。 例如: 您有许多机器连接到本地网络,使用一个FreeBSD光盘。您要使用FreeBSD来 创建一个本地FTP站点,然后使用这个FTP站点来代替连接到Internet。 您有一张 FreeBSD 光盘, FreeBSD 不支持您的 CD/DVD 驱动器, 但 &ms-dos;/&windows; 支持。 您要复制安装文件到一个DOS分区, 然后使用这些文件进行安装。 您要安装的计算机没有 CD/DVD驱动器和网卡,但您可以连接一个 Laplink-style 串口或并口线缆到那台计算机。 您要通过一个磁带机来安装FreeBSD. 创建一张安装光盘 FreeBSD 的每个发行版本都为每一支持的平台提供至少两张 CDROM 映像 (ISO images)。 如果您有刻录机,这些映像文件可以被(burned) 成FreeBSD的安装光盘。 如果没有刻录机,而上网带宽却很便宜,它也是一种很好的安装方式。 下载正确的 ISO 映像文件 每个版本的ISO映像文件都可以从 ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-架构名/版本 或最近的镜像站点下载。选择合适的 架构版本 目录中包含下面一些映像文件: FreeBSD 5.<replaceable>X</replaceable> 和 6.<replaceable>X</replaceable> ISO 映像文件名和含意 文件名 包含内容 版本-RELEASE-架构-bootonly.iso 引导 FreeBSD 内核并启动安装界面所需的全部数据。 安装文件可以从 FTP 或其他安装源获得。 版本-RELEASE-架构名-disc1.iso 安装 FreeBSD 所需的全部文件, 以及一份用于与 sysinstall 中的 Repair(修复) 机制联用的 现场文件系统 版本-RELEASE-架构名-disc2.iso &os; 文档 (在 &os; 6.2 之前) 以及这张光盘能装下的、 尽可能多的第三方软件包。 version-RELEASE-arch-docs.iso &os; 文档 (&os; 6.2 和之后的版本)。
必须 下载 bootonly ISO 镜像 (如果有的话) 或第一张光盘的镜像之一。 不需要两个都下载, 因为第一张光盘包括了 bootonly ISO 的全部内容。 如果访问 Internet 的价格便宜, 建议使用 bootonly ISO。 这样您可以安装 &os;, 并从网上通过 ports/packages 系统 (参见 ) 根据需要下载和安装第三方软件包。 如果您正打算安装 &os; 并同时选择一些第三方软件包, 则可以下载第一张光盘的镜像文件。 其它的映像盘也是很有用的,但不是必须的,尤其是在您有高速的网络连接时。
刻录 CDs 您必须把这些映像文件刻录成光盘。如果您在其它的FreeBSD系统上完成 此项工作,请看 得到更多的信息,(特别是 如果您在其它的系统平台上执行,您需要相应的刻录软件。映像文件使用 的是标准的ISO格式,必须被您的刻录软件所支持。
如果有兴趣制作一张定制的 FreeBSD 版本, 请参考 Release Engineering Article
为 FreeBSD 安装盘建立局域网 FTP 站点 installation network FTP FreeBSD 光盘的布局和 FTP 站点相同。 这样, 建立局域网 FTP 站点来用于网络上的其它计算机安装 FreeBSD, 就十分的容易。 在要作为FTP站点的那台FreeBSD机器上,确定FreeBSD磁盘放入光驱 中并将它挂在/cdrom目录中。 &prompt.root; mount /cdrom /etc/passwd文件中建立一个可匿名访问FTP 服务器的账号。您可以利用&man.vipw.8; 命令编辑/etc/passwd 文件,加入下面这一行叙述: ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent 确定在/etc/inetd.conf配置文件中开启 了FTP服务。 任何本地网络中的机器在安装FreeBSD选择安装介质时就可以选择透过 FTP站点,然后选取 Other后输入 ftp://本地FTP服务器 即可以透过本地的FTP站点来安装FreeBSD。 如果用作 FTP 客户端的引导介质 (通常是软盘) 与本地局域网的 FTP 站点上的版本不一致, sysinstall 会不允许您完成安装。 如果您使用的版本差距不很大, 并且希望绕过这一判断, 则应进入 Options 菜单, 并将安装包的名字改为 any 此方式最好使用在有防火墙保护的内部网络。如果要将此FTP服务公开给外面的 网际网络(非本地用户),您的电脑必须承担被侵入或其它的风险。我们强烈建议您 要有完善的安全机制才这样做。 创建安装软盘 installation floppies 如果您从软盘安装(我们推荐那样做),或者是由于 不支持硬件或者更简单的理由是因为您坚持要使用软盘安装。您必须准备几张软盘。 至少这些软盘必须是 1.44 MB 的,用来容纳所有在 base (基本系统) 目录下的文件。如果您在 DOS 操作系统下准备就 必须 使用 &ms-dos; 的 FORMAT 命令来格式化软盘。 如果您使用的是 &windows; 操作系统, 在资源管理器中就可以完成这个工作 (用右键单击 A: 驱动器, 并选择 Format)。 不要 指望厂家的预先格式化! 最好还是亲自进行格式化。 过去用户报告的很多问题都是由于不正确地使用格式化设备所造成的, 所以我们需要在这里着重提一下。 如果您在另外一台FreeBSD的机器上做了启动盘的话,进行格式化是一个不 错的主意。虽然您不需要把每张盘都做成DOS文件系统。您也可以使用 bsdlabelnewfs 命令来创建一个UFS文件系统,具体操作按下面的顺序进行: &prompt.root; fdformat -f 1440 fd0.1440 &prompt.root; bsdlabel -w fd0.1440 floppy3 &prompt.root; newfs -t 2 -u 18 -l 1 -i 65536 /dev/fd0 然后您就可以像其它的文件系统一样挂上和写入这些磁盘。 格式化这些磁盘后,您必须把文件复制到磁盘中。 这些发行文件被分割成刚好可存进五张 1.44 MB 软盘。 检查您所有的磁盘, 找出所有可能适合的文件。 直到您找到所有需要的配置并且将它们以这种方式安置。 第一个配置都应该有一个子目录在磁盘上, 例如: a:\base\base.aaa:\base\base.ab, 等等。 base.inf 文件, 也应放在 base 的第一张盘上, 因为安装程序需要读取这个文件, 以了解在获得发布包时需要下载多少文件。 一旦您进入选择安装介质的屏幕,选择 Floppy 将会看到后面的提示符。 从 &ms-dos; 分区安装 installation from MS-DOS 如果从 &ms-dos; 分区安装, 您需要将发布文件复制到该分区根目录下的 freebsd 目录中。 例如: c:\freebsd。 您必须复制一部分 CDROM 或 FTP 上的目录结构, 因此, 如果您从光盘进行复制, 建议使用 DOS 的 xcopy 命令。 下面是准备进行 FreeBSD 最小系统安装的例子: C:\> md c:\freebsd C:\> xcopy e:\bin c:\freebsd\bin\ /s C:\> xcopy e:\manpages c:\freebsd\manpages\ /s 假设 C: 盘是您的空闲空间, E: 盘是您挂接的 CDROM。 如果您没有光盘驱动器,您可以从以下网站下载发行包。 ftp.FreeBSD.org. 每一个发行包都在一个目录中,例如 base 发行包可以在 &rel.current;/base/目录中找到。 对很多发行包来说,如果您希望从 &ms-dos;分区安装的话(您有足够的空间), 安装 c:\freebsd — 下的每个文件-这个 BIN 发行包只是最低限度的要求。 创建一个安装磁带 installation from QIC/SCSI Tape 从磁带安装也许是最简单的方式,比在线使用 FTP 安装或使用 CDROM 还快。 安装的程序假设是简单地被压缩在磁带上。在您得到所有配置文件后,简单地解开它们, 用下面的命令: &prompt.root; cd /freebsd/distdir &prompt.root; tar cvf /dev/rwt0 dist1 ... dist2 在您安装的时候,您要确定留有足够的空间给临时目录(允许您选择) 来容纳磁带安装时 全部 的内容。由于不是随机访问 磁带的,所以这种安装方法需要很多临时空间。 开始安装时,在从软盘启动 之前, 磁带机必须已经放在驱动设备中。 否则, 安装过程中可能会找不到它。 通过网络安装 installation (安装) network (网络) serial (串口, SLIP 或 PPP) installation (安装) network (网络) parallel (并口, PLIP) installation (安装) network (网络) Ethernet (以太网) 可用的网络安装类型有三种。 以太网 (标准的以太网控制器)、 串口 (SLIP 或 PPP) 以及 并口 (PLIP (laplink 线缆))。 如果希望以最迅速的方式完成网络安装, 那么以太网适配器当然就是首选! FreeBSD 支持绝大多数人见 PC 以太网卡; 系统能够支持的网卡 (以及所需的配置) 可以在 FreeBSD 发行版附带的硬件兼容说明中找到。 如果您使用的是系统支持的 PCMCIA 以太网卡, 在为笔记本加电 之前 之前一定要把它插好! 很不幸, FreeBSD 目前并不支持在安装过程中热插 PCMCIA 卡。 此外, 您还需要知道自己的 IP 地址、 网络类型对应的子网掩码, 以及机器名。 如果您正通过 PPP 连接安装而没有固定的静态 IP, 不用怕, 这个 IP 地址会由您的 ISP 自动分配。 您的系统管理员会告诉您进行网络配置所需的信息。 如果您需要通过名字而不是 IP 地址来访问其他主机, 则还需要配置一个域名服务器, 可能还需要一个网关地址 (在使用 PPP 时, 这个地址是服务提供商的 IP 地址)。 如果您希望通过 HTTP 代理服务器来完成 FTP 安装, 还需要知道代理服务器的地址。 如果您不知道这些信息, 则应在进行这种安装 之前 向系统管理员或 ISP 询问。 SLIP 支持是相当原始的,并且被限制在主要对hard-wired 的连接,就像 一台膝上型计算机与另一台计算机间的串行线。现在的SLIP的安装还没有提供拨号功能, 这个连接应该是 hard-wired ;用PPP工具提供的这种便利性应该首先尽可能被用于SLIP 设备。 如果您使用一个MODEM,那您就只有PPP这一种选择了。在您安装的过程中, 要确定您能很容易地获得完整且快速的关于您服务提供商的信息。 如果您使用 PAP 或 CHAP 方式连接到您的 ISP,(换句话说,如果您不使用 脚本在&windows;中连接到您的ISP),那么您需要在ppp 提示符下输入dial 命令。否则,当PPP连接者只提供一种最简单的 终端模拟器,您必须知道如何使用针对MODEM的 AT commands拨号到您 的ISP。想知道更深入的信息可以参考 使用手册中的用户级PPP那节 以及 FAQ 。如果您有一些问题,可以使用 set log local ...命令将日志显示在屏幕上。 您也可以通过并口电缆连接到另外一台FreeBSD(2.0或以后的版本)机器上进行 安装,您可以考虑使用 laplink 并口电缆进行安装。通过并口安装要 比通过串口(最高 50 kbytes/sec)安装快得多。 通过NFS安装之前 installation network NFS NFS 安装方式是非常方便的。 只需要简单地将 FreeBSD 文件复制到一台服务器上, 然后在安装时选择NFS介质。 如果这个服务器要特权端口才能支持(如SUN的工作站), 您需要在安装前在 Options 菜单中设置 NFS Secure 如果您的一台网卡比较糟糕,速度很慢,则应考虑 NFS Slow的选项。 为了达到NFS安装的目的,这个服务器必须支持 subdir 加载。例如,如果您的 FreeBSD &rel.current; 目录存在: ziggy:/usr/archive/stuff/FreeBSD,然后 ziggy 将必须允许直接挂上 /usr/archive/stuff/FreeBSD,而不仅仅是 /usr/usr/archive/stuff 在 FreeBSD的 /etc/exports 配置文件中,是由 选项来控制的。其它 NFS服务器也许有不同的方式。 如果您从服务器得到permission denied 这个信息,可能是因为您没有正确的启用它。
diff --git a/zh_CN.GB2312/books/handbook/mirrors/chapter.sgml b/zh_CN.GB2312/books/handbook/mirrors/chapter.sgml index aaad3dc2d8..2adf87e992 100644 --- a/zh_CN.GB2312/books/handbook/mirrors/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/mirrors/chapter.sgml @@ -1,3160 +1,3162 @@ 获取 FreeBSD CDROM 和 DVD 发行商 零售盒装产品 可以从下面几个零售商那里买到 FreeBSD 的盒装产品(FreeBSD CD, 附加软件,印刷文档):
CompUSA WWW:
Frys Electronics WWW:
CD 和 DVD 光盘 FreeBSD CD 和 DVD 光盘可以从许多在线零售商那里买到:
BSD Mall by Daemon News PO Box 161 Nauvoo, IL 62354 USA Phone: +1 866 273-6255 Fax: +1 217 453-9956 Email: sales@bsdmall.com WWW:
BSD-Systems Email: info@bsd-systems.co.uk WWW:
FreeBSD Mall, Inc. 3623 Sanford Street Concord, CA 94520-1405 USA Phone: +1 925 240-6652 Fax: +1 925 674-0821 Email: info@freebsdmall.com WWW:
Dr. Hinner EDV St. Augustinus-Str. 10 D-81825 München Germany Phone: (089) 428 419 WWW:
Ikarios 22-24 rue Voltaire 92000 Nanterre France WWW:
JMC Software Ireland Phone: 353 1 6291282 WWW:
Linux CD Mall Private Bag MBE N348 Auckland 1030 New Zealand Phone: +64 21 866529 WWW:
The Linux Emporium Hilliard House, Lester Way Wallingford OX10 9TA United Kingdom Phone: +44 1491 837010 Fax: +44 1491 837016 WWW:
Linux+ DVD Magazine Lewartowskiego 6 Warsaw 00-190 Poland Phone: +48 22 860 18 18 Email: editors@lpmagazine.org WWW:
Linux System Labs Australia 21 Ray Drive Balwyn North VIC - 3104 Australia Phone: +61 3 9857 5918 Fax: +61 3 9857 8974 WWW:
LinuxCenter.Ru Galernaya Street, 55 Saint-Petersburg 190000 Russia Phone: +7-812-3125208 Email: info@linuxcenter.ru WWW:
发行人 如果您是销售商并且想销售 FreeBSD CDROM 产品, 请和发行人联系:
Cylogistics 809B Cuesta Dr., #2149 Mountain View, CA 94040 USA Phone: +1 650 694-4949 Fax: +1 650 694-4953 Email: sales@cylogistics.com WWW:
Ingram Micro 1600 E. St. Andrew Place Santa Ana, CA 92705-4926 USA Phone: 1 (800) 456-8000 WWW:
Kudzu, LLC 7375 Washington Ave. S. Edina, MN 55439 USA Phone: +1 952 947-0822 Fax: +1 952 947-0876 Email: sales@kudzuenterprises.com
LinuxCenter.Ru Galernaya Street, 55 Saint-Petersburg 190000 Russia Phone: +7-812-3125208 Email: info@linuxcenter.ru WWW:
Navarre Corp 7400 49th Ave South New Hope, MN 55428 USA Phone: +1 763 535-8333 Fax: +1 763 535-0341 WWW:
FTP 站点 官方的 FreeBSD 源代码可以从遍布全球的镜像站点 通过匿名 FTP 下载。 站点 有着良好的网络连接并且允许大量的并发连接, 但是 您或许更想找一个 更近的 镜像站点 (特别是当您想进行某种形式的镜像的时候)。 FreeBSD 镜像 站点数据库要比使用手册中的镜像列表更加精确, 因为它从 DNS 中获取信息而不依赖于静态的主机列表。 FreeBSD 可以从下面这些镜像站点通过匿名 FTP 下载。如果您选择了通过匿名 FTP 获取 FreeBSD, 请尽量使用离您比较近的站点。被列为 主镜像站点 的镜像站点一般都有完整的 FreeBSD 文件 (针对每种体系结构的所有当前可用的版本), 您或许从您所在的国家或地区的站点下载会得到更快的下载速度。 每个站点提供了最流行的体系结构的最近的版本而有可能不提供完整的 FreeBSD 存档。所有的站点都提供匿名 FTP 访问而有些站点也提供其他的访问方式。对每个站点可用的访问方式 在其主机名后有所说明。 &chap.mirrors.ftp.inc; 匿名 CVS <anchor id="anoncvs-intro">概述 CVS 匿名 匿名 CVS(或人们常说的 anoncvs)是由和 FreeBSD 附带的 CVS 实用工具提供的用于和远程的 CVS 代码库同步的一种特性。 尤其是, 它允许 FreeBSD 用户不需要特殊的权限对任何一台 FreeBSD 项目的官方 anoncvs 服务器执行只读的 CVS 操作。 要使用它,简单的设置 CVSROOT 环境变量指向适当的 anoncvs 服务器, 输入 cvs login 命令 并提供广为人知的密码anoncvs,然后使用 &man.cvs.1; 命令像访问任何本地仓库一样来访问它。 cvs login 命令把用来登录 CVS 服务器的密码储存在您的 HOME 目录中一个叫 .cvspass 的文件里。 如果这个文件不存在, 第一次使用 cvs login 的时候可能会出错。 请创建一个空的 .cvspass 文件,然后试试重新登录。 也可以这么说 CVSup 和 anoncvs 服务本质上提供了同样的功能,但是有各种各样 不同的场合可以影响用户对同步方式的选择。简单来说, CVSup 在网络资源利用方面 更加有效,而且是到目前为止在两者之中技术上更成熟的 除了成本方面。要使用 CVSup,在下载任何东西之前 必须首先安装配置特定的客户端, 而且只能用于下载相当大块的 CVSup 称作 collections 相比之下,anoncvs 可以通过 CVS 模块名来从单个文件里检出任何东西并赋给特定的程序 (比如 ls 或者 grep)。 当然,anoncvs 也只适用于对 CVS 仓库的只读操作,所以如果您是想用和 FreeBSD 项目共享的仓库提供本地开发的话, CVSup 几乎是您唯一的选择。 <anchor id="anoncvs-usage">使用匿名 CVS 配置 &man.cvs.1; 使用匿名 CVS 仓库可以简单的设定 CVSROOT 环境变量指向 FreeBSD 项目的 anoncvs 服务器之一。到此书写作为止, 下面的服务器都是可用的: 奥地利: :pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs (使用 cvs login 然后在提示输入口令时输入任意口令。) 法国: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs (pserver (口令是 anoncvs), ssh (没有口令)) 德国: :pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs (rsh, pserver, ssh, ssh/2022) 日本: :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs (使用 cvs login 并在提示输入口令时输入 anoncvs.) 台湾地区: :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs (pserver (使用 cvs login 并在提示输入口令时, 输入任意口令。), ssh (无口令)) SSH2 HostKey: 1024 e8:3b:29:7b:ca:9f:ac:e9:45:cb:c8:17:ae:9b:eb:55 /etc/ssh/ssh_host_dsa_key.pub 美国: freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs (仅 ssh - 无口令) SSH HostKey: 1024 a1:e7:46:de:fb:56:ef:05:bc:73:aa:91:09:da:f7:f4 root@sanmateo.ecn.purdue.edu SSH2 HostKey: 1024 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65 ssh_host_dsa_key.pub USA: anoncvs@anoncvs1.FreeBSD.org:/home/ncvs (仅限 ssh2 - 无口令) SSH2 HostKey: 2048 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62 /etc/ssh/ssh_host_dsa_key.pub 因为 CVS 实际上允许 检出 曾经存在的 (或者,某种情况下将会存在) FreeBSD 源代码的任意版本, 您需要熟悉 &man.cvs.1; 的版本 () 参数, 以及在 FreeBSD 代码库中可用的值。 有两种标签,修订标签和分支标签。 修订标签特指一个特定的修订版本。含义始终是不变的。 分支标签,另一方面, 指代给定时间给定开发分支的最新修订, 因为分支标签不涉及特定的修订版本, 它明天所代表的含义就可能和今天的不同。 包括了用户可能感兴趣的 修订标签。 请注意, 这些标签并不适用于 Ports Collection, 因为它并不包含多个开发分支。 当您指定一个分支标签,您通常会得到那个开发分支的文件的最新版本。 如果您希望得到一些旧的版本,您可以用 标记制定一个日期。 察看 &man.cvs.1; 手册页了解更多细节。 示例 在这之前强烈建议您通读 &man.cvs.1; 的手册页, 这里有一些简单的例子来展示如何使用匿名 CVS: 从 -CURRENT 检出些东西 (&man.ls.1;): &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs &prompt.user; cvs login >在提示符处,输入任意密码 password. &prompt.user; cvs co ls 通过 SSH 检出整个 <filename>src/</filename> 代码树: &prompt.user; cvs -d freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs co src The authenticity of host 'anoncvs.freebsd.org (128.46.156.46)' can't be established. DSA key fingerprint is 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known hosts. 检出 6-STABLE 分支中的 &man.ls.1; 版本: &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs &prompt.user; cvs login 在提示符处,输入任意密码 password。 &prompt.user; cvs co -rRELENG_6 ls 创建 &man.ls.1; 的变化列表(用标准的 diff) &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs &prompt.user; cvs login 在提示符处,输入任意密码 password。 &prompt.user; cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls 找出可以使用的其它的模块名: &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs &prompt.user; cvs login 在提示符处,输入任意密码 password。 &prompt.user; cvs co modules &prompt.user; more modules/modules 其他资源 下面附加的资源可能对学习 CVS 有帮助: CVS 指南 来自 Cal Poly。 CVS 主页, CVS 开发和支持社区。 CVSweb 是 FreeBSD 项目的 CVS web 界面。 使用 CTM CTM CTM 是保持远程目录树和中央服务器目录树同步的一种方法。 它被开发用于 FreeBSD 的源代码树,虽然其他人随着时间推移会发现它可以用于其他目的。 当前几乎没有,也或者只有很少的文档讲述创建 deltas 的步骤, 所以如果您希望使用 CTM 去做其它事情, 请联系 &a.ctm-users.name; 邮件列表了解更多信息。 为什么我该使用 <application>CTM</application>? CTM 会给您一份 FreeBSD 源代码树的本地副本。 代码树有很多的 flavors 可用。不管您是希望跟踪完整的 CVS 树还是只是一个分支, CTM 都会给您提供信息。 如果您是 FreeBSD 上的一个活跃的开发者,但是缺乏或者不存在 TCP/IP 连接,或者只是希望把变化自动发送给您, CTM 就是适合您的。对于最积极的分支 您将会每天获得三个以上的 deltas。 然而,您应该考虑通过邮件来自动发送。 升级的大小总是保证尽可能的小。 通常小于 5K,也偶然(十分之一可能)会有 10-50K,也不时地有个大的 100K+ 甚至更大的。 您也需要让自己了解直接和开发代码而不是预发行版本打交道的各种警告。这种情况会很显著, 如果您选择了 current 代码的话。强烈建议您阅读和 FreeBSD 保持同步。 使用 <application>CTM</application> 我需要做什么? 您需要两样东西:CTM 程序,还有初始的 deltas 来 feed it(达到 current 级别)。 CTM 程序从版本 2.0 发布以来 已经是 FreeBSD 的一部分了,如果您安装了源代码副本的话, 它位于 /usr/src/usr.sbin/ctm 您喂给 CTMdeltas 可以有两种方式,FTP 或者 email。 如果您有普通的访问 Internet 的 FTP 权限, 那么下面的 FTP 站点支持访问 CTM 或者看看这一小节镜像。 FTP 访问相关的目录并取得 README 文件,从那里开始。 如果您希望通过 email 得到您的 deltas: 订阅一个 CTM 分发列表。 &a.ctm-cvs-cur.name; 支持完整的 CVS 树。 &a.ctm-src-cur.name; 支持最新的开发分支。 &a.ctm-src-4.name; 支持 4.X 发行分支, 等等。。(如果您不知道如何订阅邮件列表, 点击上面的列表名或者到 &a.mailman.lists.link; 点击您希望订阅的列表。 列表页包含了所有必要的订阅指导。) 当您开始接收到您邮件中的 CTM 升级时,您可以使用 ctm_rmail 程序来解压并应用它们。 事实上如果您想要让进程以全自动的形式运行的话,您可以通过在 /etc/aliases 中设置直接使用 ctm_rmail 程序。 查看 ctm_rmail 手册页了解更多细节。 不管您使用什么方法得到 CTM deltas,您都应该订阅 &a.ctm-announce.name; 邮件列表。 以后会有单独的地方提交有关 CTM 系统的操作的公告。 点击上面的邮件列表名并按照指示订阅邮件列表。 第一次使用 <application>CTM</application> 在您开始使用 CTM delta 之前,您需要获得一个起始点。 首先您应该确定您已经有了什么。每个人都可以从一个目录开始。 您必须用一个初始的 空的 delta 来开始您的 CTM 支持树。曾经为了您的便利这些 起始 deltas 被有意的通过 CD 来发行, 然而现在已经不这样做了。 因为代码树有数十兆字节,您应该更喜欢从手头上已经有的东西开始。如果您有一张 -RELEASE CD 光盘,您可以从里面复制或者解压缩一份初始代码出来。 这会节省非常多的数据传输量。 您会发现这些初始的 deltas 名字的数字后面都有个 X (比如 src-cur.3210XEmpty.gz)。 后面加一个 X 的设计符合您的初始 seed 的由来。 Empty 是一个空目录。通常一个基本的从 Empty 开始的转换由 100 个 deltas 构成。顺便说一下,他们都很大!70 到 80 兆字节的 gzip 压缩的数据对于 XEmpty deltas 是很平常的。 一旦您已经选定了一个基本的 delta 开始,您就需要比这个数高的所有的 delta。 在您的日常生活中使用 <application>CTM</application> 要应用 deltas,简单的键入: &prompt.root; cd /where/ever/you/want/the/stuff &prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.* CTM 能够理解被 gzip 压缩的 deltas,所以您不需要先 gunzip 他们,这可以节省磁盘空间。 除非觉得整个过程非常可靠, CTM 不会涉及到您的代码树的。您也可以使用 标记来校验 delta, 这样 CTM 就不会涉及代码树; 它会只校验 delta 的完整性看看是否可以安全的用于您的当前代码树。 CTM 还有其他的一些参数, 查看手册页或者源代码了解更多信息。 这真的就是全部的事情了。每次得到一个新的 delta,就通过 CTM 运行它来保证您的代码是最新的。 如果这些 deltas 很难重新下载的话不要删除它们。 有些东西坏掉的时候您会想到保留它们的。 即使您只有软盘,也请考虑使用 fdwrite 来做一份副本。 维持您本地的变动 作为一名开发者喜欢实验,改动代码树中的文件。 CTM 用一种受限的方式支持本地修改:再检查文件 foo 存在之前,首先查找 foo.ctm。如果这个文件存在, CTM 会对它操作而不是 foo 这种行为给我们提供了一种简单的方式来维持本地的改动: 只要复制您计划修改的文件并用 .ctm 的后缀重新命名。 然后就可以自由的修改代码了,CTM 会更新 .ctm 文件到最新版本。 其他有趣的 <application>CTM</application> 选项 正确的找出哪些将被更新 您可以确定变动列表, CTM 可以做到,在您的代码库上使用 CTM 选项。 这很有用如果您想要保存改动的日志, pre- 或者 post- 用各种风格处理修改的文件的纪录, 或者仅仅是想感受一下孩子般的疯狂。 在升级前制作备份 有时您可能想备份将要被 CTM 升级所改动的所有文件。 指定 选项会导致 CTM 备份将要被给定的 CTM delta 改动的所有文件到 backup-file 限定受升级影响的文件 有时您可能对限定一个给定的 CTM 升级的范围感兴趣,也有可能想知道怎样从一列 deltas 中解压缩一部分文件。 您可以通过使用 选项指定过滤规则表达式来控制 CTM 即将对之操作的文件列表。 例如,要从您保存的CTM deltas 集里解压缩出一个最新的 lib/libc/Makefile 文件,运行这个命令: &prompt.root; cd /where/ever/you/want/to/extract/it/ &prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.* 对于每一个在 CTM delta 中指定的文件, 选项按照命令行给定的顺序应用。 文件只有在所有的 被应用之后标记为合格之后 才能被 CTM 操作。 <application>CTM</application> 未来的计划 其中几项: CTM 中使用一些认证方式, 这样来允许察觉冒充的 CTM 补丁。 整理 CTM 的选项, 它们变得杂乱而违反直觉了。 杂项 也有一系列的 ports collection 的 deltas,但是人们对它的兴致还没有那么高。 CTM 镜像 CTM/FreeBSD 可以在下面的镜像站点通过匿名 FTP 下载。如果您选择通过匿名 FTP 获取 CTM, 请试着使用一个离您较近的站点。 如果有问题,请联系 &a.ctm-users.name; 邮件列表。 加利福尼亚州,海湾地区,官方源代码 南非,旧的 deltas 的备份服务器 中国台湾 如果您在您附近找不到镜像或者镜像不完整, 试着使用搜索引擎比如 alltheweb. 使用 CVSup 概述 CVSup 是一个用于从远程服务器主机上的主 CVS 仓库发布和升级源代码树的软件包。 FreeBSD 的源代码维护在加利福尼亚州一台主开发服务器的 CVS 仓库里。 有了 CVSup,FreeBSD 用户可以很容易的保持他们自己的源代码树更新。 CVSup 使用所谓的升级 pull 模式。在 pull 模式下,客户端在需要的时候向服务器端请求更新。 服务器被动的等待客户端的升级请求。 因此所有的升级都是客户端发起的。 服务器决不会发送未请求的升级。用户必须手动运行 CVSup 客户端获取更新, 或者设置一个 cron 作业来让它以固定的规律自动运行。 术语 CVSup用大写字母写正是表示, 代表了完整的软件包。 它的主要组件是运行在每个用户机器上的客户端 cvsup, 和运行在每个 FreeBSD 镜像站点上的服务器端 cvsupd 当您阅读 FreeBSD 文档和邮件列表时,您可能会看见 supSupCVSup 的前身,有着相似的目的。 CVSup 使用很多和 sup 相同的方式, 而且, 它还是用使用和 sup 的兼容的配置文件。 Sup 已经不再被 FreeBSD 项目使用了, 因为 CVSup 既快又有更好的灵活性。 csup 是用 C 语言对 CVSup 软件的重写。 它最大的好处是, 这个程序更快一些, 并且也不需要依赖于 Modula-3 语言, 因此也就不需要安装后者。 另外, 如果您使用 &os; 6.2 或更新版本, 就可以直接使用, 因为它成为了基本系统的一部分。 较早的 &os; 版本的基本系统中并不包含 &man.csup.1;, 但可以通过 net/csup port 或预编译包来安装。 不过需要注意的是, csup 工具并不支持 CVS 模式。 如果您希望对代码库做完整的镜像, 则还是需要使用 CVSup。 假如您决定使用 csup, 则可以跳过安装 CVSup 这一步, 并在文章中余下部分提到的 CVSup 改为 csup 安装 安装 CVSup 最简单的方式就是使用 FreeBSD packages collection 中预编译的 net/cvsup 包。 如果您想从源代码构建 CVSup, 您可以使用 net/cvsup port。但是预先警告一下: net/cvsup port 依赖于 Modula-3 系统,会花费相当的时间和磁盘空间来下载编译。 如果想在没有安装 &xfree86;&xorg; 的计算机, 例如服务器上使用 CVSup, 则只能使用不包含 CVSup GUInet/cvsup-without-gui 如果希望在 &os; 6.1 或更早版本中安装 csup, 则可以从 FreeBSD 的 packages collection 中安装预编译的 net/csup 包; 如果希望自行从源代码编译 csup, 也可以用 net/csup port 来安装。 CVSup 配置 CVSup 的操作被一个叫做 supfile 的配置文件所控制。 在目录 /usr/share/examples/cvsup/ 下面有一些示例的 supfiles supfile 中的信息解答了 CVSup 下面的几个问题: 您想接收 哪些文件? 您想要它们的 哪个版本? 您想从哪里 获取它们? 您想把它们 放在您自己机器的什么地方? 您想把 您的状态文件放在哪? 在下面的章节里,我们通过依次回答这些问题来创建一个典型的 supfile 文件。首先,我们描述一下 supfile 的整体构成。 supfile 是个文本文件。注释用 # 开头,至行尾有效。 空行和只包含注释的行会被忽略。 每个保留行描述一批用户希望接收的文件。 每行以 collection, 由服务器端定义的合理的文件分组,的名字开头。 collection 的名字告诉服务器您想要的文件。 collection 名字结束或者有更多的字段,用空格分隔。 这些字段回答了上面列出的问题。 字段类型有两种:标记字段和值字段。 标记字段由独立的关键字组成,比如, delete 或者 compress。值字段也用关键字开头, 关键字后面跟 = 和第二个词而没有空格。 例如,release=cvs 是一个值字段。 一个典型的 supfile 往往接收多于一个的 collection。创建 supfile 的一种方式是明确的为每一个 collection 指定相关的字段。然而,这样使得 supfile 的行变得特别长,很不方便, 因为 supfile 中的所有 collection 的大部分 字段都是相同的。 CVSup 提供了一个默认机制来避免 这些问题。用特定的伪 collection 名 *default 开头的行可以被用来设置标记和值为 supfile 中随后的 collection 中的默认值。 默认值可以通过为这个 collection 自身指定不同的值来对单个的 collection 覆盖设置, 也可以在 mid-supfile 中通过附加的 *default 行改变或扩充。 知道了这些,我们现在就可以开始创建一个 用于接收和升级 FreeBSD-CURRENT 主源代码树的 supfile 文件了。 您想接收哪些文件? 通过 CVSup 可用的文件组织成叫做 collections 的名称组。 这些可用的 collection 在 随后的章节 中描述。 在这个例子里, 我们希望接收 FreeBSD 系统的完整的主代码树。 有一个单独的大的 collection src-all 让我们完成这个。 创建我们的 supfile 的第一步, 我们简单的列出这些 collection,每个一行(在这个例子里, 只有一行): src-all 您想要他们的 哪个版本? 通过 CVSup,您实际上可以接收 曾经存在的源代码的任何版本。 这是有可能的,因为 cvsupd 服务器直接通过 CVS 仓库工作,那包含了所有的版本。您可以 用 tag= 值字段 指定一个您想要的版本。 仔细的正确指定任何 tag= 字段。有一些 tag 只对特定的 collection 文件合法。 如果您指定了一个不正确的或者 拼写错误的 tag,CVSup 会删除您可能不想删除的文件。 特别地,对 ports-* collection 使用 tag=. tag= 字段在仓库中表示为一个符号标签。 有两种标签,修订标签和分支标签。 修订标签代表一个特定的修订版本。 它的含义是一成不变的。 分支标签,另一方面,代表给定开发线上给定时间的最新修订。 因为分支标签不代表一个特定的修订版本, 它明天的含义就可能和今天的有所不同。 包含了用户可能感兴趣的分支标签。 当在 CVSup 的配置文件中指定标签的时候,必须用 tag= 开头 (RELENG_4 会变成 tag=RELENG_4)。 记住只有 tag=. 可以用于 Ports Collection。 注意像看到的那样正确的输入标签名。 CVSup 不能辨别合法和不合法标签。 如果您拼写错了标签名, CVSup 会像您指定了一个没有任何文件的合法标签一样工作, 那会删除您已经存在的代码。 当您指定一个分支标签的时候,您通常会收到开发线上文件的最新版本。 如果您希望接收一些过时的版本,您可以通过用 值字段指定一个日期来做到。 &man.cvsup.1; 手册页解释了如何来做。 对于我们的示例来说,我们希望接收 FreeBSD-CURRENT。 我们在我们的 supfile 的开头添加这行: *default tag=. 有一个重要的特例, 如果您既没指定 tag= 字段也没指定 date= 字段的情况。这种情况下, 您会收到直接来自于服务器 CVS 仓库的真实的 RCS 文件, 而不是某一特定版本。 开发人员一般喜欢这种操作模式。 通过在他们的系统上维护一份仓库自身的副本, 他们可以浏览修订历史以及检查文件过去的版本。 然而,这个好处是以大量的磁盘空间为代价的。 您想从哪里获取他们? 我们使用 host= 字段来告诉 cvsup 从哪里获取更新。 任何一个 CVSup 镜像站点都可以, 虽然您应该选择一个离您比较近的站点。 在这个例子里我们将使用一个虚拟的 FreeBSD 发布站点, cvsup99.FreeBSD.org *default host=cvsup99.FreeBSD.org 您需要在运行 CVSup 之前把这个改成一个实际存在的站点。 在任何 cvsup 运行的特定时刻, 您都可以在命令行上使用 选项来覆盖主机设置。 您想把它们放在 您自己机器的什么地方? prefix= 字段告诉 cvsup 把接收的文件放在哪里。 在这个例子里,我们把源代码文件直接放进我们的主源代码树, /usr/srcsrc 目录已经隐含在我们选择接收的 collection 里了, 所以正确的写法是: *default prefix=/usr cvsup 在哪里维护它的状态文件? CVSup 客户端在被叫做 base 的目录里维护了几个状态文件。 这些文件帮助 CVSup 更有效的工作, 通过跟踪您已经接收到哪些更新的方式。 我们将使用标准的 base 目录, /var/db *default base=/var/db 如果您的 base 目录还不存在,现在最好创建它。 如果 base 目录不存在,cvsup 客户端会拒绝工作。 其他的 supfile 设置: supfile 中有一些其他选项需要介绍一下: *default release=cvs delete use-rel-suffix compress release=cvs 显示服务器应该从 FreeBSD 的主 CVS 仓库中获取信息。 事实上总是这样的,但是也有可能会超出这个讨论的范围。 deleteCVSup 权限删除文件。 您应该总是指定这个,这样 CVSup 可以保证您的源代码树完全更新。CVSup 很小心的只删除那些不再依赖的文件。 您拥有的任何额外的文件会被严格的保留。 use-rel-suffix 是 ... 不可思议的。 如果您真的想了解它,查看 &man.cvsup.1; 手册页。 否则,就指定而不用担心这个。 compress 启用 gzip 风格的信道压缩。 如果您的网络连接是 T1 或者更快, 您可能不想使用压缩。 否则,它非常有帮助。 把它们放在一起: 这是我们的示例的完整 supfile 文件: *default tag=. *default host=cvsup99.FreeBSD.org *default prefix=/usr *default base=/var/db *default release=cvs delete use-rel-suffix compress src-all <filename>refuse</filename> 文件 像上面提到的,CVSup 使用一种 pull 方法。基本上,这意味着您要连接到 CVSup 服务器,服务器说, 这有些您能下载的东西 ...,然后您的客户端反应好,我要这个, 这个,这个,还有这个。在默认的配置中, CVSup 客户端会取回您在配置文件中选定的 collection 和标签的每个文件。 然而,并不总是您想要的, 尤其是您在同步 docports,或者 www 树 — 大部分人都不能阅读四种或者五种 语言,因此他们不需要下载特定语言的文件。 如果您在 CVSup Ports Collection,您 可以通过单独指定每个 collection 来避免这个 (比如,ports-astrologyports-biology,等等取代简单的说明 ports-all)。然而,因为 docwww 树没有特定语言的 collection,您必须 使用 CVSup 许多极好的特性之一: refuse 文件。 refuse 文件本质上是告诉 CVSup 它不应该从 collection 中取得某些文件;换句话说,它告诉客户端 拒绝 来自服务器的特定的文件。 refuse 文件可以在 base/sup/ 中找到(或者,如果您没有,应该创建一个)。 base 在您的 supfile 中定义; 默认情况下,base 就是 /var/db, 这意味着默认的 refuse 文件就是 /var/db/sup/refuse refuse 文件的格式很简单; 它仅仅包含您不希望下载的文件和目录名。 例如,如果您除了英语和德语之外不会讲其他语言, 而且也不打算阅读德文的文档翻译版本, 则可以把下面这些放在您的 refuse 文件里: doc/bn_* doc/da_* doc/de_* doc/el_* doc/es_* doc/fr_* +doc/hu_* doc/it_* doc/ja_* +doc/mn_* doc/nl_* doc/no_* doc/pl_* doc/pt_* doc/ru_* doc/sr_* doc/tr_* doc/zh_* 等等其他语言(您可以通过浏览 FreeBSD CVS 仓库找到完整的列表)。 有这个非常有用的特性,那些慢速连接或者要为他们的 Internet 连接按时付费的用户就可以节省宝贵的时间因为他们不再需要 下载那些从来不用的文件。要了解 refuse 文件的更多信息以及其它 CVSup 的优雅的特性,请浏览它的 手册页。 运行 <application>CVSup</application> 您现在准备尝试升级了。命令很简单: &prompt.root; cvsup supfile supfile 的位置当然就是您刚刚创建的 supfile 文件名啦。 如果您在 X11 下面运行,cvsup 会显示一个有一些可以做平常事情的按钮的 GUI 窗口。 按 go 按钮,然后看着它运行。 在这个例子里您将要升级您目前的 /usr/src 树,您将需要 用 root 来运行程序,这样 cvsup 有需要的权限来更新您的文件。 刚刚创建了您的配置文件,又从来没有使用过这个程序, 紧张不安是可以理解的。有一个简单的方法不改变您当前的文件 来做一次试验性的运行。只要在方便的地方创建一个 空目录,并在命令行上作为一个额外的参数说明: &prompt.root; mkdir /var/tmp/dest &prompt.root; cvsup supfile /var/tmp/dest 您指定的目录会作为所有文件更新的目的路径。 CVSup 会检查您在 /usr/src 中的文件,但是不会修改或 删除。任何文件更新都会被放到 /var/tmp/dest/usr/src 里了。 在这种方式下运行 CVSup 也会把它的 base 目录状态文件保持原样。这些文件的新版本 会被写到指定的目录。 因为您有 /usr/src 目录的读权限,所以执行这种试验性的运行 甚至不需要使用 root 用户。 如果您没有运行 X11 或者不喜欢 GUI, 当您运行 cvsup 的时候需要在命令行添加 两个选项: &prompt.root; cvsup -g -L 2 supfile 告诉 CVSup 不要使用 GUI。如果您 没在运行 X11 这个是自动的,否则您必须指定它。 告诉 CVSup 输出所有正在升级的文件的细节。 有三个等级可以选择,从 。默认是 0,意味着除了错误消息 什么都不输出。 还有许多其它的选项可用。想要一个简短的列表, 输入 cvsup -H。要查看更详细的描述, 请查看手册页。 一旦您对升级工作的方式满意了,您就 可以使用 &man.cron.8; 来安排规则的运行 CVSup。 很显然的,您不应该让 CVSup 通过 &man.cron.8; 运行的时候使用它的 GUI。 <application>CVSup</application> 文件 collection CVSup 可用的文件 collection 是分级组织的。 有几个大的 collection,然后它们有分成更小的子 collection。接收一个大的 collection 等同于 接收它的每一个子 collection。 collection 的等级关系在下面列表中通过缩进的使用 反映出来。 最常用的 collection 是 src-all,和 ports-all。其它的 collection 只被有着特定 目的的小部分人使用, 有些站点可能不全部支持。 cvs-all release=cvs FreeBSD 主 CVS 仓库,包含 密码系统的代码。 distrib release=cvs FreeBSD 发行版本和镜像相关的 文件。 doc-all release=cvs FreeBSD 使用手册和其它文档的源代码。 其中不包含 FreeBSD web 站点的文件。 ports-all release=cvs FreeBSD Ports Collection。 如果您不想升级全部的 ports-all(整个 ports 树), 而只是使用下面列出的一个子集, 请确保您总是升级了 ports-base 子 collection! 无论何时在 ports 构建下层构造有所改变的时候都会通过 ports-base 表现出来,事实上某些 改变会很快的被实际的 ports 使用,因此,如果您只升级了 实际的 ports 而他们使用了一些新的特性, 就有极大的可能编译会因一些神秘的错误信息而失败。 这种情况下非常快速的要做的事情 就是确保您的 ports-base 子 collection 更新到 最新。 要自行构建 ports/INDEX, 您 必须 接受 ports-all (完整的 ports tree)。 在部分 ports tree 上构建 ports/INDEX 是不被支持的。 请参见 FAQ ports-accessibility release=cvs 用以帮助残疾用户的软件。 ports-arabic release=cvs 阿拉伯语支持。 ports-archivers release=cvs 存档工具。 ports-astro release=cvs 天文相关的 ports。 ports-audio release=cvs 声音支持。 ports-base release=cvs Ports Collection 构建下部构造 - 位于 /usr/portsMk/Tools/ 子目录的 各种各样的文件。 请查看 重要警告:您应该 总是更新这个 子 collection,无论您更新 FreeBSD Ports Collection 的任何部分的时候! ports-benchmarks release=cvs 基准。 ports-biology release=cvs 生物学。 ports-cad release=cvs 计算机辅助设计工具。 ports-chinese release=cvs 中文语言支持。 ports-comms release=cvs 通信软件。 ports-converters release=cvs 字符编码转换。 ports-databases release=cvs 数据库 ports-deskutils release=cvs 计算机发明前常出现在桌面上的东西。 ports-devel release=cvs 开发工具。 ports-dns release=cvs DNS 相关软件。 ports-editors release=cvs 编辑器 ports-emulators release=cvs 其它操作系统的模拟器 ports-finance release=cvs 货币,金融相关应用程序。 ports-ftp release=cvs FTP 客户端和服务器端工具。 ports-games release=cvs 游戏 ports-german release=cvs 德语支持。 ports-graphics release=cvs 图形图像工具。 ports-hebrew release=cvs 希伯来语支持。 ports-hungarian release=cvs 匈牙利语言支持。 ports-irc release=cvs Internet 多线交谈(IRC)工具。 ports-japanese release=cvs 日语支持。 ports-java release=cvs &java; 工具。 ports-korean release=cvs 韩国语言支持。 ports-lang release=cvs 编程语言。 ports-mail release=cvs 邮件软件。 ports-math release=cvs 数值计算软件。 ports-mbone release=cvs MBone 应用程序。 ports-misc release=cvs 杂样工具。 ports-multimedia release=cvs 多媒体软件。 ports-net release=cvs 网络软件。 ports-net-im release=cvs 即时消息软件。 ports-net-mgmt release=cvs 网管软件。 ports-net-p2p release=cvs 对等网 (peer to peer network) 应用。 ports-news release=cvs USENET 新闻软件。 ports-palm release=cvs Palm 系列软件支持。 ports-polish release=cvs 波兰语支持。 ports-ports-mgmt release=cvs 用于管理 ports 和预编译包的工具。 ports-portuguese release=cvs 葡萄牙语支持。 ports-print release=cvs 打印软件。 ports-russian release=cvs 俄语支持。 ports-science release=cvs 科学计算。 ports-security release=cvs 安全工具。 ports-shells release=cvs 命令行 shell。 ports-sysutils release=cvs 系统实用工具。 ports-textproc release=cvs 文本处理工具(不 包含桌面出版)。 ports-ukrainian release=cvs 乌克兰语支持。 ports-vietnamese release=cvs 越南语支持。 ports-www release=cvs 万维网(WWW)相关软件。 ports-x11 release=cvs 支持 X window 系统的 ports。 ports-x11-clocks release=cvs X11 时钟。 ports-x11-drivers release=cvs X11 驱动程序。 ports-x11-fm release=cvs X11 文件管理器。 ports-x11-fonts release=cvs X11 字体和字体工具。 ports-x11-toolkits release=cvs X11 工具包。 ports-x11-servers release=cvs X11 服务器。 ports-x11-themes release=cvs X11 主题。 ports-x11-wm release=cvs X11 窗口管理器。 projects-all release=cvs FreeBSD 内部项目的代码库。 src-all release=cvs FreeBSD 主代码,包含密码系统的代码。 src-base release=cvs /usr/src 顶层的各式各样的文件。 src-bin release=cvs 但用户模式下可能用到的用户工具 (/usr/src/bin)。 src-cddl release=cvs 采用了 CDDL 授权的实用工具和函数库 (/usr/src/cddl)。 src-contrib release=cvs FreeBSD 项目之外的工具和库,通常在 FreeBSD 中不作修改 (/usr/src/contrib)。 src-crypto release=cvs FreeBSD 项目之外的 密码系统工具和库,通常在 FreeBSD 中不作修改 (/usr/src/crypto)。 src-eBones release=cvs Kerberos 和 DES (/usr/src/eBones)。 没有在当前的 FreeBSD 发行中使用。 src-etc release=cvs 系统配置文件 (/usr/src/etc)。 src-games release=cvs 游戏 (/usr/src/games)。 src-gnu release=cvs GNU 公共许可协议的工具 (/usr/src/gnu)。 src-include release=cvs 头文件 (/usr/src/include)。 src-kerberos5 release=cvs Kerberos5 安全包 (/usr/src/kerberos5)。 src-kerberosIV release=cvs KerberosIV 安全包 (/usr/src/kerberosIV)。 src-lib release=cvs 库 (/usr/src/lib)。 src-libexec release=cvs 通常被其它程序调用的系统程序 (/usr/src/libexec)。 src-release release=cvs 生成 FreeBSD 版本必需的文件 (/usr/src/release)。 src-rescue release=cvs 用于紧急修复的静态联编的程序; 请参见 &man.rescue.8; (/usr/src/rescue)。 src-sbin release=cvs 但用户模式的系统工具 (/usr/src/sbin)。 src-secure release=cvs 密码相关库和命令 (/usr/src/secure)。 src-share release=cvs 跨多个平台的共享的文件 (/usr/src/share)。 src-sys release=cvs 内核 (/usr/src/sys)。 src-sys-crypto release=cvs 内核密码系统代码 (/usr/src/sys/crypto)。 src-tools release=cvs 维护 FreeBSD 的各种各样的工具 (/usr/src/tools)。 src-usrbin release=cvs 用户工具 (/usr/src/usr.bin)。 src-usrsbin release=cvs 系统工具 (/usr/src/usr.sbin)。 www release=cvs FreeBSD WWW 站点的源代码。 distrib release=self CVSup 服务器的 配置文件。用于 CVSup 镜像站点。 gnats release=current GNATS bug 跟踪数据库。 mail-archive release=current FreeBSD 邮件列表存档。 www release=current 预处理过的 FreeBSD WWW 站点文件(不是源文件)。 用于 WWW 镜像站点。 更多信息 CVSup FAQ 以及关于 CVSup 的其他信息, 请查看 CVSup 主页 多数与 FreeBSD 有关的 CVSup 讨论会在 &a.hackers; 进行。 这个软件的新版本会在那里和 &a.announce; 公布。 如果对于 CVSup 有任何问题, 或希望提交 bug 报告, 请参阅 CVSup FAQ CVSup 站点 FreeBSD 的 CVSup 服务器运行于 下列站点: &chap.mirrors.cvsup.inc; 使用 Portsnap 介绍 Portsnap 是一套用以安全地分发 &os; ports 套件的系统。 每隔大约一个小时, 就会生成一份 ports 的最新 快照, 它会被打包并进行数字签名。 这些文件接下来将通过 HTTP 来分发。 CVSup 类似, Portsnap 采用 拉 (pull) 的模式来进行更新: 经过打包并签名的 ports tree 被放在 web 服务器上, 被动地等待用户请求它们。 用户需要手工运行 &man.portsnap.8; 来下载更新, 或者设置 &man.cron.8; 任务来自动地进行更新。 由于一些技术原因, Portsnap 并不自动地直接更新位于 /usr/ports/ 目录中的 实际的 ports tree; 事实上, 默认情况下它只操作位于 /var/db/portsnap/ 的压缩的 ports tree 副本, 而这个副本则用于更新实际的 ports tree。 如果 Portsnap 是通过 &os; Ports Collection 安装的, 则这份压缩快照的默认位置则是 /usr/local/portsnap/ 而非 /var/db/portsnap/ 安装 在 &os; 6.0 和更新版本上, Portsnap 已经成为 &os; 基本系统的一部分。 在较早版本的 &os; 中, 它可经由 ports-mgmt/portsnap port 来安装。 Portsnap 的配置 Portsnap 的操作, 是通过 /etc/portsnap.conf 配置文件来控制的。 对于多数用户来说, 默认的配置文件已经可用了; 要了解进一步的细节, 则应参考 &man.portsnap.conf.5; 联机手册。 假如 Portsnap 是通过 &os; Ports Collection 安装的, 则它将使用配置文件 /usr/local/etc/portsnap.conf 而非 /etc/portsnap.conf。 这个文件并不随 port 的安装自动创建, 但我们提供了一个示例的配置文件; 将其复制到合适的位置, 然后运行下面的命令: &prompt.root; cd /usr/local/etc && cp portsnap.conf.sample portsnap.conf 首次运行 <application>Portsnap</application> 在首次运行 &man.portsnap.8; 时, 它需要将整个 ports tree 的压缩快照下载到 /var/db/portsnap/ (或者, 如果 Portsnap 是通过 Ports Collection 安装的, 则是 /usr/local/portsnap/)。 在 2006 年初, 其下载尺寸大约是 41 MB。 &prompt.root; portsnap fetch 一旦下载了压缩的快照, 就可以将它释放成为位于 /usr/ports/ 中的 实际的 ports tree 了。 即时之前那个目录中已经有了一份 ports tree 也需要这样做 (例如, 通过使用 CVSup), 因为这个操作, 将为后续的 portsnap 决定更新 ports tree 的哪一部份提供基础。 &prompt.root; portsnap extract 默认安装时, 并不会自动创建 /usr/ports 这个目录。 如果您使用 &os; 6.0-RELEASE, 在首次使用 portsnap 之前应手工创建这个目录。 在更高版本的 &os; 和 Portsnap 中, 这个操作会由 portsnap 命令自动完成。 更新 Ports Tree 在首次下载压缩的 ports tree 快照, 并将其释放到 /usr/ports/ 之后, 更新 ports tree 包含下面两步: fetch(下载) 对于压缩快照的更新, 并使用它们来 update(更新) 实际的 ports tree。 这两步可以通过一个 portsnap 命令来完成: &prompt.root; portsnap fetch update 较早版本的 portsnap 并不支持这种写法。 如果不能用的话, 试试看下面的: &prompt.root; portsnap fetch &prompt.root; portsnap update 通过 cron 来运行 Portsnap 为了避免对于 Portsnap 服务器的 快闪 式访问, portsnap fetch 不支持作为 &man.cron.8; 任务来运行。 与此相反, 提供了一个特殊的 portsnap cron 命令, 它在开始下载更新之前会随机等待最多 3600 秒。 此外, 强烈建议不要将 portsnap update 作为 cron 任务来运行, 因为它可能给正在同时进行的 port 安装带来大问题。 不过, 更新 ports 的 INDEX 文件一般并无大碍, 这可以通过 portsnap 参数来实现 (显然, 如果 portsnap -I update 是通过 cron 来运行的, 在之后还需要执行不带 portsnap update 来更新 ports tree 余下的部分。) 可以在 /etc/crontab 中加入下列设置, 以便让 portsnap 更新其压缩快照, 以及位于 /usr/ports/ 中的 INDEX 文件, 并在有 port 过期时发出邮件通知: 0 3 * * * root portsnap -I cron update && pkg_version -vIL= 如果系统时钟没有设置为使用本地时区, 请将 3 改为一介于 0 和 23 的随机值, 以便让 Portsnap 服务器的负载更为平均。 某些较早版本的 portsnap, 并不支持在一次调用 portsnap 时使用多个命令 (例如, cron update)。 如果这样不行, 请将 portsnap -I cron update 改为 portsnap cron && portsnap -I update CVS 标签 当使用 cvs 或者 CVSup 获取和升级源代码的时候,必须指定一个修订标签。 修订标签代表 &os; 开发的一个特定分支, 或者一个特定的时间点。第一种叫做 分支标签,第二种叫做 版本标签 分支标签 所有这些,除了 HEAD (这个总是 合法标签)以外,只适用于 src/ 树。ports/doc/,和 www/ 树没有分支。 HEAD 主线的符号名,或者说 FreeBSD-CURRENT。 当没有指定修订版本的时候也是默认的。 CVSup 里,这个标签通过 一个 . 来反映出来(不是标点,而是一个 . 字符)。 在 CVS 里,当没有修订标签指定时这是默认的。 在一台 STABLE 机器上检出或者升级到 CURRENT 源代码 通常不是 一个好主意,除非这是您的本意。 RELENG_6 这是 FreeBSD-6.X 的开发分支, 也被称作 FreeBSD 6-STABLE。 RELENG_6_2 FreeBSD-6.2 的发行版分支, 只用于安全公告, 以及其他重要更新。 RELENG_6_1 FreeBSD-6.1 的发行版分支, 只用于安全公告, 以及其他重要更新。 RELENG_6_0 FreeBSD-6.0 的发行版分支, 只用于安全公告, 以及其他重要更新。 RELENG_5 这是 FreeBSD-5.X 的开发分支, 也被称作 FreeBSD 5-STABLE。 RELENG_5_5 FreeBSD-5.5 安全分支。 只被安全公告和其它重要更新使用。 RELENG_5_4 FreeBSD-5.4 安全分支。 只被安全公告和其它重要更新使用。 RELENG_5_3 FreeBSD-5.3 安全分支。 只被安全公告和其它重要更新使用。 RELENG_5_2 针对 FreeBSD-5.2 和 FreeBSD-5.2.1 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_5_1 针对 FreeBSD-5.1 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_5_0 针对 FreeBSD-5.0 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_4 FreeBSD-4.X 开发线,也被叫做 FreeBSD-STABLE。 RELENG_4_11 FreeBSD-4.11 发行版, 只被安全公告和其它重要更新使用。 RELENG_4_10 针对 FreeBSD-4.10 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_4_9 针对 FreeBSD-4.9 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_4_8 针对 FreeBSD-4.8 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_4_7 针对 FreeBSD-4.7 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_4_6 针对 FreeBSD-4.6 和 FreeBSD-4.6.2 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_4_5 针对 FreeBSD-4.5 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_4_4 针对 FreeBSD-4.4 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_4_3 针对 FreeBSD-4.3 的发行版本分支,只做 安全咨询和其它紧急的修正。 RELENG_3 FreeBSD-3.X 的开发线,也被叫做 3.X-STABLE。 RELENG_2_2 FreeBSD-2.2.X 的开发线,也被叫做 2.2-STABLE。这个分支过于陈旧了。 版本标签 当一个特定的 &os; 版本发行时, 这些标签代表了一个指定的时间点。发布工程进程在 Release Engineering InformationRelease Process 文档中被详细描述。 src 树使用以 RELENG_ 开头的标签。 portsdoc 树使用以 RELEASE 开头的标签。 最后, www 树上不会有任何特定发行版的标签。 RELENG_6_2_0_RELEASE FreeBSD 6.2 RELENG_6_1_0_RELEASE FreeBSD 6.1 RELENG_6_0_0_RELEASE FreeBSD 6.0 RELENG_5_5_0_RELEASE FreeBSD 5.5 RELENG_5_4_0_RELEASE FreeBSD 5.4 RELENG_4_11_0_RELEASE FreeBSD 4.11 RELENG_5_3_0_RELEASE FreeBSD 5.3 RELENG_4_10_0_RELEASE FreeBSD 4.10 RELENG_5_2_1_RELEASE FreeBSD 5.2.1 RELENG_5_2_0_RELEASE FreeBSD 5.2 RELENG_4_9_0_RELEASE FreeBSD 4.9 RELENG_5_1_0_RELEASE FreeBSD 5.1 RELENG_4_8_0_RELEASE FreeBSD 4.8 RELENG_5_0_0_RELEASE FreeBSD 5.0 RELENG_4_7_0_RELEASE FreeBSD 4.7 RELENG_4_6_2_RELEASE FreeBSD 4.6.2 RELENG_4_6_1_RELEASE FreeBSD 4.6.1 RELENG_4_6_0_RELEASE FreeBSD 4.6 RELENG_4_5_0_RELEASE FreeBSD 4.5 RELENG_4_4_0_RELEASE FreeBSD 4.4 RELENG_4_3_0_RELEASE FreeBSD 4.3 RELENG_4_2_0_RELEASE FreeBSD 4.2 RELENG_4_1_1_RELEASE FreeBSD 4.1.1 RELENG_4_1_0_RELEASE FreeBSD 4.1 RELENG_4_0_0_RELEASE FreeBSD 4.0 RELENG_3_5_0_RELEASE FreeBSD-3.5 RELENG_3_4_0_RELEASE FreeBSD-3.4 RELENG_3_3_0_RELEASE FreeBSD-3.3 RELENG_3_2_0_RELEASE FreeBSD-3.2 RELENG_3_1_0_RELEASE FreeBSD-3.1 RELENG_3_0_0_RELEASE FreeBSD-3.0 RELENG_2_2_8_RELEASE FreeBSD-2.2.8 RELENG_2_2_7_RELEASE FreeBSD-2.2.7 RELENG_2_2_6_RELEASE FreeBSD-2.2.6 RELENG_2_2_5_RELEASE FreeBSD-2.2.5 RELENG_2_2_2_RELEASE FreeBSD-2.2.2 RELENG_2_2_1_RELEASE FreeBSD-2.2.1 RELENG_2_2_0_RELEASE FreeBSD-2.2.0 AFS 站点 FreeBSD 的 AFS 服务器运行于下面的站点: 瑞典 文件的路径是: /afs/stacken.kth.se/ftp/pub/FreeBSD/ stacken.kth.se # Stacken Computer Club, KTH, Sweden 130.237.234.43 #hot.stacken.kth.se 130.237.237.230 #fishburger.stacken.kth.se 130.237.234.3 #milko.stacken.kth.se 维护者 ftp@stacken.kth.se rsync 站点 下面的站点让 FreeBSD 可以通过 rsync 协议下载。 rsync 实用程序和 &man.rcp.1; 的工作方式很相像, 但是有更多的选项,使用 rsync 远程更新协议只传输 两份文件的不同之处, 因此能够大幅度的提高网络同步速率。 如果您是 FreeBSD FTP 服务器或者 CVS 仓库的镜像站点, 这一点非常有用。 rsync 套件可以工作在许多种 操作系统上,在 FreeBSD 上,查看 net/rsync port 或者使用 package。 捷克共和国 rsync://ftp.cz.FreeBSD.org/ 可用的 collection: ftp:FreeBSD FTP 服务器的 部分镜像。 FreeBSD:FreeBSD FTP 服务器的 完整镜像。 德国 rsync://grappa.unix-ag.uni-kl.de/ 可用的 collection: freebsd-cvs:完整的 FreeBSD CVS 仓库。 这台服务器也镜像 NetBSD 和 OpenBSD 项目, 还有其他的一些项目的 CVS 仓库。 荷兰 rsync://ftp.nl.FreeBSD.org/ 可用的 collection: vol/4/freebsd-core: 对于 FreeBSD FTP 服务器的完整镜像。 台湾地区 (中国) rsync://ftp.tw.FreeBSD.org/ rsync://ftp2.tw.FreeBSD.org/ rsync://ftp6.tw.FreeBSD.org/ 可用的 collection: FreeBSD: FreeBSD FTP 服务器的完整镜像。 英国 rsync://rsync.mirror.ac.uk/ 可用的 collection: ftp.FreeBSD.org: FreeBSD FTP 服务器 的完整镜像。 美国 rsync://ftp-master.FreeBSD.org/ 服务器只供 FreeBSD 主镜像站点使用。 可用的 collection: FreeBSD:FreeBSD FTP 服务器的主要存档。 acl:FreeBSD 主 ACL 列表。 rsync://ftp13.FreeBSD.org/ 可用的 collection: FreeBSD:FreeBSD FTP 服务器的完整 镜像。
diff --git a/zh_CN.GB2312/books/handbook/x11/chapter.sgml b/zh_CN.GB2312/books/handbook/x11/chapter.sgml index 1f0c76efe2..d702a26386 100644 --- a/zh_CN.GB2312/books/handbook/x11/chapter.sgml +++ b/zh_CN.GB2312/books/handbook/x11/chapter.sgml @@ -1,1477 +1,1477 @@ Ken Tom 根据 X.Org 的 X11 服务修改此文档 Marc Fonvieille X Window 系统 概述 FreeBSD 使用 X11 来为用户提供功能强大的图形用户界面。 X11 是一种可以免费使用的 X 视窗系统, 其实现包括 &xorg;&xfree86; (以及一些其他这里没有讨论的软件包)。 &os; 在包括 &os; 5.2.1-RELEASE 在内的版本之前, 都默认安装 &xfree86;, 一种由 &xfree86; Project, Inc. 发布的 X11 服务。 从 &os; 5.3-RELEASE 开始, 默认并且为官方支持的 X11 变成了 &xorg;, 它是由 X.Org 基金会开发的 X11 服务, 采用与 &os; 类似的授权。 此外, 也有一些用于 &os; 的商业 X 服务器。 这章将介绍 X11 的安装和配置, 并着重强调 &xorg; 的 &xorg.version; 版。 如欲了解关于 &xfree86; 的详细信息 (在较早的 &os; 版本中, &xfree86; 是默认的 X11 软件包) 或较早版本的 &xorg;, 则可以访问存档的旧版 &os; 使用手册, 其网址为 欲了解 X11 所支持的显示卡等硬件, 请访问 &xorg; 网站。 在阅读完这一章后,您将会了解: X 视窗系统的不同组件,它们是如何协同工作的。 如何安装和配置 X11。 如何安装和使用不同的窗口管理器。 如何在 X11 中使用 &truetype; 字体。 如何为您的系统设置图形登录 (XDM)。 在阅读这一章之前,您应该: 知道如何安装额外的第三方应用程序()。 理解 X 对于那些熟悉其他图形环境,比如 µsoft.windows; 或者 &macos; 的用户来说,第一次使用 X 可能会感觉很惊讶。 通常您并不需要深入了解各种 X 组件的作用以及它们之间的相互影响, 不过, 了解一些关于它们的基础知识, 有助于更好地利用 X 的强大功能。 为什么要使用 X? X 不是第一个为 &unix; 而开发的视窗系统, 但它是最流行的。 X 的原始开发团队在开发 X 之前就已经在另外一个视窗系统上工作了。 那个系统的名字叫做 W (就是 Window)。X 只是罗马字母中 W 后面 的一个。 X 可以被叫做 X, X Window 系统, X11, 等等。把 X11 称做 X Windows 可能会冒犯某些人; 查看 &man.X.7; 可以了解更多的信息。 X 客户机/服务器模型 X 一开始就是针对网络而设计的,所以 采用了 client-server 模型。在 X 模型中, X server 运行在有键盘,显示器,鼠标的计算机上。 服务器用来管理显示信息,处理来自键盘和鼠标的输入等。 每一个 X 应用程序 (比如 XTerm, 或者 &netscape;) 就是一个 客户程序 (client)。 客户程序给服务器发送信息,如 请在这些坐标上画一个窗口, 而服务器则返回处理信息, 如 用户刚刚点击了 OK 按钮 如果您家或办公环境中只有一台使用 FreeBSD 的计算机, 就只能在同一台计算机上运行 X server 和 X client 了。 然而, 如果您有很多运行 FreeBSD 的机器, 您可以在您的桌面计算机上运行 X server, 而在比较高档的服务器上运行 X 应用程序。 在这样的环境中, X server 和 X client 之间的通信就可以通过网络来进行。 这可能会让一些人感到困惑, 因为 X 的术语和他们料想的有些不同。 他们以为 X server 是运行在功能强大的大型机上的,而 X client 是运行在他们桌面上的计算机上的。 记住,X server 是有键盘和显示器的那台计算机,而 X client 是那些显示窗口的程序。 Client 和 server 不一定都要运行在同一种操作系统上, 它们甚至无需在同一种类型的计算机上运行。 在 µsoft.windows; 或 Apple 公司的 &macos; 上运行 X server 也是可以的, 在它们上面也有很多免费的和商业化的应用程序。 窗口管理器 X 的设计哲学很像 &unix; 的设计哲学, tools, not policy。这就意味着 X 不会试图去规定任务应该如何 去完成,而是,只给用户提供一些工具,至于决定如何使用这些工具是用户自己的 事情。 这套哲学扩展了 X,它不会规定窗口在屏幕上应该是什么样子,要如何移动鼠标, 应该用什么键来切换窗体 (比如, Alt Tab 按键,在 µsoft.windows; 环境中的作用), 每个窗口的工具条应该 看起来像什么,他们是否应该有关闭按钮等等。 实际上,X 行使了一种叫做 窗口管理器的应用程序的职责。有很多这样的程序可用: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker,等等。每一个窗口管理器 都提供了不同的界面和观感;其中一些还支持 虚拟桌面;有一些允许您可以定制一些键来管理您的桌面; 一些有开始 按钮,或者其他类似的设计;一些是 可定制主题的(themeable), 通过安装新的主题, 可以完全改变外观。 这些以及很多其他的窗口管理器, 都可以在 Ports Collection 的 x11-wm 分类目录里找到。 另外,KDEGNOME 桌面环境都有他们自己的窗口管理器 与桌面集成。 每个窗口管理器也有不同的配置机制;有些需要手工来写配置文件, 而另外一些则可以使用 GUI 工具来完成大部分的配置任务, 举例而言, (Sawfish) 就使用 Lisp 语言书写配置文件。 焦点策略 窗口管理器的另一个特性是鼠标的 focus policy。 每个窗口系统都需要有一个选择窗口的方法来接受键盘的输入信息,以及当前 哪个窗口处于可用状态。 您通常比较熟悉的是一个叫做 click-to-focus 的焦点策略。 这是 µsoft.windows; 使用的典型焦点策略,也就是您在一个窗口上点击 一下鼠标,这个窗口就处于当前可用的状态。 X 不支持一些特殊的焦点策略。确切地说,窗口管理器控制着在什么时候哪个窗口 拥有焦点。不同的窗口管理器支持不同的焦点方案。它们都支持点击即获得焦点, 而且它们中的大多数都支持好几种方案。 最流行的焦点策略: focus-follows-mouse 鼠标指示器下面的窗口就是获得焦点的窗口。 这个窗口不一定位于其他所有窗口之上。 通过将鼠标移到另一个窗口就可以改变焦点, 而不需要在它上面点击。 sloppy-focus 这种方式是对 focus-follows-mouse 策略的一个小小扩展。对于 focus-follows-mouse, 如果您把鼠标移到了根窗口(或桌面背景)上, 则所有的其它窗口都会失去焦点, 而相关的全部键盘输入也会丢失。 如果选择了 sloppy-focus, 则只有当指针进入新窗口时, 窗口焦点才会发生变化, 而当退出当前窗口时是不会变化的。 click-to-focus 当前窗口由鼠标点击来选择。窗口被突出显示 , 出现在所有其他窗口的前面。即使指针被移向了另一个窗口,所有的键盘输入 仍会被这个窗口接收。 许多窗口管理器支持其他的策略,与这些相比又有些变化。您可以看具体 窗口管理器的文档。 窗口部件 提供工具而非策略的 X 方法使得在每个应用程序屏幕上看到的窗口部件得到了 大大的扩展。 Widget 只是针对用户接口中所有列举项目的一个术语,它 可以用某种方法来点击或操作;如按钮,复选框,单选按钮,图标,列表框等等。 µsoft.windows; 把这些叫做控件 µsoft.windows; 和苹果公司的 &macos; 都有一个严格的窗口部件策略。 应用程序开发者被建议确保他们的应用程序共享一个普通的所见即所得的用户界面。 对于 X,它并不要求一个特殊的图形风格或一套相结合的窗口部件集。 这样的结果是您不能期望 X 应用程序只拥有一个普通的所见即所得的界面。 有很多的流行的窗口部件集设置,包括来自于 MIT 的 Athena, &motif; (模仿 µsoft.windows; 的窗口风格, 所有部件都具有斜边和3种灰色度), OpenLook, 等等。 如今, 绝大多数比较新的 X 应用程序采用一组新式的窗口设计, 这包括 KDE 所使用的 Qt, 以及 GNOME 所使用的 GTK+。 在这样一种窗口系统下,&unix; 桌面的一些所见即所得特性作了一些收敛, 以使初学者感到更容易一些。 安装 X11 &xorg; 是 &os; 上的默认 X11 实现。 &xorg; 是由 X.Org 基金会发行的开放源代码 X Window 系统实现中的 X 服务。 &xorg; 基于 &xfree86 4.4RC2 和 X11R6.6 的代码。 从 &os; Ports 套件可以安装 &xorg; 的 &xorg.version; 版本。 如果需要从 Ports Collection 编译和安装 &xorg; &prompt.root; cd /usr/ports/x11/xorg &prompt.root; make install clean 要完整地编译 &xorg; 则需要至少 4 GB 的剩余磁盘空间。 另外 X11 也可以直接从 package 来安装。 我们提供了可以与 &man.pkg.add.1; 工具配合使用的 X11 安装包。 如果从远程下载和安装, 在使用 &man.pkg.add.1; 时请不要指定版本号。 &man.pkg.add.1; 会自动地下载最新版本的安装包。 想要从 package 安装 &xorg;, 简单地输入下面的命令: &prompt.root; pkg_add -r xorg 上面的例子介绍了如何安装完整的 X11 软件包, 包括服务器端,客户端,字体等等。 此外, 也有一些单独的 X11 的 ports 和 packages. 这一章余下的部分将会讲解如何配置 X11, 以及如何设置一个高效的桌面环境。 Christopher Shumway Contributed by 配置 X11 &xorg; X11 开始之前 在配置 X11 之前, 您需要了解所安装的系统的下列信息: 显示器规格 显示卡的芯片类型 显示卡的显存容量 水平刷新率 垂直刷新率 显示器的规格被 X11 用来决定显示的分辨率和刷新率。 这些规格通常可以从显示器所带的文档中, 以及制造商的网站找到。 需要知道两个数字范围: 垂直刷新率和水平刷新率。 显示卡的芯片类型将决定 X11 使用什么模块来驱动图形硬件。 尽管系统能自动检测出绝大多数的硬件, 但事先了解在自动检测出错的时候还是很有用处的。 显示卡的显存大小决定了系统支持的分辨率和颜色深度。 了解这些限制非常重要。 配置 X11 配置 X11 需要几步。 第一步是以超级用户的身份建立初始的配置文件: &prompt.root; Xorg -configure 这会在 /root 中生成一个叫做 xorg.conf.new 的配置文件 (无论您使用 &man.su.1; 或直接登录, 都会改变默认的 $HOME 目录变量)。 X11 程序将尝试探测系统中的图形硬件,并将探测到的硬件信息写入配置文件, 以便加载正确的驱动程序。 下一步是测试现存的配置文件, 以确认 &xorg; 能够同系统上的图形设备正常工作。 要完成这个任务,只需: &prompt.root; Xorg -config xorg.conf.new 如果用户看到一个黑灰的格子和一个 X 形的鼠标指针,那么配置就是成功的。 要退出测试, 只要同时按下 Ctrl Alt Backspace 如果鼠标工作不正常, 则需要先配置它。 参见 &os; 安装一章中的 X11 调优 接下来是调整 xorg.conf.new 配置文件并作测试。 用文本编辑器如 &man.emacs.1; 或 &man.ee.1; 打开这个文件。 要做的第一件事是为当前系统的显示器设置刷新率。 这些值包括垂直和水平的同步频率。 把它们加到 xorg.conf.new"Monitor" 小节中: Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" HorizSync 30-107 VertRefresh 48-120 EndSection 在配置文件中也有可能没有 HorizSyncVertRefresh。 如果是这样的话, 就只能手动添加, 并在 HorizSyncVertRefresh 后面设置合适的数值了。 在上面的例子中, 给出了相应的显示器的参数。 X 能够使用显示器所支持的 DPMS (能源之星) 功能。 &man.xset.1; 程序可以控制超时时间, 并强制待机、挂起或关机。 如果希望启用显示器的 DPMS 功能, 则需要把下面的设置添加到 monitor 节中: Option "DPMS" xorg.conf 关闭 xorg.conf.new 之前还应该选择默认的分辨率和色深。 这是在 "Screen" 小节中定义的: Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" EndSubSection EndSection DefaultDepth 关键字描述了要运行的默认色深。 这可以通过 &man.Xorg.1; 的 命令行开关来替代配置文件中的设置。 Modes 关键字描述了给定颜色深度下屏幕的分辨率。 需要说明的是, 目标系统的图形硬件只支持由 VESA 定义的标准模式。 前面的例子中, 默认色深是使用 24位色。 在采用这个色深时, 允许的分辨率是 1024x768。 最后就是将配置文件存盘, 并使用前面介绍的测试模式测试一下。 在发现并解决问题的过程中, 包含了与 X11 服务器相关的各个设备的信息的 X11 日志文件会为您发现和排除问题有所帮助。 &xorg; 日志的文件名是 /var/log/Xorg.0.log 这样的格式。 实际的日志文件名可能是 Xorg.0.logXorg.8.log 等等。 - 如果一切准备停当, 就可以把配置文件放到公共的目录中了。 + 如果一切准备妥当, 就可以把配置文件放到公共的目录中了。 您可以在 &man.Xorg.1; 里面找到具体位置。 这个位置通常是 /etc/X11/xorg.conf/usr/local/etc/X11/xorg.conf &prompt.root; cp xorg.conf.new /etc/X11/xorg.conf 现在已经完成了 X11 的配置全过程。 &xorg; 可以通过 &man.startx.1; 工具来启动。 除此之外, X11 服务器也可以用 &man.xdm.1; 来启动。 有一个图形配置工具 &man.xorgcfg.1;, 会随 X11 软件包一同安装。 它可以通过选择合适的驱动和设置交互式地定义配置。 这个程序可以从控制台通过命令 xorgcfg -textmode 来直接启动。 欲了解详情, 请参考 &man.xorgcfg.1; 的联机手册。 另外还有一个叫做 &man.xorgconfig.1; 的文本界面配置工具 这是一个控制台工具, 对用户而言不太友好, 但也正因它使用的是纯文本界面, 因此当其他工具无法工作时, 您仍可使用这个工具。 高级配置主题 配置 &intel; i810 显示芯片组 Intel i810 显示芯片 配置Intel i810芯片组的显示卡需要有针对 X11 的能够用来驱动显示卡的 agpgart AGP程序接口。 请参见 &man.agp.4; 驱动程序的联机手册了解更多细节。 这也适用于其他的图形卡硬件配置。 注意如果系统没有将 &man.agp.4; 驱动程序编译进内核,尝试用 &man.kldload.8; 加载模块是无效的。 这个驱动程序必须编译进内核或者使用 /boot/loader.conf 在启动时加载进入内核。 添加宽屏平板显示器 widescreen flatpanel configuration 这一节假定您了解一些关于高级配置的知识。 如果使用前面的标准配置工具不能产生可用的配置, 则在日志文件中提供的信息应该足以修正配置使其正确工作。 如果需要的话, 您应使用一个文本编辑器来完成这项工作。 目前的宽屏 (WSXGA、 WSXGA+、 WUXGA、 WXGA、 WXGA+, 等等) 支持 16:10 和 10:9 或一些支持不大好的显示比例。 常见的一些 16:10 比例的分辨率包括: 2560x1600 1920x1200 1680x1050 1440x900 1280x800 有时, 也可以简单地把这些分辨率作为 Section "Screen" 中的 Mode 来进行配置, 类似下面这样: Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1680x1050" EndSubSection EndSection &xorg; 能够自动地通过 I2C/DDC 信息来自动获取宽屏显示器的分辨率信息, 并处理显示器支持的频率和分辨率。 如果驱动程序没有对应的 ModeLines, 就需要给 &xorg; 一些提示了。 使用 /var/log/Xorg.0.log 能够提取足够的信息, 就可以写一个可用的 ModeLine 了。 这类信息如下所示: (II) MGA(0): Supported additional Video Mode: (II) MGA(0): clock: 146.2 MHz Image Size: 433 x 271 mm (II) MGA(0): h_active: 1680 h_sync: 1784 h_sync_end 1960 h_blank_end 2240 h_border: 0 (II) MGA(0): v_active: 1050 v_sync: 1053 v_sync_end 1059 v_blanking: 1089 v_border: 0 (II) MGA(0): Ranges: V min: 48 V max: 85 Hz, H min: 30 H max: 94 kHz, PixClock max 170 MHz 这些信息称做 EDID 信息。 从中建立 ModeLine 只是把这些数据重新排列顺序而已: ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings> 如此, 本例中的 Section "Monitor" 中的 ModeLine 应类似下面的形式: Section "Monitor" Identifier "Monitor1" VendorName "Bigname" ModelName "BestModel" ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 Option "DPMS" EndSection 经过简单的编辑步骤之后, X 就可以在您的宽屏显示器上启动了。 Murray Stokely 供稿 在 X11 中使用字体 Type1 字体 X11 使用的默认字体不是很理想。 大型的字体显得参差不齐,看起来很不专业, 并且, 在 &netscape; 中, 小字体简直无法看清。 有好几种免费、 高质量的字体可以很方便地用在 X11 中。 例如,URW字体集合 (x11-fonts/urwfonts) 就包括了高质量的 标准 type1 字体 (Times Roman, HelveticaPalatino 和其他一些)。 在 Freefont 集合中 (x11-fonts/freefonts) 也包括更多的字体, 但它们中的绝大部分使用在图形软件中,如 Gimp,在屏幕字体中使用并不完美。另外, 只要花很少的功夫,可以将 &xfree86; 配置成能使用 &truetype; 字体:请参见后面的 &truetype; 字体一节。 要安装上面的Type1字体,您只需要运行下面的命令: &prompt.root; cd /usr/ports/x11-fonts/urwfonts &prompt.root; make install clean freefont 或其他的字库和上面所说的大体类似。 为了让 X 服务器能够检测到这些字体, 需要在 X 服务器的配置文件 (/etc/X11/xorg.conf) 中增加下面的配置: FontPath "/usr/local/lib/X11/fonts/URW/" 或者,也可以在命令行运行: &prompt.user; xset fp+ /usr/local/lib/X11/fonts/URW &prompt.user; xset fp rehash 这样会起作用,但是当 X 会话结束后就会丢失, 除非它被添加到启动文件 (~/.xinitrc 中, 针对一个寻常的 startx 会话,或者当您通过一个类似 XDM 的图形登录管理器登录时添加到 ~/.xsession 中)。 第三种方法是使用新的 /usr/local/etc/fonts/local.conf 文件: 查看 anti-aliasing 章节。 &truetype; 字体 TrueType 字体 fonts (字体) TrueType &xorg; 已经内建了对 &truetype; 字体的支持。有两个不同的模块能够启用这个功能。 在这个例子中使用 freetype 这个模块,因为它与其他的字体描绘后端 是兼容的。要启用 freetype 模块,只需要将下面这行添加到 /etc/X11/xorg.conf 文件的 "Module" 部分。 Load "freetype" 现在,为 &truetype; 字体创建一个目录 (比如, /usr/local/lib/X11/fonts/TrueType) 然后把所有的 &truetype; 字体复制到这个目录。记住您不能直接从 &macintosh; 计算机中提取 &truetype; 字体; 能被 X11 使用的必须是 &unix;/&ms-dos;/&windows; 格式的。 一旦您已经将这些文件复制到了这个目录, 就可以用 ttmkfdir 来创建 fonts.dir 文件, 以便让X字体引擎知道您已经安装了这些新文件。 ttmkfdir 可以在 FreeBSD Ports 套件中的 x11-fonts/ttmkfdir 中找到。 &prompt.root; cd /usr/local/lib/X11/fonts/TrueType &prompt.root; ttmkfdir -o fonts.dir 现在把 &truetype; 字体目录添加到字体路径中。 这和上面 Type1 字体的步骤是一样的, 那就是,使用 &prompt.user; xset fp+ /usr/local/lib/X11/fonts/TrueType &prompt.user; xset fp rehash 或者把 FontPath 这行加到 xorg.conf 文件中。 就是这样。现在 &netscape;, Gimp, &staroffice; 和其他所有的 X 应用程序 应该可以认出安装的 &truetype; 字体。一些很小的字体(如在 Web 页面上高分辨率显示的文本) 和一些很大的字体(在 &staroffice; 下) 现在看起来已经很好了。 Joe Marcus Clarke Updated by Anti-Aliased 字体 anti-aliased fonts fonts anti-aliased X11 从 &xfree86; 4.0.2 开始支持字体的反走样。 但是, 字体配置在 &xfree86; 4.3.0 之前是非常繁琐的。 从 &xfree86; 4.3.0 开始, 对于所有支持 Xft 的应用程序, 所有放到 X11 /usr/local/lib/X11/fonts/~/.fonts/ 中的字体都自动地被加入反走样支持。 并不是所有的应用程序都支持 Xft, 但已经有相当多的程序提供 Xft 支持了。 支持 Xft 的应用程序包括 Qt 2.3 以及更高版本 (用以开发 KDE 桌面的工具包)、 GTK+ 2.0 和更高版本 (用于开发 GNOME 桌面的工具包), 以及 Mozilla 1.2 和更高版本。 要控制哪些字体是 anti-aliased,或者配置 anti-aliased 特性, 创建(或者编辑,如果文件已经存在的话)文件 /usr/local/etc/fonts/local.conf。Xft 字体系统的几个 高级特性都可以使用这个文件来调节; 这一部分只描述几种最简单的情况。要了解更多的细节,请查看 &man.fonts-conf.5;. XML 这个文件一定是 XML 格式的。注意确保所有的标签都完全的关闭掉。 这个文件以一个很普通的 XML 头开始, 后跟一个 DOCTYPE 定义, 接下来是 <fontconfig> 标签: <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> 像前面所做的那样,在 /usr/local/lib/X11/fonts/~/.fonts/ 目录下的所有字体已经可以被支持 Xft 的 应用程序使用了。如果您想添加这两个目录以外的其他路径, 简单的添加下面这行到 /usr/local/etc/fonts/local.conf文件中: <dir>/path/to/my/fonts</dir> 添加了新的字体,尤其是添加了新的字体目录后, 您应该运行下面的命令重建字体缓存: &prompt.root; fc-cache -f Anti-aliasing 会让字体边缘有些模糊,这样增加了非常小的文本的可读性, 并从大文本字体中删除 锯齿。 但如果使用普通的文本, 则可能引起眼疲劳。 要禁止 14磅 以下字体的反走样, 需要增加如下配置: <match target="font"> <test name="size" compare="less"> <double>14</double> </test> <edit name="antialias" mode="assign"> <bool>false</bool> </edit> </match> <match target="font"> <test name="pixelsize" compare="less" qual="any"> <double>14</double> </test> <edit mode="assign" name="antialias"> <bool>false</bool> </edit> </match> fonts spacing 用 anti-aliasing 来间隔一些等宽字体也是不适当的。 这似乎是 KDE 的一个问题。 要修复这个问题需要确保每个字体之间的间距保持在100。 加入下面这些行: <match target="pattern" name="family"> <test qual="any" name="family"> <string>fixed</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> <match target="pattern" name="family"> <test qual="any" name="family"> <string>console</string> </test> <edit name="family" mode="assign"> <string>mono</string> </edit> </match> (这里把其他普通的修复的字体作为 "mono"),然后加入: <match target="pattern" name="family"> <test qual="any" name="family"> <string>mono</string> </test> <edit name="spacing" mode="assign"> <int>100</int> </edit> </match> 某些字体,比如 Helvetica,当 anti-aliased 的时候可能存在问题。 通常的表现为字体本身似乎被垂直的切成两半。 糟糕的时候,还可能导致应用程序比如 Mozilla 崩溃。 为了避免这样的现象,考虑添加下面几行到 local.conf文件里面: <match target="pattern" name="family"> <test qual="any" name="family"> <string>Helvetica</string> </test> <edit name="family" mode="assign"> <string>sans-serif</string> </edit> </match> 一旦您完成对 local.conf 文件的编辑,确保您使用了 </fontconfig> 标签来结束文件。 不这样做将会导致您的更改被忽略。 X11 默认的字库当使用反走样时会比较难看。 更好的字库可以在 x11-fonts/bitstream-vera port 中找到。 这个 port 会创建一个 /usr/local/etc/fonts/local.conf 文件, 如果这个文件不存在的话。 反之, port 将创建 /usr/local/etc/fonts/local.conf-vera 文件。 将其内容合并到 /usr/local/etc/fonts/local.conf 中, 则 Bitstream 字体将自动地代替默认的 X11 Serif, Sans Serif, 以及单倍距字体。 最后,用户可以通过他们个人的 .fonts.conf 文件来添加自己的设定。 要完成此项工作, 用户只需简单地创建 ~/.fonts.conf 并添加相关配置。 此文件也必须是 XML 格式的。 LCD screen Fonts LCD screen 最后:对于LCD屏幕, 可能希望使用子像素的取样。 简单而言, 这是通过分别控制 (水平方向分开的) 红、绿、蓝 像素, 来改善水平分辨率; 这样做的效果一般会非常明显。 要启用它, 只需在 local.conf 文件的某个地方加入: <match target="font"> <test qual="all" name="rgba"> <const>unknown</const> </test> <edit name="rgba" mode="assign"> <const>rgb</const> </edit> </match> 随您显示器的种类不同, 可能需要把 rgb 改为 bgrvrgbvbgr: 试验一下看看那个更好。 Mozilla disabling anti-aliased fonts (禁用反锯齿字体) 在下次启动 X server 时, 反锯齿 (anti-aliasing) 功能就启用了。 不过, 应用程序必须了解如何使用它, 才能因此而受益。 目前 Qt 工具包已经对其提供了全面支持, 因此整个 KDE 环境都能使用反锯齿字体。 GTK+ 和 GNOME 也可以通过 Font capplet 来使用反锯齿功能 (进一步细节请参见 )。 默认情况下, Mozilla 1.2 及更高版本有能力自动使用反锯齿。 要禁用这一特性, 则需要使用指定 -DWITHOUT_XFT 并重新联编 Mozilla Seth Kingsley Contributed by X 显示管理器 概要 X Display Manager X 显示管理器(XDM) 是一个X视窗系统用于进行登录会话管理的可选项。 这个可以应用于多种情况下,包括小 X Terminals, 桌面,大网络显示服务器。既然 X 视窗系统不受网络和协议的限制, 那对于通过网络连接起来的运行 X 客户端和服务器端的不同机器, 就会有很多的可配置项。 XDM 提供了一个选择要连接到哪个显示服务器的图形接口, 只要键入如登录用户名和密码这样的验证信息。 您也可以把 XDM 想象成与 &man.getty.8 工具一样(see for details)。为用户提供了同样功能。它可以完成系统的登录任务, 然后为用户运行一个会话管理器 (通常是一个 X 视窗管理器)。接下来 XDM 就等待这个程序退出,发出信号用户已经登录完成,应当退出屏幕。 这时, XDM 就可以为下一个登录用户显示登录和可选择屏幕。 使用 XDM XDM 精灵程序在 /usr/local/bin/xdm 中。您可以在任何时候 用 root 来运行这个程序, 在本地机器上,它将启动管理X的画面。如果要 XDM 每次机器一启动就开始运行, 一个简单的办法是在 /etc/ttys 中加入一个记录。 有关这个文件的更多的格式和使用方法,可以看看 。在默认的 /etc/ttys 文件中用于运行 XDM 守护程序的一行是这样的: ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure 默认情况下,这个记录是关闭的,要启用它, 您需要把第5部分的 off 改为 on 然后按照 的指导 重新启动 &man.init.8;。第一部分,这个程序将管理的终端名称是 ttyv8。这意味着 XDM 将运行在第9个虚拟终端上。 配置 XDM XDM 的配置目录是在 /usr/local/lib/X11/xdm中。在这个目录中, 您会看到几个用来改变 XDM 行为和外观的文件。您会找到这些文件: 文件 描述 Xaccess 客户端授权规则。 Xresources 默认的X资源值。 Xservers 远程和本地显示管理列表。 Xsession 用于登录的默认的会话脚本。 Xsetup_* 登录之前用于加载应用程序的脚本。 xdm-config 运行在这台机器上的所有显示的全局配置。 xdm-errors 服务器程序产生的错误。 xdm-pid 当前运行的 XDM 的进程 ID。 XDM 运行时, 在这个目录中有几个脚本和程序可以用来设置桌面。 这些文件中的每一个的用法都将被简要地描述。 这些文件的更详细的语法和用法在 &man.xdm.1; 中将有详细描述。 默认的配置是一个矩形的登录窗口,上面有机器的名称, Login:Password:。如果您想设计您自己个性化的 XDM 屏幕,这是一个很好的起点。 Xaccess 用以连接由 XDM 所控制的显示设备的协议, 叫做 X 显示管理器连接协议 (XDMCP)。 这个文件是一组用以控制来自远程计算机的 XDMCP 连接的规则。 除非您修改 xdm-config 使其接受远程连接, 否则其内容将被忽略。 默认情况下, 它不允许来自任何客户端的连接。 Xresources 这是一个默认的用来显示选项和登录屏幕的应用程序文件。 您可以在这个文件中对登录程序的外观进行定制。 其格式与 X11 文档中描述的默认应用程序文件是一样的。 Xservers 这是一个选择者应当提供的作为可选的远程显示列表。 Xsession 这是一个用户登录后针对 XDM 的默认会话脚本。通常,在 ~/.xsession 中每个用户将有一个可定制的会话脚本。 Xsetup_* 在显示选择者或登录接口之前,这些将被自动运行。 这是一个每个显示都要用到的脚本,叫做 Xsetup_, 后面会跟一个本地显示的数字(比如 Xsetup_0)。典型的,这些脚本将在后台 (如 xconsole)运行一个或两个程序。 xdm-config 此文件以应用程序默认值的形式, 提供了在安装时所使用的普适的显示设置。 xdm-errors 这个文件包含了 XDM 正设法运行的的 X 服务器 的输出。 如果 XDM 正设法运行的显示由于某种原因被挂起, 那这是一个寻找错误信息的好地方。 这些信息会在每一个会话的基础上被写到用户的 ~/.xsession-errors 文件中。 运行一个网络显示服务器 对于其他客户端来说, 如果希望它们能连接到显示服务器,您就必须编辑访问控制规则, 并启用连接侦听。 默认情况下, 这些都预设为比较保守的值。 要让 XDM 能侦听连接, 首先要在 xdm-config 文件中注释掉一行: ! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0 然后重新启动XDM。 记住默认应用程序文件的注释以! 字母开始,不是#。 您需要设置严格的访问控制 — 看看在 Xaccess 文件中的实例, 并参考 &man.xdm.1; 的联机手册, 以了解进一步的细节。 替换 XDM 有几个替换默认 XDM程序的方案。 其中之一是 上一节已经描述过的kdm (与 KDE捆绑在一起)。 kdm 提供了许多视觉上的改进和局部的修饰, 同样能让用户在启动时能选择他们喜欢的窗口管理器。 Valentino Vaschetto Contributed by 桌面环境 这节描述了 FreeBSD 上用于 X 的不同桌面环境。 桌面环境 可能仅仅是一个简单的窗口管理器, 也可能是一个像 KDE 或者 GNOME这样的完整桌面应用程序套件。 GNOME 有关 GNOME GNOME GNOME 是一个用户界面友好的桌面环境, 能够使用户很容易地使用和配置他们的计算机。 GNOME 包括一个面板(用来启动应用程序和显示状态), 一个桌面(存放数据和应用程序的地方), 一套标准的桌面工具和应用程序, 和一套与其他人相互协同工作的协议集。 其他操作系统的用户在使用 GNOME提供的强大的图形驱动环境时会觉得很好。 更多的关于 FreeBSD 上 GNOME 的信息 可以在 FreeBSD GNOME Project 的网站上找到。 此外, 这个网站也提供了相当详尽的关于安装、 配置和管理 GNOME 的常见问题解答 (FAQ)。 安装 GNOME 这个软件可以很容易地通过预编译包或 Ports 套件来安装: 要从网络安装GNOME, 只要键入: &prompt.root; pkg_add -r gnome2 从源代码编译GNOME,可以使用 ports树: &prompt.root; cd /usr/ports/x11/gnome2 &prompt.root; make install clean 一旦装好了 GNOME, 就必须告诉 X server 启动 GNOME 而不是默认的窗口管理器。 最简单的启动 GNOME 的方法是使用 GDM, GNOME 显示管理器。 随 GNOME 桌面一同安装的 GDM (但默认是禁用的), 可以通过在 /etc/rc.conf 中加入 gdm_enable="YES" 来启用。 这样在重新启动的时候, GNOME 就会在登录时自动启动 — 除此之外不需要进一步设置了。 GNOME 也可以通过适当地配置名为 .xinitrc 的文件来启动。 如果已经有了自定义的 .xinitrc, 将启动当前窗口管理器的那一行改为启动 /usr/local/bin/gnome-session 就可以了。 如果还没有, 那么只需简单地: &prompt.user; echo "/usr/local/bin/gnome-session" > ~/.xinitrc 接下来输入 startxGNOME 桌面环境就启动了。 如果之前使用了一些旧式的显示管理器, 例如 XDM, 则这样做是没用的。 此时应建立一个可执行的 .xsession 文件, 其中包含同样的命令。 要完成这项工作, 需要用 /usr/local/bin/gnome-session 取代现有的窗口管理器: &prompt.user; echo "#!/bin/sh" > ~/.xsession &prompt.user; echo "/usr/local/bin/gnome-session" >> ~/.xsession &prompt.user; chmod +x ~/.xsession 还有一种做法, 是配置显示管理器, 以便在登录时提示您选择窗口管理器; 在 KDE 细节 环节中介绍了关于如何为 kdmKDE 的显示管理器)进行这样的配置。 在GNOME上使用Anti-aliased字体 GNOME anti-aliased fonts X11 通过RENDER扩展来支持 anti-aliasing。 GTK+ 2.0 以及更高的版本(被 GNOME使用的工具包)可以使用这个功能。 配置 anti-aliasing 在 描述。所以,使用最近的软件, anti-aliasing 可以应用在 GNOME桌面环境中。只需要依次选择 应用程序 桌面首选项 字体,然后选上 最佳形状最佳对比度,或者 像素圆滑(LCD)。对于 GTK+ 应用程序,它们不是 GNOME 桌面的一部分,在启动程序前需要设置 环境变量GDK_USE_XFT的值为 1 KDE KDE 有关 KDE KDE 是一个容易使用的现代桌面环境。 KDE 有很多很好的特性: 一个美丽的现代的桌面。 一个集合了完美网络环境的桌面。 一个集成的帮助系统,能够方便、高效地帮助您使用 KDE 桌面和它的应用程序。 所有的KDE应用程序具有一致的所见即所得界面。 标准的菜单和工具栏,键盘布局,颜色配置等。 国际化:KDE 可以使用超过40种语言。 集中化、 统一的对话框驱动的桌面配置 许多有用的 KDE应用程序。 KDE 附带了一个名为 Konqueror 的 web 浏览器, 它是其他运行于 &unix; 系统上的 web 浏览器的一个强大的竞争对手。 要了解关于 KDE 的更多详情, 可以访问 KDE 网站。 与 FreeBSD 相关的 KDE 信息和资源, 可以在 FreeBSD 上的 KDE 团队 的网站找到。 安装 KDE GNOME 和其他桌面环境类似, 这个软件可以很容易地通过预编译包或 Ports 套件来安装: 要从网络安装 KDE 只需要: &prompt.root; pkg_add -r kde &man.pkg.add.1; 就会自动的下载最新版本的应用程序。 要从源代码编译 KDE, 可以使用 ports 树: &prompt.root; cd /usr/ports/x11/kde3 &prompt.root; make install clean KDE 安装完成后, X server必须被告知启动这个应用程序以代替默认的窗口管理器。 这可以通过编辑 .xinitrc 文件来完成: &prompt.user; echo "exec startkde" > ~/.xinitrc 现在,无论您什么时候用 startx进入 X 视窗系统, KDE 就将成为您的桌面环境。 如果使用一个像 XDM这样的显示管理器, 那配置文件可能有点不同。需要编辑一个 .xsession 文件,有关 kdm 的用法会在这章的后面介绍。 有关 KDE 的更多细节 现在 KDE 已经被安装在系统中了。 通过帮助页面或点击多个菜单可以发现很多东西。 &windows; 或 &mac; 用户会有回到家的感觉。 有关 KDE 的最好的参考资料是 它的在线文档。KDE 拥有它自己的 web 浏览器 Konqueror, 还有很多其他的应用程序和丰富文档。 这节的余下部分将讨论一些很难用走马观花的方法来学习的技术项目。 KDE 显示管理器 KDE display manager 如果在同一系统上有多个用户, 则管理员通常会希望使用图形化的登录界面。 前面已经提到, 使用 XDM 可以完成这项工作。 不过, KDE 本身也提供了另一个选择, 即 kdm, 它的外观更富吸引力, 而且提供了更多的登录选项。 值得一提的是, 用户还能通过菜单很容易地选择希望使用的桌面环境 (KDEGNOME 或其它)。 要启用 kdm, 需要修改 /etc/ttys 中的 ttyv8 项。 将其改为类似下面的样子: ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure XFce 有关XFce XFce是以被GNOME 使用的 GTK+ 工具包为基础的桌面环境, 但是更加轻巧,适合于那些需要一个易于使用和配置并且简单而高效的桌面的人。 看起来,它非常像使用在商业&unix;系统上的 CDE环境。 XFce的主要特性有下面这些: 一个简单,易于使用的桌面。 完全通过鼠标的拖动和按键来控制等。 CDE 相似的主面板,菜单,applets和应用launchers。 集成的窗口管理器,文件管理器,声音管理器, GNOME 应用模块等等。 可配置界面的主题。(因为它使用GTK+) 快速,轻便,高效:对于比较老的/旧的机器或带有很少内存的机器仍然很理想。 更多有关XFce 的信息可以参考XFce 网站 安装XFce 有一个二进制的XFce 软件包存在(在写作的时候)。要安装的话,执行下面的命令: &prompt.root; pkg_add -r xfce4 另外,要从源代码建立,使用Ports Collection: &prompt.root; cd /usr/ports/x11-wm/xfce4 &prompt.root; make install clean 现在,要告诉X服务器在下次X启动时执行 XFce。 只要执行下面的命令: &prompt.user; echo "/usr/local/bin/startxfce4" > ~/.xinitrc 接下来就是启动 X, XFce将成为您的桌面。 与以前一样,如果使用像 XDM 这样的显示管理器,需要创建一个 .xsession文件,就像有关 GNOME 的那节描述的, 使用/usr/local/bin/startxfce4 命令,或者,配置显示管理器允许在启动时选择一个桌面, 就像有关kdm的那节描述的。