sidebar 隐藏/显示
OpenBSD下使用sambaFrom:http://hi.baidu.com/gdsoftware/blog/item/d512e8c4606784aa8226ac56.html OpenBSD下使用samba环境:OpenBSD i386 4.0
1、安装samba(如果需要使用swat安装ldap才能使用)
--------------------------------------------------------------
OpenBSD%una...
2006-01-30

重新编译OpenBSD内核 - []

好久没有Study了,今天去NetBSD & OpenBSD中文用户组看了看,发现了一篇文章关于OpenBSD编译内核的,收藏之:

原著: Brian Schonhorst
翻译: Linyin QQ:731582

内核是操作系统的核心.他是电脑最先启动的二进制文件,并将其加载到内存中.因为他是寄存在内存中,所以他需要尽可能的小.内核文件通常在ROOT目录里('/'),默认名为'bsd'.

拥护如果希望能为他们的系统添加特定的功能或者硬件,他们需要定制内核.在别的系统里,如Linux,原来的内核过于笼肿,所以重新编译内核是十分受欢迎的.对于大部分的用户来说,系统默认的内核已经足够;但是,你仍然需要安装内核补丁,需要重新编译安装系统内核.

你首先要获得系统源代码和补丁.现在我们假定这俩项目已经安装.如果没有,检查我的OpenBSD打补丁指示.你会得到很多有关系统内核源代码的补丁,但确定你是否真的需要他们!

编译一个新的内核
1. 使用合适的工作目录
首先你要进入工作目录,他依赖你所使用的系统平台.以下是个针对MACPPC的列子,但你需要你所使用的系统平台的目录来代替(e.g., i386, alpha,等等...).

$ cd /usr/src/sys/arch/macppc/conf

2. 配置

现在你可以通过MACPPC的配置文件来培植您的内核

$ sudo /usr/sbin/config GENERIC

3. 编译

下一步,我们将使用make(1)来编译新的内核.make程序重新编译其他的程序.我们必须进入正确的目录并运行make程序.第二步会花费点时间.

$ cd /usr/src/sys/arch/macppc/compile/GENERIC
$ sudo make clean && sudo make depend && sudo make

安全新内核

我们已经创建了新内核,但他并不在正确的位置.如果你重启你的电脑,他将默认使用'/'目录下的内核文件.我们刚刚所编译的内核文件存在目录于/usr/src/sys/arch/macppc/compile/GENERIC/.
4. 备份

我们要制作一份备份以防系统无法正常引导新内核.

$ sudo cp /bsd /bsd.old

5.放置内核

现在我们拷贝新内核到'/'下.并允许其执行.

$ sudo cp /usr/src/sys/arch/macppc/compile/GENERIC/bsd /bsd
$ sudo chown root:wheel /bsd

全部完毕

现在内核已经编译并安装,你可以重启电脑并引导它!

$ sudo reboot

2006-01-17

OpenBSD 下新建设备 - []

# cd /dev
# ./MAKEDEV vnd4
# ./MAKEDEV vnd5
2006-01-13

OpenBSD的历史(ZT) - []

当Windows不停升级仍无法抵御黑客、病毒与垃圾邮件,一个加拿大黑客率领60人做出了世界上最安全的操作系统,而且它是免费的。
  10年前,希欧?德若特(Theo De Raadt)陷入了人生的最低谷,至少在别人看来是这样。他当时没有一份正式的工作,并且刚刚从一个开源软件开发团队NetBSD被踢了出来。而编写开源软件代码是他唯一想做的事情。
  德若特9岁时随父母一起从南非搬到了加拿大,后来在卡尔加里大学获得了计算机科学学位。在上大学之前这个家伙就想编写开源软件了。在那个时代程序员们会编写一些东西然后把他们贴到BBS上面。然后这些东西就会传播出去,这是很时髦的事情。德若特最初编写了一些小的图形程序和小游戏,后来在Unix风光的日子里他成为comp.sources.unix新闻组的一员。尽管随后互联网开始变得流行起来,但德若特和朋友们仍旧做着同样的事情。
  “这里面的大多数人,比如我,编写开源软件因为这是一种协同工作、迸发好点子的文化。”德若特回忆道,“我们不愿把编写程序当成一份工作。”毕业后暂时作了几天程序开发员后,1993年这个家伙就和3个朋友一起开发出一套叫做NetBSD的系统。但自从他和另外一名开发人员发生了矛盾后,事情就一发不可收拾了。
  “那家伙是个彻头彻尾的衰人!我当时让他少聊天踏踏实实做些工作。”至今德若特仍不依不饶。后来这名程序员通过Email向德若特道歉。但他甚至没有删除这封邮件,反而用恶毒的、过分的语言回复对方,同时将这封邮件抄送给成百上千的开发高手取乐。于是在合作一年后因为自己的莽撞和不厚道,德若特被踢出了这个团队。
  但德若特毫不在乎,他立即着手开发一套NetBSD的竞争产品,并且在几个月后他就发布了这套名为OpenBSD的操作系统的第一个版本。而那封不厚道的邮件甚至被视为是OpenBSD的立项文件。如今用Google搜索“theo de raadt”时,这封邮件的内容链接仍会位于结果列表中的前几位。
  OpenBSD曾赢得过“安装四年也找不到一个漏洞”的美名,这套操作系统源于古老的Berkeley Unix,这个星球上另外两大十分出色的操作系统——Sun微系统公司的Solaris和苹果电脑公司的OS X——也同源于此。10年之后,德若特高兴地看到相比NetBSD他的软件更受人们关注。由于采用了先进的密码系统和数据通讯过滤,英特尔、甲骨文、Adobe的公司系统中都运行着OpenBSD。而且它不收一分钱。
  为什么在安全问题成为整个行业最头疼的问题时,德若特却能够让OpenBSD在这个敏感话题上声名显赫呢?很简单,那就是认真。
  他们采取最基础的办法:一行行检索源代码,找出问题。整个团队中有10到15个人,大概用了4年的时间彻底检查了OpenBSD那300兆的源码。一旦发现错误,开发人员不是立即修改,然后继续寻找其它的错误。OpenBSD的家伙们则是停下来分析这个错误的根源是什么,尽可能一举将整个系统里的所有同类错误修正。如此大概找到了100个普遍问题。
  与此同时,改善程序的系统构造,让每个功能都有序运行。另外,德若特认为如今许多软件过于复杂化,过于庞大的程序就很难兼顾安全。当程序开发人员编写出一个功能复杂的软件的时候,其安全性却很低。于是OpenBSD有80个程序员竭力精简自己的作品。要知道,300兆源码只是相当微软Windows、Office源码体积的1/4,而这两款软件称得上是世界上最赚钱的软件产品。
  但德若特并没有就此寻找投资、转而商业化的打算。接受《环球企业家》专访时,他用“深恶痛绝”表示了自己对资本的感受:“金钱不会提高程序代码的质量,只有技巧和时间才能够做到。”
  他每年靠3万加元度日,这笔钱来自销售45美元/张的OpenBSD光盘、印着吉祥物和宣传口号的T恤衫的收入,以及软件用户的捐赠。销售收入和捐赠收入的金额大致相当,除了支付一些生活费用,如宽带、冷气、电灯等,剩下的钱将会用在他们每年一次的黑客马拉松(hackathon)活动上。在那里60个开发人员齐聚一堂,用整整一周的时间面对面地讨论、疯狂编写代码。尽管德若特不反对开源社区中的其他人寻求风险投资的帮助,但他认为这对软件质量的提高不会有太大帮助。因为风险投资商们为了获得更多的回报,将会把大笔的投资用在市场营销方面。而且如果金钱能够做到这一切,那些商业软件早就做的足够好了,德若特自己将会无事可做。
  无所顾忌
  看一看37岁的德若特的生活,就知道他是什么样的人了。在其网站上,他对自己的描述是:一个铁杆黑客、老式UNIX电脑收藏者、狂热的山地自行车手、洞穴探索者、登山迷、初级的酿酒师。而他养的两只猫分别叫“伽利略”和“开普勒”。
  在这种充满冒险气质的生活背后,德若特一直是一名言辞犀利到令人难以接受的人,他在加拿大卡尔加里一间地下室里工作,并发表各种异见。
  2001年,德若特从美国高级研究项目局获得了一笔2年230万美元的研究基金,得以继续研发OpenBSD。美国高级研究项目局非常重视这套系统刀枪不入的安全性能。但这名黑客又一次张开了他的大嘴。他在一份加拿大报纸上批评伊拉克战争是一场贪婪的石油争夺游戏。没多久美国高级研究项目局就撤销了提供的资助。
  尽管德若特作为一名开源软件运动的倡导者和领军人物,但在今年6月接受采访时他对Linux却没有什么好话,只是强调他自己的软件采用了高级严谨的代码。“我认为我们的代码质量更高,因为我们在这上面花了大心思。凑近Linux仔细看看吧,它正在朝着另一个微软发展。这是一套质量低劣的软件,他们的人已经不行了。”
  而谈到开源世界的天皇巨星李纳斯?托沃兹(Linus Torvalds)时德若特也毫不客气:“我不知道他的工作重点在什么地方,但肯定不是质量。”当托尔华兹了解了德若特对自己的评价后,只表示了这是一个很难缠的家伙便什么都不说了。
  对《环球企业家》,德若特说:“我被曲解了,我批评Linux是因为它的确在质量上有问题。它可能会变得更流行、更庞大,但不是质量的提高。事实上,一件事情变得越庞大,保持高质量的难度就越大。我说过Linux质量很差的话,并且这是真的。”这也是德若特为什么坚持控制OpenBSD的体积和复杂程度,他坚信小即是美。
  即使充满争议性,OpenBSD的研发从未停止。每六个月,就会有一款新的OpenBSD诞生,谈到之所以固定生产周期,德若特的解释是:“这个时间长度刚刚好,以至于我不会因忙碌而自杀。”
  德若特得到了开源世界中许多志愿者的帮助。他们每年都会从全世界各个地方聚到卡尔加里一次,为OpenBSD开发新的功能。其中一些人就住在德若特的家里,平时这里只有他和女友。德若特甚至认为有时候这些家伙住的时间太长了。这项年度活动被他们称为黑客马拉松。今年5月份60名包括从澳大利亚、巴西、日本飞来的技术天才们参加了黑客马拉松。他们在凯悦酒店里连续一周几乎没有睡觉,疯狂地编写程序代码。任何人都可以提出自己的意见,但德若特拥有最终决定权。
  一家叫做InternetSecure的公司高高兴兴地为今年的黑客马拉松支付了3万美元的账单,这是一家提供线上信用卡交易系统的加拿大公司。去年这家公司在3台英特尔服务器上运行了OpenBSD系统,有效防止了黑客的攻击。在这之前黑客们曾经把他们的服务器打开了花。“目前OpenBSD是这个星球上最安全的操作系统。” Lok Technology公司的创始人西蒙?洛克(Simon Lok)说道,“我们不会再用其它任何东西了。”
  拥有计算机专业博士学位的洛克是德若特或者说是OpenBSD的死忠。他表示Lok Technology公司最初使用的是Linux系统,但4年前当他仔细检查了这套风头正劲的操作系统的源代码后,便决定转换到OpenBSD系统。“你猜我看到了什么?在Linux系统的心脏——系统内核程序里面我看到了开发人员的一行注解‘这行代码属于这里吗?’”洛克说,“这对我的信任是一种打击,那时我就知道是时候更换系统了。”
  早期的德若特更多是一个程序员的角色,并且沉醉于被他称为一种“美学”的代码编写过程之中。他和整个团队的工作都是在几乎没有任何管理的情况下完成的。但现在随着越来越多的人加入到OpenBSD工作,德若特不得不花费很多时间去和他们沟通、协调。沟通的工作让整个团队的进度都慢了下来。因为当新人希望为OpenBSD贡献他们的技能和时间时,需要一些时间帮助他们启动并加速。只有这样他们才能够很好的融入OpenBSD的开源社区。
  在团队内部,德若特以“慈善的独裁者”而出名:“只要是能够确保安全的,任何事情我都会去做,甚至是来自于我们源代码的进步。我们坚信软件的发展,而非革命;因此,在安全的前提下,变化的脚步却很缓慢,我们一点错误都不想犯。”
  这种思路正在得到更为广泛的认可,最近一次他与本刊记者通信时,正在意大利威尼斯和许多开发高手碰面,在那里几乎所有的时间他都在编写代码。
  这些高手们,丝毫不能理解为什么人们会花费5万美元去购买思科(Cisco Systems)或者Check Point的黑客防火墙,他们能够不花一分钱得到OpenBSD并且获得更好的安全保护。OpenBSD甚至守护着库尔德斯坦(Kurdistan)一条输气管线!
  现在还没有人能够从OpenBSD上面赚到钱,最好的情况也只是企业为他们自己节省了开销。 “使用的人没有去宣传,所以它才这样默默无闻,”德若特表示。他不知道或者说不在乎有多少人在使用OpenBSD,尽管它已经被下载了数百万次。“我唯一在乎的是编写高质量的代码。如果强迫我做循规蹈矩的工作,我会疯掉。”德若特甚至并不在乎是否存在一个OpenBSD的市场空间。他坚持认为自己只不过是一个专注于开源代码项目的领导者,而不是关心它是被如何使用的。
  其真正的痛苦在于同10几年前相比,他们仍然在一个硬件环境很封闭的世界里编写源代码。很多硬件厂商,从苹果、SUN、IBM、Nvidia、英特尔到戴尔,都在谈论支持和购买开源软件,但另一方面他们又拒绝提供相关文档。因此开源软件工程师很难为这些大公司的硬件产品编写源代码。但据德若特透露,有些时候这些大公司会私下将一些文档流出给像RedHat这样的Linux软件公司的开发程序员,还要签署NDA协议(Non-Disclosure Agreements)。这样就把许多有能力为某些硬件编写驱动程序的程序师限制在外,只有那个拥有文档的人才可以。
  对OpenBSD团队来说,当这些大型硬件厂商并不向他们提供说明文档的时候,编写支持这些硬件产品的代码是非常困难的。德若特认为他们受到了不公平待遇:当像Red hat这样比较强壮的Linux软件厂商继续允许他们的程序员私下从硬件厂商那里得到说明文档,这将会很大程度的限制了更大范围的开源代码社区中的程序员的工作。“我们越来越多的看到驱动程序中充满了魔术般的数字,这让我们无法对其调试或者改进。”德若特告诉本刊,“这的确是一个挑战。但即使那些较大规模的开源软件公司越来越多地采用私下交易方式,他们也无法阻止我们的成长。因为15年前我们本来就没有什么说明文档。”
  是的,态度强硬的德若特和这些大型硬件公司的关系并不够好。他根本不相信他们中的任何一个:“这样的公司并不是开源世界的朋友。不要被他们的花言巧语欺骗了。他们作出开放的姿态,像我们一样,但这却是一个大谎言。对他们来说开源软件只是一个值得利用的东西,但他们却不会帮助它成长。”OpenBSD和任何一家大公司都没有关系,在他们的研发机房里面有IBM的机器,但却不是IBM送给他们的。而据说IBM却特别告诉它旗下的RAID公司Mylex不要把他们产品的说明文档交给OpenBSD团队。
  事实上,OpenBSD仍是一套非常艰涩难用的操作系统,这并不便于让它更加流行。但德若特并不打算自己来解决这个问题。“我们会花费更多时间来保证它足够棒,而不是把时间用在让大众觉得它更美味可口上。”
编者注:BSD,是UNIX操作系统的一种,最为著名的是FreeBSD。
2005-12-17

OpenBSD编译内核 - []

曾经装过一次OpenBSD,由于种种原因,没有再继续使用,现在简单的把原来的笔记整理一下吧,这个笔记是以3.6为例,希望不算太过时,估计方法应该没变。

首先要下载安装所需的包
在官方发布的OpenBSD光盘上可以获取源代码,当然也可以从网上下载src.tar.gz、sys.tar.gz、ports.tar.gz文档
cp /home/jjp/src.tar.gz /usr/src/
tar zxvf src.tar.gz
cp /home/jjp/sys.tar.gz /usr/src/
tar zxvf sys.tar.gz
cp /home/jjp/ports.tar.gz /usr/
tar xzvf ports.tar.gz

可以cvsup到最新的文件,首先要安装cvsup。
pkg_add cvsup-16.1g-no_x11.tgz
装完以后需要自己手工生成配置文件,不象FreeBSD那样可以拷贝一个example。
cd /usr
mkdir cvsup
cd cvsup
编辑cvsup-supfile

mg cvsup-supfile
#注意需要用mg,不是vi什么的


CODE:[Copy to clipboard]#Defaults that apply to all the collections
*default release=cvs
*default delete use-rel-suffix
*default umask=002
*default host=cvsup.uk.openbsd.org
*default base=/usr
*default prefix=/usr/cvsup

#If your network link is T1 or faster, comment out the following line.
*default compress

OpenBSD-all
#OpenBSD-src
#OpenBSD-www
#OpenBSD-ports
#OpenBSD-x11
#OpenBSD-xf4
然后执行cvsup
cvsup -g -L 2 cvsup-supfile

OpenBSD的内核配置文件因为支持多平台,所以相应平台的配置
文件就存放在/usr/src/sys/arch/$ARCH/conf/里,这里的$ARCH就是你所用的平台名称。以i386为例介绍对内核有优化作用的选项。

cd /usr/src/sys/arch/i386/conf
cp GENERIC mine
vi mine

O 处理器及I/O部分有:
option I686_CPU
这个很简单,与FreeBSD一样
#option GPL_MATH_EMULATE
别把它打开除非你的机器老得连FPU都没有
option DUMMY_NOPS
把开机延迟关掉
option UVM
高级虚拟内存系统,在系统进行交换时提高速度所用
#option MFS
这个也与FreeBSD含义一样,用于建立内存盘以提升数据访问速度

O 网络部分有:
option NMBCLUSTERS="8192"
与FreeBSD含义一样,提升高流量时的网络操作速度并提高内核稳定性。如流量低可用1024或2048
另外,把不需要的网卡设备都注释掉,这样可以减小内核容量提升启动速度。

O 磁盘设备部分有:
option BUFCACHEPERCENT=45
保留45%的系统内存作为文件系统的缓存,顾名思义,根据实际系统内存数来取值,推荐取低一些的值
另外,与网络部分一样,把不需要的磁盘设备(scsi、ide)都注释掉。

配完了内核,依次打:
cd /usr/src/sys/arch/i386/conf ;
config mine
cd ../compile/mine ;
make depend && make
cp /bsd /bsd-old ; cp bsd /bsd
重启后就可以直接用刚才编译好的新内核了,如果它有任何问题,可以重启后在boot>;的提示符上输入刚才换名的旧内核,命令格式为:
boot>; boot device:/kernelold
把device换成你存放旧内核的盘设备即可。顺便提一下,你可以在上述命令后加上一个-c选项进入User Kernel Config界面,它提供与FreeBSD下一样的配置功能。

其他的内核选项可以参考:
http://www.openbsd.org/cgi-bin/man.cgi?query=options&sektion=4文档
Building the System from Source可参考:
http://www.openbsd.org/faq/faq5.html#Options

From CU ,原文作者:剑心通明  原文链接:http://bbs.chinaunix.net/viewthread.php?tid=592293&extra=page%3D2%26filter%3Ddigest
2005-12-16

chmod 命令 - []

指令名称 : chmod
使用权限 : 所有使用者

使用方式 : chmod [-cfvR] [--help] [--version] mode file...

说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。

把计 :

mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本

范例 :将档案 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt
chmod a+r file1.txt
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该档案拥有者可以执行 :

chmod u+x ex1.py
将目前目录下的所有档案与子目录皆设为任何人可读取 :

chmod -R a+r *
此外chmod也可以用数字来表示权限如 chmod 777 file 语法为

chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。

r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
范例:

chmod a=rwx file 和 chmod 777 file 效果相同
chmod ug=rwx,o=x file 和 chmod 771 file 效果相同
若用chmod 4755 filename可使此程式具有root的权限
指令名称 : chown 使用权限 : root 
范例 :

将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users file1.txt
将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
chmod -R lamport:users *
-rw------- (600) -- 只有属主有读写权限。

-rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其他用户只有读权限。

-rwx------ (700) -- 只有属主有读、写、执行权限。

-rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。

-rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。

-rw-rw-rw- (666) -- 所有用户都有文件读、写权限。这种做法不可取。

-rwxrwxrwx (777) -- 所有用户都有读、写、执行权限。更不可取的做法。

以下是对目录的两个普通设定:

drwx------ (700) - 只有属主可在目录中读、写。

drwxr-xr-x (755) - 所有用户可读该目录,但只有属主才能改变目录中的内容。

suid的代表数字是4,比如4755的结果是-rwsr-xr-x
sgid的代表数字是2,比如6755的结果是-rwsr-sr-x
sticky位代表数字是1,比如7755的结果是-rwsr-sr-t
当然7755这个chmod设置没多大意义

chmod xxxx
四位数是标准写法,在有些语言编程里比如php里0755和755的意义就可能不一样

For Korn/Bourne shells:

# export CVS_RSH=/usr/bin/rsh
For csh/tcsh:

# setenv CVS_RSH /usr/bin/rsh
#setenv CVSROOT=anoncvs@anoncvs.jp.openbsd.org:/cvs

下载最初的当前sys源码树:

# setenv CVSROOT anoncvs@anoncvs.jp.openbsd.org:/cvs
# cd /usr
# cvs -q get -P src

下载当前3.7版本的源码树:

# setenv CVSROOT anoncvs@anoncvs.jp.openbsd.org:/cvs
# cd /usr
# cvs -q get -rOPENBSD_3_7 -P src
在以后更新当前sys源码树:

# cd /usr/src
# cvs -q up -Pd

在以后更新3.7sys源码树:

# cd /usr/src
# cvs -q up -rOPENBSD_3_7 -Pd

如果更新一不同服务器或CD上的源码,必须加 -d $CVSROOT 选项

# cd /usr/src
# cvs -d $CVSROOT -q up -Pd
后面提示输入: yes
这里就等着下载源码吧.

编译内核

# cp /bsd /bsd.old 备份下先
# cd /usr/src/sys/conf/
# cp cp GENERIC Chole1
# vi  Chole1
# cd /usr/src/sys/arch/i386/conf
# cp GENERIC Chole
# vi  Chole          
# config Chole
# cd ../compile/Chole
# make clean && make depend && make      [...10分钟不到...]
# make install
#  reboot

2005-12-16

.cshrc for tcsh - []

# $OpenBSD: dot.cshrc,v 1.13 2005/02/13 00:56:13 krw Exp $
#
# csh initialization

umask 022
#alias mail Mail
set history=100
set path=(/sbin /usr/sbin /bin /usr/bin /usr/X11R6/bin /usr/local/sbin /usr/local/bin /usr/local/emul/redhat/usr/bin)
set filec
set SGML_CATALOG_FILES=/usr/local/share/sgml/catalog
set XML_CATALOG_FILES=/usr/local/share/xml/catalog
setenv LANG     zh_CN.GB2312
setenv LC_ALL   zh_CN.GB2312
setenv LC_CTYPE zh_CN.GB2312
setenv BLOCKSIZE 1k
#setenv LSCOLORS ExFxCxDxBxEgDxDEhGAcHd
setenv SITE ftp://OpenBSD:OpenBSD@ftp.cnfug.org/OpenBSD/snapshots/packages/i386
#setenv SITE ftp://ftp.iij.ad.jp/pub/OpenBSD/3.7/packages/i386

alias   ls      gls --color --show
alias   df      df -h
alias   du      du -h
alias cd 'set old="$cwd"; chdir \!*'
alias h history 25
alias j jobs -l
alias   la ls -a
alias ll ls -lA
alias l ls -alF
alias back 'set back="$old"; set old="$cwd"; cd "$back"; unset back; dirs'
alias   jj      openjade -E O -t sgml -V nochunks -d /usr/local/share/sgml/docbook/dsssl/modular/html/docbook.dsl

alias z suspend
alias x exit
alias pd pushd
alias pd2 pushd +2
alias pd3 pushd +3
alias pd4 pushd +4

if ($?prompt) then
# set prompt="`hostname -s`# "
 set prompt="%{\e[0;35m%}[%t]%{\e[0;36m%}[%~]%{\e[0;32m%}>>> "
 set filec
 set nobeep
 set autolist
 set rmstar
 set history=100
 set savehist=100
 if ( $?tcsh ) then
  bindkey "'W'" backward-delete-word
  bindkey -k up history-search-backward
  bindkey -k down history-search-forward
endif

2005-12-14

OpenBSD安装步骤 - []

OpenBSD的安装步骤,摘录于网络。

安装前的准备

一、 下载所需要的文件:floppy33.fs, 这可从一般的OpenBSD FTP站点上下载!

国内的OpenBSD很少, 我一个都没找到! 在安装时从国外的站点上下载文件很慢, 我上次晚上安装时到了那里就不管理它了, 到第二天早上才去继续安装!
下面说说启动盘的镜像文件:floppy33.fs, floppyB33.fs, floppyC33.fs

floppy33.fs 桌面PC版本, 它支持一般的PCI, ISA NICs, IDE, SCSI接口, 还有一些PCMCIA接口。
floppyB33.fs 服务器版本, 支持很多的RAID, 和一些SCSI。但一些基本的SCSI, ISA NICs, EISA都删除了!
floppyC33.fs 笔记本电脑版本, 支持Cardbus, PCMCIA.
我想, 一般都是桌面PC, 我自己的就是, 下载floppy33.fs.
下面是安装所需要的一些基本文件, 我把它下载下来放到内部网的FTP上了, 这样安装起来快一些:

bsd, bsd.rd, base33.tgz, etc33.tgz, comp33.tgz, man33.tgz, misc33.tgz, game33.tgz, xbase33.tgz,xfont33.tgz, xserv33.tgz, xshare33.tgz.
我还下载了ports.tar.gz, src.tar.gz, sys.tar.gz, 系统安装后这些ports tree, 内核源码都没安装, 要自己手动安装的。

二、制作启动盘

现在我们已下载了软盘镜像, 开始制作启动盘
1. Unix 下:
我是在slackware上制作的, 我在windows 下用rawrite2.exe没作成功!

# fdformat /dev/fd0
# dd if=floppy33.fs of=/dev/fd0 bs=32k
2. windows下(请参考OpenBSD主站上的安装指南)
主要工具都放在FTP站点上的TOOLS目录里, 主要有: rawrite, fdimage, ntrw, rawrite不能在windows NT, windows 2000 or XP下使用!
相关操作可自己找资料, 都很简单, 在DOS下操作!

现在我们要收集自己计算机上的信息:什么平台, 硬盘上的资料要不要备份?, 网卡信息(IP,subnet masks, gateway, DNS) 一些isa卡可以安装时以dmesg查看!

已下载了安装所需要的文件!现在我们进行的是FTP安装, 我将下载的文件放在FTP上, 目录是openbsd/OpenBSD下!这样安装快很多!

安装过程

用软盘启动系统!我们会看到蓝色背景的字!这里是OpenBSD的开机信息!然后我们会看到下面的这个:

erase ^?, werase ^W, kill ^U, intr ^C, status ^T
(I)nstall, (U)pgrade or (S)hell? I
选择I, 安装新系统, 如果是从原来的系统上升级则选择U, 或者你可以选择S, 在SHELL下操作, 其实当你在安装过程序中自己有某些设置错误Ctrl + c中止后, 也是回到这个SHEEL下操作的!在SHEEL下执行install就是安装系统。

Welcome to the OpenBSD/i386 3.3 install program.

This program will help you install OpenBSD in a simple and rational way. At
any prompt except password prompts you can run a shell command by typing
'!foo', or escape to a shell by typing '!'. Default answers are shown in []'s
and are selected by pressing RETURN. At any time you can exit this program by
pressing Control-C and then RETURN, but quitting during an install can leave
your system in an inconsistent state.

Specify terminal type: [vt220] Enter
Do you wish to select a keyboard encoding table? [n] y

选择键盘类型, 一些都是US。

IS YOUR DATA BACKED UP? As with anything that modifies disk contents, this
program can cause SIGNIFICANT data loss.

It is often helpful to have the installation notes handy. For complex disk
configurations, relevant disk hardware manuals and a calculator are useful.

Proceed with install? [n] y

下面我们继续安装:

Cool! Let's get to it...

You will now initialize the disk(s) that OpenBSD will use. To enable all
available security features you should configure the disk(s) to allow the
creation of separate filesystems for /, /tmp, /var, /usr, and /home.

选择从哪个硬盘上安装, 我的系统只挂了一个小硬盘, 所以只一个!

Available disks are: wd0.
Which one is the root disk? (or done) [wd0] Enter

是否整个硬盘都安装OpenBSD, 是.

Do you want to use *all* of wd0 for OpenBSD? [no] yes

Treating sectors 63-6303024 as the OpenBSD portion of the disk.
You can use the 'b' command to change this.

Initial label editor (enter '?' for help at any prompt)
> ?

现在我们来进行硬盘分区, 这里打入?寻求帮助!

Available commands:
p [unit] - print label.
M - show entire OpenBSD man page for disklabel.
e - edit drive parameters.
a [part] - add new partition.
b - set OpenBSD disk boundaries.
c [part] - change partition size.
d [part] - delete partition.
D - set label to default.
g [d|b] - Use [d]isk or [b]ios geometry.
m [part] - modify existing partition.
n [part] - set the mount point for a partition.
r - recalculate free space.
u - undo last change.
s [path] - save label to file.
w - write label to disk.
q - quit and save changes.
x - exit without saving changes.
X - toggle expert mode.
z - zero out partition table.
? [cmnd] - this message or command specific help.
Numeric parameters may use suffixes to indicate units:
'b' for bytes, 'c' for cylinders, 'k' for kilobytes, 'm' for megabytes,
'g' for gigabytes or no suffix for sectors (usually 512 bytes).
Non-sector units will be rounded to the nearest cylinder.
Entering '?' at most prompts will give you (simple) context sensitive help.
>
我分了五个区, a 根分区 200M, b 交换分区 300M , d 100M /tmp, e 100M /var , f 最后的全给 /usr,

使用 d删除分区,a 创建分区,p 查看分区情况,q 退出!
d a 删除a分区
a a 创建a分区
p g 查看分区, 大小以G显示
p m 查看分区, 大小以M显示
下面我们挂载分区:


The root filesystem will be mounted on wd0a.
wd0b will be used for swap space.
Mount point for wd0d (size=122976k), none or done? [/tmp] Enter
Mount point for wd0e (size=82152k), none or done? [/var] Enter
Mount point for wd0g (size=2097144k), none or done? [/usr] Enter
Mount point for wd0h (size=4194288k), none or done? [/home] Enter
Mount point for wd0d (size=122976k), none or done? [/tmp] done
Done - no available disks found.

You have configured the following partitions and mount points:

wd0a /
wd0d /tmp
wd0e /var
wd0g /usr
wd0h /home

格式化分区:

The next step creates a filesystem on each partition, ERASING existing data.
Are you really sure that you're ready to proceed? [n] y
/dev/rwd0a: 307440 sectors in 305 cylinders of 16 tracks, 63 sectors
200MB in 20 cyl groups (16 c/g, 7.88MB/g, 1920 i/g)
/dev/rwd0b: 245952 sectors in 244 cylinders of 16 tracks, 63 sectors
300MB in 16 cyl groups (16 c/g, 7.88MB/g, 1920 i/g)
/dev/rwd0d: 164304 sectors in 163 cylinders of 16 tracks, 63 sectors
100MB in 11 cyl groups (16 c/g, 7.88MB/g, 1920 i/g)
/dev/rwd0e: 4194288 sectors in 4161 cylinders of 16 tracks, 63 sectors
100MB in 261 cyl groups (16 c/g, 7.88MB/g, 1920 i/g)
/dev/rwd0f: 8388576 sectors in 8322 cylinders of 16 tracks, 63 sectors
2300MB in 521 cyl groups (16 c/g, 7.88MB/g, 1920 i/g)
/dev/wd0a on /mnt type ffs (rw, asynchronous, local, ctime=Thu Oct 10 21:
50:36 2 002)
/dev/wd0h on /mnt/home type ffs (rw, asynchronous, local, nodev, nosuid,
ctime=Thu Oct 10 21:50:36 2002)
/dev/wd0d on /mnt/tmp type ffs (rw, asynchronous, local, nodev, nosuid,
ctime=Thu Oct 10 21:50:36 2002)
/dev/wd0g on /mnt/usr type ffs (rw, asynchronous, local, nodev, ctime=Th
u Oct 10 21:50:36 2002)
/dev/wd0e on /mnt/var type ffs (rw, asynchronous, local, nodev, nosuid,
ctime=Th u Oct 10 21:50:36 2002)
配置主机名
Enter system hostname (short form, e.g. 'foo'): OpenBSD
配置网络:
Configure the network? [y] Enter
Available interfaces are: ne3.
Which one do you wish to initialize? (or 'done') [ne3] Enter
Symbolic (host) name for fxp0? [puffy] Enter
The default media for fxp0 is
media: Ethernet autoselect (100baseTX full-duplex)
Do you want to change the default media? [n] Enter
IP address for fxp0? (or 'dhcp') 202.116.92.235
Netmask? [255.255.255.0] 255.255.254.0
Done - no available interfaces found.
DNS domain name? (e.g. 'bar.com') [my.domain] OpenBSD.localhost
DNS nameserver? (IP address or 'none') [none] 202.116.64.1
Use the nameserver now? [y] Enter
Default route? (IP address, 'dhcp' or 'none') 202.116.92.1
add net default: gateway 202.116.92.1
Edit hosts with ed? [n] Enter
Do you want to do any manual network configuration? [n] Enter
设置root密码, 不会显示出来的!
Password for root account? (will not echo)
Password for root account? (again)
现在我们选择安装方式, 我是FTP安装!硬盘安装就设置相应的东西就行了!
You will now specify the location and names of the install sets you want to
load. You will be able to repeat this step until all of your sets have been
successfully loaded. If you are not sure what sets to install, refer to the
installation notes for details on the contents of each.

Sets can be located on a (m)ounted filesystem; a (c)drom, (d)isk or (t)ape
device; or a (f)tp, (n)fs or (h)ttp server.
Where are the install sets? f

下面我们设置FTP服务器的地址! 是否要设置代理? FTP, HTTP安装都一样, 如果需要设置一下!
HTTP/FTP proxy URL? ( e.g. ‘http://proxy.8080’, or ‘none’ ) [ none ] Entry
查看FTP列表:
Do you want to see a list of potential ftp servers? [ y ] n
设置FTP的地址
Server IP address, or hostname ? 我的FTP地址
Does the server support passive mode ftp? [ y ]
设置放置安装文件的目录, 根据自己的设置写目录
Server directory? [ pub/OpenBSD/3.3/i386 ] openbsd/OpenBSD
是否匿名登陆, 不是, 则输入用户名, 密码!
Login? [ anonymous ] usernme
Password? [ will no echo ] password
下面是选择要安装的软件包:我试过, 如果你的FTP上有几个包它会显示几个包, 但有几个包是一定要的:bsd, base33.tgz, etc33.tgz, comp33.tgz, man33.tgz. 打入all将选择全部安装:
The following sets are available. Enter a filename, 'all' to select
all the sets, or 'done'. You may de-select a set by prepending a '-'
to its name.

[X] bsd
[ ] bsd.rd
[X] base33.tgz
[X] etc33.tgz
[X] misc33.tgz
[X] comp33.tgz
[X] man33.tgz
[X] game33.tgz
[ ] xbase33.tgz
[ ] xshare33.tgz
[ ] xfont33.tgz
[ ] xserv33.tgz

File Name? (or 'done') [bsd.rd] all

The following sets are available. Enter a filename, 'all' to select
all the sets, or 'done'. You may de-select a set by prepending a '-'
to its name.

[X] bsd
[X] bsd.rd
[X] base33.tgz
[X] etc33.tgz
[X] misc33.tgz
[X] comp33.tgz
[X] man33.tgz
[X] game33.tgz
[X] xbase33.tgz
[X] xshare33.tgz
[X] xfont33.tgz
[X] xserv33.tgz
File Name? (or 'done') [done] doen

选择好包后, 开始下载安装:
Ready to install sets? [y] Enter

Getting bsd ...
100% |**************************************************| 4472 KB 00:03
Getting bsd.rd ...
100% |**************************************************| 4190 KB 00:02
Getting base33.tgz ...
100% |**************************************************| 30255 KB 00:21
Getting etc33.tgz ...
100% |**************************************************| 1469 KB 00:01
Getting misc33.tgz ...
100% |**************************************************| 1828 KB 00:01
Getting comp33.tgz ...
100% |**************************************************| 16207 KB 00:13
Getting man33.tgz ...
100% |**************************************************| 5921 KB 00:04
Getting game33.tgz ...
100% |**************************************************| 2545 KB 00:01
Getting xbase33.tgz ...
100% |**************************************************| 9073 KB 00:06
Getting xshare33.tgz ...
100% |**************************************************| 1574 KB 00:02
Getting xfont33.tgz ...
100% |**************************************************| 30666 KB 00:21
Getting xserv33.tgz ...
100% |**************************************************| 14948 KB 00:11

Sets can be located on a (m)ounted filesystem; a (c)drom, (d)isk or (t)ape
device; or a (f)tp, (n)fs or (h)ttp server.
Where are the install sets? (or 'done')done

现在基本包安装完成!设置一下时区, 还有你以后要不要运行X:
Extract more sets? [n] Enter
Do you expect to run the X Window System? [y] y
Saving configuration files......done.
Generating initial host.random file ......done.
What timezone are you in? ('?' for list) [US/Pacific] ? 寻求帮助!
Africa/ Chile/ GB-Eire Israel NZ-CHAT Turkey
America/ Cuba GMT Jamaica Navajo UCT
Antarctica/ EET GMT+0 Japan PRC US/
Arctic/ EST GMT-0 Kwajalein PST8PDT UTC
Asia/ EST5EDT GMT0 Libya Pacific/ Universal
Atlantic/ Egypt Greenwich MET Poland W-SU
Australia/ Eire HST MST Portugal WET
Brazil/ Etc/ Hongkong MST7MDT ROC Zulu
CET Europe/ Iceland Mexico/ ROK posix/
CST6CDT Factory Indian/ Mideast/ Singapore posixrules
Canada/ GB Iran NZ SystemV/ right/
What timezone are you in? ('?' for list) [US/Pacific] Asia

然后输入:Shanghai,

Making all device nodes...done.
Installing boot block...
boot: /mnt/boot
proto: /usr/mdec/biosboot
device: /dev/rwd0c
/usr/mdec/biosboot: entry point 0
proto bootblock size 512
room for 12 filesystem blocks at 0x16f
Will load 7 blocks of size 8192 each.
Using disk geometry of 63 sectors and 240 heads.
0: 9 @(203 150 55) (3078864-3078872)
1: 63 @(203 151 1) (3078873-3078935)
2: 24 @(203 152 1) (3078936-3078959)
3: 16 @(203 8 47) (3069910-3069925)
/mnt/boot: 4 entries total
using MBR partition 1: type 166 (0xa6) offset 3069360 (0x2ed5b0)
...done.

CONGRATULATIONS! Your OpenBSD install has been successfully completed!
To boot the new system, enter halt at the command prompt. Once the
system has halted, reset the machine and boot from the disk.
# reboot

现在重启, 系统已安装完成!

安装后配置

我们安装了基本的系统,但只有最基本的东西, 像内核源代码, ports tree都没安装!

在安装时我们安装了X, 现在我们配置X-windows, 运行xf86cfg设置!OpenBSD的默认桌面是fvwm。

现在我们给系统添加新用户adduser, 在第一次使用时会有一些基本的设置, 如密码使用什么加密, 有好几种, 我选择了最常用的md5。

首先, 我们开始安装内核源代码, 为以后编译内核作准备!
如果你有CD,则只需要从CD中取出src.tar.gz,cd /usr/src 然后tar xvzf src.tar.gz, 上篇, 我们是从FTP安装的, 因此, 我们要下载两个包:src.tar.gz, sys.tar.gz.

ftp://ftp.ca.openbsd.org/pub/OpenBS...i386/src.tar.gz
ftp://ftp.ca.openbsd.org/pub/OpenBS...i386/sys.tar.gz
安装ports tree, 下载ports.tar.gz, 然后copy /usr/ , tar xzvf ports.tar.gz .

ftp://ftp.ca.openbsd.org/pub/OpenBS...86/ports.tar.gz
安装cvsup,
下载cvsup-16.1f.tar.gz, 如果没安装X则下载 cvsup-16.1f-no_X.tar.gz

#ftp://ftp.ca.openbsd.org/pub/OpenBS...p-16.1f..tar.gz
#pkg_add cvsup-16.1f.tar.gz
编辑cvsup-supfile, OpenBSD里的编辑器是mg, 类似于emacs。

#Defaults that apply to all the collections
*default release=cvs
*default delete use-rel-suffix
*default umask=002
*default host=cvsup.uk.openbsd.org
*default base=/cvsup
*default prefix=/cvsup

#If your network link is T1 or faster, comment out the following line.
*default compress


OpenBSD-all
#OpenBSD-src
#OpenBSD-www
#OpenBSD-ports
#OpenBSD-x11
#OpenBSD-xf4
保存,
# mg cvsup-supfile
# cd /
# mkdir cvsup
# cd
# cvusp –g –L 2 cvsup-supfile
就可升级ports tree等了!
安装软件同FreeBSD下一样, 以后再说说编译内核吧!

主要cvsup站点:

cvsup.uk.openbsd.org]
cvsup.de.openbsd.org
cvsup2.de.openbsd.org
cvsup.hu.openbsd.org
cvsup.fr.openbsd.org
cvsup.ca.openbsd.org
cvsup.usa.openbsd.org
cvsup.kr.openbsd.org
cvsup.no.openbsd.org
cvsup.pt.openbsd.org
anoncvs.de.openbsd.org
rt.fm
skeleton.phys.spbu.ru
cvsup.jp.OpenBSD.org
mirror.osn.de
openbsd.informatik.uni-erlangen.de
OpenBSD-src - The src repository
OpenBSD-ports - The ports repository
OpenBSD-www - The www repository
OpenBSD-x11 - The XFree86-3 repository
OpenBSD-xf4 - The XFree86-4 repository
OpenBSD-all - All OpenBSD repositories

网络配置

因为与FreeBSD等配置有点出入, 所以我在这里指出来!
我自己是使用局域网, 所以只介绍这个方面的, 如果有人使用的是PPP方式, 可自行查看官方站点上的FAQ。
可能很多使用OpenBSD的人是从FreeBSD下转过来的, 但OpenBSD的网络设置与FreeBSD有所不同, 它的网络配置没有写进rc.conf, 而是作为单独的文件存放的。
网卡IP存放在/etc/hostname.网卡型号名, 网关存放在/etc/mygate
主机名存放在/etc/myname, 名字服务器地址没变, 存放在/etc/resolv.conf
我们使用ifconfig –a 查看网卡型号:(这个是我已配置好的)

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33224
inet 127.0.0.1 netmask 0xff000000
lo1: flags=8008<LOOPBACK,MULTICAST> mtu 33224
ne0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: 00:e0:4c:e0:45:0c
media: Ethernet autoselect (10baseT)
inet ***.***.***.*** netmask 0xfffffe00 broadcast ***.***.***.***
pflog0: flags=0<> mtu 33224
pfsync0: flags=0<> mtu 2020
我的网卡是ne0, 但不知怎么的, 系统安装好后, 在/etc/中建立的文件却是hostname.ne3, 我只好自己手动改成 hostname.ne0,
关于这个hostname.*文件的格式:

inet 192.168.0.1 netmask 255.255.255.0 NONE
inet 指定ip地址, netmask指定网络掩码。
当然你也可以指定详细的网卡说明:
inet 10.0.0.38 255.255.255.0 NONE media 100baseTX mediaopt full-duplex
现在指定网关, 修改/etc/mygate, 写入网关IP就行了。
主机名, 写入/etc/myname.
/etc/resolv.conf, 与别的系统一样的, 这个就不用说了!

    2003 年 7 月, OpenBSD 的防火墙, 也就是常说的 PF 被成功地移植到了 FreeBSD 上, 并可以通过 FreeBSD Ports Collection 来安装了; 第一个将 PF 集成到基本系统中的版本是 2004 年 11 月发行的 FreeBSD 5.3。 PF 是一个完整的提供了大量功能的防火墙软件, 并提供了可选的 ALTQ (交错队列, Alternate Queuing) 功能。 ALTQ 提供了服务品质 (QoS) 带宽整形功能, 这个功能能够以基于过滤规则的方式来保障不同服务的带宽。 OpenBSD Project 在维护 PF 用户指南方面已经做了非常卓越的工作,因此我们不打算在这本使用手册中进行更进一步的阐述, 以避免不必要的重复劳动。

PF 在各种 FreeBSD 发行版上的可用情况如下所示:

FreeBSD 版本PF 可用情况
4.X 之前的版本PF 在 FreeBSD 4.X 之前的版本分支上不可用。
所有 4.X 版本分支上的版本PF 作为 KAME 的一部分提供。
5.X 在 5.3-RELEASE 之前的版本security/pf port 可以用来在这些 FreeBSD 版本上安装 PF。这些版本主要是供开发人员, 以及预览早期的 5.X 版本上使用的。 强烈建议升级到 5.3-RELEASE 或更新的 FreeBSD 版本。
5.3-RELEASE 以及之后的版本PF 已经成为了基本系统的一部分。 请 不要 尝试使用 security/pf port 在这些 FreeBSD 版本上安装它,因为这样做是没有作用的。 请使用基本系统中的 pf(4) 支持。

更多的详细信息, 可以在 FreeBSD 版本的 PF 网站上找到: http://pf4freebsd.love2party.net/

OpenBSD PF 用户指南可以在这里找到:http://www.openbsd.org/faq/pf/

警告: 在 FreeBSD 5.X 上的 PF 相当于 OpenBSD 3.5 版本。 以 port 形式出现在 FreeBSD Ports Collection 的版本相当于 OpenBSD 的 3.4 版。 在阅读用户指南时,请注意这样的区别。

24.4.1 启用 PF

PF 作为 FreeBSD 5.3 和更高版本基本系统安装的一部分, 作为一个可以动态加载的模块出现。如果在 rc.conf 中配置了 pf_enable="YES" 则系统会自动加载对应的内核模块。 可加载内核模块在构建时启用了 pflog(4)

注意: 这个模块假定 options INETdevice bpf 是存在的。 除非编译时指定了 NOINET6 (例如在 make.conf(5) 中) 则还需要 options INET6

24.4.2 内核选项

将下面这些选项加入到 FreeBSD 内核的编译配置文件中并不是启用 PF 的强制性要求。这里列出它们主要是为了介绍一些背景信息。 将 PF 编译到内核中之后,就不再需要使用可加载内核模块了。

如何在内核编译配置中加入对于 PF 选项的例子可以在内核源代码中的 /usr/src/sys/conf/NOTES 这个文件中找到。 这里列举如下:

device pf
device pflog
device pfsync

device pf 用于启用 “Packet Filter” 防火墙的支持。

device pflog 启用可选的 pflog(4) 伪网络设备,用以通过 bpf(4) 描述符来记录流量。 pflogd(8) 服务可以用来存储信息, 并把它们以日志形式记录到磁盘上。

device pfsync 启用可选的 pfsync(4) 伪网络设备,用以监视 “状态变更”。 由于这不是那个可加载内核模块的一部分, 因此如果需要使用它,就必须自行编译定制的内核了。

这些设置只有在您使用它们构建和安装新内核之后才会生效。

24.4.3 可用的 rc.conf 选项

您需要在 /etc/rc.conf 中添加如下配置, 以便在启动时激活 PF:

pf_enable="YES"                 # 启用 PF (如果需要的话, 自动加载内核模块)
pf_rules="/etc/pf.conf"         # pf 使用的规则定义文件
pf_flags=""                     # 启动时传递给 pfctl 的其他选项
pflog_enable="YES"              # 启动 pflogd(8)
pflog_logfile="/var/log/pflog"  # pflogd 用于记录日志的文件名
pflog_flags=""                  # 启动时传递给 pflogd 的其他选项

如果您的防火墙后面有一个 LAN, 而且需要通过它来转发 LAN 上的包, 或进行 NAT,还必须同时启用下述选项:

gateway_enable="YES"            # 启用作为 LAN 网关的功能

24.4.4 启用 ALTQ

ALTQ 只有在作为编译选项加入到 FreeBSD 内核时,才能使用。 ALTQ 目前还不是所有的可用网卡驱动都能够支持的。 请参见 altq(4) 联机手册了解您正使用的 FreeBSD 版本中的驱动支持情况。 下面这些选项将启用 ALTQ 以及一些附加的功能。

options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Required for SMP build

options ALTQ 将启用 ALTQ 框架的支持。

options ALTQ_CBQ 用于启用基于分类的队列 (CBQ) 支持。 CBQ 允许您将连接分成不同的类别, 或者说, 队列, 以便在规则中为它们指定不同的优先级。

options ALTQ_RED 将启用随机预检测 (RED)。 RED 是一种用于防止网络拥塞的技术。 RED 度量队列的长度,并将其与队列的最大和最小长度阈值进行比较。 如果队列过长, 则新的包将被丢弃。 如名所示, RED 从不同的连接中随机地丢弃数据包。

options ALTQ_RIO 将启用出入的随机预检测。

options ALTQ_HFSC 启用层次式公平服务平滑包调度器。 要了解关于 HFSC 进一步的信息, 请参见 http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html

options ALTQ_PRIQ 启用优先队列 (PRIQ)。 PRIQ 首先允许高优先级队列中的包通过。

options ALTQ_NOPCC 启用 ALTQSMP 支持。 如果是 SMP 系统, 则必须使用它。

共1页 1