样例磁盘, 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 > filesystem, 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 从
/分离出去。另一个要考虑的是,给物理设备或虚拟磁盘这些自带空间的文件系统确定目录结构树。
例如 网络文件系统 或光驱的挂接。
fstab 文件文件系统使用fstab的挂接在导入处理期间,
自动挂上/etc/fstab所列出的文件系统。
(除非他们注明为 选项)。
/etc/fstab 文件包含的各行的列表格式如下:
device/mount-pointfstypeoptionsdumpfreqpassnodevice设备名称(设备必须存在), 说明在
.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; 在充许的情况下将尝试并行地去检查文件系统。
mount 命令文件系统挂接这个 &man.mount.8; 命令是挂接文件系统的基本运用。
使用最多的基本格式:&prompt.root; mount devicemountpoint它的选项非常多,而&man.mount.8; 手册同样提及, 但常用的都在这里:挂接的各种选项挂接/etc/fstab里所有列出的文件系统。
除非标记为 noauto 或作了排除在外的
类型标记,或者在这之前已挂上。
除了实际上系统调用以外,可以完成任何事情,这个选项是和
参数一起连在一块使用,可以决定&man.mount.8;所做的事情。
强制去挂接一个未知的文件系统(会有危险),
或当把一个文件系统挂接状态由可读写降为只读时,强制撤消可写通道。
以只读的方式挂上文件系。
使用 选项加是一样的。
fstype根据给出的文件系统类型挂接文件系统,
假如给于选项,仅挂接这个类型的文件系统。
ufs 是默认的文件系统类型。
在文件系统上修改挂接选项。版本模式。以可读写方式挂接文件系统。The 选项采用一个逗号分开以下多个选项:nodev拒绝把文件系统识别为特别的设备。这是一个有用的安全选项。
noexec不允许文件系统上的二进制程序执行。这也是一个有用的安全选项。
nosuid不允许文件系统上的 setuid 或 setgid 标记生效。这也是一个有用的安全选项。
umount 命令文件系统卸下&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,
当您运行到超过限制时,这些编号会回转分配。
TT这一列显示了程序运行所在的终端, 目前可以安全地忽略。
STAT 显示程序的状态,也可以安全地被忽略。
TIME是程序在CPU处理时间—运行的时间量,
并不是指您程序启动到现在的所用的时间。
许多程序碰巧遇到某方面在他们之前要花费大量CPU处理时间时,他们就必须等候。
Finally, COMMAND is the command line that was used to
run the program.&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的吉祥物保持为一双鞋加一把钢叉的守护神模样。
守护进程的程序命名通常在最后加一个d。
BIND是伯克莱互联网络守护进程命名(and the actual program that executes is called
named),
Apacheweb系统的程序就叫httpd,
在行式打印机上的打印守护进程就是lpd。
这只是一种惯例,不是标准或硬性规定。
例如,为Sendmail而应用的主要mail守护进程就叫sendmail,
却不叫maild,这和您推测的一样。
有时您必须和一个守护进程的程序通信,这些通信就叫信号。
您能发送一个信号给守护进程(或有关的另一些运行进程)与它进行通信,
各个不同的信号各自就是一个数字编号,而您所发送的—数字编号各自有一个特殊的含义。
有些人把信号解悉为'请求',并在'请求'的文档里告诉您怎样把信号理解为请求。
您只能给所属于您的进程发信号,假如您给其他人的进程发信号,
进程就会用&man.kill.1; 或 &man.kill.2;权限进行拒绝。
当然,root 用户会例外,它能把各种信号发送给每个进程。
在某些案例里,FreeBSD也会向应用软件发送信号。
假如一个应用软件含有恶意写入并试图去访问内存,那是不可想象的,FreeBSD会向那个进程发送
段式违规 信号 (SIGSEGV)。
假如一个应用软件使用&man.alarm.3;系统去进行周期性调用闹钟功能,每当达到时间时,
FreeBSD会向应用软件发送闹钟信号(SIGALRM)。
有两个信号可以停止进程:SIGTERM 和 SIGKILL。
SIGTERM比较友好,进程能捕捉这个信号,
根据您的需要来关闭程序。在关闭程序之前,您可以结束打开的记录文件和完成正在做的任务。
在一些案例里,假如进程正在进行作业而且不能中断,那么进程可以忽略这个SIGTERM信号。
对于SIGKILL信号,进程是不能忽略的。 这是一个
'我不管您在做什么,立刻停止'的信号。
假如您发送SIGKILL信号给进程,
FreeBSD就将进程停止在那里。有点不正确—少数的东西是不能中断的。
例如,假如进程试图从网络上另一个计算机的一个文件读取,
而那个的计算机会因为某些原因拿走了这个文件,那这个进程从上术情况来看是不能中断。
最终这个进程会超时,典型的两分钟。一出现超时进程将被杀死。
.您可能会去使用
SIGHUP、 SIGUSR1 和
SIGUSR2信号。 这都是些通用的信号,各种应用程序都可以应用
在各方面的信号发送。
假如您改变了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; suPassword:
&prompt.root; /bin/kill -s HUP 198和大多数 &unix; 命令一样, &man.kill.1; 完成任务之是没有内容输出的。
假如您发送信号给一个不属于您的进程,
您会看到 kill:
PID: Operation not
permitted.
假如输错了PID号,把信号发送到其他进程,那是坏事。
或者您侥幸,把信号发送到不存在的进程,
您会看见 kill:
PID: No such process.为什么使用 /bin/kill?许多shell提供了内建kill命令,
这样, shell就能直接发送信号,而不是运行 /bin/kill。
这点非常有用, 但不同shell有不同的语法来指定发送信号的名字,
与其试图把它们学完倒不如简单地直接使用
/bin/kill ...。
发送其他的信号也很相似,只要在命令行替换TERM或KILL就行了。
在系统上随意杀死进程是个坏主意,特别是&man.init.8;,它的进程ID是1,它非常特殊。
可以运行 /bin/kill -s KILL 1 命令来让系统迅速关机。
当您按下 Return 键时, 始终 必须
去详细检查您所运行的 &man.kill.1;。
Shellsshells命令行在FreeBSD里,每日有一大堆工作是在命令行的界面完成的,那就叫做shell。
一个shell的主要功能就是从输入是取得命令然后去执行他。
许多的shell同样能帮我们完成内建的每日功能,例如:文件管理、文件寻找、命令行编辑、
宏指令和环境变量。FreeBSD内含了一些shell,例如:sh、Bourne Shell、
tcsh和改良过的C-shell。
另外也有些shell也可在FreeBSD的Ports得到,例如:zsh和bash。
您想使用那一种shell取决于您的喜好,
假如您是C程序设计师,您可能选择一个C-like shell例如tcsh。
假如您是从Linux过来的或是一个命令行的新手,您可能会试一下bash。
这一点告诉我们每一个shell都有各自的特性,可能适用于您的工作环境,也可能不适用于您的工作环境。
每个shell都有一个共通点就是文件名补全。
输入命令或文件名的前几个字,然后按Tab键,就能靠shell的自动补全功能得出
命令或文件名。这里有一个例子,假设您有两个文件叫
foobar 和foo.bar,而您想删除
foo.bar, 可这样在键盘上输入
rm fo[Tab].[Tab]。那么shell就会输出 rm
foo[BEEP].bar。这个[BEEP] 是这控制台铃声, 那个是告诉我们它不能完成文件名补全,因为有多个文件名符合。
foobar 和
foo.bar 都是以 fo开头, 它只可以补全到
foo。 输入
.并再按一次 Tab,shell才把其余的文件名全部显示出来。
环境变量另一个特点就是shell利用环境变量运行。环境变量是贮存在shell环境空间上相对应的键和可变值,
这个空间能够补程序从shell里读出,而且包含了许多程序的配置。
这个一个常用环境变量列和其含义的列表:环境变量变量说明USER当前登录进入的用户名。PATH搜索程序路径,以两点的冒号分隔开。DISPLAY假如有这个变量的话,就是X11显示器的网络名称。
SHELL当前所用的shell。TERM用户终端的名字,通常用在确定终端的能力。TERMCAP各种终端功能所用终端分离编码的基本数据项目。OSTYPE操作系统类型,默认是FreeBSD。MACHTYPE是指系统上运行的CPU体系结构。
EDITOR用户首选的文本编辑器。PAGER用户首选的文本页面调度程序 。MANPATH搜索联机手册路径,以两点的冒号分隔开。Bourne shells不同的shell设置环境变量也不相同。举个例子,
在如tcsh 和 csh这样的C-Style shell,
您必须使用setenv去设置环境变量。
而在如sh和bash这样的Bourne shell,
您必须使用export去设置当前环境变量。
再举个例子,要去设置或改变EDITOR环境变量,
在csh或tcsh下将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运行chsh 不加参数只编辑shell也会达到相同的效果。
您使用的shells必须
在/etc/shells 文件里列出。 假如您从
ports里装一个shell, 那就不用做这步了。
假如您手工装一个shell,那就要手工添加进去。举个例了子,假如您手工把 bash装到
/usr/local/bin里,您还要进行这一步:
&prompt.root; echo "/usr/local/bin/bash" >> /etc/shells然后运行chsh。文本编辑器文本编辑器编辑器在FreeBSD里有许多的配置是依靠编辑文本文件来完成的,
正因为这样,最好就是去熟悉一种文本编辑器。
FreeBSD基本系统本身就自带有几种,还有许多已可在ports里得到。ee最容易学的而又简单的编辑器是
ee编辑器, 是个标准的简易编辑器。 要启动
ee,首先就要在命令行输入
ee filename,
filename 是一个要编辑的文件名。
例如,要编辑 /etc/rc.conf就要输入
ee /etc/rc.conf,在
ee的控制内, 编辑器所有功能的操作方法都显示在最上方。
这个^ 字符代表
键盘上的Ctrl 键, 所以^e 就是
Ctrle组合键。
假如想离开ee,
按Esc键,就可选择离开编辑器。
当您修改了内容的时候,编辑器会提示您保存。vi编辑器viemacs编辑器emacsFreeBSD本身也带许可多有强大功能的文本编辑器, 例如
vi。还有其他在FreeBSD Ports里几种, 像
emacs 和 vim。
- 这些编辑器有着强大的功能但同时学习起来比较复习。
+ 这些编辑器有着强大的功能,但同时学习起来比较复杂。
不管怎样,假如您从事文字编辑方面的工作,
学习如vim 或 emacs
这些有强大功能的编辑器用法,
在长时间工作里会帮您节省不少的时间。设备和设备节点在一个系统里,硬件描述通常用法就是一个设备对应一个术语,包括磁盘、打印机、显卡和键盘。
当FreeBSD导入时,大多数的设备都能探测到并显示出来,
您也可以查阅/var/run/dmesg.boot,
导入时所有信息都在里面。例如, acd0 就是
首个 IDE 光盘设备, 而 kbd0
则代表键盘。在&unix;操作系统里,大多数设备存在的特殊访问文件就是叫做设备节点,
他们都定位在/dev目录里。建立设备节点
- 当增加一个新设备或付加设备需要寻求支持时,
+ 当增加一个新设备或附加设备需要寻求支持时,
您也许需要在新设备上建立单个或多个的设备节点。MAKEDEV 脚本当系统缺少DEVFS (涉及的是FreeBSD 5.0之前的版本),
建立设备节点可以使用&man.MAKEDEV.8;,就如下面显示的那样:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV ad1这个是一个例子,在安装等二个IDE设备时去建立设备节点。DEVFS (DEVice 文件系统) 这个设备文件系统, 或叫 DEVFS,
为内核的设备命名在整体文件系统命名里提供通道,
并不是建立或更改设备节点,
DEVFS只是为您的特别文件系统进行维护。更多的资料请查 &man.devfs.5; 手册。
DEVFS在FreeBSD 5.0或更高的版本里是默认使用。二进制文件格式要理解为什么 &os; 使用 &man.elf.5; 格式, 您必须首先了解一些 &unix; 系统中的
三种 主要 可执行文件格式的有关知识:&man.a.out.5;是最古老和经典的 &unix; 目标文件格式,
这种格式在其文件的开始处有一个短小而又紧凑的首部,
该首部带有一个魔幻数字,用来标识具体的格式(更多详情参见&man.a.out.5;)。
这种格式包含3个要装载入内存的段:.text, .data, 和 .bss,以及
一个符号表和一个字符串表。COFFSVR3目标文件格式。其文件头现在包括一个区段表(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格式更优越
的性能。诸如COFF,ECOFF,还有其它
一些晦涩难懂的格式正是在这个阶段被发明出来的,人们也研究了这些格式的局限性,
慢慢地最终落实到ELF格式。同时,程序的大小变得越来越大,磁盘空间(以及物理内存)相对来说却仍然较小,
因此共享库的概念便产生了。VM系统也变得越来越复杂了。当所有这些进步都建立在
a.out格式的基础上的时候,它的可用性随着每个新特性
的产生就受到了严重考验。并且,人们还希望可以在运行时动态装载某些东西,或者
在初始化代码运行以后可以丢弃部分程序代码,以便节约主存储器和交换区。编程语言
也变得越来越复杂,人们希望可以在main()函数执行之前自动执行某些代码。为了实现
所有这些功能,人们对a.out格式作了很多改动(hack),
他们在某个阶段里基本也是可行的。随着时间的推移,a.out格式
不得不增加大量的代码和复杂度来满足这些需求。虽然ELF格式
解决了许多这样的问题,但是从一个可用的系统迁移到另一个系统却是痛苦的。因此
直到继续保留a.out格式的代价比迁移到ELF格式
的代价还大的时候,人们才会最终转换到ELF格式。然而,随着时间的推移,FreeBSD系统本身的编译工具(特别是汇编器和装载器)
赖以派生的编译工具,其发展却形成了两个平行的分支。FreeBSD这个分支增加了共享库,
并修改了一些错误。而原先编写了这些工具的GNU人则重写了这些工具,并对交叉编译提供了
更简化的支持,还随意插入了不同格式的支持,等等。虽然很多人希望创建针对FreeBSD的
交叉编译器,但他们却并未如愿以偿,因为FreeBSD的as
和ld的源代码更为老旧,所以无法完成这个任务。
新的GNU工具链(binutils)则确实支持交叉编译,ELF
格式,共享库,C++扩展,等等。并且,由于很多供应商都发布ELF格式的
二进制文件,因而让FreeBSD能够运行它们将是一个很好的事情。ELF格式比a.out格式开销要大些,同时也
允许基础系统有更好的扩展性。ELF格式的有关工具有着更好的维护,
并且提供交叉编译支持,这对许多人来说是很重要的。ELF格式可能会稍微
慢一些,但很难测量出来。另外,在这两者之间,有许多细节也是不同的,比如它们映射页面的方式,
处理初始化代码的方式,等等。所有这些都不太重要,但这也确实是不同之处。在将来的适当时候,
GENERIC内核将不再支持a.out格式,并且,
当不再需要运行遗留的a.out格式程序时,内核也将不再提供对其的支持。取得更多的资讯联机手册联机手册最详细的使用说明文档莫过于 FreeBSD 里的联机手册了。
几乎每一个程序都会附上一份简短说明,
以介绍这个程序的的基本功能以及参数的用法。
我们能通过 man 命令来阅读这些说明, 而使用
man 命令却是简单的事情:&prompt.user; man commandcommand 就是您要了解的命令命称。
举个例子,想了解 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/bibliography/chapter.sgml b/zh_CN.GB2312/books/handbook/bibliography/chapter.sgml
index 4860c6a2d5..fcb48da334 100644
--- a/zh_CN.GB2312/books/handbook/bibliography/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/bibliography/chapter.sgml
@@ -1,634 +1,634 @@
参考文献尽管手册页能够提供对于 FreeBSD 操作系统最为权威的参考资料,它们有时却不能告诉我们如何让整个系统很好地运转起来。
因此,一本关于 &unix; 系统管理的好书,以及一份好的用户手册是不可或缺的。关于 FreeBSD 的专业书籍与杂志非英文的书籍和杂志:FreeBSD 入门与应用 (繁体中文)。FreeBSD 技术内幕(中译本),
机械工业出版社。ISBN 7-111-10201-0。
FreeBSD 使用大全 第一版,
机械工业出版社。ISBN 7-111-07482-3。
FreeBSD 使用大全 第二版,
机械工业出版社。ISBN 7-111-10286-X。
FreeBSD Handbook (第二版中译本),
人民邮电出版社。ISBN 7-115-10541-3。
FreeBSD 3.x Internet 高级服务器的架设与管理
清华大学出版社。ISBN 7-900625-66-6。FreeBSD & Windows 集成组网实务,中国铁道出版社。ISBN 7-113-03845-X。FreeBSD 网站架设实务,中国铁道出版社。ISBN 7-113-03423-3。FreeBSD for PC 98'ers (日文, 出版商:SHUWA System
Co, LTD. ISBN 4-87966-468-5 C3055 P2900E。FreeBSD (日文, 出版商:CUTT. ISBN 4-906391-22-2
C3055 P2400E.Complete Introduction to FreeBSD (日文, 出版商:Shoeisha Co., Ltd. ISBN 4-88135-473-6 P3600E.Personal UNIX Starter Kit FreeBSD (日文, 出版商:ASCII. ISBN 4-7561-1733-3 P3000E.FreeBSD Handbook (日文译本, 出版商:ASCII. ISBN 4-7561-1580-2
P3800E.FreeBSD mit Methode (德文, 出版商:Computer und
Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.FreeBSD 4 - Installieren, Konfigurieren, Administrieren
(德文, 出版商:Computer und Literatur Verlag, 2001.
ISBN 3-932311-88-4.FreeBSD 5 - Installieren, Konfigurieren, Administrieren
(德文), 出版商: Computer und Literatur Verlag, 2003.
ISBN 3-936546-06-1.
FreeBSD de Luxe (德文), 出版商:
Verlag Modere Industrie,
2003. ISBN 3-8266-1343-0.
FreeBSD Install and Utilization Manual (日文), 出版商: Mainichi Communications Inc..Onno W Purbo, Dodi Maryanto, Syahrial Hubbany, Widjil Widodo
Building Internet Server with
FreeBSD (印尼文), 出版商: Elex Media Komputindo.英文版的书籍和杂志:Absolute
BSD: The Ultimate Guide to FreeBSD, 出版商:
No Starch Press, 2002.
ISBN: 1886411743
The Complete FreeBSD, 出版商:
O'Reilly, 2003.
ISBN: 0596005164The
FreeBSD Corporate Networker's Guide, 出版商:
Addison-Wesley, 2000.
ISBN: 0201704811
FreeBSD: An Open-Source Operating System for Your Personal
Computer, 出版商: The Bit Tree Press, 2001.
ISBN: 0971204500Teach Yourself FreeBSD in 24 Hours, 出版商:
Sams, 2002.
ISBN: 0672324245FreeBSD unleashed, 出版商:
Sams, 2002.
ISBN: 0672324563FreeBSD: The Complete Reference, 出版商:
McGrawHill, 2003.
ISBN: 0072224096 用户指南Computer Systems Research Group, UC Berkeley. 4.4BSD
User's Reference Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-075-9Computer Systems Research Group, UC Berkeley. 4.4BSD
User's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-076-7UNIX in a Nutshell. O'Reilly &
Associates, Inc., 1990. ISBN 093717520XMui, Linda. What You Need To Know When You Can't Find
Your UNIX System Administrator. O'Reilly &
Associates, Inc., 1995. ISBN 1-56592-104-6Ohio State
University 编写了一份 UNIX
介绍性课程 ,并提供在线的 HTML 和 PostScript 版本。这份文档的意大利文 翻译
是 FreeBSD Italian Documentation Project 的一部分。Jpman Project, Japan
FreeBSD Users Group. FreeBSD User's
Reference Manual (日文译本). Mainichi Communications
Inc., 1998. ISBN4-8399-0088-4 P3800E.Edinburgh
University has written an Online Guide for
newcomers to the UNIX environment.管理员指南Albitz, Paul and Liu, Cricket. DNS and
BIND, 4th Ed. O'Reilly & Associates, Inc., 2001.
ISBN 1-59600-158-4Computer Systems Research Group, UC Berkeley. 4.4BSD
System Manager's Manual. O'Reilly & Associates,
Inc., 1994. ISBN 1-56592-080-5Costales, Brian, et al. Sendmail, 2nd Ed.
O'Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0Frisch, Æleen. Essential System
Administration, 2nd Ed. O'Reilly & Associates,
Inc., 1995. ISBN 1-56592-127-5Hunt, Craig. TCP/IP Network
Administration, 2nd Ed. O'Reilly & Associates, Inc., 1997.
ISBN 1-56592-322-7Nemeth, Evi. UNIX System Administration
Handbook. 3rd Ed. Prentice Hall, 2000. ISBN
0-13-020601-6Stern, Hal Managing NFS and NIS O'Reilly
& Associates, Inc., 1991. ISBN 0-937175-75-7Jpman Project, Japan
FreeBSD Users Group. FreeBSD System
Administrator's Manual (日文译本). Mainichi Communications
Inc., 1998. ISBN4-8399-0109-0 P3300E.Dreyfus, Emmanuel. Cahiers
de l'Admin: BSD 2nd Ed. (in French), Eyrolles, 2004.
ISBN 2-212-11463-X开发指南Asente, Paul, Converse, Diana, and Swick, Ralph.
X Window System Toolkit. Digital Press,
1998. ISBN 1-55558-178-1Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Reference Manual. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-078-3Computer Systems Research Group, UC Berkeley. 4.4BSD
Programmer's Supplementary Documents. O'Reilly &
Associates, Inc., 1994. ISBN 1-56592-079-1Harbison, Samuel P. and Steele, Guy L. Jr. C: A
Reference Manual. 4rd ed. Prentice Hall, 1995.
ISBN 0-13-326224-3Kernighan, Brian and Dennis M. Ritchie. The C
Programming Language.. PTR Prentice Hall, 1988.
ISBN 0-13-110362-9Lehey, Greg. Porting UNIX Software.
O'Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7Plauger, P. J. The Standard C Library.
Prentice Hall, 1992. ISBN 0-13-131509-9Spinellis, Diomidis. Code
Reading: The Open Source Perspective.
Addison-Wesley, 2003. ISBN 0-201-79940-5Stevens, W. Richard. Advanced Programming in the UNIX
Environment. Reading, Mass. : Addison-Wesley, 1992.
ISBN 0-201-56317-7Stevens, W. Richard. UNIX Network
Programming. 2nd Ed, PTR Prentice Hall, 1998. ISBN
0-13-490012-XWells, Bill. Writing Serial Drivers for UNIX.
Dr. Dobb's Journal. 19(15), December 1994.
pp68-71, 97-99.操作系统原理Andleigh, Prabhat K. UNIX System
Architecture. Prentice-Hall, Inc., 1990. ISBN
0-13-949843-5Jolitz, William. Porting UNIX to the 386.
Dr. Dobb's Journal. 1991年1月 - 1992年6月 Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and
John Quarterman The Design and Implementation of the
4.3BSD UNIX Operating System. Reading, Mass. :
Addison-Wesley, 1989. ISBN 0-201-06196-1Leffler, Samuel J., Marshall Kirk McKusick, The Design
and Implementation of the 4.3BSD UNIX Operating System: Answer
Book. Reading, Mass. : Addison-Wesley, 1991. ISBN
0-201-54629-9McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and
John Quarterman. The Design and Implementation of the
4.4BSD Operating System. Reading, Mass. :
Addison-Wesley, 1996. ISBN 0-201-54979-4(这本书的第二章的 在线版本 是
FreeBSD Documentation Project的一部分, 此外,第九章可以在
这里找到.)
- Marshall Kirk McKusick, George V. Neville-NeilThe Design
- and Implementation of the FreeBSD UNIX Operating System.
+ Marshall Kirk McKusick, George V. Neville-Neil The Design
+ and Implementation of the FreeBSD Operating System.
Boston, Mass. : Addison-Wesley, 2004. ISBN 0-201-70245-2Stevens, W. Richard. TCP/IP Illustrated, Volume 1:
The Protocols. Reading, Mass. : Addison-Wesley,
1996. ISBN 0-201-63346-9Schimmel, Curt. Unix Systems for Modern
Architectures. Reading, Mass. : Addison-Wesley, 1994.
ISBN 0-201-63338-8Stevens, W. Richard. TCP/IP Illustrated, Volume 3:
TCP for Transactions, HTTP, NNTP and the UNIX Domain
Protocols. Reading, Mass. : Addison-Wesley, 1996.
ISBN 0-201-63495-3Vahalia, Uresh. UNIX Internals -- The New
Frontiers. Prentice Hall, 1996. ISBN
0-13-101908-2Wright, Gary R. and W. Richard Stevens. TCP/IP
Illustrated, Volume 2: The Implementation. Reading,
Mass. : Addison-Wesley, 1995. ISBN 0-201-63354-X信息安全方面的参考文献Cheswick, William R. and Steven M. Bellovin. Firewalls
and Internet Security: Repelling the Wily Hacker.
Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-63357-4Garfinkel, Simson and Gene Spafford.
Practical UNIX & Internet Security.
2nd Ed. O'Reilly & Associates, Inc., 1996. ISBN
1-56592-148-8Garfinkel, Simson. PGP Pretty Good
Privacy O'Reilly & Associates, Inc., 1995. ISBN
1-56592-098-8硬件参考Anderson, Don and Tom Shanley. Pentium Processor
System Architecture. 2nd Ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-40992-5Ferraro, Richard F. Programmer's Guide to the EGA,
VGA, and Super VGA Cards. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-62490-7Intel 公司在他们的 开发人员网站上,
提供了关于他们的 CPU,芯片组,以及标准的文档。多数是PDF文件.Shanley, Tom. 80486 System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40994-1Shanley, Tom. ISA System Architecture.
3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN
0-201-40996-8Shanley, Tom. PCI System Architecture.
4th ed. Reading, Mass. : Addison-Wesley, 1999. ISBN
0-201-30974-2Van Gilluwe, Frank. The Undocumented PC, 2nd Ed.
Reading, Mass: Addison-Wesley Pub. Co., 1996. ISBN
0-201-47950-8Messmer, Hans-Peter. The Indispensable PC Hardware Book, 4th Ed.
Reading, Mass: Addison-Wesley Pub. Co., 2002. ISBN
0-201-59616-4&unix; 历史Lion, John Lion's Commentary on UNIX, 6th Ed. With
Source Code. ITP Media Group, 1996. ISBN
1573980137Raymond, Eric S. The New Hacker's Dictionary, 3rd
edition. MIT Press, 1996. ISBN
0-262-68092-0. 它也被称作 Jargon
FileSalus, Peter H. A quarter century of UNIX.
Addison-Wesley Publishing Company, Inc., 1994. ISBN
0-201-54777-5Simon Garfinkel, Daniel Weise, Steven Strassmann. The
UNIX-HATERS Handbook. IDG Books Worldwide, Inc.,
1994. ISBN 1-56884-203-1Don Libes, Sandy Ressler Life with UNIX
— special edition. Prentice-Hall, Inc., 1989. ISBN
0-13-536657-7BSD 族谱.
或在任何一台较新的 FreeBSD 机器中的 /usr/share/misc/bsd-family-tree
。The BSD Release Announcements collection.
1997. Networked Computer Science Technical Reports
Library. Old BSD releases from the Computer Systems Research
group (CSRG).
:
The 4CD set covers all BSD versions from 1BSD to 4.4BSD and
4.4BSD-Lite2 (but not 2.11BSD, unfortunately). As well, the last
disk holds the final sources plus the SCCS files.各种期刊The C/C++ Users Journal. R&D
Publications Inc. ISSN 1075-2838Sys Admin — The Journal for UNIX System
Administrators Miller Freeman, Inc., ISSN
1061-2688freeX — Das Magazin für Linux - BSD - UNIX
(德文) Computer- und Literaturverlag GmbH, ISSN 1436-7033
diff --git a/zh_CN.GB2312/books/handbook/config/chapter.sgml b/zh_CN.GB2312/books/handbook/config/chapter.sgml
index 512f6d29b9..c4983bd5b7 100644
--- a/zh_CN.GB2312/books/handbook/config/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/config/chapter.sgml
@@ -1,2619 +1,2620 @@
ChernLeeWritten by MikeSmithBased on a tutorial written by MattDillonAlso based on tuning(7) written by 设置和调整概述系统配置系统优化&os; 的一个重要问题是系统配置。
正确地配置系统能充分地减少以后维护和升级系统所需的工作量。
这章将解释一些 &os; 的配置过程,包括一些可以调整的 &os;
系统的一些参数。阅读完本章之后您将会知道:怎样有效的利用文件系统和交换分区。rc.conf 的基本设置和
/usr/local/etc/rc.d 启动体系。怎样设置和测试一块网卡。怎样在您的网络设备上设置虚拟主机。怎样使用 /etc 下的各配置文件。怎样使用 sysctl 来调整 &os; 系统变量。怎样调整磁盘性能和修改内核限制。在阅读本章之前,您应该了解:了解 &unix; 和 &os; 的基础知识
()。熟悉内核配置编译的基础知识
()。初步配置分区规划分区规划/etc/var/usr基本分区当使用 &man.disklabel.8; 或者 &man.sysinstall.8;
来分割您的文件系统的时候,
要记住硬盘驱动器外磁道传输数据要比从内磁道传输数据快。
因此应该将小的和经常访问的文件系统放在驱动器靠外的位置,
一些大的分区比如 /usr
应该放在比较靠里的位置。
以类似这样的顺序建立分区是一个不错的主意:root,swap,
/var,/usr。/var 的大小能反映您的机器使用情况。
它用来存储邮件,日志文件和打印队列缓存,
特别是邮箱和日志文件可能会达到无法预料的大小,
这主要取决于在您的系统上有多少用户和您的日志文件可以保存多长时间。
一般大多数用户不需要一个 G 以上的空间,但要记住
/var/tmp 应该足够大来以便存储一些
packages。/usr 分区存储很多用来系统运行所需要的文件例如
&man.ports.7; (建议这样做) 和源代码 (可选的)。安装的时候这两项都是可选的。
这个分区至少要保留两个 G 的可用空间。当选择分区大小的时候,记住保留一些空间。
用完了一个分区的空间而在另一个分区上还有很多,
可能会导致出现一些错误。一些用户会发现 &man.sysinstall.8; 的
Auto-defaults 自动分区有时会分配给
/var 和 / 较小的分区空间。
分区应该精确一些并且大一些。交换分区交换分区分配交换分区一般来讲,交换分区应该大约是系统内存 (RAM) 的两倍。
例如,如果机器有 128M 内存,交换文件应该是 256M。
较小内存的系统可以通过多一点地交换分区来提升性能。
不建议小于 256 兆的交换分区,并且扩充您的内存应该被考虑一下。
当交换分区最少是主内存的两倍的时候,内核的 VM (虚拟内存)
页面调度算法可以将性能调整到最好。如果您给机器添加更多内存,
配置太小的交换分区会导致 VM 页面扫描的代码效率低下。在使用多块SCSI磁盘(或者不同控制器上的IDE磁盘)的大系统上,
建议在每个驱动器上建立交换分区(直到四个驱动器)。
交换分区应该大约一样大小。内核可以使用任意大小,
但内部数据结构则是最大交换分区的 4 倍。保持交换分区同样的大小,
可以允许内核最佳地调度交换空间来访问磁盘。
即使不太使用,分配大的交换分区也是好的,
在被迫重启之前它可以让您更容易的从一个失败的程序中恢复过来。为什么要分区?一些用户认为一个单独的大分区将会很好,
但是有很多原因会证明为什么这是个坏主意。首先,
每个分区有不同的分区特性,因此分开可以让文件系统调整它们。
例如,根系统和 /usr 一般只是读取,写入很少。
很多读写频繁的被放在 /var 和
/var/tmp中。适当的划分一个系统,用比较小的分区方法,
那些以写为主的分区将不会比以读为主的分区付出更高的代价。
将以写为主的分区放在靠近磁盘的边缘,
例如放在实际的大硬盘的前面代替放在分区表的后面,将会提高您需要的分区的
I/O 性能。现在可能也需要在比较大的分区上有很好的 I/O 性能,
把他们移动到磁盘外围不会带来多大的性能提升,反而把
/var 移到外面会有很好的效果。最后涉及到安全问题。
一个主要是只读的小的、整洁的根分区可以提高从一个严重的系统崩溃中恢复过来的机会。
核心配置rc 文件rc.conf系统的配置信息主要位于 /etc/rc.conf。
这个文件包含了配置信息很大的一部分,主要在系统启动的时候来配置系统,
这个名字直接说明了这点;它也是 rc*
文件的配置信息。系统管理员应该在 rc.conf 文件中建立记录来覆盖
/etc/defaults/rc.conf 中的默认设置。
这个默认文件不应该被逐字的拷贝到
/etc —— 它包含的是默认值而不是一个例子。
所有特定的改变应该在 rc.conf 中。为了降低管理成本,有很多策略可以应用在成群的应用程序中来从系统指定的配置中分离
site-wide 配置。建议的方法是将 site-wide 配置放在另一个文件中,例如
/etc/rc.conf.site,
并且把它包含进然后把这个文件包括进只包含系统指定信息的
/etc/rc.conf。由于 rc.conf 可以被 &man.sh.1;
阅读,所以达到这个目的很简单,例如:rc.conf: . rc.conf.site
hostname="node15.example.com"
network_interfaces="fxp0 lo0"
ifconfig_fxp0="inet 10.1.1.1"rc.conf.site: defaultrouter="10.1.1.254"
saver="daemon"
blanktime="100"rc.conf.site 文件会被分发给每一个使用
rsync 或相似程序的系统,同时
rc.conf 文件仍然保持独立。使用 &man.sysinstall.8; 或者 make world
来升级系统不会覆盖 rc.conf
文件, 所以系统配置信息不会丢失。应用程序配置典型的,被安装的应用程序有他自己的配置文件、语法等等。
从基本系统中分开他们是很重要的以至于他们可以容易的被
package 管理工具定位和管理/usr/local/etc一般来说,这些文件被安装在
/usr/local/etc。这个例子中,
一个应用程序有很多配置文件并且创建了一个子目录来存放他们。通常,当一个 port 或者 package 被安装的时候,
配置文件示例也同样被安装了。它们通常用 .default
的后缀来标识。如果不存在这个应用程序的配置文件,它们会通过拷贝
.default 文件来创建。例如,看一下这个目下的内容 /usr/local/etc/apache:-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf
-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default
-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf
-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf.default
-rw-r--r-- 1 root wheel 12205 May 20 1998 magic
-rw-r--r-- 1 root wheel 12205 May 20 1998 magic.default
-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types
-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types.default
-rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf
-rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.default文件大小显示了只有 srm.conf 改变了。以后
Apache 的升级就不会改变这个文件。TomRhodesContributed by 启动服务服务很多 &os; 用户选择用ports来安装第三方软件。
大多数情况下需要一种方式来配置软件,
这种方式可以让软件在系统初始化之后就启动。
很多软件需要在系统初始化时就启动,类似于其中的两个
mail/postfix 或者
www/apache13。
因此必须有一个行之有效的方法来配合第三方软件,
偶然的出错会导致程序不能正确启动。&os; 包含的大多数服务,例如 &man.cron.8;,
就是通过系统启动脚本启动的。 这些脚本也许会有些不同,
这取决于 &os; 版本。 但是不管怎样,
需要考虑的一个重要方面是他们的启动配置文件要能被基本启动脚本识别捕获。自从 rcNG 出现以来,系统为第三方软件初始化变得清晰而有条理了。
应用程序将会把一个简单的启动脚本放在
/usr/local/etc/rc.d
目录,系统初始化脚本会读取这个目录下面的脚本。
这些脚本在系统启动之后被执行。当很多人花费时间把旧的配置格式融入到新系统的时候,
仍然残留有一些第三方软件需要把脚本放在上述目录中。
这些脚本中的细微差别依赖于 rcNG 是否被使用。
&os; 5.1 之前的所有版本并不需要额外的配置;
当然,大多数情况下这些久经考验的脚本都会工作的很好。每个脚本都应该遵守 &os; 版本所需求的一些规定:
每个脚本必须在文件名最后添加一个 .sh
的扩展名,并且这个脚本能被系统执行。
后者可以通过 chmod 把权限设置为
755来实现。
它还应该能接受 start
选项来启动程序并且接受 stop
选项来结束程序。一个简单的脚本看起来可能会像这样:#!/bin/sh
echo -n ' utility'
case "$1" in
start)
/usr/local/bin/utility
;;
stop)
kill -9 `cat /var/run/utility.pid`
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0
- 这个脚本提供了一个 start
- 和 stop 选项,
- 这可以让应用程序被当作组件(utility)来引用。
- 可以在 /etc/rc.conf 写这么一行:
+ 这个脚本提供了一个 stop 和
+ start 选项, 用于操作这里称之为
+ utility 的应用程序。 可以在
+ /etc/rc.conf 中加入这样一行:utility_enable="YES"可以用如下方法来启动:&prompt.root; /usr/local/etc/rc.d/utility.sh start现在不是所有第三方软件都需要在
rc.conf有这么一行,
不过几乎每天都有port被修改来接受这个配置。
对于一个特定的应用程序来说,
你可以查看安装的最终输出来获得更多信息。
一些第三方软件仍然提供一个脚本来供 rcNG 来使用,
这将在下一节介绍。扩展应用程序配置现在 &os; 包含rcNG,软件启动配置更加理想了,
当然也变得更深奥。
用 rcNG
这章介绍的关键字,应用程序现在被配置为可以在某一个服务之后启动,
例如DNS;
可能还要在 rc.conf
传递更多的参数给启动脚本。
一个基本的脚本看起来有点象下面这个样子:#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: FreeBSD shutdown
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
# SET THEM IN THE /etc/rc.conf FILE
#
utility_enable=${utility_enable-"NO"}
utility_flags=${utility_flags-""}
utility_pidfile=${utility_pidfile-"/var/run/utility.pid"}
. /etc/rc.subr
name="utility"
rcvar=`set_rcvar`
command="/usr/local/sbin/utility"
load_rc_config $name
pidfile="${utility_pidfile}"
start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utility_flags} ${command_args}"
run_rc_command "$1"这个脚本将保证
utility 能够在
login 服务之前, 并且在
daemon 服务之后启动。 它同时也提供了一个设置和跟踪
PID, 也称作进程
ID 文件的方法。这个新方法也使得命令行参数、包含 /etc/rc.subr
中所提供的功能, 兼容 &man.rcorder.8; 工具并提供更简单的通过
rc.conf 文件来配置的方法。 实际上它甚至可以放到
/etc/rc.d 目录中。
当然, 在使用 &man.mergemaster.8; 来完成软件升级时这会带来一些麻烦。使用服务来启动服务其他服务, 例如 POP3 服务器,
IMAP, 等等, 可以通过
&man.inetd.8; 来启动。 这样的过程包括从
ports collection 安装相应的程序, 并把配置添加进
/etc/inetd.conf 文件, 或去掉当前配置中的注释。
如何使用 inetd 并进行配置在
inetd 一节中有深入的阐述。一些情况下, 通过
&man.cron.8; 来启动系统服务也是一种可行的选择。
这种方法有很多好处, 因为 cron 会以
crontab 的文件属主身份执行那些进程。
这使得普通用户也能够执行他们的应用。cron 工具提供了一个独有的功能, 以
@reboot 来指定时间。
这样的设置将在 &man.cron.8; 启动时运行,
通常这也是系统初始化的时候。TomRhodesContributed by 配置 croncron配置&os; 最有用的软件包(utilities)中的一个是 &man.cron.8;。
cron 软件在后台运行并且经常检查
/etc/crontab 文件。cron
软件也检查 /var/cron/tabs 目录,搜索新的
crontab 文件。这些 crontab
文件存储一些 cron 在特定时间执行任务的信息。cron 程序使用两种不同类型的配置文件,
即系统 crontab 和用户 crontabs。 两种格式的唯一区别是第六个字段。
在系统 crontab 中,第六个字段是用于执行命令的用户名。
这给予了系统 crontab 以任意用户身份执行命令的能力。
在用户 crontab 中, 第六个字段是要执行的命令,
所有的命令都会以这个用户自己的身份执行;
这是一项重要的安全功能。用户 crontabs 允许每一个用户在不需要 root 特权的前提下调度自己的任务。
在用户的 crontab 中的命令将以该用户的权限执行。同任何其他用户一样, root 用户也可以有自己的 crontab。
它不同于 /etc/crontab (也就是系统 crontab)。
因为有系统 crontab 的存在,通常不需要给 root
建立单独的 crontab。让我们来看一下 /etc/crontab 文件:# /etc/crontab - root's crontab for &os;
#
# $&os;: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#
#minute hour mday month wday who command
#
#
*/5 * * * * root /usr/libexec/atrun 像大多数 &os; 配置文件一样,# 字符是注释。
作为什么和为什么要执行,可以加一个注释来描述以便将来提醒您。
注释不能跟命令一样在同一行上否则他们会被看成命令的一部分。
注释应该另起一行。空行将会被忽略。首先应该定义环境变量。等号
(=) 字符用来定义任何环境变量,像这个例子用到了
SHELL,PATH 和 HOME
变量。如果 shell 行被忽略掉,cron 将会用默认值
sh。如果 变量被忽略,
那么就没有默认值并且需要指定文件绝对位置。如果
被忽略,cron 将用用执行者的 home 目录。这一行定义了七个字段。它们是 minute、
hour、mday、
month、wday、
who 和 command。
它们差不多已经说明了各自的用处。Minute 是命令要运行时的分钟,Hour
跟 minute 差不多,只是用小时来表示。Mday 是每个月的天。Month 跟 hour
还有 minute 都差不多,用月份来表示。wday 字段表示星期几。
所有这些字段的值必须是数字并且用24小时制来表示。who
字段是特别的,并且只在 /etc/crontab 文件中存在。
这个字段指定了命令应该以哪个用户的身份来运行。当一个用户添加了他(她)的
crontab 文件的时候,他们就会没有这个字段选项。最后,是
command 字段。这是最后的一个字段,
所以自然就是它指定要运行的程序。最后一行定义了上面所说的值。注意这里我们有一个
*/5 列表,紧跟着是一些 *
字符。* 字符代表开始到最后,
也可以被解释成 每次。所以,根据这行,
显然表明了无论在何时每隔 5 分钟以 root
身份来运行 atrun 命令。查看 &man.atrun.8;
手册页以获得 atrun 的更多信息。命令可以有任意多个传递给它们的标志。无论怎样,
扩展到多行的命令应该用反斜线(\)来续行。这是每个 crontab 文件的基本设置,
虽然它们有一个不同。第六行我们指定的用户名只存在于系统
/etc/crontab 文件。这个字段在普通用户的
crontab 文件中应该被忽略。安装 Crontab绝对不要用这种方法来编辑/安装系统 crontab。
您需要做的只是使用自己喜欢的编辑器:
cron 程序会注意到文件发生了变化,
并立即开始使用新的版本。参见
这个 FAQ 项目 以了解进一步的情况。要安装刚写好的用户
crontab,
首先使用最习惯的编辑器来创建一个符合要求格式的文件,然后用
crontab 程序来完成。最常见的用法是:&prompt.user; crontab crontab-fileIn this example, crontab-file is the filename
of a crontab that was previously created.还有一个选项用来列出安装的 crontab 文件:
只要传递 选项给 crontab
然后看一下输出。用户想不用模板(已经存在的文件)而直接安装他的 crontab 文件,用
crontab -e 选项也是可以的。
它将会启动一个编辑器并且创建一个新文件,当这个文件被保存的时候,
它会自动的用 crontab 来安装这个文件。
如果您稍后想要彻底删除自己的用户 crontab
可以使用 crontab 的
选项。
TomRhodesContributed by 在 FreeBSD 5.X 下使用 rcrcNG&os; 最近整合了 NetBSD 的 rc.d
系统以完成系统初始化。用户要注意 /etc/rc.d
目录下的文件。这些文件中的很多都是可以接受 、
和 选项的基本服务。
例如,&man.sshd.8; 可以用下面的命令重启:&prompt.root; /etc/rc.d/sshd restart其它的服务跟这个过程相似。当然,在 &man.rc.conf.5;
指定的服务通常可以自动启动。例如,让网络地址转换(NAT)
守护进程在系统启动的时候启动可以简单的在
/etc/rc.conf 中添加下面一行:natd_enable="YES"如果 行已经存在,
只要简单的把 改成
即可。
rc 脚本在下次重新启动的时候会自动的装载所需要的服务,
像下面所描述的那样。由于 rc.d
系统在系统启动/关闭时首先启动/停止服务,如果设置了适当的
/etc/rc.conf 变量,标准的
、 和
选项将会执行他们的动作。例如
sshd restart 命令只在 /etc/rc.conf
中的 sshd_enable 设置成
的时候工作。不管是否在 /etc/rc.conf 中设置了,要
、 或者
一个服务,命令前可以加上一个force前缀。例如要不顾当前
/etc/rc.conf 的设置重新启动
sshd,执行下面的命令:
&prompt.root; /etc/rc.d/sshd forcerestart用选项 可以简单来的检查
/etc/rc.conf 中用适当的 rc.d
脚本启动的服务是否被启用。从而管理员可以运行这样的程序来检查
sshd 是否真的在 /etc/rc.conf
中被启动了:&prompt.root; /etc/rc.d/sshd rcvar
# sshd
$sshd_enable=YES第二行 (# sshd) 是从
sshd 命令中输出的,而不是
root 控制台。为了确定一个服务是否真的在运行,可以用
选项。例如验证 sshd 是否真的启动了:&prompt.root; /etc/rc.d/sshd status
sshd is running as pid 433. 一个服务也是可以的。
这将要尝试发送一个信号给一个单独的服务,
强制这个服务重新装载它的配置文件。大多数情况这意味着给服务发送一个
SIGHUP 信号。
rcNG 结构不仅仅是给网络服务提供的,
它也给很多系统初始化提供服务。例如,处理 bgfsck
文件。当这个脚本执行的时候,它会输出下列信息:
Starting background file system checks in 60 seconds.这个文件用做后台文件系统检查,系统初始化的时候完成。很多系统服务依赖其他服务提供的相应功能。例如,NIS 和其他基于
RPC 的服务启动可能在 rpcbind 服务启动之前失败。
要解决这个问题,依赖关系信息和其他头信息当作注释被包含在每个启动脚本文件的前面。
程序在系统初始化时分析这些注释以决定调用其他系统服务来满足依赖关系。
下面的字句可能会包含在每个启动脚本文件的前面:PROVIDE: Specifies the services this file provides.REQUIRE: Lists services which are required for this
service. This file will run after
the specified services.BEFORE: Lists services which depend on this service.
This file will run before
the specified services.KEYWORD: &os; or NetBSD. This is used for *BSD dependent features.通过这种方法,系统管理员可以容易的控制系统而不用像其他一些
&unix; 操作系统一样要用 runlevels 来控制。&os;5.X 的附加信息: rc.d 系统可以在
&man.rc.8; 和 &man.rc.subr.8; 手册页中找到。MarcFonvieilleContributed by 设置网卡网卡配置现在我们不可想象一个计算机没有网络连接的情况。
添加和配置一块网卡是任何 &os; 系统管理员的一项基本任务。
查找正确的驱动程序网卡配置查找驱动程序在开始之前,您应该知道您的网卡类型,它用的芯片和它是 PCI
还是 ISA 网卡。&os; 支持很多种 PCI 和 ISA 网卡。
可以查看您的版本硬件兼容性列表以确定您的网卡被支持。
现在您已经确信您的网卡被支持了,您需要为这块网卡选择正确的驱动程序。
/usr/src/sys/i386/conf/LINT
文件将会给您一些被支持的芯片/网卡驱动信息的列表。
如果您对哪个是正确的驱动有疑问,阅读驱动的使用手册。
手册会提供所支持硬件的更多信息和相关可能产生的问题。如果您有一个普通的网卡,大多数时候您不需要为驱动浪费精力。
常用的网卡在 GENERIC 内核中已经支持了,
所以您的网卡在启动时就会显示出来,像是:dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 at device 11.0 on pci0
dc0: Ethernet address: 00:a0:cc:da:da:da
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 at device 12.0 on pci0
dc1: Ethernet address: 00:a0:cc:da:da:db
miibus1: <MII bus> on dc1
ukphy1: <Generic IEEE 802.3u media interface> on miibus1
ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto在这个例子中,我们看到有两块使用 &man.dc.4; 驱动的网卡在系统中。为了使用网卡,需要装载正确的驱动程序。这可能通过两种途径来完成。
最简单的方法是简单的用 &man.kldload.8; 来装载一个驱动该网卡的内核模块。
一个模块不是支持所有网卡驱动的(例如ISA 网卡用 &man.ed.4; 来驱动)。
另一种可选择的方法是您可以把支持您网卡的驱动静态的编译进内核。查看
/usr/src/sys/i386/conf/LINT
和手册中的驱动部分来了解把什么添加到您的内核配置文件中。可以查看 以获得更多的重新编译内核的信息。
如果您的网卡在启动时被您的内核 (GENERIC)
检测到了,那么就没有必要建立一个新内核了。
配置网卡网卡配置配置现在正确的网卡驱动程序已经装载,那么就应该配置它了。
跟其他配置一样,网卡可以在安装时用
sysinstall 来配置。要显示您系统上的网络接口的配置,输入下列命令:&prompt.user; ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:a0:cc:da:da:da
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
ether 00:a0:cc:da:da:db
media: Ethernet 10baseT/UTP
status: no carrier
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
inet 127.0.0.1 netmask 0xff000000
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500老版本的 &os; 可能需要在 &man.ifconfig.8; 后面接
选项,需要了解更多的 &man.ifconfig.8;
语法请查阅使用手册。注意所有关于 IPv6 (inet6
等等) 的记录在这个例子里都被忽略了。在这个例子中,显示出了下列设备:dc0: The first Ethernet
interfacedc1: The second Ethernet
interfacelp0: The parallel port
interfacelo0: The loopback devicetun0: The tunnel device used by
ppp
&os; 使用内核引导时检测到的网卡驱动顺序来命名网卡。例如
sis2 是系统中使用 &man.sis.4;
驱动的第三块网卡。
在这个例子中,dc0
设备启用了。主要表现在:UP 表示这块网卡已经配置完成准备工作。这块网卡有一个 Internet (inet) 地址
(这个例子中是 192.168.1.3)。它有一个有效的子网掩码 (netmask;
0xffffff00 等同于
255.255.255.0)。它有一个有效的广播地址 (这个例子中是
192.168.1.255)。网卡的 MAC (ether) 地址是
00:a0:cc:da:da:da物理传输媒介模式处于自动选择状态
(media: Ethernet autoselect
(100baseTX <full-duplex>))。我们看到
dc1 被配置成运行在
10baseT/UTP 模式下。
要了解驱动媒介类型的更多信息,
请查阅它们的使用手册。连接状态 (status)是
active,也就是说连接信号被检测到了。对于
dc1,我们看到
status: no carrier。
这通常是网线没有插好。如果 &man.ifconfig.8; 的输出显示了类似于:dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 00:a0:cc:da:da:da的信息,那么就是还没有配置网卡。要配置网卡,您需要 root 权限。
网卡配置可以通过使用 &man.ifconfig.8; 命令行方式来完成,
但是这样每次启动都要做一遍。放置网卡配置信息的文件是
/etc/rc.conf。用您自己喜欢的编辑器打开 /etc/rc.conf。
并且您需要为每一块系统中存在的网卡添加一行,
在我们的例子中,添加如下几行:ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"用自己正确的设备名和地址来替换例子中的
dc0,dc1
等内容。您应该应该查阅网卡驱动和 &man.ifconfig.8;
的手册页来了解各选项,也要查看一下 &man.rc.conf.5;
帮助页来了解 /etc/rc.conf 的语法。
如果在安装的时候配置了网络,关于网卡的一些行可能已经存在了。
所以在添加新行前仔细检查一下 /etc/rc.conf。
您也可能需要编辑 /etc/hosts
来添加局域网中不同的机器名称和 IP 地址,如果它们不存在,查看
&man.hosts.5; 帮助和 /usr/share/examples/etc/hosts
以获得更多信息。测试和调试对 /etc/rc.conf
做了必要的修改之后应该重启系统以应用对接口的修改,
并且确认系统重启后没有任何配置错误。系统重启后就应该测试网络接口了。测试以太网卡网卡配置测试网卡为了确认网卡被正确的配置了,在这里我们要做两件事情。首先,
ping 自己的网络接口,接着 ping 局域网内的其他机器。首先测试本地接口:&prompt.user; ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms
--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms现在我们应该 ping 局域网内的其他机器:&prompt.user; ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms
--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms您如果您设置了 /etc/hosts
文件,也可以用机器名来替换 192.168.1.2。调试网卡配置调试调试硬件和软件配置一直是一件头痛的事情,
从最简单的开始可以减轻一些痛苦。
例如网线是否插好了?是否配置好了网络服务?防火墙配置正确吗?
是否使用了被 & os; 支持的网卡?
在发送错误报告之前您应该查看一下硬件说明,
升级 &os; 到最新的 STABLE 版本,
看一下邮件列表或者在 Internet 上搜索一下。如果网卡工作了,
但性能低下,应该好好阅读一下 &man.tuning.7; 联机手册。
您也可以检查一下网络配置,
不正确的设置会导致慢速的网络连接。一些用户可能会在一些网卡上经历一到两次
device timeouts, 这通常是正常现象。
如果经常这样甚至引起麻烦, 则应确定一下它跟其他设备没有冲突。
仔细检查网线连接, 或者换一块网卡。有时用户会看到少量 watchdog timeout
错误。 这种情况要做的第一件事就是检查线缆连接。
一些网卡需要支持总线控制的 PCI 插槽。
在一些老的主板上,只有一个 PCI 插槽支持 (一般是 slot 0)。
检查网卡和主板说明书来确定是不是这个问题。No route to host
通常发生在如果系统不能发送一个路由到目的主机的包的时候。
这在没有指定默认路由或者网线没有插上时会发生。
检查 netstat -rn
的输出并确认有一个有效的路由能到达相应的主机。
如果没有,请查阅 。ping: sendto: Permission denied
错误信息经常由防火墙的配置错误引起。
如果 ipfw 在内核中启用了但是没有定义规则,
那么默认的规则就是拒绝所有通讯,甚至 ping 请求!
查阅 以了解更多信息。有时网卡性能低下或者低于平均水平,
这种情况最好把传输媒介模式从 autoselect
改变为正确的传输介质模式。
这通常对大多数硬件有用, 但可能不会解决所有人的问题。
接着,检查所有网络设置,并且阅读 &man.tuning.7; 手册页。虚拟主机虚拟主机IP 别名 &os; 的一个很普通的用途是虚拟主机站点,
一个服务器虚拟成很多服务器一样提供网络服务。
这通过在一个接口上绑定多个网络地址来实现。一个特定的网络接口有一个真实的地址,
也可能有一些别名地址。这些别名通常用
/etc/rc.conf 中的记录来添加。一个 fxp0 的别名记录类似于:ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"
记住别名记录必须从 alias0
开始并且按顺序递增(例如 _alias1、
_alias2)。
配置程序将会停止在第一个缺少的数字的地方。
计算别名的子网掩码是很重要的,幸运的是它很简单。
对于一个接口来说,必须有一个描述子网掩码的地址。
任何在这个网段下的地址必须有一个全是 1
的子网掩码(通常表示为
255.255.255.255 或
0xffffffff。例如,假设 fxp0 连接到两个网段,
子网掩码是 255.255.255.0 的
10.1.1.0 和子网掩码是
255.255.255.240 的
202.0.75.16。我们将要系统使用从
10.1.1.1 到
10.1.1.5 和从
202.0.75.17 到
202.0.75.20 的地址)。
如前面说明的那样, 只有给定网络范围内的第一个地址 (在这个例子中,
10.0.1.1 和
202.0.75.17) 需要有实际的子网掩码;
所有其它地址 (10.1.1.2
到 10.1.1.5 以及
202.0.75.18 到
202.0.75.20) 必须配置为使用掩码
255.255.255.255。下面的记录会正确的设置这个适配器: ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"配置文件/etc 布局在配置信息中有很多的目录,这些包括:/etc一般的系统配置信息。这儿的数据是与特定系统相关的。/etc/defaults系统配置文件的默认版本。/etc/mail额外的 &man.sendmail.8; 配置信息,其他 MTA 配置文件。
/etc/ppp用于用户级和内核级 ppp 程序的配置。
/etc/namedb&man.named.8; 数据的默认位置。通常 named.conf 和区域文件存放在这里。/usr/local/etc被安装的应用程序配置文件。可以参考每个应用程序的子目录。/usr/local/etc/rc.d被安装程序的 启动/停止 脚本。/var/db特定系统自动产生的数据库文件,像 package 数据库,位置数据库等等。主机名主机名DNS/etc/resolv.confresolv.conf/etc/resolv.conf 指示了 &os; 如何访问域名系统(DNS)。resolv.conf 中最常见的记录是:
nameserver按顺序要查询的名字服务器的 IP 地址,最多三个。search
搜索机器名的列表。这通常由本地机器名的域决定。domain本地域名。一个典型的 resolv.conf 文件:search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30只能使用一个 search 和
domain 选项。如果您在使用 DHCP,&man.dhclient.8; 经常使用从 DHCP
服务器接受来的信息重写 resolv.conf。/etc/hosts主机/etc/hosts 是 Internet
早期使用的一个简单文本数据库。
它结合 DNS 和 NIS 提供名字到 IP 地址的映射。
通过局域网连接的机器可以用这个简单的命名方案来替代设置一个
&man.named.8; 服务器。另外,/etc/hosts
也可以提供一个 Internet 名称的本地纪录以减轻需要从外部查询带来的负担。# $&os;$
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
::1 localhost localhost.my.domain myname.my.domain
127.0.0.1 localhost localhost.my.domain myname.my.domain
#
# Imaginary network.
#10.0.0.2 myname.my.domain myname
#10.0.0.3 myfriend.my.domain myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
# 10.0.0.0 - 10.255.255.255
# 172.16.0.0 - 172.31.255.255
# 192.168.0.0 - 192.168.255.255
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers. PLEASE PLEASE PLEASE do not try
# to invent your own network numbers but instead get one from your
# network provider (if any) or from the Internet Registry (ftp to
# rs.internic.net, directory `/templates').
#/etc/hosts 用简单的格式:[Internet address] [official hostname] [alias1] [alias2] ...例如:10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2参考 &man.hosts.5; 以获得更多信息。日志文件配置日志文件syslog.confsyslog.confsyslog.conf 是 &man.syslogd.8; 程序的配置文件。
它指出了的 syslog 哪种信息类型被存储在特定的日志文件中。# $&os;$
#
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manual page.
*.err;kern.debug;auth.notice;mail.crit /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
cron.* /var/log/cron
*.err root
*.notice;news.err root
*.alert root
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
#*.* /var/log/all.log
# uncomment this to enable logging to a remote log host named loghost
#*.* @loghost
# uncomment these if you're running inn
# news.crit /var/log/news/news.crit
# news.err /var/log/news/news.err
# news.notice /var/log/news/news.notice
!startslip
*.* /var/log/slip.log
!ppp
*.* /var/log/ppp.log参考 &man.syslog.conf.5; 手册页以获得更多信息newsyslog.confnewsyslog.confnewsyslog.conf 是一个通常用
&man.cron.8; 计划运行的 &man.newsyslog.8; 程序的配置文件。
&man.newsyslog.8; 指出了什么时候日志文件需要打包或者重新整理。
比如 logfile 被移动到
logfile.0,logfile.0
被移动到 logfile.1 等等。另外,日志文件可以用
&man.gzip.1; 来压缩,它们是这样的命名格式:
logfile.0.gz,logfile.1.gz
等等。newsyslog.conf
指出了哪个日志文件要被管理,要保留多少和它们什么时候被创建。
日志文件可以在它们达到一定大小或者在特定的日期被重新整理。# configuration file for newsyslog
# $&os;$
#
# filename [owner:group] mode count size when [ZB] [/pid_file] [sig_num]
/var/log/cron 600 3 100 * Z
/var/log/amd.log 644 7 100 * Z
/var/log/kerberos.log 644 7 100 * Z
/var/log/lpd-errs 644 7 100 * Z
/var/log/maillog 644 7 * @T00 Z
/var/log/sendmail.st 644 10 * 168 B
/var/log/messages 644 5 100 * Z
/var/log/all.log 600 7 * @T00 Z
/var/log/slip.log 600 3 100 * Z
/var/log/ppp.log 600 3 100 * Z
/var/log/security 600 10 100 * Z
/var/log/wtmp 644 3 * @01T05 B
/var/log/daily.log 640 7 * @T00 Z
/var/log/weekly.log 640 5 1 $W6D0 Z
/var/log/monthly.log 640 12 * $M1D0 Z
/var/log/console.log 640 5 100 * Z参考 &man.newsyslog.8; 手册页以获得更多信息。sysctl.confsysctl.confsysctlsysctl.conf 看起来很像
rc.conf。它用 variable=value
的形式来设定值。指定的值在系统进入多用户模式之后被设定。
并不是所有的变量都可以在这个模式下设定。 一个简单的例子举明了在 sysctl.conf
中关闭了重要的退出信号的日志并且让 Linux 程序知道他们其实运行在
&os; 下面:kern.logsigexit=0 # Do not log fatal signal exits (e.g. sig 11)
compat.linux.osname=&os;
compat.linux.osrelease=4.3-STABLE用 sysctl 进行调整sysctl调整以 sysctl&man.sysctl.8; 是一个允许您改变正在运行中的 &os;
系统的接口。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项,
这可以让有经验的管理员提高引人注目的系统性能。用
&man.sysctl.8; 可以读取设置超过五百个系统变量。基于这点,&man.sysctl.8; 提供两个功能:读取和修改系统设置。查看所有可读变量:&prompt.user; sysctl -a读一个指定的变量,例如 kern.maxproc:&prompt.user; sysctl kern.maxproc
kern.maxproc: 1044要设置一个指定的变量,直接用
variable=value
这样的语法:&prompt.root; sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000sysctl 变量的设置通常是字符串、数字或者布尔型。
(布尔型用 1 来表示'yes',用
0 来表示'no')。If you want to set automatically some variables each time
the machine boots, add them to the
/etc/sysctl.conf file. For more information
see the &man.sysctl.conf.5; manual page and the
.TomRhodesContributed by 只读的 &man.sysctl.8;有时想要修改只读的 &man.sysctl.8; 的值。
有时这不被推荐,有时也是不可避免的。例如一些膝上型电脑的 &man.cardbus.4;
设备不会探测内存范围,并且产生看似于这样的错误:cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12像上面的错误通常需要修改一些只读的 &man.sysctl.8;
默认设置。要实现这点,用户可以在本地的
/boot/loader.conf.local 里面放一个
&man.sysctl.8; OIDs。那些设置定位在
/boot/defaults/loader.conf 文件中。修复上面的问题用户需要在刚才所说的文件中设置
。现在
&man.cardbus.4; 就会正常的工作了。调整磁盘Sysctl 变量vfs.vmiodirenablevfs.vmiodirenablevfs.vmiodirenable sysctl
变量可以设置成0(关)或者1(开);默认是1。
这个变量控制目录是否被系统缓存。大多数目录是小的,
在系统中只使用单个片断(典型的是1K)并且在缓存中使用的更小
(典型的是512字节)。当这个变量设置为关闭 (0) 时,
缓存器仅仅缓存固定数量的目录,即使您有很大的内存。
而将其开启 (设置为1) 时, 则允许缓存器用 VM
页面缓存来缓存这些目录,让所有可用内存来缓存目录。
不利的是最小的用来缓存目录的核心内存是大于 512
字节的物理页面大小(通常是 4k)。
我们建议如果您在运行任何操作大量文件的程序时保持这个选项打开的默认值。
这些服务包括 web 缓存,大容量邮件系统和新闻系统。
尽管可能会浪费一些内存,但打开这个选项通常不会降低性能。
但还是应该检验一下。vfs.write_behindvfs.write_behindvfs.write_behind sysctl
变量默认是 1 (打开)。
它告诉文件系统簇被收集满的时候把内容写进介质,
典型的是在写入大的连续的文件时。
主要的想法是, 如果可能对 I/O 性能会产生负面影响时,
应尽量避免让缓冲缓存被未同步缓冲区充满。
然而它可能降低处理速度并且在某些情况下您可能想要关闭它。vfs.hirunningspacevfs.hirunningspacevfs.hirunningspace sysctl
变量决定了在任何场合多少写 I/O 被排进队列以给系统的磁盘控制器。
默认值一般是足够的,但是对有很多磁盘的机器来说您可能需要把它设置成
4M 或 5M。注意这个设置成很高的值(超过缓存器的写极限)会导致坏的性能。
不要盲目的把它设置太高!高的数值会导致同时发生的读操作的迟延。sysctl 中还有许多与 buffer cache 和 VM页面 cache
有关的值, 一般不推荐修改它们。 从 &os; 4.3
开始,虚拟内存系统已经能够很好地进行自动调整了。vm.swap_idle_enabledvm.swap_idle_enabledvm.swap_idle_enabled sysctl
变量在有很多用户进入、离开系统和有很多空闲进程的大的多用户系统中很有用。
这些系统注重在空闲的内存中间产生连续压力的处理。通过
vm.swap_idle_threshold1 和
vm.swap_idle_threshold2 打开这个特性并且调整交换滞后
(在空闲时)允许您降低内存页中空闲进程的优先权,从而比正常的出页
(pageout)算法更快。这给出页守护进程带来了帮助。
除非您需要否则不要把这个选项打开,因为您所权衡的是更快地进入内存,
因而它会吃掉更多的交换和磁盘带宽。在小的系统上它会有决定性的效果,
但是在大的系统上它已经做了合适的页面调度这个选项允许 VM
系统容易的让全部的进程进出内存。hw.ata.wchw.ata.wc&os; 4.3 IDE 写缓存关掉了。这降低了到 IDE
磁盘的带宽但是保证了传进磁盘数据的严格完整性。这个问题是因为
IDE 驱动器当写完成的时候无所事事。IDE 写缓存打开的时候,IDE
驱动器不按顺序把数据写进磁盘。当有很重的磁盘负载的时候它有时迟延写入一些块。
当机或者掉电会引起严重的文件系统讹误。&os; 的默认值改变成安全的模式。
不幸的是结果是带来了很大的性能损失,所以我们在发行版之后把写缓存的默认值改成了
on。您应该注意 hw.ata.wc sysctl 变量来检查一下系统中的默认值。
如果 IDE 写缓存被关闭了,您可以通过设置内核变量为 1 来打开它。这必须在启动时通过
boot loader 来完成。在内核启动之后尝试这么做将会没有效果。要了解更多的信息,请查阅 &man.ata.4;。SCSI_DELAY
(kern.cam.scsi_delay)SCSI_DELAYkern.cam.scsi_delaySCSI_DELAY 内核配置会缩短系统启动时间。
默认值在系统启动过程中有 15 秒的迟延时间,
这是一个足够多且可靠的值。把它减少到 5
通常也能工作(特别是现代的驱动器)。新一些的 &os;
(5.0 或更高版本) 应该用启动时刻可调整
kern.cam.scsi_delay。
这个可调整的和内核配置选项接受的值是
毫秒不是
秒 。Soft UpdatesSoft Updatestunefs&man.tunefs.8; 程序能够用来很好的调整文件系统。
这个程序有很多不同的选项,但是现在只介绍 Soft Updates
的打开和关闭,这样做:&prompt.root; tunefs -n enable /filesystem
&prompt.root; tunefs -n disable /filesystem在文件系统被挂载之后不能用 &man.tunefs.8; 来修改。打开
Soft Updates 的最佳时机是在单用户模式下任何分区被被挂载前。像 &os; 4.5,在文件系统创建时也可以打开
Soft Updates,通过 &man.newfs.8; 的 -U 选项。
Soft Updates 彻底的改善了数据描述(meta-data)的性能,
主要是文件创建和删除,通过内存缓存。我们建议您在所有的文件系统上使用
Soft Updates。应该知道 Soft Updates 的两点:首先, Soft Updates
保证了崩溃后的文件系统完整性,但是很可能有几秒钟 (甚至一分钟!)
之前的数据没有写到物理磁盘。如果您的系统崩溃了您可能会丢失很多工作。
第二,SoftUpdates 推迟文件系统块的释放时间。如果在文件系统
(例如根文件系统)快满了的情况下对系统进行大规模的升级比如
make installworld,
可能会引起磁盘空间不足从而造成升级失败。
Soft Updates 的详细资料Soft Updates详细资料
有两种传统的方法来把文件系统的元数据 (meta-data) 写入磁盘。
(Meta-data更新是更新类似 inodes 或者目录这些没有内容的数据)
从前,默认方法是同步更新这些元数据(meta-data)。
如果一个目录改变了,系统在真正写到磁盘之前一直等待。
文件数据缓存(文件内容)在这之后以非同步形式写入。
这么做有利的一点是操作安全。如果更新时发生错误,元数据(meta-data)
一直处于完整状态。文件要不就被完整的创建要不根本就不创建。
如果崩溃时找不到文件的数据块,&man.fsck.8;
可以找到并且依靠把文件大小设置为 0 来修复文件系统。
另外,这么做既清楚又简单。缺点是元数据(meta-data)更新很慢。例如
rm -r 命令,从而改变目录下的所有文件,
但是每个目录的改变(删除一个文件)都要同步写入磁盘。
这包含它自己更新目录,inode 表和可能对文件分散的块的更新。
同样问题出现大的文件操作上(比如 tar -x)。
第二种方法是非同步元数据更新。这是 Linux/ext2fs 和 *BSD ufs 的
mount -o async 默认的方法。所有元数据更新也是通过缓存。
也就是它们会混合在文件内容数据更新中。
这个方法的优点是不需要等待每个元数据更新都写到磁盘上,
所以所有引起元数据更新大的操作比同步方式更快。同样,
这个方法也是清楚且简单的,所以代码中的漏洞风险很小。
缺点是不能保证文件系统的状态一致性。如果更新大量元数据时失败
(例如掉电或者按了重启按钮),文件系统会处在不可预知的状态。
系统再启动时没有机会检查文件系统的状态;inode
表更新的时候可能文件的数据块已经写入磁盘了但是相关联的目录没有,却不能用
fsck 命令来清理(因为磁盘上没有所需要的信息)。
如果文件系统修复后损坏了,唯一的选择是使用 &man.newfs.8; 并且从备份中恢复它。
这个问题通常的解决办法是使用 dirty region logging
或者 journaling
尽管它不是一贯的被使用并且有时候应用到其他的事务纪录中更好。
这种方法元数据更新依然同步写入,但是只写到磁盘的一个小区域。
过后他们将会被移动到正确的位置。因为纪录区很小,
磁盘上接近的区域磁头不需要移动很长的距离,所以这些比写同步快一些。
另外这个方法的复杂性有限,所以出现错误的机会也很少。缺点是元数据要写两次
(一次写到纪录区域,一次写到正确的区域)。正常情况下,
悲观的性能可能会发生。从另一方面来讲,
崩溃的时候所有未发生的元数据操作可以很快的在系统启动之后从记录中恢复过来。
Kirk McKusick,伯克利 FFS 的开发者,用 Soft Updates
解决了这个问题:元数据更新保存在内存中并且按照排列的顺序写入到磁盘
(有序的元数据更新)。这样的结果是,在繁重的元数据操作中,
如果先前的更新还在内存中没有别写进磁盘,后来的更新就会捕捉到。
所以所有的目录操作在写进磁盘的时候首先在内存中执行
(数据块按照它们的位置来排列,所以它们不会在元数据前被写入)。
如果系统崩溃了这将导致一个固定的 日志回朔:
所有不知如何写入磁盘的操作都像没有发生过一样。文件系统的一致性保持在
30 到 60 秒之前。它保证了所有正在使用的资源被标记例如块和 inodes。崩溃之后,
唯一的资源分配错误是一个实际是空闲的资源的资源被标记为使用。
&man.fsck.8; 可以认出这种情况并且释放不再使用的资源。它对于忽略崩溃后用
mount -f 强制挂上的文件系统的错误状态是安全的。
为了释放可能没有使用的资源,&man.fsck.8; 需要在过后的时间运行。一个主意是用
后台 fsck:系统启动的时候只有一个文件系统的
快照 被记录下来。fsck
可以在过后运行。所有文件系统可以在有错误的时候被挂接,
所以系统可以在多用户模式下启动。接着,后台 fsck
可以在所有文件系统需要的时候启动来释放可能没有使用的资源。
(尽管这样,不用 Soft Updates 的文件系统依然需要通常的
fsck。)
它的优点是元数据操作几乎跟非同步一样快
(也就是比需要两次元数据写操作的 logging
更快)。缺点是代码的复杂性(意味着对于丢失用户敏感数据有更多的风险)
和高的内存使用量。另外它有些特点需要知道。崩溃之后,
文件系统状态会落后一些。同步的方法用
fsck 后在一些地方可能产生一些零字节的文件,
这些文件在用 Soft Updates 文件系统之后不会存在,
因为元数据和文件内容根本没有写进磁盘(可能发生在运行
rm 之后)。这可能在文件系统上安装大量数据时候引发问题,
没有足够的剩余空间来两次存储所有文件。调整内核限制调整内核限制文件/进程限制kern.maxfileskern.maxfileskern.maxfiles 可以根据系统的需求加大或者减小。
这个变量指出了在系统上文件描述符的最大数量。当文件描述符表曼的时候,
用 dmesg 命令可以看到
file: table is full
将会在系统信息缓存里反复的出现。每个打开的文件、套接字、fifo 都使用一个描述符。
一个大规模的服务器很容易使用上千个文件描述符,
这取决于系统中同时运行着的服务的数量和类型。kern.maxfile 的默认值以系统配置文件中的
选项来决定。kern.maxfiles
同 的值成比例的增长。编译一个自定义内核的时候,
按照您系统中用户的数量来设置这个值是个好主意。
从这个数字可以确定内核很多先前定义的限制。即使一台机器不会真有
256 个用户同时连接,所需要的资源也可能跟一个高负荷的 web
服务器差不多。
像是 &os; 4.5,在您的内核配置中设置
为会通过系统中内存的数量来选择一个合适的值。kern.ipc.somaxconnkern.ipc.somaxconnkern.ipc.somaxconn sysctl 变量
限制了接收新 TCP 连接侦听队列的大小。对于一个经常处理新连接的高负载
web服务环境来说,默认的 128 太小了。
大多数环境这个值建议增加到 1024 或者更多。
服务进程会自己限制侦听队列的大小(例如 &man.sendmail.8;
或者 Apache),
常常在它们的配置文件中有设置队列大小的选项。
大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。网络限制NMBCLUSTERS 内核配置选项指出了系统可用的网络Mbuf的数量。
一个高流量的服务器使用一个小数目的网络缓存会影响 &os; 的性能。
每个 cluster 可能需要2K内存,所以一个1024的值需要在内核中给网络缓存保留2M内存。
可以用简单的方法计算出来需要多少网络缓存。
如果您有一个同时发生1000个以上连接的web服务器,
并且每个连接用掉16K接收和发送缓存, 就需要大概32M网络缓存来确保web服务器的工作。
一个好的简单计算方法是乘以2,所以2x32Mb/2Kb=64MB/2kb=32768。
我们建议在有大量内存的机器上把这个值设置在4096到32768之间。
没有必要把它设置成任意太高的值,它会在启动时引起崩溃。
&man.netstat.1; 的 选项可以用来观察网络cluster使用情况。kern.ipc.nmbclusters 可以用来在启动时刻调节这个。
仅仅在旧版本的 &os; 需要使用 NMBCLUSTERS
&man.config.8; 选项。经常使用 &man.sendfile.2; 系统调用的繁忙的服务器,
有必要通过 NSFBUFS 内核选项或者在
/boot/loader.conf (查看 &man.loader.8; 以获得更多细节)
中设置它的值来调节 &man.sendfile.2; 缓存数量。
这个参数需要调节的普通原因是在进程中看到 sfbufa
状态。sysctl kern.ipc.nsfbufs
变量在内核配置变量中是只读的。 这个参数是由 kern.maxusers
决定的,然而它可能有必有因此而调整。
即使一个套接字被标记成非阻塞,在这个非阻塞的套接字上呼叫
&man.sendfile.2; 可能导致 &man.sendfile.2; 呼叫阻塞直到有足够的
struct sf_buf 可用。
net.inet.ip.portrange.*net.inet.ip.portrange.*net.inet.ip.portrange.* sysctl
变量自动的控制绑定在 TCP 和 UDP 套接字上的端口范围。
这里有三个范围:一个低端范围,一个默认范围和一个高端范围。
大多数网络程序分别使用由 net.inet.ip.portrange.first
和 net.inet.ip.portrange.last 控制的从 1024 到 5000
的默认范围。端口范围用作对外连接,并且某些情况可能用完系统的端口,
这经常发生在运行一个高负荷 web 代理服务器的时候。
这个端口范围不是用来限制主要的例如 web
服务器进入连接或者有固定端口例如邮件传递对外连接的。
有时您可能用完了端口,那就建议适当的增加
net.inet.ip.portrange.last。
10000、20000 或者
30000 可能是适当的值。
更改端口范围的时候也要考虑到防火墙。一些防火墙会阻止端口的大部分范围
(通常是低范围的端口)并且用高端口进行对外连接(—)。
基于这个问题建议把 net.inet.ip.portrange.first
设置的小一点。TCP 带宽迟延(Bandwidth Delay Product)TCP 带宽迟延限制net.inet.tcp.inflight_enableThe TCP Bandwidth Delay Product Limiting 类似于 NetBSD 的TCP/Vegas。
它可以通过设置 net.inet.tcp.inflight_enable sysctl
变量为 1 来启动。
系统将会为每个连接尝试带宽迟延并且限制发送到网络中的队列中的数据数量以维持适当的吞吐量。
如果您在使用调制解调器,千兆以太网或者高速的广域网连接
(或者其他有高的带宽迟延的产品)提供数据服务,这个特性就会很有用。
特别是您在使用窗口缩放或者配置一个大的发送窗口。如果启用了这个选项,
同时要确信设置 net.inet.tcp.inflight_debug 为
0(关闭调试),对于生产用来说,设置
net.inet.tcp.inflight_min 至少为
6144 可能会受益。然而,
注意设置一个高的最小值能有效的关闭依赖连接的带宽限制。
这个限制特性减少了在路由和交换包队列的堵塞数据数量,
也减少了在本地主机接口队列阻塞的数据的数量。在少数的等候队列中、
交互式连接,尤其是通过慢速的调制解调器,也能用低的
往返时间操作。但是,注意这只影响到数据发送
(上载/服务端)。对数据接收(下载)没有效果。调整 net.inet.tcp.inflight_stab
是 不 被建议的。这个参数的默认值是 20,
它代表两个最大的包被添加到带宽迟延窗口考虑。
另外的窗口是稳定算法和改善改变条件时的应答所需要的,
但是它也能导致通过慢速连接产生高的 ping 时间(虽然比您不用这个算法还慢)。
这些情况下,您可能想试着把这个参数减小到 15,10 或者 5;
并且也可能需要减小 net.inet.tcp.inflight_min
(例如3500)来达到效果。减少这些参数应该是最后的唯一手段。添加交换空间
不管您计划的如何好,有时候系统并不像您所期待的那样运行。
如果您发现需要更多的交换空间,添加它很简单。
有三种方法增加交换空间:添加一块新的硬盘驱动器、通过
NFS 使用交换空间和在一个现有的分区上创建一个交换文件。在新的硬盘驱动器上使用交换空间这是添加交换空间最好的方法,
当然为了达到这个目的需要添加一块硬盘。
毕竟您总是可以使用另一块磁盘。如果能这么做,
重新阅读一下手册中关于交换空间的 来了解如何最优地安排交换空间。通过 NFS 交换
通过 NFS 来交换只在您没有本地硬盘交换的时候被建议。在
&os; 4.X 以前的版本中使用NFS交换速度很慢并且效率低下。4.0-RELEASE
和更新的版本中他的速度和效率还是可以接受的。即使使用新版本的
&os;,NFS 交换也会被可用的网络带宽限制并且增加 NFS 服务器的负担。交换文件
您可以创建一个指定大小的文件用来当作交换文件。
在我们的例子中我们将会使用叫做 /usr/swap0
的 64MB 大小的文件。当然您也可以使用任何您所希望的名字。在 &os; 4.X 上创建一个交换文件确认您的内核配置包含了 vnode 驱动。
它不包含在最近版本的 GENERIC。pseudo-device vn 1 #Vnode driver (turns a file into a device)创建一个 vn-device 设备:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV vn0创建一个交换文件 (/usr/swap0):&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64赋予它(/usr/swap0)一个适当的权限:&prompt.root; chmod 0600 /usr/swap0在 /etc/rc.conf 中启用交换文件:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.通过重新启动机器或下面的命令使交换文件立刻生效:&prompt.root; vnconfig -e /dev/vn0b /usr/swap0 swap在 &os; 5.X 上创建一个交换文件:确认您的内核配置包含虚拟磁盘(Memory disk)驱动
(&man.md.4;)。它在 GENERIC 内核中是默认的。device md # Memory "disks"创建一个交换文件(/usr/swap0):&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64赋予它(/usr/swap0)一个适当的权限:&prompt.root; chmod 0600 /usr/swap0在 /etc/rc.conf 中启用交换文件:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.通过重新启动机器或下面的命令使交换文件立刻生效:&prompt.root; mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0HitenPandyaWritten by TomRhodes电源和资源管理
以有效的方式利用硬件资源是非常重要的。在提出 ACPI
之前,管理电源使用和系统散热对操作系统是很困难的。硬件被嵌入的
BIOS 接口管理,例如可插拔 BIOS
(PNPBIOS)或者高级电源管理(APM)
等等。电源和资源管理是现代操作系统的关键组成部分。
例如您可能当系统温度过高的时候让您的操作系统能监视到
(并且可能提醒您)。
在 &os; 使用手册的这一章节,我们将提供 ACPI
全面的信息。参考资料会在末尾。ACPI 在
&os; 5.X 及以上的操作系统中作为一个默认的内核模块被支持。对于
&os; 4.9,ACPI 可以通过在内核配置文件中添加
device acpica 并且重新编译内核来启用。
什么是 ACPI?高级配置和电源接口(ACPI)
是一个业界标准的硬件资源和电源管理接口(因此而得名)。它是
操作系统控制的配置和电源管理(Operating System-directed
configuration and Power Management),也就是说,
它给操作系统(OS)提供了更多的控制和弹性。
现代操作系统延伸了当前即插即用接口(像是 &os;4.X
中使用的 APM)的限制,在 ACPI 的介绍之前。
ACPI 是 APM(高级电源管理)
的直接继承者。高级电源管理 (APM) 的缺点高级电源管理 (APM)
是一种基于系统目前的活动控制其电源使用的机制。
APM BIOS 由 (系统的) 制造商提供, 并且是硬件平台专属的。
在 OS 中的 APM 驱动作为中介来访问 APM 软件接口,
从而实现对电源使用的管理。APM 有四个主要的问题。 首先, 电源管理是通过
(制造商专属的) BIOS 实现的, 而 OS 则完全不了解其细节。
例如, 用户在 APM BIOS 中设置了硬盘驱动器的空闲等待数值,
当超过这一空闲时间的限制时, 它 (BIOS) 将会减慢硬盘驱动器的速度,
而不会征求 OS 的同意。 第二, APM 逻辑是嵌入
BIOS 的, 因此它是在 OS 的控制之外运转的。
这意味着用户只能通过通过刷新他们 ROM 中的 APM BIOS
- 才能够解决某些问题; 而这是一个很危险的操作, 一旦失败,
- 则可能使系统进入一个无法恢复的状态。 第三, APM
+ 才能够解决某些问题; 而这是一个很危险的操作,
+ 因为它可能使系统进入一个无法恢复的状态。 第三, APM
是一种制造商专属的技术, 也就是说有很多第三方的
(重复的工作) 以及 bugs, 如果在一个制造商的 BIOS 中有,
也未必会在其他的产品中解决。 最后但绝不是最小的问题, APM
BIOS 没有为实现复杂的电源策略提供足够的余地,
也无法实现能够非常适合具体机器的策略。即插即用 BIOS (PNPBIOS)
在很多时候都是不可靠的。 PNPBIOS 是 16-位 的技术,
因此 OS 不得不使用 16-位 模拟才能够与 PNPBIOS 的方法
接口。&os; APM 驱动在 &man.apm.4; 手册页中有描述。配置 ACPIacpi.ko 驱动默认的在启动时通过
&man.loader.8; 被加载并且 不应该
被编译进内核。原因是这个模块跟系统很容易的工作在一起,比方说不用为了
acpi.ko 而重新编译内核。
这对更简单的测试来说很有利。另一个原因是系统启动后再启动
ACPI 不是很有用,并且在一些情况下会失败。
拿不准的话只要全部禁止 ACPI 即可。
这个驱动不应该而且不能被卸载,因为系统通过它跟各种各样的硬件打交道。
ACPI 可以通过 &man.acpiconf.8; 来禁止。实际上通过
ACPI 的交互可以通过 &man.acpiconf.8; 来完成。
简单的说,如果任何关于 ACPI 的信息在
&man.dmesg.8; 的输出中,那么它很可能已经运行了。ACPI 和 APM
不能共存并且应该份开始用。后来装载的如果注意到另一个在运行将会终止执行。最简单的表现形式是,ACPI 可以通过
&man.acpiconf.8; 的 标志和一个
1-5 的选项来使系统进入休眠状态。
5 选项将会像下面动作一样让系统软关机:&prompt.root; halt -p其他选项也是可行的。查看 &man.acpiconf.8; 手册页以获得更多信息。NateLawson撰写人:PeterSchultz协力:TomRhodes使用和调试 &os; ACPI
- ACPI 是在本质上是一种发现设备、管理电源使用,
+ ACPI 是一种全新的发现设备、 管理电源使用,
提供过去由 BIOS 管理的访问不同硬件的标准化方法。
让 ACPI 在各种系统上都能正确使用的工作一直在进行,
但许多主板的 ACPI 机器语言
- (AML) 字节代码中的 bug, &os; 的内核中资系统设计的不完善,
- 以及 Intel ACPI-CA 解释器中的 bug 仍然市场会出现。
+ (AML) 字节代码中的 bug, &os; 的内核中资系统设计的不完善,
+ 以及 &intel;
+ ACPI-CA 解释器中的 bug 仍然不时会出现。这份文档期望能够帮助您协助 &os;
ACPI 的维护人员来找到您所观察到的问题的根源,
并通过调试找到其解决方法。 感谢您阅读这份文档,
我们也希望能够解决您的系统上的问题。提交调试信息在提交问题之前, 请确认您已经在运行最新的
BIOS 版本, 此外, 也包括嵌入式控制器的固件版本。如果您希望提交一个问题,
请确保将下述信息法到
- freebsd-acpi@FreeBSD.org
+ freebsd-acpi@FreeBSD.org:
问题行为的描述, 包括系统类型、型号,以及任何触发问题的相关信息。
另外, 请注意尽可能准确地描述这一问题是否对您是陌生的。在 boot
- 之后得到的 dmesg 输出, 包括任何在重现 bug
- 之后出现的错误信息。
+ 之后得到的 &man.dmesg.8; 输出, 以及任何在重现
+ bug 时出现的错误信息。
在禁用了 ACPI 之后的 boot
- 的 dmesg 输出, 如果您发现禁用 ACPI
+ 的 &man.dmesg.8; 输出, 如果您发现禁用 ACPI
能够帮助消除问题。来自 sysctl hw.acpi 的输出。 这也是找到您的系统所提供的功能的一种好办法。能够得到您的 ACPI Source Language
(ASL) 的 URL。
不要 把
ASL 直接发到邮件列表中,
因为它们可能非常大。
为了得到 ASL
您可以运行这个命令:&prompt.root; acpidump -t -d > name-system.asl(把
name 改为您的登录名,
并把
system 改为您的硬件制造商及其型号。 例如:
njl-FooCo6000.asl)许多开发者也会订阅 &a.current;
但还是请发到 &a.acpi.name; 这样它会被更多人看到。
请耐心等待, 因为我们都有全职的其他工作。
如果您的 bug 不是显而易见的, 我们可能会要求您通过
&man.send-pr.1; 来提交一个 PR。
在输入 PR 时,请将同样的信息包含进去。
这将帮助我们来追踪和解决问题。
不要在给 &a.acpi.name; 写信之前发送
PR 因为我们把它当作已知文体的备忘录而不是报告机制。
您的问题很可能已经被其他人报告过了。背景ACPI 存在于采用
ia32 (x86)、 ia64 (安腾)、 以及 amd64 (AMD) 架构的所有现代计算机上。
完整的标准具有大量的各式功能, 包括
CPU 性能管理、 电源控制、 温度监控、
电池系统、 嵌入式控制器以及总线枚举。
绝大多数系统实现比完整标准的功能要少一些。 例如,
桌面系统通常只实现总线枚举部分, 而笔记本则通常支持降温和电源管理功能。
笔记本通常还提供休眠和唤醒支持, 并提供与此适应的复杂功能。符合 ACPI 的系统中有许多组件。
BIOS 和芯片组制造商提供一些固定的表
(例如, FADT) 在存储器中, 以提供类似
APIC 映射 (用于 SMP)、
配置寄存器、 以及简单的配置值等等。 另外,
一个字节代码 (bytecode) 表
(系统区别描述表
DSDT)
则提供了通过树状命名空间来指定设备及其功能的方法。ACPI 驱动必须要处理固定表,
实现字节码解释器, 并修改驱动程序和内核, 以接受来自
- ACPI 子系统的信息。 对于 &os;, Intel
+ ACPI 子系统的信息。 对于 &os;, &intel;
提供了一个解释器 (ACPI-CA),
它在 Linux 和 NetBSD 也可以使用。
ACPI-CA 源代码可以在
src/sys/contrib/dev/acpica
找到。 用于在 &os; 中允许 ACPI-CA
正确运转的代码则在
src/sys/dev/acpica/Osd。
最后, 用于实现 ACPI 设备的驱动可以在
src/sys/dev/acpica 找到。常见问题为了使 ACPI 正常工作,
它的每一部分都必须工作正常。 这里是一些常见的问题,
按照出现的频繁程度顺序排序, 并提供了一些绕过或修正它们的方法。休眠/唤醒ACPI 提供了三种休眠到
RAM (STR) 的状态,
S1-S3,
以及一个休眠到磁盘的状态 (STD),
称作 S4。 S5 是
软关机 同时也是系统接好电源但没有开机时的正常状态。
S4 实际上可以用两种不同的方法来实现。
S4BIOS 是一种由
BIOS 辅助的挂起到磁盘方法, 而
S4OS
则是完全由操作系统实现的。可以使用 sysctl
来查看与休眠有关的项目。
这里是我的 Thinkpad 上得到的结果。hw.acpi.supported_sleep_state: S3 S4 S5hw.acpi.s4bios: 0这表示我可以使用 acpiconf -s
来测试 S3,
S4OS, 以及
S5。 如果 是一
(1), 则可以使用
S4BIOS
来代替 S4
OS。当测试休眠/唤醒时, 从
S1 开始, 如果它被支持的话。
这个状态是最可能正常工作的状态, 因为它不需要太多的驱动支持。
没有人实现 S2 但如果您有它的支持,
则应该和 S1 类似。 下一件值得尝试的是
S3。 这是最深的
STR 状态,
并需要一系列驱动的支持才能够正常地重新初始化您的硬件。
如果您在唤醒系统时遇到问题, 请不要吝惜发邮件给 &a.acpi.name;
邮件列表, 尽管不要指望问题一定会很快解决,
因为有许多驱动程序/硬件需要进行更多的测试和改进。为了帮助隔离问题, 请在内核中删去尽可能多的驱动。
如果这样做能够解决问题, 请尝试逐个加载驱动直到问题再次出现。
通常预编译的驱动程序如
nvidia.ko、 X11
显示驱动, 以及 USB 的问题最多,
而以太网卡的驱动则通常工作的很好。
如果您能够通过加载和卸载驱动使系统正常工作,
您可以通过将适当的命令放到
/etc/rc.suspend 和
/etc/rc.resume 来将这个过程自动化。
在这两个文件中有一个注释掉的卸载和加载驱动程序的例子供您参考。
另外您还可以将 设置为零
(0), 如果您的显示在唤醒之后显得很混乱。
此外您还可以尝试更长或更短的
值看看是否有所助益。另一件值得一试的事情是使用一个比较新的包含
ACPI 支持的 Linux 发行版来试试看他们的
休眠/唤醒 功能是否在同样的硬件上能够正常工作。
如果在 Linux 下正常, 则很可能是 &os; 驱动程序的问题,
而隔离问题并找到存在问题的驱动有助于解决它。
需要注意的是 ACPI 的维护人员通常并不维护其他驱动
(例如 声音、 ATA, 等等)
因此如果最终发现是驱动的问题最好还是发到
&a.current.name; 邮件列表并发给驱动程序的维护者。
如果您喜欢冒险, 则可以加一些 &man.printf.3;
到有问题的驱动中, 以找到它的恢复功能发生问题的位置。最后, 试试看禁用 ACPI
并代之以启用 APM。
如果 休眠/唤醒 能够在 APM 下正常工作,
使用 APM 可能会更好,
特别是对于较老的硬件 (2000年以前)。
硬件制造商需要一些时间来让老硬件的
ACPI 工作正常,
而 ACPI 的问题十之八九是
BIOS 中的毛病引发的。系统停止响应 (暂时或永久性地)绝大多数系统停止响应是由于未能及时响应中断或发生了中断风暴导致的。
芯片组有很多问题最终会溯源到 BIOS
如何在引导系统之前配置中断, APIC
(MADT) 表的正确性, 以及
系统控制中断
(SCI) 如何路由。通过察看 vmstat -i
的输出中包括 acpi0
的那一行可以区分中断风暴和未能及时响应中断。
如果每秒计数器增长的速度多于一两个,
则您是遇到了中断风暴。 如果系统停止了响应,
您可以尝试停止内核并进入 DDB
(在控制台上按 CTRLALTESC)
并输入 。处理中断问题的救命稻草是尝试禁用
APIC 支持, 这是通过在
loader.conf 中加入
hint.apic.0.disabled="1"
完成的。崩溃崩溃对于 ACPI 是比较罕见的情况,
如果发现, 将会非常重视并很快修复。
您要做的第一件事是设法隔离出能够重现崩溃 (如果可能的话)
的操作并获取一份调用队战。 请启用
并设置串行控制台
(参见 )
或配置一个 &man.dump.8; 分区。 您将在
DDB 中通过
得到调用队战。 如果您只能用手抄的方法记录它,
一定要记下头五 (5) 行和最后五 (5) 行。然后, 尝试通过在启动时禁用
ACPI 来隔离故障。 如果这样做能够正常工作,
请通过设置
的那组数值来隔离具体是哪个 ACPI
子系统的问题。 请参见
&man.acpi.4; 联机手册中给出的那些例子。系统在休眠或关机之后又启动了首先请尝试在 &man.loader.conf.5; 中设置
0。
这将让 ACPI 不再在关机过程中禁用一些事件。
基于同样的原因, 一些系统需要把这个值设置为 1
(这是默认值)。
这通常能够修复在休眠或关机时立即再次启动的问题。其他问题如果您有 ACPI 的其他问题
(同 docking station 协同工作、 无法检测设备, 等等),
请把描述发给邮件列表; 不过, 这些问题也有可能和
ACPI 中尚未完成的部分有关,
它们可能需要时间才能被实现。 请保持耐心,
并准备测试我们可能会发给您的补丁。ASL、acpidump, 以及
IASL最常见的问题是 BIOS
制造商提供的不正确 (甚至完全错误的!) 字节代码。
这通常会以类似下面这样的内核消息显示在控制台上:ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\
(Node 0xc3f6d160), AE_NOT_FOUND通常您可以通过将
BIOS 升级到最新版本来解决这类问题。
绝大多数控制台消息是无害的, 但如果您有其他问题例如电池工作不正常,
则从 AML 开始查找问题将是一条捷径。
字节代码, 或常说的 AML, 是从一种称作
ASL 语言的原代码编译得到的结果。
AML 在
DSDT 表中。 要得到您系统的
ASL, 需要使用 &man.acpidump.8;。
您应该使用 (显示固定表的内容)
和 (将 AML 反汇编成
ASL) 两个选项。 参考
如何提交调试信息
一节以获得示范用法。您可以检查的第一件事是重新编译
ASL 来看看是否有错误。
警告通常都可以忽略, 而错误通常会使导致
ACPI 无法正常工作的原因。 要编译您的
ASL, 使用下面的命令:&prompt.root; iasl your.asl修复 ASL我们的长期目标是让每一个人都能够在不需要任何用户干预的情况下使用
ACPI。 然而, 目前我们仍然在开发绕过
BIOS 制造商常见错误的方法。
Microsoft 解释器 (acpi.sys 和
acpiec.sys) 并不会严格地检查是否遵守了标准,
因此许多只在 Windows 中测试 ACPI 的
BIOS 制造商很可能永远不会修正他们的
ASL。 我们希望不断地找出并用文档说明
Microsoft 的解释器到底允许那些不标准的行为,
并在 &os; 进行对应的修改使它能够正常工作而不需要用户修正
ASL。 作为一项临时缓解问题的方法,
并帮助我们确认其行为, 您可以手工修正
ASL。 如果这样能够解决问题,
请把新旧 ASL 的 &man.diff.1;
发给我们, 这样我们就有可能绕过 ACPI-CA
中的错误行为, 从而不再需要您来手工修正。下面是一些常见的错误信息, 它们的原因,
以及如何修正。_OS dependencies (_OS 依赖)某些 AML 假定世界是由不同版本的
Windows 组成的。 您可以让 &os; 声称自己是任意
OS 来看一看是否能够修正问题。
比较简单的办法是设置
=Windows 2001
到 /boot/loader.conf 中, 或使用您在
ASL 中找到的其他字符串。Missing Return statements (缺少返回语句)一些方法可能没按照标准要求的那样显式地返回值。
尽管 ACPI-CA 无法处理它,
但 &os; 提供了一个绕过它并允许其暗含地返回值的方法。
您也可以增加一个显式的
Return 语句, 如果您知道那里需要返回一个值的话。
要强制 iasl 编译
ASL, 需要使用
标志。替换默认的 AML在定制 your.asl 之后,
您可以通过下面的命令编译它:&prompt.root; iasl your.asl可以使用 标志来强制创建
AML, 即使在编译过程中发生了错误。
请注意某些错误 (例如, 缺少 Return 语句)
会自动被解释器忽略掉。DSDT.aml 是
iasl 命令的默认输出文件名。
可以加载它来取代您 BIOS
中存在问题的副本 (它仍然存在于闪存中),
其方法是按下面的说明编辑
/boot/loader.conf:acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/DSDT.aml"一定要把您的 DSDT.aml 复制到
/boot 目录中。从
ACPI 中获取调试输出信息ACPI 驱动程序提供了非常灵活的调试机制。
这允许您指定一组子系统, 以及所需要的详细信息。
需要调试的子系统可以按 layers(层)
来指定, 并分为 ACPI-CA 组件 (ACPI_ALL_COMPONENTS)
和 ACPI 硬件支持 (ACPI_ALL_DRIVERS)。
调试输出的详细程度可以通过
level(详细度) 来指定, 其范围是
ACPI_LV_ERROR (只报告错误) 到 ACPI_LV_VERBOSE (显示所有)。
level 是一个位掩码因此可以一次设置多个选项,
中间用空格分开。 实际使用中您应该考虑使用串行控制台来记录输出,
如果它太长以至于冲掉了控制台消息缓冲的话。
不同的层和输出详细度的完整列表可以在 &man.acpi.4; 联机手册中找到。调试输出默认并不开启。 要起用它, 您需要在内核设置中添加
, 如果您的内核中编入了
ACPI 的话。 您还可以在
/etc/make.conf 中加入
来在全局起用它。
如果它只是模块, 您可以用下面的方法来重新编译
acpi.ko:&prompt.root; cd /sys/modules/acpi/acpi
&& make clean &&
make ACPI_DEBUG=1安装 acpi.ko 到
/boot/kernel
并把所需的详细度和层在 loader.conf 中指定。
这个例子讲起用所有
ACPI-CA 组件以及所有
ACPI 硬件驱动
(CPU、 LID, 等等) 的消息。
只输出错误信息, 也就是最低的详细度。debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
debug.acpi.level="ACPI_LV_ERROR"如果您需要的信息是由某个特定的事件触发的
(比如说, 休眠之后的唤醒), 您可以不修改
loader.conf 而转而使用
sysctl
来在启动和为那个事件准备系统之后再指定层和详细度。
这些 sysctl 的名字和
loader.conf 中的一致。参考文献关于 ACPI 的更多信息可以从下面这些地方找到:The &a.acpi;ACPI 邮件列表存档
旧的 ACPI 邮件列表存档
The ACPI 2.0 标准
&os; 手册页: &man.acpi.4;,
&man.acpi.thermal.4;, &man.acpidump.8;, &man.iasl.8;,
&man.acpidb.8;
DSDT 调试资源.
(使用 Compaq 作为例子但通常情况下都很有用。)
diff --git a/zh_CN.GB2312/books/handbook/install/chapter.sgml b/zh_CN.GB2312/books/handbook/install/chapter.sgml
index 5b8cfaab66..cbf911e174 100644
--- a/zh_CN.GB2312/books/handbook/install/chapter.sgml
+++ b/zh_CN.GB2312/books/handbook/install/chapter.sgml
@@ -1,4751 +1,4751 @@
JimMock结构、组织重整, 部分重写 RandyPrattsysinstall 操作流程、屏幕抓图以及一般性文件安装 FreeBSD概述installationFreeBSD 提供了一个以文字为主,简单好用的安装程序,叫做
sysinstall 。这是 FreeBSD 默认使用的安装程序;
厂商如果想,也可以提供适合自己需要的安装程序。本章说明如何使用
sysinstall 来安装 FreeBSD。学习完本章之后,您将会知道:如何制作 FreeBSD 安装磁盘FreeBSD如何参照及分割您的硬盘如何启动 sysinstall.在执行 sysinstall 时您将要回答的问题、
问题代表什么意义,以及该如何回答它们。在阅读本章之前,您应该:阅读您要安装的 FreeBSD 版本所附的硬件支持列表以确定您的硬件有没有被支持。一般来说,此安装说明是针对 &i386; (PC 兼容机) 体系结构的电脑。
如果有其它体系结构(如Alpha)的安装说明,我们将一并列出。
虽然本文档经常保持更新,但有可能与您安装版本上所带的说明文档有些许出入。
在这里建议您使用本说明文章作为一般性的安装指导参考手册。安装前的准备工作列出您电脑的硬件清单在安装 FreeBSD 之前,您应该试着将您电脑中的硬件清单列出来。FreeBSD
安装程序会将这些硬件(磁盘、网卡、光驱等等)以及型号及制造厂商列出来。
FreeBSD 也会尝试为这些设备找出最适当的 IRQ 及 IO 端口的设定。但是因为 PC
的硬件种类实在太过复杂,这个步骤不一定总是能成功。
这时,您就可能需要手动更改有问题的设备的设定值。如果您已经安装了其它的操作系统,如 &windows; 或 Linux,那么您可以先由
这些系统所提供的工具来查看您的设备设定值是怎么分配的。如果您真的没办法
确定某些接口卡用什么设定值,那么您可以检查看看,说不定它的设定已经标示
在卡上。常用的 IRQ 号号码为 3、5 以及 7;IO 端口的值通常以 16 进制位表示,例如
Ox330。我们建议您在安装 FreeBSD 之前把这些信息打印或记录下来,做成表格
的样子也许会比较有帮助,例如:
硬件设备清单设备名IRQIO 端口号备注第一块硬盘N/AN/A40 GB,Seagate 制造,第一个 IDE 接口主设备CDROMN/AN/A第一个 IDE 接口从设备第二块硬盘N/AN/A20 GB,IBM 制造, 第二个 IDE 接口主设备第一个 IDE 控制器140x1f0网卡N/AN/A&intel; 10/100ModemN/AN/A&tm.3com; 56K faxmodem,位于 COM1 口…
备份您的数据如果您的电脑上面存有重要的数据资料,那么在安装 FreeBSD 前请确定
您已经将这些资料备份了,并且先测试这些备份文档是否有问题。FreeBSD
安装程序在要写入任何资料到您的硬盘前都会先提醒您确认,一旦您确定要
写入,那么以后就没有反悔的机会。决定要将 FreeBSD 安装到哪里如果您想让 FreeBSD 使用整个硬盘,那么请直接跳到下一节。但是,如果您想让 FreeBSD 跟您已有的系统并存,那么您必须对您数据
存在硬盘的分布方式有深入的了解以及其所造成的影响。&i386; 体系结构的硬盘分配方式一个 PC 硬盘可以被细分为许多分散的区域。这些区域叫做
分区(partitions)。 由于设计的原因,每个硬盘仅
支持四个分区;这些分区叫做主分区(Primary partion)。
为了突破这个限制以便能使用更多的分区,就有了新的分区类型,叫做
扩展分区(Extended partition)。一个硬盘可以拥有一个扩展分区。在
扩展分区里可以建立许多个所谓的逻辑分区(Logical partitions)。每个分区都有其独立的分区号(partition ID),
用以区分每个分区的数据类型。FreeBSD 分区的分区号为 165。
一般而言,每种操作系统都会有自己独特的方式来区别分区。例如 Dos 及其
之后的 &windows;,会分配给每个主分区及逻辑分区一个驱动器字符
(drive letter),从 C: 开始。FreeBSD 必须安装在主分区。 FreeBSD 可以在这个分区上面存放系统数据
或是您建立的任何文件。然而,如果您有多个硬盘,您也可以在这些硬盘上(全部
或部分)建立 FreeBSD 分区。在您安装 FreeBSD 的时候,必须要有一个分区可以给
FreeBSD 使用。这个分区可以是尚未规划的分区或是已经划好,但是里面的数据
您都不想保存的分区。如果您已经用完了您硬盘上的所有分区,那么您必须使用其它操作系统所
提供的工具(如 DOS 或 &windows; 下的 fdisk)来腾出一个分区
给 FreeBSD 使用。如果您的某个分区有多余的空间,您可以使用它。但是使用前您需要先整理
一下这些分区。FreeBSD 最小安装需要约 100 MB 的空间,但是这仅是 非常
基本的安装,几乎没有剩下多少空间可以建立您自己的文件。一个较理想的最小安装是
250 MB,不含图形界面;或是 350 MB 以上,包含图形界面。如果您还需要安装
其它的第三方厂商的套件,那么将需要更多的硬盘空间。您可以使用商业软件,例如 &partitionmagic;(硬盘分区魔术师)
来建立给 FreeBSD 使用的空间。FreeBSD 光盘的 tools
目录包含两个免费的工具也可以完成这个工作:FIPS 以及
PResizer,它们的文档可以在同一目录中找到。FIPS、
PResizer,和 &partitionmagic;
能够改变 FAT16 以及 FAT32 分区大小—
在 &ms-dos; 方式下使用以及 &windows; ME。这些工具的说明文件可以在同一个目录下面找到
&partitionmagic; 是知道的唯一能改变 NTFS
分区大小的应用软件。不当的使用这些工具可能会删掉您硬盘上的数据资料!在使用这些工具前
确定您有最近的、没问题的备份数据。使用已存在的分区假设您只有一个 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; 来整理
或切割您的分区。Alpha 体系结构的硬盘分配方式Alpha在 Alpha 上,您必须使用一整颗硬盘给 FreeBSD,没有办法在同一个硬盘上跟
其它操作系统共存。根据不同的 Alpha 机器,您的硬盘可以是 SCSI 或 IDE 硬盘,只要
您的机器可以从这些硬盘开机就可以。按照 Digital/Compaq 使用手册书写的惯例,所有 SRM 输入的部分都用大写
表示。注意,SRM 大小写有别。要想得知您硬盘的名称以及型号,可以在 SRM console 提示符下使用
SHOW DEVICE 命令:>>>SHOW DEVICE
dka0.0.0.4.0 DKA0 TOSHIBA CD-ROM XM-57 3476
dkc0.0.0.1009.0 DKC0 RZ1BB-BS 0658
dkc100.1.0.1009.0 DKC100 SEAGATE ST34501W 0015
dva0.0.0.0.1 DVA0
ewa0.0.0.3.0 EWA0 00-00-F8-75-6D-01
pkc0.7.0.1009.0 PKC0 SCSI Bus ID 7 5.27
pqa0.0.0.4.0 PQA0 PCI EIDE
pqb0.0.1.4.0 PQB0 PCI EIDE此范例使用 Digital Personal Workstation 433au 并且显示出此机器联接
有三个硬盘。第一个是 CDROM,叫做 DKA0;另外两个
是两个硬盘,分别叫做 DKC0 及 DKC100
。硬盘名称中有 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 网站的 FreeBSD Errata(勘误表)中, 在您安装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/<arch>/<version>-RELEASE/floppies/.
将 <arch> 和
<version>
替换为您使用的计算机体系结构和希望安装的版本号。
例如,用于安装 &i386; 上的
&os; &rel.current;-RELEASE 的文件的地址,
应该是 。软盘映像文件的扩展名为 .flp。在
floppies/ 目录下包含了许多不同的映像文件,根据您
要安装的 FreeBSD 版本有不同的映像文件;有时候不同的硬件也需要不同的映像
文件, 在大部分的情形下,您需要两个文件: kern.flp
和 mfsroot.flp。另处不同的系统可能需要额处的硬件
驱动程序。这些驱动程序在 drivers.flp 映像文件里
提供。查看同一目录下的 README.TXT 文件以获得最新
的软盘映像文件信息。您的 FTP 程序必须使用 二进制模式 来下载这些映
像文件。有些浏览器只会用text (或ASCII
) 模式来传输数据,用这些浏览器下载的映像文件做成的软盘可
能无法正常开机。准备软盘您必须为您下载的每一个映像文件准备一张软盘。并且请避免使用到坏掉的
软盘。最简单的方式就是您先将这些软盘格式化,不要相信所谓的已格式化的软
盘。在 &windows; 下的格式化程序不会告诉您出现多少坏块,它只是简单的标记它
们为 bad 并且忽略它们。根据建议您应该使用全新的软盘来存放
安装程序。如果您在安装 FreeBSD 的过程中造成当机、冻结或是其它怪异现象,第一个
要怀疑的就是引导软盘。请用其它的软盘制作映像文件再试试看。将映像文件写入软盘中.flp 文件 并非 一般的文件,
您不能直接将它们复制到软盘上。事实上它是一张包含完整磁盘内容的映像文件。这
表示您 不能 简单的使用 DOS 的 copy 命令将文件写到软盘上,
而必须使用特别的工具程序将映像文件直接写到软盘中。DOS如果您使用 &ms-dos; 或 &windows; 操作系统来制作引导盘,那么您可以使用我们提供
的 fdimage 程序来将映像文件写到软盘中。如果您使用的是光盘,假设光盘的驱动器符号为 E:,
那么请执行下面的命令:E:\>tools\fdimage floppies\kern.flp A:重复上述命令以完成每个 .flp 文件的写入,每换一个
映像文件都必须更换软盘;制作好的软盘请注明是使用哪个映像文件做的。如果您的映
像文件存放在不同的地方,请自行修改上面的指令指向您存放 .flp
文件的地方。要是您没有 FreeBSD 光盘,您可以到 FreeBSD 的 FTP 站点tools
目录 中下载。如果您在 &unix; 系统上制作软盘(例如其它 FreeBSD 机器),您可以使用
&man.dd.1; 命令来将映像文件写到软盘中。如果您用 FreeBSD,可以执行下面的命令:
&prompt.root; dd if=kern.flp of=/dev/fd0在 FreeBSD 中,/dev/fd0 指的是第一个软驱(即
A: 驱动器);/dev/fd1 是
B: 驱动器,依此类推。其它的 &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
要按哪个键,常见的是 F2、F10、
Del 或 AltS。不论是要按哪个键,请按它进入 BIOS 设置画面。有时您的计算机
可能会显示一个图形画面,典型的做法是按 Esc 将关掉这个图形
画面,以使您能够看到必要的设置信息。找到设置开机顺序的选项,它的标记为 Boot Order
通常会列出一些设备让您选择,例如:Floppy、
CDROM、First Hard Disk 等等。如果您要用软盘安装,请确定选到 floppy disk;如果您要用光盘安装,
请选择 CDROM。为了避免疑惑,请参考您的主板说明手册。储存设定并离开,系统应该会重新启动。如果您用软盘安装,请将在
一节中制作好的第一张引导盘,里面包含kern.flp
文件的那张盘,放入软盘驱动器中。如果您是从光盘安装,那么开机后请将 FreeBSD 光盘放入光驱中。如果您开机后如往常一样并没有从软盘或光盘引导,请检查:是不是软盘或光盘太晚放入面错失开机引导时间。如果是,请将它们
放入后重新开机。BIOS 设定不对,请重新检查 BIOS 的设定。您的 BIOS 不支持从这些安装介质引导。FreeBSD 即将启动。如果您是从光盘引导,您会见到类似下面的画面:Verifying DMI Pool Data ........
Boot from ATAPI CD-ROM :
1. FD 2.88MB System Type-(00)
Uncompressing ... done
BTX loader 1.00 BTX version is 1.01
Console: internal video/keyboard
BIOS drive A: is disk0
BIOS drive B: is disk1
BIOS drive C: is disk2
BIOS drive D: is disk3
BIOS 639kB/261120kB available memory
FreeBSD/i386 bootstrap loader, Revision 0.8
/kernel text=0x277391 data=0x3268c+0x332a8 |
|
Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [kernel] in 9 seconds... _如果您是从软盘引导,会看到类似下面的画画:Verifying DMI Pool Data ........
BTX loader 1.00 BTX version is 1.01
Console: internal video/keyboard
BIOS drive A: is disk0
BIOS drive C: is disk1
BIOS 639kB/261120kB available memory
FreeBSD/i386 bootstrap loader, Revision 0.8
/kernel text=0x277391 data=0x3268c+0x332a8 |
Please insert MFS root floppy and press enter:按照指示,将kern.flp 软盘取出,放入
mfsroot.flp 软盘,然后按Enter。不论是从软盘或光盘引导,您都会看到下面这段信息:Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [kernel] in 9 seconds... _您可以等待10秒或是按 Enter 键跳过。之后就会进入内核
配置菜单。引导 Alpha 系统Alpha从电脑尚未打开电源开始。找开电脑电源并等待屏幕上出现开机提示信息。如您需要准备安装软盘,请参考 。
将用 kern.flp 做的引导盘放入软驱中然后输入下列命令
(请视实际情况修改命令中的软驱盘符):>>>BOOT DVA0 -FLAGS '' -FILE ''如果您要从光盘引导,请将光盘放入光驱中然后输入下列命令开始安装
(请视情况修改命令中的光驱盘符):>>>BOOT DKA0 -FLAGS '' -FILE ''然后 FreeBSD 就会启动。如果您从软盘引导,到某个阶段您会看到下面的信息:Please insert MFS root floppy and press enter:按照屏幕指示,将 kern.flp 软盘取出,换上
mfsroot.flp 然后按Enter键。不论从软盘或光盘引导,您都会看到下面这段信息:Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [kernel] in 9 seconds... _您可以等待 10 秒或是按 Enter 跳过。之后就会进入内核
设定菜单。配置内核从FreeBSD 5.0 版以后, 用户配置已经不赞成使用新的 &man.device.hints.5;
方法,更多的信息 &man.device.hints.5; 请访问 内核是操作系统最核心的部分。它负责很多工作,
包括存取系统上所有设备,如硬盘、网卡、声卡等等。每一个 FreeBSD
核心支持的设备都有其相对应的驱动程序。这些驱动程序的名称由两个或三个字母级成,譬如:
sa 表示 SCSI 存取驱动程序;sio
表示串口 I/O 驱动程序(管理 COM 端口)。当内核启动的时候,每个驱动程序会检查系统中是否有它所支持的设备。如果找到的话,
这些驱动程序就会配置这些设备的状态以代核心使用。上述设备的检查我们称做 device probing(设备探测)。
但是很不幸地,这样做并不是完全安全的。因为有些硬件驱动程序没有办法想到共存,
有时找到这个设备却让另一个设备处在不稳定的状态。这是 PC
设计上的限制。许多早期的称作 ISA 的设备—(相对于 PCI 设备而言)。ISA
设备的规格需要将硬件的某些数据写死在设备上,最具代表性的就是中断号(IRQ)以及
IO 端口号。这些设定值通常是通过改变设备上的 jumpers(跳线),
或是使用由厂商提供的 DOS 工具程序来改变。这通常是问题的所在,因为这没办法让两个设备共同分享一个 IRQ 或是 IO 端口
地址。新的设备都按照 PCI 规格设计,这些设备就没有上述限制;它们会参考 BIOS
中的设定然后动态分配 IRQ 及 IO 端口地址。如果您的系统中有任何 ISA 设备,那么在设置 FreeBSD 驱动程序的时候您就
必须指定这些设备的 IRQ 及 IO 地址。这也是我们在 一节中希望您先准备一份设备清单的用意。仍然很不幸地,预设给某些设备使用的 IRQ 会跟内存地址互相冲突。这是因为
有些 ISA 设备出厂的设定值就会跟其它的设备冲突。撇开这个不谈,FreeBSD 驱动
程序通常都会根据各制造商设备的出厂设定值来设定,这也是为什么许多设备可
以在 FreeBSD 顺利驱动的原因。在跑 FreeBSD 的时候根本不会有上冲突的问题,因为当两个设备互相冲突的
时候,其中一个设备将被停用(不论您用的是哪种操作系统)。通常在第一次安装 FreeBSD 的时候才会有问题,因为内核希望尽是多包含一
些驱动程序,这样才能支持许多不同设备的配置。这意味着在找到的这些设备中
有可能设定值会互相冲突。FreeBSD 在探测系统设备的时候会按照一的顺序,如
果您的某个设备在较后面探测到,但是跟前面找到的设备设定冲突,那么在安装
FreeBSD 的时候,这个设备不一定能正确雇用。因为如此,当您在安装 FreeBSD 前,可以先看看在系统内核中包含了哪些驱
动程序,如果您没有某些设备,则可以将它们的驱动程序删除或是在稍后您也
可以确认您有的设备的设定值有没有问题。这听起来好像很复杂,但不全然如此。 显示的是内核能设置的第一个配置菜单。
我们推荐您选择Start kernel configuration in full-screen visual
mode 选项, 因为这对新手来说比较容易。内核配置菜单&txt.install.userconfig;内核配置画面 (图)
被分成四个部分:在active(可用)区域的展开式选择菜单分为四个群,例如
Storage(储存设备)、 Network(网络设备)。
每个设备会显示一个对应的说明、由二或三个字母组成的驱动程序名称以及驱动程序
所使用的IRQ和内存地址。另外,如果可用的驱动程序跟另一个可用的驱动程序有冲突,
它们的驱动程序名称之后会显示 CONF 字样。同时栏目标题也会
显示在可用的设备中总共有几个设备有冲突。在 Inactive(停用)区域的驱动程序仍然保留在内核中,但当内核启动的时候
并不会探测这些设备。这个区域的分组方式跟可用区一样。第三区(信息显示区)显示的是目前所选择设备的细节项目设置,包括 IRQ 及
IO 端口地址。第四区告诉您这个画面的操作按键。配置内核可视化视觉接口&txt.install.userconfig2;在这个阶段,您总是会看到有冲突的设备被列出。请不要担心,因为这是正
常的;前面提到在安装的时候所有的设备都会被启用,而其中的某些设备就会跟
其它的设备产生冲突。现在您必须逐一检查这些设备驱动程序,然后解决冲突的问题。解决驱动程序冲突按下 X 键可以将所选择区域的驱动程序完全展开以方便您
检阅。您可以使用方向键在可用设备区前后移动。 显示按下 X 键
后的结果。 展开驱动程序清单停用任何您没有的设备的驱动程序。要停用一个设备,用方向键移动将该
设备反白然后按下 Del 键,则此设备驱动程序就会被移到
Inactive Drivers(停用设备区) 列表。如果您不小心将一个设备停用,那么请按 Tab 切换到
Inactive Drivers 区, 选择被停用的设备,然后按下
Enter 键将它移回可用设备区。请不要移除 sc0。这个驱动程序是控制屏幕
用的,除非您是通过串行线进行安装,否则请不要移除它。如果您用的是 USB 键盘才可以停用 atkbd0 用一般
的键盘请保留此 atkbd0 设备驱动程序。如果现在显示没有冲突,那么您可以跳过这一步骤。否则,剩下的冲突还是必
须解决。如果在信息显示区没有看到 allowed conflict(允许冲突),
那么您必须改变这边显示的 IRQ 及内存地址, 或 必须变更设备
上面的 IRQ 及内存地址。要改变设备驱动程序的 IRQ 及 IO 端口地址,选择要变更的驱动程序然后
按 Enter 键。之后等光标移到第三区(信息显示区)时候您就
可以理发这些设置。您应该输入之前做硬件清单列表的时候所记录的 IRQ 及 IO 端
口地址。要完成更改请按 Q 键并回到可用设备区。如果您不确定该设定什么值,那么可以试试看 -1。
有些 FreeBSD 驱动程序在搜寻设备的时候可以安全找出设备的正确设定值;所以这里设置
-1 就是告诉这些驱动程序自行去尝试找出合适的设置。如果要直接在设备硬件上改变设定值,设定的方法每种设备都不大相同。有些
设备您必须将它从电脑中拆下来然后调整路线或是DIP开关;其它的可能厂商会提供 DOS
工具软盘,里面有程序可以更改这些设定。不论是哪一种方式,您都应该参考设备所附
的使用手册。很明显地,改变这些设定值必须重新开机后才会生效,所以您必须重新进
入 FreeBSD 安装程序。当所有的冲突都解决了以后,您会看到类似
的画面。没有冲突的设备驱动程序状态画面如您所见,可用设备列表变得干净多了,只列出您系统中有的设备。现在您可以储存所做的改变,然后进到下一个安装步骤。按 Q
键离开设备配置界面,您会看到下面的信息:Save these parameters before exiting? ([Y]es/[N]o/[C]ancel)回答 Y 保存配置到内存(安装完成后将后保存到磁盘)然后开始
探测设备。在设备探测完毕后,sysinstall 就会启动并且显
示它的主界面。()。Sysinstall 主界面查看设备探测的结果前面屏幕显示的最后几百行字会存在缓冲区中以便您查阅。要浏览缓冲区,您可以按下 Scroll Lock 键,这会开启画面的
卷动功能。然后您就可以使用方向键或 PageUp 、PageDown
键来上下翻阅。再按一次 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 找到所有您期望出现的设备。如果设备没有
探测到,那么就不会列出。如果此设备需要设定 IRQ 以及 IO 端口地址,请您再确定
是否设定的正确。如果您需要改变某些设备的设置,您可以很容易地退出 sysinstall
程序,然后从头重新来过。这也有助您熟悉这些过程。选择离开 Sysinstall在主界面使用方向键选择 Exit Install 您会看到
如下的信息: User Confirmation Requested
Are you sure you wish to exit? The system will reboot
(be sure to remove any floppies from the drives).
[ Yes ] No如果 CDROM 还留在光驱里,而且选择了
&gui.yes;, 则安装程序将重新启动。如果您是从软盘启动,那么重新开机前您必须将 mfsroot.flp
软盘取出再换上 kern.flp 软盘。介绍 Sysinstallsysinstall 是 FreeBSD 项目所提供的安装程序。
它以 console(控制台)为主,分为向个菜单及画面让您配置及控制安装过程。sysinstall 菜单画面由方向键、Enter
、 Space、以及其它按键所控制。在主画面的 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 之前,有一个重要的事情一定要注意,尤其
是当您有多个硬盘的时候。DOSMicrosoft Windows在 pc 架构,当您跑像 &ms-dos; 或 µsoft.windows; 这种跟 BIOS 相关的操作
系统的时候,BIOS 有能力改变正常的磁盘顺序,然后这些操作系统会跟着 BIOS 做改变。
这让使用者不一定非要有所谓的 primary master 硬盘开机。许多人发
现最简单而便宜备份系统的方式就是再去买一块一模一样的硬盘,然后定期将数据从第
一块硬盘复制到第二个硬盘,使用
Ghost 或
XCOPY。所以,当第一个硬盘死了,或者是被病毒破坏,
或者有坏轨道,他们可以调整 BIOS 中的开机顺序而直接用第二块硬盘开机。这跟将机壳
拆开,把第二块硬盘跟第一块硬盘对调(要调jumper)有同样的效果,差别就是不用拆壳;
因此,对有这方面需求的人而言,直接在 BIOS 中设定非常方便。SCSIBIOS比较昂贵,配有 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 也从此了解o的重要…虽然我们这里的例子使用 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 硬盘的情形,这两个硬盘分别为
ad0 和 ad2。选择要分区的硬盘您可能正在奇怪,为什么 ad1 没有列出来?
为什么遗失了呢?试想,如果您有两个 IDE 硬盘,一个是在第一个 Primary master,一个是
Secondary master,这样会发生什么事呢?如果 FreeBSD 依照找到的顺序来为他们
命名,如 ad0 和ad1
那么就不会有什么问题。但是,现在问题来了。如果您现在想在 primary slave 加装第三个硬盘,
那么这个硬盘的名称就会是 ad1,之前的
ad1 就会变成ad2。
这会造成什么问题呢?因为设备的名称(如ad1s1a)
是用来寻找文件系统的,因此您可能会发现,突然,您有些文件系统从此无法正确
地显示出来,必须修改 FreeBSD 配置文件(译注:/etc/fstab)才可以正确显示。为了解决这些问题,在配置内核的时候可以叫 FreeBSD 直接用 IDE 设备所
在的位置来命名,而不是要据的到的顺序。使用这种方式的话,在 secondary master
的 IDE 设备就 永远是ad2,
即使您的系统中没有ad0 或 ad1
也不受影响。此为 FreeBSD 内核的默认值,这也是为什么上面的画面只显示
ad0 和 ad2的原因。
画面上这台机器的两颗硬盘是装在 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
键继续安装过程。使用Disklabel
创建分区您现在必须在刚刚建立好的分区中规划一些分区。请记住,每个分区代号是
a 到 h, 并且分区
partitions b, c以及
d 为习惯使用的特殊分区,不应该随意变动。某些应用程序可以利用一些特殊的分区而达到较好的效果,尤其是分区分散
在不同的硬盘的时候。但是,现在您是第一次安装FreeBSD,所以不需要去烦恼如
何分割您的硬盘。最重要的是,装好FreeBSD然后学习如何使用它。当您对FreeBSD
有相当程序的熟悉后,您可以随时重新安装FreeBSD,然后改变您分区的方式。下面的范例中有四个分区—一个是磁盘交换分区,别外三个是文件系统。
为其它磁盘分区分区文件系统大小描述bN/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键使用此功能。您会看到类似
的画面。根据您硬盘的大小,自动分配所配置
的大小不一定合适。但是没有关系,您并不一定要使用预设的大小。从 FreeBSD 4.5开始,自动配置会给/tmp
目录一个独立分区,而不是附属在 / 之下。这样可以
避免将一些临时文件放到根目录中(译注:可能会用完根目录空间)。Sysinstall Disklabel 编辑器-使用自动配置如果要删除自动配置的分区,然后想自行建立,您可以使用方向键移到第一
个分区,然后按D 键删除它。重复此动作直到删除所有自动配置
的分区。要建立第一个分区(a, 挂接点为/ —
根目录),先确定画现上方的硬盘slice有被选取(反蓝),然后按下 C
键。接着会出现一个对话框询问您要配置的分区大小(如 )
您可以输入要的block数量或是(译注:通常会)输入想使用的大小,然后后面另上
M 表示MB、G GB或是 C
表示(柱面)。从 FreeBSD 5.X版本开始,用户可以:选择 Custom Newfs
选项来使用UFS2 (Z) ,使用Auto Defaults
来创建 labels ,并使用 Custom Newfs选项来修改它们。
或是在创建时加上规则。如果您使用了Custom Newfs
标记不要忘了添加标记来升级它们。根目录使用空间显示在对话框中的默认大小是使用整个分区,您可以用
Backspace键删除这些数字然后按照上述方式输入您想要的
大小,如64M(),
然后按&gui.ok;。编辑要分区大小输入完大小后接着部您要建立的分区是文件系统还是交换空间,如
所示。第一个分区是文件系统,所以
确认选择 FS后按Enter键。选择根分区类型最后,因为您要建立的是一个文件系统,所以必须告诉
Disklabel 这个文件系统要挂接在什么地方,如
所示。根文件系统的挂接点
/, 所以请输入 /,然后按
Enter键。选择根挂接点刚刚制作好的分区会显示在画面上。您应该重复上述的动作以建立其它的
分区。当建立交换空间的时候,系统不会问您要将它挂接在哪里,因为交换空间是不用
挂在系统上的。当您在建立最后一个分区/usr的时候,您可以
直接使用默认的大小,即所有此分区剩余的空间。您最终的 FreeBSD DiskLabel 编辑器画面会类似
, 实际数字按您的选择而有所不同。按下
Q 键完成分区的建立。Sysinstall Disklabel 编辑器选择要安装的软件包选择要安装的软件包安装哪些软件包在很大程度上取决于系统将被用来做什么,以及有多少可用的磁盘空间。
内建的选项包括了运行所需要的最小系统,到把所有软件包全都装上的常用配置。
&unix; 或 FreeBSD 新手通常直接选择一个设定好的软件包就可以了,
而有经验的使用者则可以考虑自己订制安装哪些软件包。按下 F1 可以看到有关软件包的更多选项信息,
以及它们都包含了哪些软件,之后,可以按 Enter
回到软件包选择画面。如果您想要使用图形界面,您必须选择软件包名称开头是 X
的软件包。 &xfree86; 的配置以及选择其默认桌面管理
员必须等到安装完毕后再来做。&xfree86; 的版本依赖于您正在安装的FreeBSD
的版本。如果您安装的是FreeBSD 4.6以前的版本,那么默认的情况下安装
&xfree86; 3.X 版本。如果您安装的 FreeBSD 4.6
以后的版本,那么默认情况下安装&xfree86; 4.X 版本。您应该到&xfree86;
网站看看您的显卡有没有被您安装的FreeBSD所支持。您也可以选择不安装
图形界面,等安装完成后,再通过ports collection来安装和配置适合版本
的&xfree86; 。如果您以后要自己编译内核,那么请您选择包含原始代码的软件包。如果您
想知道为什么要建立自订的内核或是如何建立自订的内核,请参考
。很明显,安装容量最大的当然就是全部安装啦。如果您的硬盘够大,您
可以选择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安装模式installationnetworkFTP使用FTP安装,有三种方式:主动式(active)FTP、被动式(passive)FTP
或是透过HTTP代理服务器。主动式FTP: 从FTP服务器安装这个选项将会使所有的FTP传输使用 Active模式。
这将无法通过防火墙,但是可以使用在那些比较早期,不支持被动模式的FTP站。
如果您的连接在使用被动(默认值)模式卡住了,请换主动模式看看!被动模式FTP: 通过防火墙从FTP服务器安装FTPpassive mode此选项会让 sysinstall 使用
Passive模式来安装。这使得使用者可以穿过
不允许用非固定TCP PORTS连入的防火墙。 FTP 透过 HTTP 代理服务器: 透过HTTP代理服务器,由
FTP服务器安装FTPvia a HTTP proxy此选项会让 sysinstall 通过HTTP协议
(像浏览器一样)连到proxy服务器。proxy服务器会解释送出的请求,
然后通知FTP服务器。因为通过HTTP协议,所以可以穿过防火墙。
要用这种方式,您必须指定proxy服务器的地址。对于一个 FTP 代理服务器而言,通常在使用者登入名称中加入您要登入的
服务器的用户名,加在 @ 符号后面。然后代理服务器就会
假装 成一个真的服务器。 例如, 假设您要从
ftp.FreeBSD.org 安装,通过 FTP
代理服务器 foo.example.com,使用1024端口。在这种情况下,您可以到 options 菜单,将 FTP username 设为
ftp@ftp.FreeBSD.org,密码设为您的电子邮件地址。
安装介质部分,指定FTP (或是被动式 FTP,如果代理服务器支持的话) 以及URL为
ftp://foo.example.com:1234/pub/FreeBSD。因为ftp.FreeBSD.org的
/pub/FreeBSD 目录会被抓取到
foo.example.com之下,您就可以从
这台 机器 (会从
ftp.FreeBSD.org 抓取文件) 安装。安装确认到此为止,可以开始进行安装了,这也是您避免更动到您的硬盘的最后机会。 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: /stand/sysinstall .
[ OK ]
[ Press enter to continue ]按下 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
后会离开安装程序回到主安装界面。从主安装界面可以退出安装程序。安装后的配置如果安装成功,您将可以对一些基本的项目作安装后初步的配置。任何一项
配置在重新开机前都可以重新配置,系统会使用最后一次的配置值。重新开机后
如果再做配置,可以执行/stand/sysinstall 命令然后选择
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.comIPv4 Gateway(IPv4网关)输入将数据包传送到远端网络的机器IP地址。只有当机器是网络上的
一个接点时才要输入。如果这台机器要作为您局域网的网关,
请将此处设为空白。IPv4网关,也被称作默认网关或
默认路由器。域名服务器本地网络中的域名服务器的IP地址。本例中假设机器所在的网络中
没有域名服务器,所以填入的是ISP提供的域名服务器地址
(208.163.10.2。)IPv4 地址本机所使用的IP地址。本例为
192.168.0.1。子网掩码本范例中的IP地址属于一个C类地址
(192.168.0.0 -
192.168.255.255)。默认的子网掩码为
(255.255.255.0)。 ifconfig 额外参数设定任何ifconfig命令跟网卡接口有关的参数。
本范例中没有。使用 Tab 键选择 &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
配置文件来启用它们。请参阅
以获得更多的信息。如果您想现在就配置这些网络服务,请选择[ 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; 将允许您添加网络服务
(将相应网络服务每行开头的#除掉即呆。编辑 inetd.conf配置文件在加入您想启用的服务后,按下 Esc键会出现一个
对话框可以让您离开以及保存修改。匿名 FTP 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键。您会看到下面(或类似)的画面:默认的匿名 FTP 配置按 F1 键可以查看在线帮助文档:This screen allows you to configure the anonymous FTP user.
The following configuration values are editable:
UID: The user ID you wish to assign to the anonymous FTP user.
All files uploaded will be owned by this ID.
Group: Which group you wish the anonymous FTP user to be in.
Comment: String describing this user in /etc/passwd
FTP Root Directory:
Where files available for anonymous FTP will be kept.
Upload subdirectory:
Where files uploaded by anonymous FTP users will go.默认的FTP根目录将放在 /var目录下。如果您
的/var目录空间不足以应付您的FTP需求,您可以将FTP的根目录改为
/usr 目录下的 /usr/ftp
目录。当您对一切配置都满意后,请按 Enter 键继续。 User Confirmation Requested
Create a welcome message file for anonymous FTP users?
[ Yes ] No如果您选择 &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 文件。编辑 exports文件按照指示加入真实输出的文件目录或是稍后用您喜爱的编辑器自行编辑。
请记下画面下方显示的文件名称及位置。按下 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。安全配置安全配置 中包含了一些可以通过启用或停用某些程序
来达到某些程序的安全性配置。安全配置越严格,则默认启动的程序就越少。
基本的原则是:除非必要,否则不要执行一些可有有无的程序。请注意,安全文件的配置都是默认值,在安装完成后您可以随时通过
编辑 /etc/rc.conf配置文件来改变这些配置。
如果想得到更多的信息请参阅 &man.rc.conf.5; 手册。下表说明每一种安全等级的意义。每列所代表的是安全等级,每行所
代表的是程序或功能是启用还是停用。
User Confirmation Requested
Do you want to select a default security profile for this host (select
No for "medium" security)?
[ Yes ] No选择 &gui.no; 并按
Enter 会将安全等级高为中度安全。选择 &gui.yes; 并按
Enter将允许您选择不同程序的安全等级。选择安全等级按 F1 显示在线帮助;按Enter
键可以回到选择画面。如果您没有什么特殊的等级需求,请用方向键选择 中度,
确定选择了 &gui.ok; 然后按Enter。依据您选择的安全等级,会显示相对应的确认信息。 Message
Moderate security settings have been selected.
Sendmail and SSHd have been enabled, securelevels are
disabled, and NFS server setting have been left intact.
PLEASE NOTE that this still does not save you from having
to properly secure your system in other ways or exercise
due diligence in your administration, this simply picks
a standard set of out-of-box defaults to start with.
To change any of these settings later, edit /etc/rc.conf
[OK] Message
Extreme security settings have been selected.
Sendmail, SSHd, and NFS services have been disabled, and
securelevels have been enabled.
PLEASE NOTE that this still does not save you from having
to properly secure your system in other ways or exercise
due diligence in your administration, this simply picks
a more secure set of out-of-box defaults to start with.
To change any of these settings later, edit /etc/rc.conf
[OK]按下 Enter 继续安装后面的配置。安全等级并非万能药!即使您选择极度安全,您还是必须时常阅读
邮件列表中有关安全的部分、使用有效的密码以及平常就注意安全问题。
这里只是稍为配置一下常用的安全等级而已。配置系统终端系统提供了几个选项可以让您配置终端的表现方式。 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 non-USB mouse attached to it?
[ Yes ] No 如果您使用的不是USB鼠标,请选择 &gui.yes; ;
否则请选择 &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 退回到系统安装完成后的配置画面。配置额外的网络服务配置网络服务总是让那些新手敬畏,因为他们缺乏在这个领域应有的基础知识。
网络,包括因特网有许多关于现代操作系统包括 &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 的默认
输出选项。Anon FTP 允许匿名 FTP 访问。
选中这个选项,可以使这台机器成为一台匿名 FTP 服务器。
要注意启用这个选项的安全风险。其它的菜单将说明一些安全问题和更深入的配置。Gateway 配置菜单可以使本机器成为一台以前我们提到过
的网关。如果您在安装过程中偶尔选中了它,也可以在这里选中这个选项来取消。Inetd 选项用来配置或完全禁止我们在上面讨论的
&man.inetd.8; 守护程序。Mail 可以用来配置系统默认的 MTA
或邮件传输代理。选择这个选项将了出现下面的菜单:选择默认的 MTA这里给您提供了一个安装默认MTA 的机会。
MTA 用来投递本系统上用户邮件到因特网去。选择 Sendmail 将会安装 &os;默认的
流行的的 sendmail 服务程序。
Sendmail local 选项用来设置sendmail
默认的MTA,也可以禁止它从Internet接收邮件的能力。
还有其它的一些选项如:
Postfix 和
Exim 都类似于
Sendmail的角色。它们两者也可以投递邮件;
有些用户更喜欢选择使用Sendmail、
MTA二者之一。选择 MTA或不选择它之后,网络配置菜单的下一
个选项是 NFS client 客房端程序。NFS client 客房端可以使系统通过 NFS
与服务器进行通信。
NFS 服务器通过NFS
协议可以使其它在网络上的机器来访问自己的文件系统。如果这台机器要作为一台
独立的服务器,这个选项可以保留不选。下面可能还有更多的配置,关于客户端和
服务器的配置请参阅 一节。接下来的 NFS 服务器选项,可以允许您把系统设备成
为一台NFS 服务器。这需要更多的信息来启动远程过程调
用( RPC)服务。 RPC用来连接调
用两台机器上的程序。下一项是 Ntpdate 选项,处理时间同步。当选择它后,
会出现一个像下面所似的菜单:Ntpdate 配置从这个菜单选择一个离您最近的服务器。在您连接这台服务器时,除去
连接时的反应时间,时间同步最精确的服务器。下一个选项是 PCNFSD 。这个选项将从安装包中
安装net/pcnfsd 软件。这个程序
能够为不能提供它们自己,例如微软的 &ms-dos; 操作系统提供
NFS 的认证服务。滚屏到下一页看一下其它选项:网络配置之下层配置 &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服务,我们推荐通过
使用它来使用 telnet 和 FTP 服务。
sshd服务通过使用加密技术来创建从一台机器到另一台机
器的安全连接。最后有一个 TCP 扩展选项。这可以用来扩展在
RFC 1323 和RFC 1644
里定义的TCP 功能。当许多主机以高速连接本机时,可
能会引起某些连接被丢弃。我们不推荐使用这个选项,但是当使用独立的主机
时可以从它上面得到一些好处。现在您已经配置完成了网络服务,您可以滚动屏幕到顶部选择 Exit
项,退出进入下一个配置部分。配置 X Server为了使用图形化用户界面,例如KDE,
GNOME,或其它窗口管理程序,您必须
配置 X server 。为了以非root用户运行
&xfree86; 您必须安装
x11/wrapper 软件。在FreeBSD 4.7及以上
版本是默认安装的,但以前的版本要手工安装到系统中。要知道您的显卡是否被支持,请参考
&xfree86; 网站。 User Confirmation Requested
Would you like to configure your X server at this time?
[ Yes ] No您必须知道您的显示器及显卡的制造规格。如果配置有误,有可能造成设备
损毁。如果您手边没有这样的信息,请选择
&gui.no; 并且等到您有这些信息后再执行
/stand/sysinstall程序,选择
Configure 下的
XFree86来配置。这时如果配置X server
不正确的话系统会出现锁死。建议在安装完毕后再配置X server。如果您有显卡和显示器的信息,请选择
&gui.yes; 并按 Enter
来配置 X-server。选择配置方法菜单您可以通过许多方法来配置 X server。在认真读了所有的说明后,
请使用方向键来选择一种配置方式,并按Enter。
键确认。xf86cfg 和
xf86cfg -textmode 配置方法可能会使屏幕黑屏一会
过一会即会启动。要有耐心。下面将介绍xf86config 配置工具。
根据系统硬件的不同,下面的信息可能会适当的发生变动: Message
You have configured and been running the mouse daemon.
Choose "/dev/sysmouse" as the mouse port and "SysMouse" or
"MouseSystems" as the mouse protocol in the X configuration utility.
[ OK ]
[ Press enter to continue ]这个信息指明,前面配置的鼠标驱动程序被检测到。按
Enter 键继续。启动 xf86config 后会显示一个简单的说明:This program will create a basic XF86Config file, based on menu selections you
make.
The XF86Config file usually resides in /usr/X11R6/etc/X11 or /etc/X11. A sample
XF86Config file is supplied with XFree86; it is configured for a standard
VGA card and monitor with 640x480 resolution. This program will ask for a
pathname when it is ready to write the file.
You can either take the sample XF86Config as a base and edit it for your
configuration, or let this program produce a base XF86Config file for your
configuration and fine-tune it.
Before continuing with this program, make sure you know what video card
you have, and preferably also the chipset it uses and the amount of video
memory on your video card. SuperProbe may be able to help with this.
Press enter to continue, or ctrl-c to abort.按 Enter 将启动鼠标配置。请按照指示选择
Mouse Systems 作为鼠标协议,
/dev/sysmouse 作为鼠标端口。下面的例子
向您说明的是使用一个 PS/2 鼠标:First specify a mouse protocol type. Choose one from the following list:
1. Microsoft compatible (2-button protocol)
2. Mouse Systems (3-button protocol) & FreeBSD moused protocol
3. Bus Mouse
4. PS/2 Mouse
5. Logitech Mouse (serial, old type, Logitech protocol)
6. Logitech MouseMan (Microsoft compatible)
7. MM Series
8. MM HitTablet
9. Microsoft IntelliMouse
If you have a two-button mouse, it is most likely of type 1, and if you have
a three-button mouse, it can probably support both protocol 1 and 2. There are
two main varieties of the latter type: mice with a switch to select the
protocol, and mice that default to 1 and require a button to be held at
boot-time to select protocol 2. Some mice can be convinced to do 2 by sending
a special sequence to the serial port (see the ClearDTR/ClearRTS options).
Enter a protocol number: 2
You have selected a Mouse Systems protocol mouse. If your mouse is normally
in Microsoft-compatible mode, enabling the ClearDTR and ClearRTS options
may cause it to switch to Mouse Systems mode when the server starts.
Please answer the following question with either 'y' or 'n'.
Do you want to enable ClearDTR and ClearRTS? n
You have selected a three-button mouse protocol. It is recommended that you
do not enable Emulate3Buttons, unless the third button doesn't work.
Please answer the following question with either 'y' or 'n'.
Do you want to enable Emulate3Buttons? y
Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/mouse.
On FreeBSD, the default is /dev/sysmouse.
Mouse device: /dev/sysmouse下一个要配置的项目是键盘。在例子中使用的键盘一般是101-key 。您可以选择不
同的键盘类型或直接按 Enter 键来使用默认配置。Please select one of the following keyboard types that is the better
description of your keyboard. If nothing really matches,
choose 1 (Generic 101-key PC)
1 Generic 101-key PC
2 Generic 102-key (Intl) PC
3 Generic 104-key PC
4 Generic 105-key (Intl) PC
5 Dell 101-key PC
6 Everex STEPnote
7 Keytronic FlexPro
8 Microsoft Natural
9 Northgate OmniKey 101
10 Winbook Model XP5
11 Japanese 106-key
12 PC-98xx Series
13 Brazilian ABNT2
14 HP Internet
15 Logitech iTouch
16 Logitech Cordless Desktop Pro
17 Logitech Internet Keyboard
18 Logitech Internet Navigator Keyboard
19 Compaq Internet
20 Microsoft Natural Pro
21 Genius Comfy KB-16M
22 IBM Rapid Access
23 IBM Rapid Access II
24 Chicony Internet Keyboard
25 Dell Internet Keyboard
Enter a number to choose the keyboard.
1
Please select the layout corresponding to your keyboard
1 U.S. English
2 U.S. English w/ ISO9995-3
3 U.S. English w/ deadkeys
4 Albanian
5 Arabic
6 Armenian
7 Azerbaidjani
8 Belarusian
9 Belgian
10 Bengali
11 Brazilian
12 Bulgarian
13 Burmese
14 Canadian
15 Croatian
16 Czech
17 Czech (qwerty)
18 Danish
Enter a number to choose the country.
Press enter for the next page
1
Please enter a variant name for 'us' layout. Or just press enter
for default variant
us
Please answer the following question with either 'y' or 'n'.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)? n接下来,我们要配置显示器。不要超过您显示器的刷新频率,这样可以
会损坏您的显示器。如果您有疑问,请参考其它信息后再做配置。Now we want to set the specifications of the monitor. The two critical
parameters are the vertical refresh rate, which is the rate at which the
whole screen is refreshed, and most importantly the horizontal sync rate,
which is the rate at which scanlines are displayed.
The valid range for horizontal sync and vertical sync should be documented
in the manual of your monitor. If in doubt, check the monitor database
/usr/X11R6/lib/X11/doc/Monitors to see if your monitor is there.
Press enter to continue, or ctrl-c to abort.
You must indicate the horizontal sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range.
It is VERY IMPORTANT that you do not specify a monitor type with a horizontal
sync range that is beyond the capabilities of your monitor. If in doubt,
choose a conservative setting.
hsync in kHz; monitor type with characteristic modes
1 31.5; Standard VGA, 640x480 @ 60 Hz
2 31.5 - 35.1; Super VGA, 800x600 @ 56 Hz
3 31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
4 31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
5 31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz
6 31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz
7 31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz
8 31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz
9 31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz
10 31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz
11 Enter your own horizontal sync range
Enter your choice (1-11): 6
You must indicate the vertical sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range. For interlaced modes,
the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).
1 50-70
2 50-90
3 50-100
4 40-150
5 Enter your own vertical sync range
Enter your choice: 2
You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.
The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition: Hitachi下一个配置是从显卡的驱动列表里选择一个显卡驱动程序。如果忽略
当前列表中的选项,请直接按Enter 下一屏将会出现在屏幕上,
会显示下面的信息:Now we must configure video card specific settings. At this point you can
choose to make a selection out of a database of video card definitions.
Because there can be variation in Ramdacs and clock generators even
between cards of the same model, it is not sensible to blindly copy
the settings (e.g. a Device section). For this reason, after you make a
selection, you will still be asked about the components of the card, with
the settings from the chosen database entry presented as a strong hint.
The database entries include information about the chipset, what driver to
run, the Ramdac and ClockChip, and comments that will be included in the
Device section. However, a lot of definitions only hint about what driver
to run (based on the chipset the card uses) and are untested.
If you can't find your card in the database, there's nothing to worry about.
You should only choose a database entry that is exactly the same model as
your card; choosing one that looks similar is just a bad idea (e.g. a
GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of
hardware as can be).
Do you want to look at the card database? y
288 Matrox Millennium G200 8MB mgag200
289 Matrox Millennium G200 SD 16MB mgag200
290 Matrox Millennium G200 SD 4MB mgag200
291 Matrox Millennium G200 SD 8MB mgag200
292 Matrox Millennium G400 mgag400
293 Matrox Millennium II 16MB mga2164w
294 Matrox Millennium II 4MB mga2164w
295 Matrox Millennium II 8MB mga2164w
296 Matrox Mystique mga1064sg
297 Matrox Mystique G200 16MB mgag200
298 Matrox Mystique G200 4MB mgag200
299 Matrox Mystique G200 8MB mgag200
300 Matrox Productiva G100 4MB mgag100
301 Matrox Productiva G100 8MB mgag100
302 MediaGX mediagx
303 MediaVision Proaxcel 128 ET6000
304 Mirage Z-128 ET6000
305 Miro CRYSTAL VRX Verite 1000
Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.
288
Your selected card definition:
Identifier: Matrox Millennium G200 8MB
Chipset: mgag200
Driver: mga
Do NOT probe clocks or use any Clocks line.
Press enter to continue, or ctrl-c to abort.
Now you must give information about your video card. This will be used for
the "Device" section of your video card in XF86Config.
You must indicate how much video memory you have. It is probably a good
idea to use the same approximate amount as that detected by the server you
intend to use. If you encounter problems that are due to the used server
not supporting the amount memory you have (e.g. ATI Mach64 is limited to
1024K with the SVGA server), specify the maximum amount supported by the
server.
How much video memory do you have on your video card:
1 256K
2 512K
3 1024K
4 2048K
5 4096K
6 Other
Enter your choice: 6
Amount of video memory in Kbytes: 8192
You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names (possibly from a card definition).
Your card definition is Matrox Millennium G200 8MB.
The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:接下来,设置显卡的分辨率。典型的使用范围是 640x480, 800x600,
和 1024x768,这些显卡的功能特性、分辨率的大小以眼睛的舒适为准。
当选择颜色深度时,可以选择您显卡支持最大模式。For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:
"640x480" "800x600" "1024x768" "1280x1024" for 8-bit
"640x480" "800x600" "1024x768" "1280x1024" for 16-bit
"640x480" "800x600" "1024x768" "1280x1024" for 24-bit
Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.
1 Change the modes for 8-bit (256 colors)
2 Change the modes for 16-bit (32K/64K colors)
3 Change the modes for 24-bit (24-bit color)
4 The modes are OK, continue.
Enter your choice: 2
Select modes from the following list:
1 "640x400"
2 "640x480"
3 "800x600"
4 "1024x768"
5 "1280x1024"
6 "320x200"
7 "320x240"
8 "400x300"
9 "1152x864"
a "1600x1200"
b "1800x1400"
c "512x384"
Please type the digits corresponding to the modes that you want to select.
For example, 432 selects "1024x768" "800x600" "640x480", with a
default mode of 1024x768.
Which modes? 432
You can have a virtual screen (desktop), which is screen area that is larger
than the physical screen and which is panned by moving the mouse to the edge
of the screen. If you don't want virtual desktop at a certain resolution,
you cannot have modes listed that are larger. Each color depth can have a
differently-sized virtual screen
Please answer the following question with either 'y' or 'n'.
Do you want a virtual screen that is larger than the physical screen? n
For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:
"640x480" "800x600" "1024x768" "1280x1024" for 8-bit
"1024x768" "800x600" "640x480" for 16-bit
"640x480" "800x600" "1024x768" "1280x1024" for 24-bit
Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.
1 Change the modes for 8-bit (256 colors)
2 Change the modes for 16-bit (32K/64K colors)
3 Change the modes for 24-bit (24-bit color)
4 The modes are OK, continue.
Enter your choice: 4
Please specify which color depth you want to use by default:
1 1 bit (monochrome)
2 4 bits (16 colors)
3 8 bits (256 colors)
4 16 bits (65536 colors)
5 24 bits (16 million colors)
Enter a number to choose the default depth.
4最后,要保存您的配置,确定输入 /etc/XF86Config
作为保存位置。I am going to write the XF86Config file now. Make sure you don't accidently
overwrite a previously configured one.
Shall I write it to /etc/X11/XF86Config? y如果您配置失败,您也可以尝试着按 &gui.yes; 来
重新再试一次,会显示下面的信息: User Confirmation Requested
The XFree86 configuration process seems to have
failed. Would you like to try again?
[ Yes ] No如果配置 &xfree86;时遇上困难,请选择
&gui.no; 并按 Enter键继续
进行安装。安装完成后可以使用 xf86cfg -textmode 或
xf86config 命令行配置程序来以 root
用户的身份进行配置。配置 &xfree86; 的另外一种方法
描述在 。如果您选择不配置&xfree86;
那么下一个菜单将让您选择要安装的软件包。默认情况下可以使用组合键 CtrlAltBackspace,在发生错误或在硬件损坏前退出
设置屏幕。默认的显示模式可以使用X系统下的
CtrlAlt+ 或
CtrlAlt-来改变。
一旦有了可以运行的 &xfree86;,
就可以使用 xvidtune 来调整显示的高度和宽度以及显示器的中心位置。一些不适当的配置可能会损坏您的设备。如果在使用它们前存在疑虑,请不要
安装它们。可以使用监视器的控制工具来调整X窗口的显示。与文本显示模式不同
它更容易损坏设备。在调整这些参数前,请阅读 &man.xvidtune.1; 手册。下面是一个配置 &xfree86; 的成功例子,它选择了
使用默认的桌面。选择默认的桌面有许多窗口管理器可以使用。它们从基本的桌面环境到全部的桌面应用,是
一个大型的软件集。一些人可能只希望使用一些占用磁盘空间少,内存低的窗口
管理器;而另外一些人则更倾向于使用有便多特性的桌面环境。选择使用那种桌
面的最好的方法就是尝试着试用一些不同的桌面环境。这些桌面都可以在安装
完成后通过ports收集或包管理器来进行安装。您可以选择一个流行的桌面配置成为默认的桌面,可以使您在安装完
成后立刻启动它。选择默认桌面使用箭头选择一个桌面,然后键入Enter键。选择的桌面将被
安装。安装软件包这些软件包已经被预编译成二进制程序了,安装软件有一个很简单的方法。为了说明问题,这里给您做了一个怎样来安装软件包的范例,额外的软件包
也可以在这时安装。您也可以在安装结束后使用
/stand/sysinstall 程序来安装软件包。 User Confirmation Requested
The FreeBSD package collection is a collection of hundreds of
ready-to-run applications, from text editors to games to WEB servers
and more. Would you like to browse the collection now?
[ Yes ] No选择 &gui.yes; 按Enter
将会显示软件包选择屏幕。选择软件所的种类在任何时候只有安装介质上有的软件包才能被安装进系统。如果选择All 那么所有的软件包将会被显示,您也
可以选择一个特殊的分类。使用箭头进行选择,然后键入 Enter。一个菜单将会显示这个分类中可用的所有软件包。选择软件包bash shell 被选中了。通过在加亮的软件
上键入Space 键,来选择您想要的软件所。每个选择的软件
包的简短描述都会显示在屏幕左下脚。按 Tab 键选择 &gui.ok;或 &gui.cancel;。当您完成了安装标记之后,键入 Tab 键选择 &gui.ok;
然后键入Enter 返回软件包选择菜单。左右箭头键也可以用来选择 &gui.ok;和 &gui.cancel;。用这种方法也可以
用 &gui.ok; 然后按 Enter 来返回软件包选择菜单。安装软件包使用 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 中修改。
bash shell 是先前默认安装的shell。
不要使用一个不存在的或您不能登陆的shell。最通用的shell是使用
BSD-world 的 C shell,可以通过指定/bin/tcsh来修改。用户也可以被添加到 wheel 组中成了一个超级用户,
从而拥有 root权限。当您感觉满意时,键入 &gui.ok; 键,用户和组管理菜单将会重新出现。退出用户和组管理因特殊需要的组也可以在此时进行添加,也可以在安装完成后使用
/stand/sysinstall 来完成。当您完成添加用户的时候,选择Exit
然后键入Enter 继续下面的安装。设置 root 密码 Message
Now you must set the system manager's password.
This is the password you'll use to log in as "root".
[ OK ]
[ Press enter to continue ]键入 Enter 来设置 root
密码。密码必须正确地输入两次。Changing local password for root.
New password :
Retype new password :密码成功键入后,安装将继续。退出安装如果您需要配置额外的网络设备或要做其它的配置,您可以在这时或以后
通过 /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 from the drives).
[ Yes ] No选择 &gui.yes; 取出软盘。CDROM驱动器将被锁定,
直到机器重新启动。CDROM然后就可以从驱动器中取出来了。在系统重新启动的时候可能会见到出错信息。FreeBSD的启动FreeBSD 在 &i386;上启动如果启动正常,您将看到在屏幕上有很多信息滚动,最后您会看到登陆命令行。
您可以通过键入 Scroll-Lock和使用 PgUp
与 PgDn来查看信息,再键入 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 来启动视察环境。 FreeBSD 在 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
信息时,您就可以安全的关闭计算机了。如果按下任意一个键,计算机将重新启动。您也能够使用
CtrlAltDel
组合键来重新启动计算机,但是不推荐使用这个操作。支持的硬件hardwareFreeBSD当前可以广泛运行在ISA、VLB、EISA、PCI总线的PC上,包括
Inter,AMD,Cyrix或 NexGen x86系列的机器,还有一些
Compaq Alpha的机器。支持普通的 IDE 或 ESDI 驱动配置,各种SCSI控制器,
PCMCIA卡,USB设备,网卡和其它网络串口设备。FreeBSD也支持IBM微通道
(MCA)的总线结构。每个发行版都会提供一个FreeBSD支持的硬件列表。您可以在名字叫做
HARDWARE.TXT的文件中找到。它可以在CDROM或FTP发行组件
或sysinstall的文档菜单中找到。对于特定的架构,都
有相应的硬件支持列表。也可以在FreeBSD的网站 Release
Information 找到更多的信息。常见问题安装常见问题下面将介绍一些在安装过程中常见的问题,像如何报告发生的问题,如何
双重启动FreeBSD和 &ms-dos;。/para>
当您遇到错误时,应该怎么做?由于pc结构的限制,不可能100%的不出现问题,但是有些问题是您可以
自己解决的。先检查您的硬件,确保您的硬件被支持。如果您的硬件能够被扶持,但还是会出问题,那就重新启动计算机。当出现
内核配置信息的时候,重新配置一下硬件信息。因为绝大多数硬件的IRQ,淡IO地
址,DMA通道都有它们的生产商预先进行默认配置。如果您的硬件已经重新装配了,
就需要使用配置编辑器告诉FreeBSD到哪里去找相关信息。如果某个设备配置好后,发现又有个设备出现错误。碰到这种情况,就当卸掉
这个设备的驱动程序。有些安装问题可以借助更新硬件的程序来解决,特别是主板的
BIOS 。大部分的主板制造商都会提供网站给用户下载新的
BIOS以及提供如何更新的说明。也有许多制造商强烈建议,除非必要否则不要轻易更新
BIOS 。因为更新的过程可能
会发生问题,进而损害BIOS 芯片。不要在安装中把您必需的驱动程序卸掉,如您的监视器sc0
。如果安装中在修改守配置后,仍然会出现一些意想不到的情况,最好所配置文件恢复到原来
的样子。把它重新启动,再试一下。在配置模式下,您可以:列出在内核中安装的设备驱动程序。禁用不适合您机器的设备驱动程序。通过驱动程序改变IRQ,DRQ和IO端口地址。调整内核与您的硬件设置一致之后,键入 Q ,以新的设置
重新启动计算机。当FreeBSD安装完成之后,在配置模式下做的更改会一直存在,不需
要在每次启动计算机时再重新设置。即使如此,有可能您会想建立一个定制内核使您
的系统效率达到最好,可以看看以下的链接 custom kernel。处理 &ms-dos; 分区存在的问题DOS许多&os;的用户基于µsoft; 的 PC
上安装FreeBSD。以下是一些关于在这种系统中安装FreeBSD常会出现的问题。
&os; 中有一个FIPS的应用程序。这个工具程序可以在
安装光盘的 tools 目录下找到或从&os; 的镜像站点下载。FIPS 允许您将现有的 &ms-dos; 分区一分为二,保留原
原有的分区,让您安装到空出来的分区上。您首先要用 &windows;的
Disk Defragmenter或
Norton Disk Tools来对 &ms-dos; 分区进行碎片整理。然后,
就可以重新启动把FIPS 。 看一下安装菜单,估计一下大概需要
多少安装空间。随后您就可以在新分区上重新引导安装 &os;请查阅
Distributions 菜单上您的安装类型需要多少空间。有一个由PowerQuest公司生产的非常有用的工具。从
http://www.powerquest.com网站上
可以得到&partitionmagic;。这个工具的功能比
FIPS要强大。如果您经常要添加或删除操作系统,强烈建议
您使用它。当然,它很贵。如果您只是想安装 &os; 的话, FIPS
就已足够了。使用 &ms-dos; 和 &windows; 文件系统现在 &os; 还不支持经过Double Space™
应用程序压缩过的文件系统。因此其它的文件系统在被&os;访问其数据之前必须先
解压缩。它可以通过运行位于 Start>
Programs >
System Tools menu中的
Compression Agent程序来实现。 &os;可以支持基于 &ms-dos; 的文件系统。这要求您使用带参数的 &man.mount.msdos.8;
命令 (在 &os; 5.X版本,相应的命令为 &man.mount.msdosfs.8;)
最常使用的是:&prompt.root; mount_msdos /dev/ad0s1 /mnt在此例子中, &ms-dos; 文件系统位于主硬盘的第一个分区。您的情况可能与引不同,
查看命令 dmesg和 mount 的输出。它们应该
可以让您得到足够的分区信息。 &ms-dos; 的扩展分区会被映射在 &os;分区的末尾。换句话说,分区号要大于
&os; 正在使用的分区号。例如,第一个 &ms-dos; 分区可能位于
/dev/ad0s1,&os; 分区可能位于
/dev/ad0s2,跟着是 &ms-dos; 的扩展分区位于
/dev/ad0s3。这可能会使您感觉迷茫。NTFS 分区也可以通过类似 &man.mount.ntfs.8; 命令挂接在FreeBSD上。Alpha 用户的问题与解答Alpha这节主要回答一些在Alpha系统上安装FreeBSD时经常问到的问题。我可以从 ARC 或 Alpha BIOS 控制台启动吗?ARCAlpha BIOSSRM不行。 &os;,像Compaq Tru64 和 VMS,只能从SRM 控制台启动。求救,我没有空间了!我需要删除每一样东西吗?不,这个时候不行。我可以挂上 Compaq Tru64 或 VMS 的文件系统吗?不,这个时候不行。ValentinoVaschettoContributed by 高级安装指南这节主要描述在一些特殊情况下如何安装FreeBSD。在一个没有显示器或键盘的系统上安装FreeBSDinstallationheadless (serial console)serial console这种类型的安装叫做 headless install(无关安装),
因您正要安装FreeBSD的机器不是没带显示器,就是没有显卡。您可能会问那怎么安装?
可以使用一个串行控制台。串行控制台基本上是使用另外一台机器来充当主显示设备
和键盘。要这样做,只要执行下面的步骤:创建安装软件,请看 一节说明。按下面的步骤,修改这些软盘用来引导进入一个串行控制台:通过启动软盘来引导进入一个串行控制台mount如果您想用软盘,FreeBSD将进入它通常的安装模式。我们要把FreeBSD
引导进入串行控制台,需要这样做,您必须使用 &man.mount.8;命令在FreeBSD系统
上挂一kern.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的线,
因为它在一些十字交叉口有金属线。开始启动安装现在开始启动安装。把 kern.flp 的那张软盘
插入软盘驱动器,然后开启电源。连接您的无头机器cu现在您已经通过&man.cu.1;连接到了那台机器。&prompt.root; cu -l /dev/cuaa0就这样!您已经能够通过您的cu session对话来控制
那台无头机器了。它将要求您把 mfsroot.flp的那张软盘
插入驱动器,然后它将提示选择使用哪种终端。只要选择FreeBSD的彩色控制台,然后
继续您的安装。准备您自己的安装介质为了避免重复 FreeBSD disk 在这里指 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-arch/version
或最近的镜像站点下载。选择合适的 archversion 。目录中包含下面一些映像文件: