常见问题常见问题   搜索搜索   会员列表会员列表   团队团队   注册注册    个人资料个人资料   登录查看您的站内信件登录查看您的站内信件   登录登录 

FreeBSD完全新手指南

 
发表新文章   这个论题已经被锁定,您不能发表、回复或者编辑文章。    FreeBSD China -> 中文-桌面-开发-调试
阅读上一个主题 :: 阅读下一个主题  
作者 留言
kinki
精神病


注册时间: 2002-06-10
文章: 682

文章发表于: Wed 2002-10-16 13:37:49    发表主题: FreeBSD完全新手指南 引用并回复

原文出处: http://www.vmunix.com/fbsd-book/

翻译: hahalee, rainheart, con, ...

转载自广州网易社区FreeBSD精华区

转载整理:黄丽红

邮件地址:kinki@freebsdchina.org





□ 本章目标



看完本章,你应该会做下面的事情了:



● 在网上自行寻找关于FreeBSD的资源

● 在FreeBSD邮件列表上问问题

● 订阅FreeBSD邮件列表

● 取消订阅邮件列表



□ 探索FreeBSD



本书是为初步接触FreeBSD的用户和管理员们准备的,旨在帮助那些没有充分

的UNIX背景知识的朋友能顺利使用FreeBSD。不论是作为桌面系统,还是Internet

服务器,FreeBSD都有足够的能力和灵活性来满足哪怕是最苛刻的要求,但是,

同时也需要比某些“零售商品”化的操作系统付出更多的管理方面的努力。不过

另一方面需要指出的是,我们为了实现同样功能而付出的努力仍然比Windows95

和其他某些操作系统要少。如果你学会了正确的管理方法,就会发现维护运行一

个FreeBSD系统十分简单而充满乐趣。



即使你只在台式机上跑FreeBSD,他仍然具有服务器的功能,而你也可被称做“

系统管理员”。在Win95机器上工作的时候,你恐怕很难觉得自己是个“管理员”

虽然从技术上讲(Win95)的确是个“系统”,而你也的确是在“管理”它,你

觉得“管理员”这个称呼奇怪的原因在于Win95是个单用户系统,只有你一个人在

使用。



FreeBSD则是个多用户的系统:同一时间一台机器可以为多个用户服务.这种

服务可不光是文件共享服务(如WinNT和Netware提供的),连上FreeBSD的用户

可以使用服务器上所有的功能,就好象他坐在系统控制台上一样.如果允许

的话,用户之间还能实时互动.(译注:比如talk) FreeBSD也能提供比DOS和

Windows95更多的控制能力给你,在FreeBSD上你可以”热更新”系统参数,它

们则需要重新启动一下更新才能生效.比如,你可以更改机器的IP地址,然后

马上就可以投入使用.你不必等上5分种reboot来看效果.



现在,Internet正成为我们生活中越来越重要的组成部分,Internet也改变着我

们的商业模式,公司和个体都在寻找能廉价地增强他们竞争力的手段.尤其是公

司,他们正在提供各种Internet和Intranet服务以吸引客户,提高办事效率.与

此同时,尽管计算机硬件的价格不断下调,软件和支持的费用却不断上涨.对个

体来说,Internet更是一个开展业务的乐园,不过他们的启动经费往往只够买硬

件,他们也必须找到廉价的软件来提供服务.



UNIX是Internet的标准系统,极其重要的Internet标准协议--TCP/IP,DNS,HTTP,FTP

SMTP/POP3/IMAP......绝大部分都是在UNIX系统上开发或调试的.



FreeBSD刚好满足了上面两方面的需要:它基于UNIX的标准代码基(BSD 4.4),优化

运行于通用而廉价的Intel硬件平台,而且是自由的(正如其名).



FreeBSD上Internet标准协议的实现刚好是它的强项.它有众多的WWW/DNS/email

服务软件,也有大量的基于TCP/IP协议的软件包.



FreeBSD有着广泛的应用领域:

●服务器类应用

◎“装好就用”(turnkey)型的WWW服务器

◎ 电子邮件服务器(POP3和IMAP)

◎ 域名服务器(DNS)

◎ PPP拨号服务器

◎ WinXX用户的文件和打印共享服务()

◎ 用来当路由器

◎ 用来做Internet防火墙或网关

◎ 提供Novell Netware文件服务的互操作性

◎ 翻译网络地址(NAT),节约你的合法分配地址

● 普通应用

◎ 作为廉价的 UNIX X Window工作站

◎ 运行大量的FreeBSD桌面应用程序:

○ 文字处理

○ 电子表格

○ 数据库处理

○ 多媒体

○ 视频会议

◎ 运行其他系统上的应用:

○ Linux

○ BSDi

○ SCO

○ Windows 3.1/DOS

○ Windows 95/NT

◎ 单个用户的安全管理

● 大量的定制开发应用



□ 网络上的FreeBSD资源



有关FreeBSD的信息大都可以在网上找到,且有多种格式。



Web网站:

网络上的FreeBSD站点很多,最好的寻找方法是从正式的FreeBSD站点开始浏览:

http://www.freebsd.org (正式站点)

http://www.freebsd.org/handbook/handbook.html (手册)

http://www.freebsd.org/FAQ/FAQ.html (常见问答)

http://www.de.freebsd.org/de/cgi/man.cgi (联机手册)

上面是进行中的FreeBSD文档计划的一部分,内有FreeBSD专家们撰写的应用指南,

还有一些参考书。



另外,也有不少站点是总体介绍FreeBSD和其他UNIX系统的。如:

http://www.ugu.org (Unix 高手世界)

freebsd.org的人们也搭建了讨论FreeBSD的邮件列表,可以在上面报告bug、提问、

更新源代码等等你需要的所有服务,但你并不需要支付咨询服务费给任何人。关

于服务支持,你可以到http://www.freebsd.org/support.html了解详情。



CDROM:

其实大部分的文档在FreeBSD的安装光盘上已经包含了,可以在DOS或Windows下阅

读,安装前看看文档是个好主意,要是你拿不准,可以把相关章节打印出来随时备

查。



你的系统:

在一个已经装好了的FreeBSD系统上,有如下文档:

● 全部的联机手册(man pages)

● HTML格式的手册(handbook)和常见问答(FAQ),它们放在/usr/share/doc

下面,可以用netscape或者lynx来查阅。

● 系统自带的例子。(译注:可能指的是各种配置文件里面的注解)



□ FreeBSD邮件列表



邮件列表是一群人保持互相联系的一种简单方法。一旦你订阅了某个邮件列表,

你就会收到所有送往该列表的邮件。这样你就能看到人们提出的问题和解答。

FreeBSD有专门的邮件列表来解答问题,报告bug,还有新版本的发布。



向相应邮件列表提问是获得正确快速解答的方便途径,回复信往往在几个小时

内就能收到。要是订阅列表的其他人中刚好有知道答案的,他立即回答你的话,

几分钟之内就能收到回音了。你得到的不仅仅是答案,而将是完整的解决方法,

因为列表订阅者中很可能碰到过跟你一样的问题,甚至,你碰到问题的软件的

作者都有可能在这个列表当中,他们给你的答案,自然是最有价值的。



在你提问之前,你可能想去看看这个问题是否已经被提出过,要是能直接在邮件

档案中搜索到答案的话,你就不必麻烦别人了:

http://www.freebsd.org/search.html

要是在这个地方搜不到你想问的东西,那么找个正确的邮件列表,发封email。



有若干主题的FreeBSD邮件列表可供自由订阅。你最好先只订阅一个跟你目前使

用的系统和环境密切相关的列表,一次订阅多个列表的话要小心你的邮件流量超

载。



无论何时,你应该避免“重复张贴”(cross-posting),尽量只在跟你的问题相

关的那个列表上提问,重复张贴是对带宽的浪费,也是对无关列表的读者精力

的浪费。如果你错了,人们一般会指点你应该把这个问题发到哪个列表上去。

(译注:使用邮件列表要注意网络道德,要是你敢乱发广告等无关邮件,那

可就不是"指点"了,肯定会被人家骂个狗血喷头!)



如果你是个新手,那么freebsd-questions列表很可能是你最需要的了。所有关于

安装运行FreBSD的问题都可以在这个列表上提出来。



当发信到列表上去提问的时候,请记得详细描述你的问题,附带上尽量多的信息,

好方便大家帮助你解决问题,包括:



● 你运行的FreeBSD版本号

● 机器上有多少内存

● 硬盘类型和大小

● 硬件型号

● 所有跟你问题相关的配置情况

● 出错信息的详细拷贝



注意:如果你自己参考了某些联机文档来试图解决过问题,也请把你的尝试告诉

大家,这样,如果你遗漏了某些资料没有看,他们会很快地告诉你要查找些什么

资料。



□ 订阅邮件列表



下面列出一部分FreeBSD邮件列表,你可以从这些列表开始订阅。随着FreeBSD开发

和应用的发展,新的列表也会加入进来。



当订阅列表的时候要注意,订阅信和讨论信的邮件地址是不同的。订阅信是你要求

加入到某个列表中去的信,这种信一般是由一个叫做majordomo的列表管理程序来

自动处理的:你需要发送到 majordomo@freebsd.org



每个不同主题的列表都有其“列表地址”,你往这个地址发的信会被复制分发到每个

订阅者的邮箱里去,他们并不能帮你完成订阅申请,所以不要把你的订阅请求发到

这些列表地址:



freebsd-newbies@freebsd.org 新手问题讨论

freebsd-questions@freebsd.org 一般性问题讨论

freebsd-isp@freebsd.org FreeBSD在ISP方面的应用讨论

freebsd-current@freebsd.org 最新current用户问题

freebsd-bugs@freebsd.org 报告BUGs

freebsd-chat@freebsd.org 随意瞎聊(当然要跟FreeBSD有关的)

freebsd-announce@freebsd.org 新版本发布通告(一般是只读的)

freebsd-stable@freebsd.org FreeBSD稳定版应用问题



要想订阅某个列表,往majordomo@freebsd.org发一封请求信,其内容举例如下:



subscribe frebsd-questions

subscribe freebsd-announce

END



这样,majordomo程序会把你加入到 freebsd-questions和freebsd-announce两个

列表里面。很快,你就会收到这两个列表上的往来邮件了。在请求信的最后加上

end字样是个好习惯,它告诉majordomo忽略邮件的后面内容,否则,你的签名档

也会被majordomo分析一通。(译注:没有太大问题,没有这么巧的,但是我们还

是加上这个"END"好些,不要去"测试"majoedomo了)



majordomo收到请求信后会给你发封确认信,以确认你的邮件地址是正确的,里面

有你的名字和地址,还有确认密码。你要做的很简单,直接"reply"这封邮件给

majordomo就行了。之所以采用这种确认程序,是为了防止别人冒用你的名义,

给你订上一大堆的邮件列表。



(译注:原文没有讲取消订阅,这里补充一下:再给majordomo写请求信,格式跟

订阅请求一样,不过把subscribe换成unsubscribe就行了)

内容



1. 配置你的.cshrc文件

2. 设置更多的虚拟控制台(Virtual Terminals)

3. 增加一个硬盘

4. 系统配置文件选项

5. 添加和安装软件

6. 怎样安装Linux模拟器



1. 配置你的.cshrc文件



这是系统自带的.cshrc文件.





#csh .cshrc file



alias h history 25

alias j jobs -l

alias la ls -a

alias lf ls -FA

alias ll ls -lA

alias su su -m



setenv EDITOR vi

setenv EXINIT 'set autoindent'

setenv PAGER more



set path = (~/bin /bin /usr/{bin,games} /usr/local/bin /usr/X11R6/bin)



if ($?prompt) then

# An interactive shell -- set some stuff up

set filec

set history = 1000

set ignoreeof

set mail = (/var/mail/$USER)

set mch = `hostname -s`

set prompt = "${mch:q}: {\!} "

umask 2

endif



path语句告诉你的shell哪里能找到你要执行的程序. 它从列出的第一个目录

开始寻找与你输入的命令相匹配的文件. 如果找到就开始执行那个程序.



它不会在没有列出的目录里寻找可执行文件. 哪怕就在你的当前目录下. 所以

如果你的当前目录没在path的列表里, 即使你要执行的文件就在这里也不能被找

到.



如果要执行当前目录下的文件, 你得在命令前面加一个"./" . 例如, 你在

/usr/local/www/cgi-bin/目录里要测试一个编好的程序. 它名叫getdata.pl,

你输入getdata.pl, 然而并没有你期待的HTML输出, 你只是得到了一条错误信

息, getdata.pl: Command not found. 这是因为你的path语句里没有包含"."

目录. 要想这个文件被执行你得输入:



./getdata.pl



现在你会看到期待的HTML. 除非你编的程序有误, 输出的是你所用的编程语言

的错误信息.



一个 TCSH 的例子



就象前面提及的, tcsh在csh的基础上增加了很多特性使得命令行界面更加易用.

这是一个能够体现出tcsh优越性的.cshrc文件的例子:





#tcsh .tcshrc file



alias h history 25

alias j jobs -l

alias la ls -a

alias lf ls -FA

alias ll ls -lF

#alias su su -m -- bad for su'ing to root..



setenv EDITOR vim

setenv PAGER less



set path = ( ~/bin /usr/local/bin /bin /usr/{bin,games} /usr/sbin /sbin /usr/local/samba/bin /usr/X11R6/bin /usr/local/java/bin .)



setenv IRCNICK ringzero

setenv IRCSERVER irc2.magic.ca

setenv NNTPSERVER news.sentex.ca



if ($?prompt) then

# An interactive shell -- set some stuff up

set filec

set fignore = .o # ignore object files for filec

set showmatch # for programming

set history = 100

set savehist = 75 # tcsh version of history..

set ignoreeof

set mail = (/var/mail/$USER)

set prompt="vinyl:{%h}%~ %% " # tcsh version of above!



set watch = (1 gabor any mike any adrian any pwardrop any)



umask 2

endif



第一点值得注意的是有关setenv的行. 在这个例子里, 它们设置了使用新的阅读

软件和irc客户端软件的环境变量. 另一个感兴趣的地方是set fignore = .o , 它

使得file completion(set filec)(译者注: 我对tcsh不太熟悉,我猜想这里的file

completion 是指类似bash的命令补齐的东西,但又不敢确定,所以照搬下来了)忽略

结尾是".o"的文件. 如果你是一个C程序员的话这很有用, 因为你要编辑的是一个

".c"文件而不是".o"文件. set showmatch 是 tcsh 特有的另一个file completion

机制. 至于它的用途, 自己试试吧! set prompt 选项为你的shell设置了一个很

友好的提示符. 它会在任何时候显示你的当前目录. 看起来会象这样:



mark:{123}~ % cd /usr/src

mark:{124}/usr/src %



注意波浪号表示你的home目录. 现在你已经知道了很多tsch和csh选项了, 如果想

知道更多,最好的方法是man tcsh! 所有两种shells的特征(比如tcsh的"watch"特征)

都在man page里. 自己去体验一下你所喜欢的那些窍门吧!



注意:



如果你更改了你的.cshrc文件, 你可以用source .cshrc来使你的

变动立即生效!



2. 设置更多的虚拟控制台(Virtual Terminals)



(译者注: 想来想去还是决定把Virtual Terminals译为虚拟控制台,

因为记得有人把Pseudo terminals称作虚拟终端的)



一个虚拟控制台是一个内建在服务器主控制台上的终端. 它使你能同时打开好

几个屏幕, 当然一次只能看到一个. 缺省情况下设置了4个虚拟终端, 但只有3个

能用.按ALT加F2或F3(F1是一开始的那个)可以切换到第二或第三个虚拟控制台.

现在你会在屏幕上看到登录画面, 这和第一个虚拟控制台看起来没有什么不同.

按ALT加F1回到原来的屏幕.



要增加虚拟控制台, 你必须以超级用户身份访问/dev目录. 然后运行MAKEDEV

程序. MAKEDEV是一个shell脚本, 所以你得用sh shell解释器来执行它. 在提示符

下输入:



cd /dev



sh MAKEDEV vty 16



注意:



(全部用大写输入MAKEDEV, 大小写有本质的区别)



这将建立16个虚拟控制台. 它们可以用ALT+F?来访问. (译者注: 但是F键只有12个)

但是在你能使用它们之前你还要在/etc/ttys文件里激活它们. 去到/etc/目录里然后

用vi来编辑/etc/ttys文件.



cd /etc



vi ttys



#

# $Id: ttys,v 1.2 1998/09/02 01:34:57 brian Exp $

# @(#)ttys 5.1 (Berkeley) 4/17/89

#

# name gettytype status comments

#

# This entry needed for asking password when init goes to single-user mode

# If you want to be asked for password, change "secure" to "insecure" here

console noneunknown off secure

#

ttyv0 "/usr/libexec/getty Pc" cons25 on secure

# Virtual terminals

ttyv1 "/usr/libexec/getty Pc" cons25 on secure

ttyv2 "/usr/libexec/getty Pc" cons25 on secure

#ttyv3 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure

ttyv3 "/usr/libexec/getty Pc" cons25 on secure

ttyv4 "/usr/libexec/getty Pc" cons25 on secure

ttyv5 "/usr/libexec/getty Pc" cons25 on secure

ttyv6 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure

# Serial terminals

# The 'dialup' keyword identifies dialin lines to login, fingerd etc.

ttyd0 "/usr/libexec/getty std.9600" dialup off secure

ttyd1 "/usr/libexec/getty std.9600" dialup off secure

ttyd2 "/usr/libexec/getty std.9600" dialup off secure

ttyd3 "/usr/libexec/getty std.9600" dialup off secure

# Pseudo terminals

ttyp0 none network secure

ttyp1 none network secure

ttyp2 none network secure

ttyp3 none network

(译者注: 原文里是一个图, 所以用我的/etc/ttys文件来代替)



如果你运行X window, 必须保留一个关掉的虚拟控制台. 缺省情况下,

ttyv4 是关闭的.



你要在标着Virtual Terminals的部分添加几行. 如果你制造了16个虚拟

控制台设备, 那么你现在有16个虚拟控制台要配置. 也就是说在/etc/ttys

文件里要有16行有关虚拟控制台的内容; 现在还只有4行. 你可以通过拷贝

粘贴这些行来完成:



ttyv2 "/usr/libexec/getty Pc" cons25 on secure



把光标移到这行后按yy然后按j使光标下移再按12p来使这行被粘贴12次.现在

你有了ttyv2的12份拷贝, 你得把它们改为二进制数字. 从4开始,然后是5,6,

7,8,9,a,b,c,d,e,f.



完成后你就在/etc/ttys里配好了从ttyv1 - ttyvf的虚拟控制台.



在vi里你能用简单的方法来完成替换,把光标移到你要改变的数字上按r键再

输入要替换成的数字,然后按j使光标下移再重复前面的工作.



结束编辑后按ZZ退出vi. 现在要重起init进程. 以超级用户身份输入:

kill -HUP 1



现在你的虚拟控制台已经随时待命了.



3. 增加一个硬盘



先要从物理上安装硬盘. 保证电缆已经接好, 从第一针到电源插头.(注意,

数据线上的红带要与电源线相邻). 再确保有电供给驱动器.



然后重新启动FreeBSD,FreeBSD在启动的时候会检测出这个驱动器. 如果没有

的话用"-c"参数reboot. 在启动提示符下进入visual config使合适的控制器被

激活. 最可能的情况是你使用的核心是自己建立的并且附加的IDE驱动器以被核

心禁止,或者在一个SCSI被核心禁止的系统上添加第一个SCSI驱动器. 如果控制

器只是被核心*禁用*而不是删除, 只须在visual config里把它激活就行了. 否

则你必须重建核心以加入适当的控制器和驱动.



如果你错过了启动时的信息, 登录后在提示符下敲dmesg. 这将重现你的启动

信息.



/usr/> dmesg | more



如果安装的是SCSI驱动器, 要确保驱动器已被SCSI BIOS找到并且用了适当的

SCSI termination.



一旦所有东西都被找到, 就可以开始FreeBSD下的配置了.



******************************************************************



要做的第一件事就是清扫干净磁盘上原有的任何东西. 很多硬盘驱动器厂商已

把新的驱动器分好区并且已格式化成DOS FAT文件系统. 在余下的部分, 我们假

设找到的硬盘驱动器是sd1, 也就是电缆上的第二个SCSI驱动器(用SCSI ID 1).

下面是如何清除FAT垃圾:



dd if=/dev/zero of=/dev/rsd1 count=100



然后要为驱动器准备一个"disk label". 假设你计划整个硬盘都在FreeBSD下

使用:



disklabel -Brw sd1 auto



*把rsd1和sd1替换成你添加的硬盘,不要在一个正在使用的磁盘上进行这些操作.

这将清除磁盘上的每样东西, 为FreeBSD能使用它做好准备. 一切顺利的话将不需要

使用fdisk.



如果你计划在FreeBSD下把整个硬盘分成一个区, 那么用刚才 disklabel 建立的

缺省的单一分区就行了, 否则的话你要用disklabel编辑器来创建更小的分区.你也

许需要在磁盘上增加一个交换分区, 例如.



编辑第一个IDE盘的disklabel:



disklabel -e wd0



# /dev/rwd0c:

type: ESDI

disk: wd0s1

label:

flags:

bytes/sector: 512

sectors/track: 51

tracks/cylinder: 13

sectors/cylinder: 663

cylinders: 722

sectors/unit: 479298

rpm: 3600

interleave: 1

trackskew: 0

cylinderskew: 0

headswitch: 0 # milliseconds

track-to-track seek: 0 # milliseconds

drivedata: 0



8 partitions:

# size offset fstype [fsize bsize bps/cpg]

a: 65536 0 4.2BSD 0 0 0 # (Cyl. 0 - 98*)

b: 85936 65536 swap # (Cyl. 98*- 228*)

c: 479298 0 unused 0 0 # (Cyl. 0 - 722*)

e: 61440 151472 4.2BSD 0 0 0 # (Cyl. 228*- 321*)

f: 266386 212912 4.2BSD 0 0 0 # (Cyl. 321*- 722*)





这部分需要动动脑筋,以使那些数字正确. 给一个分区分配容量,较容易的方法是

给你要分配的分区一个通过计算得出的柱面(cylinders)数. size 是分区的扇区数

目. offset 是前一个分区的最后一个扇区. 分区 a 从扇区0开始. 分区必须在你

所分配给分区的柱面的范围内开始和结束. 计算分区大小的方法是, tracks/cylinder

(每柱面的磁道数)乘以sectors/cylinder(每柱面的扇区数)再乘以你分配给分区的

柱面数.(扇区数*磁道数*柱面数=分区大小) 计算offset的方法是, 上个分区的大

小加上个分区的offset.(Size+Offset=下个分区的Offset)



fstype是你在分区上使用的文件系统的类型. FreeBSD通常使用的文件系统是

4.2BSD. swap是交换文件使用的文件系统. FAT是DOS分区使用的文件系统.分区a

为启动扇区保留,它为空表示不需要启动扇区.



分区 b 保留作交换文件. 它不能从offset 0开始. 它的前面必须要有一个分

区. 分区 e 可以从offset 0 开始并且可以是任意大小, 所以交换分区可以放在

分区 e 的后面.



分区 c 不会被改变. 要从分区c开始制造你的文件系统.



现在要用newfs命令在磁盘创建一个文件系统. 如果你使用的是整个磁盘, 可以

用disklabel 自动建立的c分区.



newfs /dev/rsd1c



c分区总是整个驱动器 - 所以这种情况下你建立的文件系统也就包括了整个磁盘.



如果你把磁盘分的更小, 你必须在每个分区上使用newfs来建立文件系统,交换分

区除外.



最后,你需要mount驱动器. 在这里我们假设你已用mkdir创建了"mount point"

/d2 .



mount /dev/sd1c /d2



顺利的话, 你可以看到象这样的东西:



#vinyl % df -k



Filesystem 1K-blocks Used Avail Capacity Mounted on

/dev/sd0a 31775 13530 15703 46% /

/dev/sd0s1f 1913091 1086207 673837 62% /usr

/dev/sd0s1e 29727 12663 14686 46% /var

procfs 4 4 0 100% /proc

/dev/sd1c 4108717 616594 3163426 16% /d2



现在你要在/etc/fstab文件里创建一个条目以使它在每次启动时都被mount.

否则你每次都要手工执行mount. 你要为创建的每个分区建立fstab条目,包括

交换分区.



此外可以在man page里参考: fstab mount disklabel dmesg dd 和 newfs





4. 系统配置文件选项



4.1 重要的启动时初始化选项

4.2 网络配置子项

4.3 (其他)网络daemon & NFS选项

4.4 网络时间服务选项

4.5 网络信息服务(NIS)选项

4.6 网络路由选项

4.7 系统控制台选项

4.8 其他管理选项

4.9 Allow local configuration override at the very end here



注意:



所有参数都必须括在单引号或双引号里. 多个条目间用空格格开



4.1 重要的启动时初始化选项



swapfile="NO"



# 设定交换文件的名字,如果希望使用辅助交换文件的话.

# Set to name of swapfile if aux swapfile desired.



apm_enable="NO"



如果希望激活APM(高级电源管理)设为YES



pccard_enable="NO"



要配置PCCARD设备的话设为YES.



pccard_mem="DEFAULT"



如果ccard_enable=YES, 这是卡的内存地址.



pccard_ifconfig="NO"



以太网pccard的特殊配置(否则 NO).



local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d"



本地启动目录.在启动期间,FreeBSD会搜索某些目录,并执行里面的任何

程序.有些象Windows里的"启动"文件夹.local_startup选项让你指定那

些目录在启动期间会被搜索.可以列多个目录,中间用空格格开.它们将按

顺序被搜索,每个文件都会被执行.这是除/etc/rc.local外另一个启动程

序的方法.





4.2. 网络配置子项



基本网络选项:



hostname="myname.my.domain"



这是你的主机名. 如果你连在Internet上的话还要包括域名.这个名字

也会出现在你的DNS表里.



nisdomainname="NO"



设定 NIS 域 如果使用 NIS (否则 NO).



firewall="NO"



防火墙类型 (参见 /etc/rc.firewall) 否则 NO.



tcp_extensions="YES"



# 允许 RFC1323 & RFC1544 扩展 (否则 NO).



network_interfaces="lo0"



这是你配置你的所有网卡的地方.每块网卡都要有一项.lo0

是环路(loopback)设备也称作"localhost".网卡,比如ed0

(NE2000)和fxp0(Intel Ether Express)在上面加入.



ifconfig_lo0="inet 127.0.0.1"



在这里配置你上面列出的每块网卡.



ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff"



通过lo0为localhost设置一个别名.



4.3. (其他)网络daemon & NFS选项:



syslogd_enable="YES"



Syslog 是你的登录服务.它把所有的错误记录在/var/log/.它用

/etc/syslog.conf来配置.



syslogd_flags=""



# syslogd 的命令参数 (如果被允许).



inetd_enable="YES"



这是你所有的网络服务. 如果它被禁止你将不能telnet到这台计算机

上. 它通过/etc/inetd.conf来配置. 它管理着所有动态服务, 也就是

说在需要时才会被启动的服务, 比如: finger, telnet,rlogin, ftp,

pop3 等等...



inetd_flags=""



# inetd 的参数.



named_enable="NO"



这将运行你的Internet域名服务, 或者说, BIND. 如果你已经有了一个

DNS你就不必把它打开了.它通过 /etc/namedb/named.boot来配置, 除非

你专门指定了另一个. 你将会有至少两个DNS servers.



named_flags="-b /etc/namedb/named.boot"



这是你指定给named的配置文件.



kerberos_server_enable="NO"



# 运行一个kerberos主服务程序 (否则 NO).

# Run a kerberos master server(or NO).



rwhod_enable="NO"



# 运行 rwho daemon (否则 NO).



amd_enable="NO"



# 以$amd_flags运行amd服务. (否则 NO).



amd_flags="-a /net -c 1800 -k i386 -d my.domain -l syslog /host /etc/amd.map"



例子



nfs_client_enable="NO"



# 这台主机是一台 NFS 客户机 (否则 NO).



nfs_client_flags="-n 4"



# nfsiod 的参数 (如果被允许).



nfs_server_enable="NO"



# 这台主机是一台 NFS 服务器 (否则 NO).



nfs_server_flags="-u -t 4"



# nfsd 的参数 (如果被允许).



weak_mountd_authentication="NO"



# 运行 PCNFSD / 其他 non-root nfsd (否则 NO).



nfs_reserved_port_only="NO"



# 仅在安全端口上提供NFS (否则 NO).



rpc_lockd_enable="NO"



# 运行 NFS rpc.lockd (*broken!*) 如果 nfs_server.



rpc_statd_enable="YES"



# 运行 NFS rpc.statd 如果 nfs_server (or NO).



portmap_enable="YES"



# 运行 portmapper 服务 (否则 NO).



portmap_flags=""



# portmap 的参数(如果被允许).



xtend_enable="NO"



# 运行 X-10 电源控制器 daemon.



xtend_flags=""



# xtend 的参数(如果被允许).



4.4. 网络时间服务选项:



timed_enable="NO"



运行时间 daemon (否则 NO).



timed_flags=""



timed 的参数(如果被允许).



ntpdate_enable="NO"



运行ntpdate 使时间同步 (or NO).



ntpdate_flags=""



ntpdate 的参数(如果被允许).



xntpd_enable="NO"



允许 xntpd 网络时间协议 (否则 NO).



xntpd_flags=""



xntpd 的参数(如果被允许).



tickadj_enable="NO"



运行 tickadj (否则 NO).



tickadj_flags="-Aq"



tickadj 的参数(如果被允许).



4.5. 网络信息服务(NIS)选项:



nis_client_enable="NO"



我们是一台NIS客户机 (否则 NO).



nis_client_flags=""



ypbind 的参数 (如果被允许).



nis_ypset_enable="NO"



在启动时运行ypset (否则 NO).



nis_ypset_flags=""



ypset 的参数(如果被允许).



nis_server_enable="NO"



这是一台NIS服务器 (否则 NO).



nis_server_flags=""



ypserv 的参数(如果被允许).



nis_ypxfrd_enable="NO"



启动时运行rpc.ypxfrd(否则 NO).



nis_ypxfrd_flags=""



rpc.ypxfrd 的参数(如果被允许).



nis_yppasswdd_enable="NO"



启动时运行rpc.yppasswdd(否则 NO).



nis_yppasswdd_flags=""



rpc.yppasswdd 的参数(如果被允许).



4.6. 网络路由选项:



defaultrouter="NO"



这里设置你的缺省网关.这是你连接Internet的路由器的IP地址.如果

你没有设置这项,你将仅能ping通同一子网内的地址.如果你的IP地址

是10.1.1.3,子网掩码是255.255.255.0,你将能看到10.1.1.2而不能

看到10.1.2.2,因为没有设置缺省的路由.



static_routes=""



静态路由是作为路由器位于两个不同网络间的机器的高级选项.



gateway_enable="NO"



如果你的机器要当作网关的话设成YES.如果你机器上有不只一块网卡并

把它们用作路由,网桥,ipnat或者当作拨号服务器时设定为YES.



router_enable="YES"



设置为 YES 以允许一个路由daemon.



router="routed"



如果被允许,这是路由daemon的名字.



router_flags="-q"



路由daemon的参数.



mrouted_enable="NO"



作 multicast routing (参见 /etc/mrouted.conf).



ipxgateway_enable="NO"



设成 YES 以允许 IPX 路由.



ipxrouted_enable="NO"



设成 YES 以运行 IPX 路由 daemon.



ipxrouted_flags=""



IPX 路由 daemon的参数.



arpproxy_all=""



替换已废除的核心选项 ARP_PROXY_ALL. 当作拨号服务器时需要.



4.7. 系统控制台选项



keymap="NO"



/usr/share/syscons/keymaps/* 里的keymap (否则 NO).



keyrate="NO"



设键盘速率为: slow, normal, fast (否则 NO).



keybell="NO"



bell to duration.pitch or normal or visual (or NO).



keychange="NO"



功能键的缺省值 (否则 NO).



cursor="NO"



光标类型 {normal|blink|destructive} (否则 NO).



scrnmap="NO"



/usr/share/syscons/scrnmaps/* 里的屏幕映射(否则 NO).



font8x16="NO"



/usr/share/syscons/fonts/* 里的8x16字体(否则 NO).



font8x14="NO"



/usr/share/syscons/fonts/* 里的8x16字体(否则 NO).



font8x8="NO"



/usr/share/syscons/fonts/* 里的8x8字体(否则 NO).



blanktime="NO"



blank time (in seconds) or "NO" to turn it off.



saver="NO"



屏幕保护: blank/daemon/green/snake/star/NO. 当你没有X运行时

这里设置屏幕保护.



moused_type="NO"



rc.conf(Cool 的man page 里列出了可用的选项.



moused_port="/dev/cuaa0"



设置你的鼠标端口 (必须,mousetype 被设置).



moused_flags=""



moused 的附加参数.



4.8. 其他管理选项



cron_enable="YES"



运行周期作业的daemon. Cron 是调度事件发生的 "daemon". 以一定的周期

运行三个标准脚本文件: /etc/daily /etc/weekly 和 /etc/montly.

你可以通过配置它们来完成要做的事



lpd_enable="YES"



运行排队打印机 daemon. 你需要这个来使用打印机. 它通过/etc/printcap

配置.



lpd_flags=""



lpd 的参数(如果被允许).



sendmail_enable="YES"



运行 sendmail daemon (否则 NO). 你需要这个来获得e-mail服务除非你换成

了其他邮件daemon. 它通过/etc/sendmail.cf来配置.



sendmail_flags="-bd -q30m"



-bd is pretty mandatory.



savecore_enable="NO"



核心crash时转储内存的映像 (否则 NO).



dumpdev="NO"



Device name to crashdump to (if enabled).



check_quotas="NO"



检查磁盘限额 (否则 NO).



accounting_enable="NO"



打开进程记帐 (否则 NO).



ibcs2_enable="NO"



启动时装入Ibcs2 (SCO) 模拟器 (否则 NO).



linux_enable="NO"



启动时装入Linux 模拟器 (or NO). 参见设置Linux模拟器部分.



rand_irqs="NO"



Stir the entropy pool (like "5 11" or NO).



4.9. Allow local configuration override at the very end here



if [ -f /etc/rc.conf.local ]; then

. /etc/rc.conf.local

fi





5. 添加和安装软件



在FreeBSD下添加/安装软件很容易.FreeBSD维护着一套"packages",它包含了几乎

所有流行软件的已预先建立好并马上可以运行的二进制文件. 如果你有一套CD, 它们

全在#1盘上,你能直接浏览(有个叫packages的目录..), 或者用"/stand/sysinstall"

工具,到Post Configuration,然后选择Packages. 将出现一个分类列出所有packages

并带有简短描述的屏幕.



通常,你需要ftp到ftp.freebsd.org以取得一个package的最新版本 -

ftp://ftp.freebsd.org/pub/FreeBSD/packages-stable 是你要注意的地方.如果你

下载了一个package,它会以 .tgz结尾.你不必人工的untar/展开它. 只须用命令

"pkg_add".



例如: 我下载了一个叫 spaz-1.32.tgz 的package





1. su to root (你需要成为root 来安装 packages)



2. pkg_add spaz-1.32.tgz



就是这样!现在这个package已在你系统上被安装和设置. 如果你用csh或tcsh,你得

用rehash来让你的shell重新扫描系统里的 bin 目录...



这个package已被登记到/var/db/pkg目录里 - 你能 cd 到那里取得一个目录列表

来看看你系统上安装了哪些packages. 如果你不再需要一个package,你能用

pkg_delete命令来删除它: pkg_delete spaz-1.32.tgz (从/var/db/pkb目录)



FreeBSD的ports系统的工作也一样, 使用port登记使删除以后不再需要的东西变得

很容易. 不同点是ports使用的是"源程序",需要被编译.如果你有一个Internet连接,

并且安装了ports tree(在安装FreeBSD时会询问你是否需要)可以 cd 到/usr/ports

里看看.



假设你要在/usr/ports/net/spaz目录里安装port:



1. su root



2. cd /usr/ports/net/spaz



3. make



注意:



这里make实际在为你下载port!



4. make install (如果前面的make成功的话,现在将把你的劳动果实安装到

系统的 bin/lib 目录,随时供你使用)



5. make clean (如果你想清除编译时产生的目标文件以节省空间的话)



再说一遍,在/var/db/pkg里使用pkg_delete删除已安装的ports.





6. 怎样安装Linux模拟器



Linux模拟器允许你在你的FreeBSD系统上运行Linux的二进制文件.实际上它工作

的很好.这是运行这个模拟器的两种方法:



* 编译到核心里



* 当作一个可装载的核心模块(lkm)



不管用哪种方法, 你都必须先从ports collection里安装Linux库.



cd /usr/ports/emulators/linux_lib



make install



这将把所有的Linux库安装到/usr/compat. 还将安装脚本/usr/bin/linux,它在

需要Linux模拟器的时候装入可装载的核心模块.



如果你希望用lkm来运行Linux模拟器, 你所有要做的就是在/etc/rc.conf里修改

下面这行.



linux_enable="YES" # Linux emulation loaded at startup (or NO).



它将在启动时激活Linux模拟器. 如果要在不重新启动的情况下开始Linux模拟器,

只需输入 linux.(需要root身份)



如果不用lkm,你需要在核心配置文件里包括下面一行,然后重建核心



options COMPAT_LINUX



Linux模拟器将总是被允许.而不必修改你的rc.conf文件.
返回页首
阅览会员资料 发送站内信件 发送电子邮件 MSN Messenger
139____6677
半仙


注册时间: 2003-08-10
文章: 2

文章发表于: Sun 2003-09-07 10:18:18    发表主题: 引用并回复

Rolling Eyes 请教各位:MD5是干什么用的?

Mad 都别笑啊!

Surprised 我刚学呢!
返回页首
阅览会员资料 发送站内信件 MSN Messenger
jayvan
精神病


注册时间: 2003-03-25
文章: 11251
来自: 广州

文章发表于: Sun 2003-09-07 10:48:42    发表主题: 引用并回复

139____6677 写到:
Rolling Eyes 请教各位:MD5是干什么用的?
Mad 都别笑啊!
Surprised 我刚学呢!


用本站的搜索功能搜索“md5”。

_________________
观天之道,执天之行,尽矣。
返回页首
阅览会员资料 发送站内信件
游客






文章发表于: Fri 2003-10-31 09:15:06    发表主题: MD5算法研究(ZZ) 引用并回复

综述

  md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电脑。这三个算法的描述和c语言源代码在internet rfcs 1321中有详细的描述(http://www.ietf.org/rfc/rfc1321.txt),这是一份最权威的文档,由ronald l. rivest在1992年8月向ieft提交。

  rivest在1989年开发出md2算法。在这个算法中,首先对信息进行数据补位,使信息的字节长度是16的倍数。然后,以一个16位的检验和追加到信息末尾。并且根据这个新产生的信息计算出散列值。后来,rogier和chauvaud发现如果忽略了检验和将产生md2冲突。md2算法的加密后结果是唯一的--既没有重复。

  为了加强算法的安全性,rivest在1990年又开发出md4算法。md4算法同样需要填补信息以确保信息的字节长度加上448后能被512整除(信息字节长度mod 512 = 448)。然后,一个以64位二进制表示的信息的最初长度被添加进来。信息被处理成512位damg?rd/merkle迭代结构的区块,而且每个区块要通过三个不同步骤的处理。den boer和bosselaers以及其他人很快的发现了攻击md4版本中第一步和第三步的漏洞。dobbertin向大家演示了如何利用一部普通的个人电脑在几分钟内找到md4完整版本中的冲突(这个冲突实际上是一种漏洞,它将导致对不同的内容进行加密却可能得到相同的加密后结果)。毫无疑问,md4就此被淘汰掉了。

  尽管md4算法在安全上有个这么大的漏洞,但它对在其后才被开发出来的好几种信息安全加密算法的出现却有着不可忽视的引导作用。除了md5以外,其中比较有名的还有sha-1、ripe-md以及haval等。

  一年以后,即1991年,rivest开发出技术上更为趋近成熟的md5算法。它在md4的基础上增加了"安全-带子"(safety-belts)的概念。虽然md5比md4稍微慢一些,但却更为安全。这个算法很明显的由四个和md4设计有少许不同的步骤组成。在md5算法中,信息-摘要的大小和填充的必要条件与md4完全相同。den boer和bosselaers曾发现md5算法中的假冲突(pseudo-collisions),但除此之外就没有其他被发现的加密后结果了。

  van oorschot和wiener曾经考虑过一个在散列中暴力搜寻冲突的函数(brute-force hash function),而且他们猜测一个被设计专门用来搜索md5冲突的机器(这台机器在1994年的制造成本大约是一百万美元)可以平均每24天就找到一个冲突。但单从1991年到2001年这10年间,竟没有出现替代md5算法的md6或被叫做其他什么名字的新算法这一点,我们就可以看出这个瑕疵并没有太多的影响md5的安全性。上面所有这些都不足以成为md5的在实际应用中的问题。并且,由于md5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域。但即便是应用在绝密领域内,md5也不失为一种非常优秀的中间技术),md5怎么都应该算得上是非常安全的了。

  算法的应用

  md5的典型应用是对一段信息(message)产生信息摘要(message-digest),以防止被篡改。比如,在unix下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:

   md5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461

  这就是tanajiya.tar.gz文件的数字签名。md5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的md5信息摘要。如果在以后传播这个文件的过程中,无论文件的内容发生了任何形式的改变(包括人为修改或者下载过程中线路不稳定引起的传输错误等),只要你对这个文件重新计算md5时就会发现信息摘要不相同,由此可以确定你得到的只是一个不正确的文件。如果再有一个第三方的认证机构,用md5还可以防止文件作者的"抵赖",这就是所谓的数字签名应用。

  md5还广泛用于加密和解密技术上。比如在unix系统中用户的密码就是以md5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成md5值,然后再去和保存在文件系统中的md5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。

  正是因为这个原因,现在被黑客使用最多的一种破译密码的方法就是一种被称为"跑字典"的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用md5程序计算出这些字典项的md5值,然后再用目标的md5值在这个字典中检索。我们假设密码的最大长度为8位字节(8 bytes),同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是p(62,1)+p(62,2)….+p(62,Cool,那也已经是一个很天文的数字了,存储这个字典就需要tb级的磁盘阵列,而且这种方法还有一个前提,就是能获得目标账户的密码md5值的情况下才可以。这种加密技术被广泛的应用于unix系统中,这也是为什么unix系统比一般操作系统更为坚固一个重要原因。

  算法描述

  对md5算法简要的叙述可以为:md5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

  在md5算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(bits length)将被扩展至n*512+448,即n*64+56个字节(bytes),n为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=n*512+448+64=(n+1)*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。

  md5中有四个32位被称作链接变量(chaining variable)的整数参数,他们分别为:a=0x01234567,b=0x89abcdef,c=0xfedcba98,d=0x76543210。

  当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。

  将上面四个链接变量复制到另外四个变量中:a到a,b到b,c到c,d到d。

  主循环有四轮(md4只有三轮),每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。
以一下是每次操作中用到的四个非线性函数(每轮一个)。

   f(x,y,z) =(x&y)|((~x)&z)
   g(x,y,z) =(x&z)|(y&(~z))
   h(x,y,z) =x^y^z
   i(x,y,z)=y^(x|(~z))
   (&是与,|是或,~是非,^是异或)

  这四个函数的说明:如果x、y和z的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。
f是一个逐位运算的函数。即,如果x,那么y,否则z。函数h是逐位奇偶操作符。

  假设mj表示消息的第j个子分组(从0到15),<<
   ff(a,b,c,d,mj,s,ti)表示a=b+((a+(f(b,c,d)+mj+ti)<<    gg(a,b,c,d,mj,s,ti)表示a=b+((a+(g(b,c,d)+mj+ti)<<    hh(a,b,c,d,mj,s,ti)表示a=b+((a+(h(b,c,d)+mj+ti)<<    ii(a,b,c,d,mj,s,ti)表示a=b+((a+(i(b,c,d)+mj+ti)<<
  这四轮(64步)是:

  第一轮

   ff(a,b,c,d,m0,7,0xd76aa478)
   ff(d,a,b,c,m1,12,0xe8c7b756)
   ff(c,d,a,b,m2,17,0x242070db)
ff(b,c,d,a,m3,22,0xc1bdceee)
   ff(a,b,c,d,m4,7,0xf57c0faf)
   ff(d,a,b,c,m5,12,0x4787c62a)
   ff(c,d,a,b,m6,17,0xa8304613)
   ff(b,c,d,a,m7,22,0xfd469501)
   ff(a,b,c,d,m8,7,0x698098d8)
   ff(d,a,b,c,m9,12,0x8b44f7af)
   ff(c,d,a,b,m10,17,0xffff5bb1)
   ff(b,c,d,a,m11,22,0x895cd7be)
   ff(a,b,c,d,m12,7,0x6b901122)
   ff(d,a,b,c,m13,12,0xfd987193)
   ff(c,d,a,b,m14,17,0xa679438e)
   ff(b,c,d,a,m15,22,0x49b40821)

  第二轮

   gg(a,b,c,d,m1,5,0xf61e2562)
   gg(d,a,b,c,m6,9,0xc040b340)
   gg(c,d,a,b,m11,14,0x265e5a51)
   gg(b,c,d,a,m0,20,0xe9b6c7aa)
   gg(a,b,c,d,m5,5,0xd62f105d)
   gg(d,a,b,c,m10,9,0x02441453)
   gg(c,d,a,b,m15,14,0xd8a1e681)
   gg(b,c,d,a,m4,20,0xe7d3fbc8)
   gg(a,b,c,d,m9,5,0x21e1cde6)
   gg(d,a,b,c,m14,9,0xc33707d6)
   gg(c,d,a,b,m3,14,0xf4d50d87)
   gg(b,c,d,a,m8,20,0x455a14ed)
   gg(a,b,c,d,m13,5,0xa9e3e905)
   gg(d,a,b,c,m2,9,0xfcefa3f8)
   gg(c,d,a,b,m7,14,0x676f02d9)
   gg(b,c,d,a,m12,20,0x8d2a4c8a)

  第三轮

   hh(a,b,c,d,m5,4,0xfffa3942)
   hh(d,a,b,c,m8,11,0x8771f681)
   hh(c,d,a,b,m11,16,0x6d9d6122)
   hh(b,c,d,a,m14,23,0xfde5380c)
   hh(a,b,c,d,m1,4,0xa4beea44)
   hh(d,a,b,c,m4,11,0x4bdecfa9)
   hh(c,d,a,b,m7,16,0xf6bb4b60)
   hh(b,c,d,a,m10,23,0xbebfbc70)
   hh(a,b,c,d,m13,4,0x289b7ec6)
   hh(d,a,b,c,m0,11,0xeaa127fa)
   hh(c,d,a,b,m3,16,0xd4ef3085)
   hh(b,c,d,a,m6,23,0x04881d05)
   hh(a,b,c,d,m9,4,0xd9d4d039)
   hh(d,a,b,c,m12,11,0xe6db99e5)
   hh(c,d,a,b,m15,16,0x1fa27cf8)
   hh(b,c,d,a,m2,23,0xc4ac5665)

  第四轮

   ii(a,b,c,d,m0,6,0xf4292244)
   ii(d,a,b,c,m7,10,0x432aff97)
   ii(c,d,a,b,m14,15,0xab9423a7)
   ii(b,c,d,a,m5,21,0xfc93a039)
   ii(a,b,c,d,m12,6,0x655b59c3)
   ii(d,a,b,c,m3,10,0x8f0ccc92)
   ii(c,d,a,b,m10,15,0xffeff47d)
   ii(b,c,d,a,m1,21,0x85845dd1)
   ii(a,b,c,d,m8,6,0x6fa87e4f)
   ii(d,a,b,c,m15,10,0xfe2ce6e0)
   ii(c,d,a,b,m6,15,0xa3014314)
   ii(b,c,d,a,m13,21,0x4e0811a1)
   ii(a,b,c,d,m4,6,0xf7537e82)
   ii(d,a,b,c,m11,10,0xbd3af235)
   ii(c,d,a,b,m2,15,0x2ad7d2bb)
   ii(b,c,d,a,m9,21,0xeb86d391)

  常数ti可以如下选择:

  在第i步中,ti是4294967296*abs(sin(i))的整数部分,i的单位是弧度。(4294967296等于2的32次方)
所有这些完成之后,将a、b、c、d分别加上a、b、c、d。然后用下一分组数据继续运行算法,最后的输出是a、b、c和d的级联。

  当你按照我上面所说的方法实现md5算法以后,你可以用以下几个信息对你做出来的程序作一个简单的测试,看看程序有没有错误。

   md5 ("") = d41d8cd98f00b204e9800998ecf8427e
   md5 ("a") = 0cc175b9c0f1b6a831c399e269772661
   md5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
   md5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
   md5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
   md5 ("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789") =
d174ab98d277d9f5a5611c2c9f419d9f
   md5 ("123456789012345678901234567890123456789012345678901234567890123456789
01234567890") = 57edf4a22be3c955ac49da2e2107b67a

  如果你用上面的信息分别对你做的md5算法实例做测试,最后得出的结论和标准答案完全一样,那我就要在这里象你道一声祝贺了。要知道,我的程序在第一次编译成功的时候是没有得出和上面相同的结果的。


  md5的安全性

  md5相对md4所作的改进:

   1. 增加了第四轮;

   2. 每一步均有唯一的加法常数;

   3. 为减弱第二轮中函数g的对称性从(x&y)|(x&z)|(y&z)变为(x&z)|(y&(~z));

   4. 第一步加上了上一步的结果,这将引起更快的雪崩效应;

   5. 改变了第二轮和第三轮中访问消息子分组的次序,使其更不相似;

   6. 近似优化了每一轮中的循环左移位移量以实现更快的雪崩效应。各轮的位移量互不相同。
返回页首
BSDnewbie
半仙


注册时间: 2004-08-07
文章: 122

文章发表于: Sun 2004-08-08 23:13:10    发表主题: Re: FreeBSD完全新手指南 引用并回复

这是给新手看的吗?难道是我太“新”了?

=======================================================


kinki 写到:
原文出处: http://www.vmunix.com/fbsd-book/ <br />
翻译: hahalee, rainheart, con, ...<br />
转载自广州网易社区FreeBSD精华区<br />
转载整理:黄丽红<br />
邮件地址:kinki@freebsdchina.org<br />
<br />
<br />
□ 本章目标<br />
<br />
看完本章,你应该会做下面的事情了:<br />
<br />
● 在网上自行寻找关于FreeBSD的资源<br />
● 在FreeBSD邮件列表上问问题<br />
● 订阅FreeBSD邮件列表<br />
● 取消订阅邮件列表<br />
<br />
□ 探索FreeBSD<br />
<br />
本书是为初步接触FreeBSD的用户和管理员们准备的,旨在帮助那些没有充分<br />
的UNIX背景知识的朋友能顺利使用FreeBSD。不论是作为桌面系统,还是Internet<br />
服务器,FreeBSD都有足够的能力和灵活性来满足哪怕是最苛刻的要求,但是,<br />
同时也需要比某些“零售商品”化的操作系统付出更多的管理方面的努力。不过<br />
另一方面需要指出的是,我们为了实现同样功能而付出的努力仍然比Windows95<br />
和其他某些操作系统要少。如果你学会了正确的管理方法,就会发现维护运行一<br />
个FreeBSD系统十分简单而充满乐趣。<br />
<br />
即使你只在台式机上跑FreeBSD,他仍然具有服务器的功能,而你也可被称做“<br />
系统管理员”。在Win95机器上工作的时候,你恐怕很难觉得自己是个“管理员”<br />
虽然从技术上讲(Win95)的确是个“系统”,而你也的确是在“管理”它,你<br />
觉得“管理员”这个称呼奇怪的原因在于Win95是个单用户系统,只有你一个人在<br />
使用。<br />
<br />
FreeBSD则是个多用户的系统:同一时间一台机器可以为多个用户服务.这种<br />
服务可不光是文件共享服务(如WinNT和Netware提供的),连上FreeBSD的用户<br />
可以使用服务器上所有的功能,就好象他坐在系统控制台上一样.如果允许<br />
的话,用户之间还能实时互动.(译注:比如talk) FreeBSD也能提供比DOS和<br />
Windows95更多的控制能力给你,在FreeBSD上你可以”热更新”系统参数,它<br />
们则需要重新启动一下更新才能生效.比如,你可以更改机器的IP地址,然后<br />
马上就可以投入使用.你不必等上5分种reboot来看效果.<br />
<br />
现在,Internet正成为我们生活中越来越重要的组成部分,Internet也改变着我<br />
们的商业模式,公司和个体都在寻找能廉价地增强他们竞争力的手段.尤其是公<br />
司,他们正在提供各种Internet和Intranet服务以吸引客户,提高办事效率.与<br />
此同时,尽管计算机硬件的价格不断下调,软件和支持的费用却不断上涨.对个<br />
体来说,Internet更是一个开展业务的乐园,不过他们的启动经费往往只够买硬<br />
件,他们也必须找到廉价的软件来提供服务.<br />
<br />
UNIX是Internet的标准系统,极其重要的Internet标准协议--TCP/IP,DNS,HTTP,FTP<br />
SMTP/POP3/IMAP......绝大部分都是在UNIX系统上开发或调试的.<br />
<br />
FreeBSD刚好满足了上面两方面的需要:它基于UNIX的标准代码基(BSD 4.4),优化<br />
运行于通用而廉价的Intel硬件平台,而且是自由的(正如其名).<br />
<br />
FreeBSD上Internet标准协议的实现刚好是它的强项.它有众多的WWW/DNS/email<br />
服务软件,也有大量的基于TCP/IP协议的软件包.<br />
<br />
FreeBSD有着广泛的应用领域:<br />
●服务器类应用<br />
◎“装好就用”(turnkey)型的WWW服务器<br />
◎ 电子邮件服务器(POP3和IMAP)<br />
◎ 域名服务器(DNS)<br />
◎ PPP拨号服务器<br />
◎ WinXX用户的文件和打印共享服务()<br />
◎ 用来当路由器<br />
◎ 用来做Internet防火墙或网关<br />
◎ 提供Novell Netware文件服务的互操作性<br />
◎ 翻译网络地址(NAT),节约你的合法分配地址<br />
● 普通应用<br />
◎ 作为廉价的 UNIX X Window工作站<br />
◎ 运行大量的FreeBSD桌面应用程序:<br />
○ 文字处理<br />
○ 电子表格<br />
○ 数据库处理<br />
○ 多媒体<br />
○ 视频会议<br />
◎ 运行其他系统上的应用:<br />
○ Linux<br />
○ BSDi<br />
○ SCO<br />
○ Windows 3.1/DOS<br />
○ Windows 95/NT<br />
◎ 单个用户的安全管理<br />
● 大量的定制开发应用<br />
<br />
□ 网络上的FreeBSD资源<br />
<br />
有关FreeBSD的信息大都可以在网上找到,且有多种格式。<br />
<br />
Web网站:<br />
网络上的FreeBSD站点很多,最好的寻找方法是从正式的FreeBSD站点开始浏览:<br />
http://www.freebsd.org (正式站点)<br />
http://www.freebsd.org/handbook/handbook.html (手册)<br />
http://www.freebsd.org/FAQ/FAQ.html (常见问答)<br />
http://www.de.freebsd.org/de/cgi/man.cgi (联机手册)<br />
上面是进行中的FreeBSD文档计划的一部分,内有FreeBSD专家们撰写的应用指南,<br />
还有一些参考书。<br />
<br />
另外,也有不少站点是总体介绍FreeBSD和其他UNIX系统的。如:<br />
http://www.ugu.org (Unix 高手世界)<br />
freebsd.org的人们也搭建了讨论FreeBSD的邮件列表,可以在上面报告bug、提问、<br />
更新源代码等等你需要的所有服务,但你并不需要支付咨询服务费给任何人。关<br />
于服务支持,你可以到http://www.freebsd.org/support.html了解详情。<br />
<br />
CDROM:<br />
其实大部分的文档在FreeBSD的安装光盘上已经包含了,可以在DOS或Windows下阅<br />
读,安装前看看文档是个好主意,要是你拿不准,可以把相关章节打印出来随时备<br />
查。<br />
<br />
你的系统:<br />
在一个已经装好了的FreeBSD系统上,有如下文档:<br />
● 全部的联机手册(man pages)<br />
● HTML格式的手册(handbook)和常见问答(FAQ),它们放在/usr/share/doc<br />
下面,可以用netscape或者lynx来查阅。<br />
● 系统自带的例子。(译注:可能指的是各种配置文件里面的注解)<br />
<br />
□ FreeBSD邮件列表<br />
<br />
邮件列表是一群人保持互相联系的一种简单方法。一旦你订阅了某个邮件列表,<br />
你就会收到所有送往该列表的邮件。这样你就能看到人们提出的问题和解答。<br />
FreeBSD有专门的邮件列表来解答问题,报告bug,还有新版本的发布。<br />
<br />
向相应邮件列表提问是获得正确快速解答的方便途径,回复信往往在几个小时<br />
内就能收到。要是订阅列表的其他人中刚好有知道答案的,他立即回答你的话,<br />
几分钟之内就能收到回音了。你得到的不仅仅是答案,而将是完整的解决方法,<br />
因为列表订阅者中很可能碰到过跟你一样的问题,甚至,你碰到问题的软件的<br />
作者都有可能在这个列表当中,他们给你的答案,自然是最有价值的。<br />
<br />
在你提问之前,你可能想去看看这个问题是否已经被提出过,要是能直接在邮件<br />
档案中搜索到答案的话,你就不必麻烦别人了:<br />
http://www.freebsd.org/search.html<br />
要是在这个地方搜不到你想问的东西,那么找个正确的邮件列表,发封email。<br />
<br />
有若干主题的FreeBSD邮件列表可供自由订阅。你最好先只订阅一个跟你目前使<br />
用的系统和环境密切相关的列表,一次订阅多个列表的话要小心你的邮件流量超<br />
载。<br />
<br />
无论何时,你应该避免“重复张贴”(cross-posting),尽量只在跟你的问题相<br />
关的那个列表上提问,重复张贴是对带宽的浪费,也是对无关列表的读者精力<br />
的浪费。如果你错了,人们一般会指点你应该把这个问题发到哪个列表上去。<br />
(译注:使用邮件列表要注意网络道德,要是你敢乱发广告等无关邮件,那<br />
可就不是"指点"了,肯定会被人家骂个狗血喷头!)<br />
<br />
如果你是个新手,那么freebsd-questions列表很可能是你最需要的了。所有关于<br />
安装运行FreBSD的问题都可以在这个列表上提出来。<br />
<br />
当发信到列表上去提问的时候,请记得详细描述你的问题,附带上尽量多的信息,<br />
好方便大家帮助你解决问题,包括:<br />
<br />
● 你运行的FreeBSD版本号<br />
● 机器上有多少内存<br />
● 硬盘类型和大小<br />
● 硬件型号<br />
● 所有跟你问题相关的配置情况<br />
● 出错信息的详细拷贝<br />
<br />
注意:如果你自己参考了某些联机文档来试图解决过问题,也请把你的尝试告诉<br />
大家,这样,如果你遗漏了某些资料没有看,他们会很快地告诉你要查找些什么<br />
资料。<br />
<br />
□ 订阅邮件列表<br />
<br />
下面列出一部分FreeBSD邮件列表,你可以从这些列表开始订阅。随着FreeBSD开发<br />
和应用的发展,新的列表也会加入进来。<br />
<br />
当订阅列表的时候要注意,订阅信和讨论信的邮件地址是不同的。订阅信是你要求<br />
加入到某个列表中去的信,这种信一般是由一个叫做majordomo的列表管理程序来<br />
自动处理的:你需要发送到 majordomo@freebsd.org <br />
<br />
每个不同主题的列表都有其“列表地址”,你往这个地址发的信会被复制分发到每个<br />
订阅者的邮箱里去,他们并不能帮你完成订阅申请,所以不要把你的订阅请求发到<br />
这些列表地址:<br />
<br />
freebsd-newbies@freebsd.org 新手问题讨论<br />
freebsd-questions@freebsd.org 一般性问题讨论<br />
freebsd-isp@freebsd.org FreeBSD在ISP方面的应用讨论<br />
freebsd-current@freebsd.org 最新current用户问题<br />
freebsd-bugs@freebsd.org 报告BUGs<br />
freebsd-chat@freebsd.org 随意瞎聊(当然要跟FreeBSD有关的)<br />
freebsd-announce@freebsd.org 新版本发布通告(一般是只读的)<br />
freebsd-stable@freebsd.org FreeBSD稳定版应用问题<br />
<br />
要想订阅某个列表,往majordomo@freebsd.org发一封请求信,其内容举例如下:<br />
<br />
subscribe frebsd-questions<br />
subscribe freebsd-announce<br />
END<br />
<br />
这样,majordomo程序会把你加入到 freebsd-questions和freebsd-announce两个<br />
列表里面。很快,你就会收到这两个列表上的往来邮件了。在请求信的最后加上<br />
end字样是个好习惯,它告诉majordomo忽略邮件的后面内容,否则,你的签名档<br />
也会被majordomo分析一通。(译注:没有太大问题,没有这么巧的,但是我们还<br />
是加上这个"END"好些,不要去"测试"majoedomo了)<br />
<br />
majordomo收到请求信后会给你发封确认信,以确认你的邮件地址是正确的,里面<br />
有你的名字和地址,还有确认密码。你要做的很简单,直接"reply"这封邮件给<br />
majordomo就行了。之所以采用这种确认程序,是为了防止别人冒用你的名义,<br />
给你订上一大堆的邮件列表。<br />
<br />
(译注:原文没有讲取消订阅,这里补充一下:再给majordomo写请求信,格式跟<br />
订阅请求一样,不过把subscribe换成unsubscribe就行了)<br />
内容<br />
<br />
1. 配置你的.cshrc文件<br />
2. 设置更多的虚拟控制台(Virtual Terminals)<br />
3. 增加一个硬盘<br />
4. 系统配置文件选项<br />
5. 添加和安装软件<br />
6. 怎样安装Linux模拟器<br />
<br />
1. 配置你的.cshrc文件<br />
<br />
这是系统自带的.cshrc文件.<br />
<br />
<br />
#csh .cshrc file<br />
<br />
alias h history 25<br />
alias j jobs -l<br />
alias la ls -a<br />
alias lf ls -FA<br />
alias ll ls -lA<br />
alias su su -m<br />
<br />
setenv EDITOR vi<br />
setenv EXINIT 'set autoindent'<br />
setenv PAGER more<br />
<br />
set path = (~/bin /bin /usr/{bin,games} /usr/local/bin /usr/X11R6/bin)<br />
<br />
if ($?prompt) then<br />
# An interactive shell -- set some stuff up<br />
set filec<br />
set history = 1000<br />
set ignoreeof<br />
set mail = (/var/mail/$USER)<br />
set mch = `hostname -s`<br />
set prompt = "${mch:q}: {\!} "<br />
umask 2<br />
endif<br />
<br />
path语句告诉你的shell哪里能找到你要执行的程序. 它从列出的第一个目录<br />
开始寻找与你输入的命令相匹配的文件. 如果找到就开始执行那个程序.<br />
<br />
它不会在没有列出的目录里寻找可执行文件. 哪怕就在你的当前目录下. 所以<br />
如果你的当前目录没在path的列表里, 即使你要执行的文件就在这里也不能被找<br />
到.<br />
<br />
如果要执行当前目录下的文件, 你得在命令前面加一个"./" . 例如, 你在<br />
/usr/local/www/cgi-bin/目录里要测试一个编好的程序. 它名叫getdata.pl,<br />
你输入getdata.pl, 然而并没有你期待的HTML输出, 你只是得到了一条错误信<br />
息, getdata.pl: Command not found. 这是因为你的path语句里没有包含"."<br />
目录. 要想这个文件被执行你得输入:<br />
<br />
./getdata.pl<br />
<br />
现在你会看到期待的HTML. 除非你编的程序有误, 输出的是你所用的编程语言<br />
的错误信息.<br />
<br />
一个 TCSH 的例子<br />
<br />
就象前面提及的, tcsh在csh的基础上增加了很多特性使得命令行界面更加易用.<br />
这是一个能够体现出tcsh优越性的.cshrc文件的例子:<br />
<br />
<br />
#tcsh .tcshrc file<br />
<br />
alias h history 25<br />
alias j jobs -l<br />
alias la ls -a<br />
alias lf ls -FA<br />
alias ll ls -lF<br />
#alias su su -m -- bad for su'ing to root..<br />
<br />
setenv EDITOR vim<br />
setenv PAGER less<br />
<br />
set path = ( ~/bin /usr/local/bin /bin /usr/{bin,games} /usr/sbin /sbin /usr/local/samba/bin /usr/X11R6/bin /usr/local/java/bin .)<br />
<br />
setenv IRCNICK ringzero<br />
setenv IRCSERVER irc2.magic.ca<br />
setenv NNTPSERVER news.sentex.ca<br />
<br />
if ($?prompt) then<br />
# An interactive shell -- set some stuff up<br />
set filec<br />
set fignore = .o # ignore object files for filec<br />
set showmatch # for programming<br />
set history = 100 <br />
set savehist = 75 # tcsh version of history..<br />
set ignoreeof<br />
set mail = (/var/mail/$USER)<br />
set prompt="vinyl:{%h}%~ %% " # tcsh version of above!<br />
<br />
set watch = (1 gabor any mike any adrian any pwardrop any)<br />
<br />
umask 2<br />
endif<br />
<br />
第一点值得注意的是有关setenv的行. 在这个例子里, 它们设置了使用新的阅读<br />
软件和irc客户端软件的环境变量. 另一个感兴趣的地方是set fignore = .o , 它<br />
使得file completion(set filec)(译者注: 我对tcsh不太熟悉,我猜想这里的file<br />
completion 是指类似bash的命令补齐的东西,但又不敢确定,所以照搬下来了)忽略<br />
结尾是".o"的文件. 如果你是一个C程序员的话这很有用, 因为你要编辑的是一个<br />
".c"文件而不是".o"文件. set showmatch 是 tcsh 特有的另一个file completion<br />
机制. 至于它的用途, 自己试试吧! set prompt 选项为你的shell设置了一个很<br />
友好的提示符. 它会在任何时候显示你的当前目录. 看起来会象这样:<br />
<br />
mark:{123}~ % cd /usr/src<br />
mark:{124}/usr/src %<br />
<br />
注意波浪号表示你的home目录. 现在你已经知道了很多tsch和csh选项了, 如果想<br />
知道更多,最好的方法是man tcsh! 所有两种shells的特征(比如tcsh的"watch"特征)<br />
都在man page里. 自己去体验一下你所喜欢的那些窍门吧!<br />
<br />
注意:<br />
<br />
如果你更改了你的.cshrc文件, 你可以用source .cshrc来使你的<br />
变动立即生效!<br />
<br />
2. 设置更多的虚拟控制台(Virtual Terminals)<br />
<br />
(译者注: 想来想去还是决定把Virtual Terminals译为虚拟控制台,<br />
因为记得有人把Pseudo terminals称作虚拟终端的)<br />
<br />
一个虚拟控制台是一个内建在服务器主控制台上的终端. 它使你能同时打开好<br />
几个屏幕, 当然一次只能看到一个. 缺省情况下设置了4个虚拟终端, 但只有3个<br />
能用.按ALT加F2或F3(F1是一开始的那个)可以切换到第二或第三个虚拟控制台. <br />
现在你会在屏幕上看到登录画面, 这和第一个虚拟控制台看起来没有什么不同. <br />
按ALT加F1回到原来的屏幕.<br />
<br />
要增加虚拟控制台, 你必须以超级用户身份访问/dev目录. 然后运行MAKEDEV<br />
程序. MAKEDEV是一个shell脚本, 所以你得用sh shell解释器来执行它. 在提示符<br />
下输入:<br />
<br />
cd /dev<br />
<br />
sh MAKEDEV vty 16<br />
<br />
注意:<br />
<br />
(全部用大写输入MAKEDEV, 大小写有本质的区别)<br />
<br />
这将建立16个虚拟控制台. 它们可以用ALT+F?来访问. (译者注: 但是F键只有12个)<br />
但是在你能使用它们之前你还要在/etc/ttys文件里激活它们. 去到/etc/目录里然后<br />
用vi来编辑/etc/ttys文件.<br />
<br />
cd /etc<br />
<br />
vi ttys<br />
<br />
#<br />
# $Id: ttys,v 1.2 1998/09/02 01:34:57 brian Exp $<br />
# @(#)ttys 5.1 (Berkeley) 4/17/89<br />
#<br />
# name gettytype status comments<br />
#<br />
# This entry needed for asking password when init goes to single-user mode<br />
# If you want to be asked for password, change "secure" to "insecure" here<br />
console noneunknown off secure<br />
#<br />
ttyv0 "/usr/libexec/getty Pc" cons25 on secure<br />
# Virtual terminals<br />
ttyv1 "/usr/libexec/getty Pc" cons25 on secure<br />
ttyv2 "/usr/libexec/getty Pc" cons25 on secure<br />
#ttyv3 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure<br />
ttyv3 "/usr/libexec/getty Pc" cons25 on secure<br />
ttyv4 "/usr/libexec/getty Pc" cons25 on secure<br />
ttyv5 "/usr/libexec/getty Pc" cons25 on secure<br />
ttyv6 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure<br />
# Serial terminals<br />
# The 'dialup' keyword identifies dialin lines to login, fingerd etc.<br />
ttyd0 "/usr/libexec/getty std.9600" dialup off secure<br />
ttyd1 "/usr/libexec/getty std.9600" dialup off secure<br />
ttyd2 "/usr/libexec/getty std.9600" dialup off secure<br />
ttyd3 "/usr/libexec/getty std.9600" dialup off secure<br />
# Pseudo terminals<br />
ttyp0 none network secure<br />
ttyp1 none network secure<br />
ttyp2 none network secure<br />
ttyp3 none network<br />
(译者注: 原文里是一个图, 所以用我的/etc/ttys文件来代替)<br />
<br />
如果你运行X window, 必须保留一个关掉的虚拟控制台. 缺省情况下,<br />
ttyv4 是关闭的.<br />
<br />
你要在标着Virtual Terminals的部分添加几行. 如果你制造了16个虚拟<br />
控制台设备, 那么你现在有16个虚拟控制台要配置. 也就是说在/etc/ttys<br />
文件里要有16行有关虚拟控制台的内容; 现在还只有4行. 你可以通过拷贝<br />
粘贴这些行来完成:<br />
<br />
ttyv2 "/usr/libexec/getty Pc" cons25 on secure<br />
<br />
把光标移到这行后按yy然后按j使光标下移再按12p来使这行被粘贴12次.现在<br />
你有了ttyv2的12份拷贝, 你得把它们改为二进制数字. 从4开始,然后是5,6,<br />
7,8,9,a,b,c,d,e,f.<br />
<br />
完成后你就在/etc/ttys里配好了从ttyv1 - ttyvf的虚拟控制台.<br />
<br />
在vi里你能用简单的方法来完成替换,把光标移到你要改变的数字上按r键再<br />
输入要替换成的数字,然后按j使光标下移再重复前面的工作.<br />
<br />
结束编辑后按ZZ退出vi. 现在要重起init进程. 以超级用户身份输入:<br />
kill -HUP 1<br />
<br />
现在你的虚拟控制台已经随时待命了.<br />
<br />
3. 增加一个硬盘<br />
<br />
先要从物理上安装硬盘. 保证电缆已经接好, 从第一针到电源插头.(注意,<br />
数据线上的红带要与电源线相邻). 再确保有电供给驱动器.<br />
<br />
然后重新启动FreeBSD,FreeBSD在启动的时候会检测出这个驱动器. 如果没有<br />
的话用"-c"参数reboot. 在启动提示符下进入visual config使合适的控制器被<br />
激活. 最可能的情况是你使用的核心是自己建立的并且附加的IDE驱动器以被核<br />
心禁止,或者在一个SCSI被核心禁止的系统上添加第一个SCSI驱动器. 如果控制<br />
器只是被核心*禁用*而不是删除, 只须在visual config里把它激活就行了. 否<br />
则你必须重建核心以加入适当的控制器和驱动.<br />
<br />
如果你错过了启动时的信息, 登录后在提示符下敲dmesg. 这将重现你的启动<br />
信息.<br />
<br />
/usr/> dmesg | more<br />
<br />
如果安装的是SCSI驱动器, 要确保驱动器已被SCSI BIOS找到并且用了适当的<br />
SCSI termination.<br />
<br />
一旦所有东西都被找到, 就可以开始FreeBSD下的配置了.<br />
<br />
******************************************************************<br />
<br />
要做的第一件事就是清扫干净磁盘上原有的任何东西. 很多硬盘驱动器厂商已<br />
把新的驱动器分好区并且已格式化成DOS FAT文件系统. 在余下的部分, 我们假<br />
设找到的硬盘驱动器是sd1, 也就是电缆上的第二个SCSI驱动器(用SCSI ID 1).<br />
下面是如何清除FAT垃圾:<br />
<br />
dd if=/dev/zero of=/dev/rsd1 count=100<br />
<br />
然后要为驱动器准备一个"disk label". 假设你计划整个硬盘都在FreeBSD下<br />
使用:<br />
<br />
disklabel -Brw sd1 auto<br />
<br />
*把rsd1和sd1替换成你添加的硬盘,不要在一个正在使用的磁盘上进行这些操作.<br />
这将清除磁盘上的每样东西, 为FreeBSD能使用它做好准备. 一切顺利的话将不需要<br />
使用fdisk.<br />
<br />
如果你计划在FreeBSD下把整个硬盘分成一个区, 那么用刚才 disklabel 建立的<br />
缺省的单一分区就行了, 否则的话你要用disklabel编辑器来创建更小的分区.你也<br />
许需要在磁盘上增加一个交换分区, 例如.<br />
<br />
编辑第一个IDE盘的disklabel:<br />
<br />
disklabel -e wd0<br />
<br />
# /dev/rwd0c:<br />
type: ESDI<br />
disk: wd0s1 <br />
label: <br />
flags:<br />
bytes/sector: 512<br />
sectors/track: 51<br />
tracks/cylinder: 13<br />
sectors/cylinder: 663<br />
cylinders: 722<br />
sectors/unit: 479298<br />
rpm: 3600<br />
interleave: 1<br />
trackskew: 0<br />
cylinderskew: 0<br />
headswitch: 0 # milliseconds<br />
track-to-track seek: 0 # milliseconds<br />
drivedata: 0 <br />
<br />
8 partitions:<br />
# size offset fstype [fsize bsize bps/cpg]<br />
a: 65536 0 4.2BSD 0 0 0 # (Cyl. 0 - 98*)<br />
b: 85936 65536 swap # (Cyl. 98*- 228*)<br />
c: 479298 0 unused 0 0 # (Cyl. 0 - 722*)<br />
e: 61440 151472 4.2BSD 0 0 0 # (Cyl. 228*- 321*)<br />
f: 266386 212912 4.2BSD 0 0 0 # (Cyl. 321*- 722*)<br />
<br />
<br />
这部分需要动动脑筋,以使那些数字正确. 给一个分区分配容量,较容易的方法是<br />
给你要分配的分区一个通过计算得出的柱面(cylinders)数. size 是分区的扇区数<br />
目. offset 是前一个分区的最后一个扇区. 分区 a 从扇区0开始. 分区必须在你<br />
所分配给分区的柱面的范围内开始和结束. 计算分区大小的方法是, tracks/cylinder<br />
(每柱面的磁道数)乘以sectors/cylinder(每柱面的扇区数)再乘以你分配给分区的<br />
柱面数.(扇区数*磁道数*柱面数=分区大小) 计算offset的方法是, 上个分区的大<br />
小加上个分区的offset.(Size+Offset=下个分区的Offset)<br />
<br />
fstype是你在分区上使用的文件系统的类型. FreeBSD通常使用的文件系统是<br />
4.2BSD. swap是交换文件使用的文件系统. FAT是DOS分区使用的文件系统.分区a<br />
为启动扇区保留,它为空表示不需要启动扇区.<br />
<br />
分区 b 保留作交换文件. 它不能从offset 0开始. 它的前面必须要有一个分<br />
区. 分区 e 可以从offset 0 开始并且可以是任意大小, 所以交换分区可以放在<br />
分区 e 的后面.<br />
<br />
分区 c 不会被改变. 要从分区c开始制造你的文件系统.<br />
<br />
现在要用newfs命令在磁盘创建一个文件系统. 如果你使用的是整个磁盘, 可以<br />
用disklabel 自动建立的c分区.<br />
<br />
newfs /dev/rsd1c<br />
<br />
c分区总是整个驱动器 - 所以这种情况下你建立的文件系统也就包括了整个磁盘.<br />
<br />
如果你把磁盘分的更小, 你必须在每个分区上使用newfs来建立文件系统,交换分<br />
区除外.<br />
<br />
最后,你需要mount驱动器. 在这里我们假设你已用mkdir创建了"mount point"<br />
/d2 .<br />
<br />
mount /dev/sd1c /d2<br />
<br />
顺利的话, 你可以看到象这样的东西:<br />
<br />
#vinyl % df -k<br />
<br />
Filesystem 1K-blocks Used Avail Capacity Mounted on<br />
/dev/sd0a 31775 13530 15703 46% /<br />
/dev/sd0s1f 1913091 1086207 673837 62% /usr<br />
/dev/sd0s1e 29727 12663 14686 46% /var<br />
procfs 4 4 0 100% /proc<br />
/dev/sd1c 4108717 616594 3163426 16% /d2<br />
<br />
现在你要在/etc/fstab文件里创建一个条目以使它在每次启动时都被mount.<br />
否则你每次都要手工执行mount. 你要为创建的每个分区建立fstab条目,包括<br />
交换分区.<br />
<br />
此外可以在man page里参考: fstab mount disklabel dmesg dd 和 newfs <br />
<br />
<br />
4. 系统配置文件选项<br />
<br />
4.1 重要的启动时初始化选项<br />
4.2 网络配置子项<br />
4.3 (其他)网络daemon & NFS选项<br />
4.4 网络时间服务选项<br />
4.5 网络信息服务(NIS)选项<br />
4.6 网络路由选项<br />
4.7 系统控制台选项<br />
4.8 其他管理选项<br />
4.9 Allow local configuration override at the very end here<br />
<br />
注意:<br />
<br />
所有参数都必须括在单引号或双引号里. 多个条目间用空格格开<br />
<br />
4.1 重要的启动时初始化选项<br />
<br />
swapfile="NO" <br />
<br />
# 设定交换文件的名字,如果希望使用辅助交换文件的话.<br />
# Set to name of swapfile if aux swapfile desired.<br />
<br />
apm_enable="NO" <br />
<br />
如果希望激活APM(高级电源管理)设为YES<br />
<br />
pccard_enable="NO" <br />
<br />
要配置PCCARD设备的话设为YES.<br />
<br />
pccard_mem="DEFAULT" <br />
<br />
如果ccard_enable=YES, 这是卡的内存地址.<br />
<br />
pccard_ifconfig="NO" <br />
<br />
以太网pccard的特殊配置(否则 NO).<br />
<br />
local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d" <br />
<br />
本地启动目录.在启动期间,FreeBSD会搜索某些目录,并执行里面的任何<br />
程序.有些象Windows里的"启动"文件夹.local_startup选项让你指定那<br />
些目录在启动期间会被搜索.可以列多个目录,中间用空格格开.它们将按<br />
顺序被搜索,每个文件都会被执行.这是除/etc/rc.local外另一个启动程<br />
序的方法.<br />
<br />
<br />
4.2. 网络配置子项<br />
<br />
基本网络选项: <br />
<br />
hostname="myname.my.domain" <br />
<br />
这是你的主机名. 如果你连在Internet上的话还要包括域名.这个名字<br />
也会出现在你的DNS表里.<br />
<br />
nisdomainname="NO" <br />
<br />
设定 NIS 域 如果使用 NIS (否则 NO).<br />
<br />
firewall="NO" <br />
<br />
防火墙类型 (参见 /etc/rc.firewall) 否则 NO.<br />
<br />
tcp_extensions="YES" <br />
<br />
# 允许 RFC1323 & RFC1544 扩展 (否则 NO).<br />
<br />
network_interfaces="lo0" <br />
<br />
这是你配置你的所有网卡的地方.每块网卡都要有一项.lo0<br />
是环路(loopback)设备也称作"localhost".网卡,比如ed0<br />
(NE2000)和fxp0(Intel Ether Express)在上面加入.<br />
<br />
ifconfig_lo0="inet 127.0.0.1" <br />
<br />
在这里配置你上面列出的每块网卡.<br />
<br />
ifconfig_lo0_alias0="inet 127.0.0.254 netmask 0xffffffff" <br />
<br />
通过lo0为localhost设置一个别名.<br />
<br />
4.3. (其他)网络daemon & NFS选项:<br />
<br />
syslogd_enable="YES" <br />
<br />
Syslog 是你的登录服务.它把所有的错误记录在/var/log/.它用<br />
/etc/syslog.conf来配置. <br />
<br />
syslogd_flags="" <br />
<br />
# syslogd 的命令参数 (如果被允许).<br />
<br />
inetd_enable="YES" <br />
<br />
这是你所有的网络服务. 如果它被禁止你将不能telnet到这台计算机<br />
上. 它通过/etc/inetd.conf来配置. 它管理着所有动态服务, 也就是<br />
说在需要时才会被启动的服务, 比如: finger, telnet,rlogin, ftp,<br />
pop3 等等...<br />
<br />
inetd_flags="" <br />
<br />
# inetd 的参数.<br />
<br />
named_enable="NO" <br />
<br />
这将运行你的Internet域名服务, 或者说, BIND. 如果你已经有了一个<br />
DNS你就不必把它打开了.它通过 /etc/namedb/named.boot来配置, 除非<br />
你专门指定了另一个. 你将会有至少两个DNS servers.<br />
<br />
named_flags="-b /etc/namedb/named.boot" <br />
<br />
这是你指定给named的配置文件.<br />
<br />
kerberos_server_enable="NO" <br />
<br />
# 运行一个kerberos主服务程序 (否则 NO).<br />
# Run a kerberos master server(or NO).<br />
<br />
rwhod_enable="NO" <br />
<br />
# 运行 rwho daemon (否则 NO).<br />
<br />
amd_enable="NO" <br />
<br />
# 以$amd_flags运行amd服务. (否则 NO).<br />
<br />
amd_flags="-a /net -c 1800 -k i386 -d my.domain -l syslog /host /etc/amd.map" <br />
<br />
例子<br />
<br />
nfs_client_enable="NO" <br />
<br />
# 这台主机是一台 NFS 客户机 (否则 NO).<br />
<br />
nfs_client_flags="-n 4" <br />
<br />
# nfsiod 的参数 (如果被允许).<br />
<br />
nfs_server_enable="NO" <br />
<br />
# 这台主机是一台 NFS 服务器 (否则 NO).<br />
<br />
nfs_server_flags="-u -t 4" <br />
<br />
# nfsd 的参数 (如果被允许).<br />
<br />
weak_mountd_authentication="NO" <br />
<br />
# 运行 PCNFSD / 其他 non-root nfsd (否则 NO).<br />
<br />
nfs_reserved_port_only="NO" <br />
<br />
# 仅在安全端口上提供NFS (否则 NO).<br />
<br />
rpc_lockd_enable="NO" <br />
<br />
# 运行 NFS rpc.lockd (*broken!*) 如果 nfs_server.<br />
<br />
rpc_statd_enable="YES" <br />
<br />
# 运行 NFS rpc.statd 如果 nfs_server (or NO).<br />
<br />
portmap_enable="YES" <br />
<br />
# 运行 portmapper 服务 (否则 NO).<br />
<br />
portmap_flags="" <br />
<br />
# portmap 的参数(如果被允许).<br />
<br />
xtend_enable="NO" <br />
<br />
# 运行 X-10 电源控制器 daemon.<br />
<br />
xtend_flags="" <br />
<br />
# xtend 的参数(如果被允许).<br />
<br />
4.4. 网络时间服务选项: <br />
<br />
timed_enable="NO" <br />
<br />
运行时间 daemon (否则 NO).<br />
<br />
timed_flags="" <br />
<br />
timed 的参数(如果被允许).<br />
<br />
ntpdate_enable="NO" <br />
<br />
运行ntpdate 使时间同步 (or NO).<br />
<br />
ntpdate_flags="" <br />
<br />
ntpdate 的参数(如果被允许).<br />
<br />
xntpd_enable="NO" <br />
<br />
允许 xntpd 网络时间协议 (否则 NO).<br />
<br />
xntpd_flags="" <br />
<br />
xntpd 的参数(如果被允许).<br />
<br />
tickadj_enable="NO" <br />
<br />
运行 tickadj (否则 NO).<br />
<br />
tickadj_flags="-Aq" <br />
<br />
tickadj 的参数(如果被允许).<br />
<br />
4.5. 网络信息服务(NIS)选项:<br />
<br />
nis_client_enable="NO" <br />
<br />
我们是一台NIS客户机 (否则 NO).<br />
<br />
nis_client_flags="" <br />
<br />
ypbind 的参数 (如果被允许).<br />
<br />
nis_ypset_enable="NO" <br />
<br />
在启动时运行ypset (否则 NO).<br />
<br />
nis_ypset_flags="" <br />
<br />
ypset 的参数(如果被允许).<br />
<br />
nis_server_enable="NO" <br />
<br />
这是一台NIS服务器 (否则 NO).<br />
<br />
nis_server_flags="" <br />
<br />
ypserv 的参数(如果被允许).<br />
<br />
nis_ypxfrd_enable="NO" <br />
<br />
启动时运行rpc.ypxfrd(否则 NO).<br />
<br />
nis_ypxfrd_flags="" <br />
<br />
rpc.ypxfrd 的参数(如果被允许).<br />
<br />
nis_yppasswdd_enable="NO" <br />
<br />
启动时运行rpc.yppasswdd(否则 NO).<br />
<br />
nis_yppasswdd_flags="" <br />
<br />
rpc.yppasswdd 的参数(如果被允许).<br />
<br />
4.6. 网络路由选项: <br />
<br />
defaultrouter="NO" <br />
<br />
这里设置你的缺省网关.这是你连接Internet的路由器的IP地址.如果<br />
你没有设置这项,你将仅能ping通同一子网内的地址.如果你的IP地址<br />
是10.1.1.3,子网掩码是255.255.255.0,你将能看到10.1.1.2而不能<br />
看到10.1.2.2,因为没有设置缺省的路由.<br />
<br />
static_routes="" <br />
<br />
静态路由是作为路由器位于两个不同网络间的机器的高级选项. <br />
<br />
gateway_enable="NO" <br />
<br />
如果你的机器要当作网关的话设成YES.如果你机器上有不只一块网卡并<br />
把它们用作路由,网桥,ipnat或者当作拨号服务器时设定为YES.<br />
<br />
router_enable="YES" <br />
<br />
设置为 YES 以允许一个路由daemon.<br />
<br />
router="routed" <br />
<br />
如果被允许,这是路由daemon的名字.<br />
<br />
router_flags="-q" <br />
<br />
路由daemon的参数.<br />
<br />
mrouted_enable="NO" <br />
<br />
作 multicast routing (参见 /etc/mrouted.conf).<br />
<br />
ipxgateway_enable="NO" <br />
<br />
设成 YES 以允许 IPX 路由.<br />
<br />
ipxrouted_enable="NO" <br />
<br />
设成 YES 以运行 IPX 路由 daemon.<br />
<br />
ipxrouted_flags="" <br />
<br />
IPX 路由 daemon的参数.<br />
<br />
arpproxy_all="" <br />
<br />
替换已废除的核心选项 ARP_PROXY_ALL. 当作拨号服务器时需要.<br />
<br />
4.7. 系统控制台选项 <br />
<br />
keymap="NO" <br />
<br />
/usr/share/syscons/keymaps/* 里的keymap (否则 NO).<br />
<br />
keyrate="NO" <br />
<br />
设键盘速率为: slow, normal, fast (否则 NO).<br />
<br />
keybell="NO" <br />
<br />
bell to duration.pitch or normal or visual (or NO).<br />
<br />
keychange="NO" <br />
<br />
功能键的缺省值 (否则 NO).<br />
<br />
cursor="NO" <br />
<br />
光标类型 {normal|blink|destructive} (否则 NO).<br />
<br />
scrnmap="NO" <br />
<br />
/usr/share/syscons/scrnmaps/* 里的屏幕映射(否则 NO).<br />
<br />
font8x16="NO" <br />
<br />
/usr/share/syscons/fonts/* 里的8x16字体(否则 NO).<br />
<br />
font8x14="NO" <br />
<br />
/usr/share/syscons/fonts/* 里的8x16字体(否则 NO).<br />
<br />
font8x8="NO" <br />
<br />
/usr/share/syscons/fonts/* 里的8x8字体(否则 NO).<br />
<br />
blanktime="NO" <br />
<br />
blank time (in seconds) or "NO" to turn it off.<br />
<br />
saver="NO" <br />
<br />
屏幕保护: blank/daemon/green/snake/star/NO. 当你没有X运行时<br />
这里设置屏幕保护.<br />
<br />
moused_type="NO" <br />
<br />
rc.conf(Cool 的man page 里列出了可用的选项.<br />
<br />
moused_port="/dev/cuaa0" <br />
<br />
设置你的鼠标端口 (必须,mousetype 被设置).<br />
<br />
moused_flags="" <br />
<br />
moused 的附加参数.<br />
<br />
4.8. 其他管理选项 <br />
<br />
cron_enable="YES" <br />
<br />
运行周期作业的daemon. Cron 是调度事件发生的 "daemon". 以一定的周期<br />
运行三个标准脚本文件: /etc/daily /etc/weekly 和 /etc/montly.<br />
你可以通过配置它们来完成要做的事<br />
<br />
lpd_enable="YES" <br />
<br />
运行排队打印机 daemon. 你需要这个来使用打印机. 它通过/etc/printcap<br />
配置.<br />
<br />
lpd_flags="" <br />
<br />
lpd 的参数(如果被允许).<br />
<br />
sendmail_enable="YES" <br />
<br />
运行 sendmail daemon (否则 NO). 你需要这个来获得e-mail服务除非你换成<br />
了其他邮件daemon. 它通过/etc/sendmail.cf来配置.<br />
<br />
sendmail_flags="-bd -q30m" <br />
<br />
-bd is pretty mandatory.<br />
<br />
savecore_enable="NO" <br />
<br />
核心crash时转储内存的映像 (否则 NO).<br />
<br />
dumpdev="NO" <br />
<br />
Device name to crashdump to (if enabled).<br />
<br />
check_quotas="NO" <br />
<br />
检查磁盘限额 (否则 NO).<br />
<br />
accounting_enable="NO" <br />
<br />
打开进程记帐 (否则 NO).<br />
<br />
ibcs2_enable="NO" <br />
<br />
启动时装入Ibcs2 (SCO) 模拟器 (否则 NO).<br />
<br />
linux_enable="NO" <br />
<br />
启动时装入Linux 模拟器 (or NO). 参见设置Linux模拟器部分.<br />
<br />
rand_irqs="NO" <br />
<br />
Stir the entropy pool (like "5 11" or NO).<br />
<br />
4.9. Allow local configuration override at the very end here <br />
<br />
if [ -f /etc/rc.conf.local ]; then<br />
. /etc/rc.conf.local<br />
fi<br />
<br />
<br />
5. 添加和安装软件<br />
<br />
在FreeBSD下添加/安装软件很容易.FreeBSD维护着一套"packages",它包含了几乎<br />
所有流行软件的已预先建立好并马上可以运行的二进制文件. 如果你有一套CD, 它们<br />
全在#1盘上,你能直接浏览(有个叫packages的目录..), 或者用"/stand/sysinstall"<br />
工具,到Post Configuration,然后选择Packages. 将出现一个分类列出所有packages<br />
并带有简短描述的屏幕.<br />
<br />
通常,你需要ftp到ftp.freebsd.org以取得一个package的最新版本 - <br />
ftp://ftp.freebsd.org/pub/FreeBSD/packages-stable 是你要注意的地方.如果你<br />
下载了一个package,它会以 .tgz结尾.你不必人工的untar/展开它. 只须用命令<br />
"pkg_add".<br />
<br />
例如: 我下载了一个叫 spaz-1.32.tgz 的package<br />
<br />
<br />
1. su to root (你需要成为root 来安装 packages)<br />
<br />
2. pkg_add spaz-1.32.tgz <br />
<br />
就是这样!现在这个package已在你系统上被安装和设置. 如果你用csh或tcsh,你得<br />
用rehash来让你的shell重新扫描系统里的 bin 目录...<br />
<br />
这个package已被登记到/var/db/pkg目录里 - 你能 cd 到那里取得一个目录列表<br />
来看看你系统上安装了哪些packages. 如果你不再需要一个package,你能用<br />
pkg_delete命令来删除它: pkg_delete spaz-1.32.tgz (从/var/db/pkb目录)<br />
<br />
FreeBSD的ports系统的工作也一样, 使用port登记使删除以后不再需要的东西变得<br />
很容易. 不同点是ports使用的是"源程序",需要被编译.如果你有一个Internet连接,<br />
并且安装了ports tree(在安装FreeBSD时会询问你是否需要)可以 cd 到/usr/ports<br />
里看看.<br />
<br />
假设你要在/usr/ports/net/spaz目录里安装port:<br />
<br />
1. su root<br />
<br />
2. cd /usr/ports/net/spaz<br />
<br />
3. make<br />
<br />
注意:<br />
<br />
这里make实际在为你下载port!<br />
<br />
4. make install (如果前面的make成功的话,现在将把你的劳动果实安装到<br />
系统的 bin/lib 目录,随时供你使用)<br />
<br />
5. make clean (如果你想清除编译时产生的目标文件以节省空间的话)<br />
<br />
再说一遍,在/var/db/pkg里使用pkg_delete删除已安装的ports.<br />
<br />
<br />
6. 怎样安装Linux模拟器<br />
<br />
Linux模拟器允许你在你的FreeBSD系统上运行Linux的二进制文件.实际上它工作<br />
的很好.这是运行这个模拟器的两种方法:<br />
<br />
* 编译到核心里<br />
<br />
* 当作一个可装载的核心模块(lkm)<br />
<br />
不管用哪种方法, 你都必须先从ports collection里安装Linux库.<br />
<br />
cd /usr/ports/emulators/linux_lib<br />
<br />
make install<br />
<br />
这将把所有的Linux库安装到/usr/compat. 还将安装脚本/usr/bin/linux,它在<br />
需要Linux模拟器的时候装入可装载的核心模块.<br />
<br />
如果你希望用lkm来运行Linux模拟器, 你所有要做的就是在/etc/rc.conf里修改<br />
下面这行.<br />
<br />
linux_enable="YES" # Linux emulation loaded at startup (or NO). <br />
<br />
它将在启动时激活Linux模拟器. 如果要在不重新启动的情况下开始Linux模拟器,<br />
只需输入 linux.(需要root身份)<br />
<br />
如果不用lkm,你需要在核心配置文件里包括下面一行,然后重建核心<br />
<br />
options COMPAT_LINUX <br />
<br />
Linux模拟器将总是被允许.而不必修改你的rc.conf文件.
返回页首
阅览会员资料 发送站内信件
从以前的文章开始显示:   
发表新文章   这个论题已经被锁定,您不能发表、回复或者编辑文章。    FreeBSD China -> 中文-桌面-开发-调试 论坛时间为 北京时间
1页/共1

 
转跳到:  
不能发布新主题
不能在这个论坛回复主题
不能在这个论坛编辑自己的文章
不能在这个论坛删除自己的文章
不能在这个论坛发表投票


Powered by phpBB 2023cc © 2003 Opensource Steps; © 2003-2009 The FreeBSD Simplified Chinese Project
Powered by phpBB © 2001, 2005 phpBB Group
Protected by Project Honey Pot and phpBB.cc
silvery-trainer
The FreeBSD China Project 网站: 中文计划网站 社区网站
The FreeBSD China Project 版权所有 (C) 1999 - 2003 网页设计版权 著作权和商标