[索引]
[第八章 - 常见问题]
[第十章 - 系统管理]
9 - 转到OpenBSD
目录
Linux用户可以参看 http://sites.inka.de/mips/unix/bsdlinux.html 以获得更多的信息
9.1 - 对其它类Unix操作系统用户的提示
因为OpenBSD是非常传统的类Unix操作系统, 所以对使用过其它类Unix系统的用户来说将显得很亲切, 但是它们之间存在着明显的不同。对OpenBSD的新用户来说必须看他的经验: 如果您的Unix知识仅限于使用过不同版本的Linux系统, 您可能会感觉OpenBSD有点"陌生", 放心, 对先接触OpenBSD的用户来说Linux对他们也同样很陌生, 您必须承认"标准"和您的经验是有差异的。
如果您学习Unix初期阅读了一些Unix的优秀书籍, 理解了"Unix哲学"并且在某个特定平台上扩展了您的知识, 您会发现OpenBSD是非常纯正和熟悉的Unix系统。如果您是用一种"说一套做另一套"的过程学习的Unix, 或者只读了类似"31.4小时精通PinkBeenie v8.3"后就认为自己已经掌握了Unix, 您很可能觉得OpenBSD与想象的不一样。
OpenBSD与其它很多操作系统的一点不同就是它的帮助文档, OpenBSD的开发者为系统的用户手册而自豪, OpenBSD中最权威的文档不是这篇FAQ, 也不是第三方独立的维护文档或者什么"HOW TO"之类的文档——用户手册才是OpenBSD问当中最具权威性的文档。当系统发生任何变化时开发者都会立刻更新用户手册、公布源代码, 这个更新过程没有任何拖延, 顺延或需要等什么人编译后。组合成系统的每个程序、工具、驱动、配置文件等几乎全有自己的用户手册, 它们使用户可以在手册上找到问题的答案而非在邮件列表上寻求帮助。
这里列出了OpenBSD与其它类Unix系统的一些常见区别:
- OpenBSD是一款非常纯正的"BSD风格"的Unix系统, 它是4.4BSD版本的一个分支, 而Linux和SCO Unix则是属于"System V"风格的系统。一些类Unix操作系统(包含一些Linnx发行版)混合了许多"System V"和BSD的特性, 一个通常容易引起混乱的就是启动脚本, OpenBSD是采用传统BSD4.4风格的rc(8)。
- OpenBSD是一个完整的系统, 系统各组件必须保持同步。它不是一个各部分可单独升级的"内核加上工具"的系统。如果您的组件(内核、用户工具、应用程序)不同步会导致系统错误。
- 因为很多应用并没有被编译和运行在基本系统内, 所以OpenBSD有一个ports树系统使用户可以方便的获取代码、经过OpenBSD的修正、安装依赖包、进行编译、并用一个标准的易维护的方式进行安装或卸载。OpenBSD的port团队提供并鼓励用户使用预编译的packages而非由用户自己进行ports的编译。
- OpenBSD使用CVS纪录源代码的变化。OpenBSD首创了匿名CVS, 它允许任何人在任何时间提取任何版本(从2.0版到当前, 以及它们之间个版本的所有文件)的完整源代码, 您甚至可以获得在数小时前更新的代码, 同样您也可以简单方便地使用web interface to
CVS。
- OpenBSD预定每6个月通过CD及FTP发布官方的新版本, 各平台的快照版根据当前发展代码不定期发布。我们的目标是在任何时间源代码都可以在系统上正确编译和正常使用。源代码树偶尔会出现一些错误, 但是这些错误会被迅速更正而不会继续保留在那里。
- OpenBSD包含了一些强劲的加密算法, 这些算法在一些国家不能包含在操作系统内(译者注:比如在美国规定含有这些加密算法的操作系统不允许出口到一些国家)。
- OpenBSD经历了严苛和持续的安全审核以确保代码的质量(因此, 安全) 。
- OpenBSD的内核是 /bsd.
- 硬盘命名通常采用
/dev/wd (IDE硬盘) 或 /dev/sd (SCSI或模拟scsi的硬盘).
- Linux 下无参数的 /sbin/route 会给出所有可用的路由状况, 但在OpenBSD下您需要使用 "show" 参数, 或者使用 netstat -r 。
- OpenBSD不支持像
ReiserFS、IBM的JFS、或者SGI的XFS那样的日志文件系统, 相反我们使用非常强劲的Unix快速文件系统(FFS)的Soft Updates功能来确保系统的性能和稳定。
- OpenBSD自己拥有包过滤系统(PF), 而非使用第三方的ipfw, ipchains, netfilter, iptables, 或者ipf, 这意味着网络地址转换(大家知道Linux中需要使用IP-Masquerading)、排队及过滤可以由OpenBSD自己的pfctl(8)、pf(4)以及pf.conf(5)来实现, 更多配制信息介绍请参看PF用户指南。
- 网络接口地址储存在文件
/etc/hostname.<interfacename>
(例如, /etc/hostname.dc0 是一个使用
dc(4)
驱动的网卡)中.
它也可以包含一个域名 (通过
/etc/hosts 指定)
以替代一个IP地址。
- 机器名包含在文件
/etc/myname 中。
- 默认网关在文件
/etc/mygate 中。
- OpenBSD的默认使用的shell是
/bin/ksh,
也就是pdksh, the
Public Domain Korn shell.
其它可使用的shell还包含csh和sh.
Shells诸如bash和tcsh可以通过packages或ports安装。如果您熟悉bash, 我们鼓励在安装bash前使用
ksh(1)——多数人喜欢使用bash。
- 密码管理有别于其它的类Unix系统。密码实际储存在master.passwd(5)文件中, 仅有root可以读取。它只能通过vipw程序来修改。
- 设备不是通过类型而是以驱动来命名。例如:没有eth*设备, 而是以ne0命名NE2000以太网卡, 以xl0命名3Com Etherlink XL或者Fast Etherlink XL Ethernet等。所有这些设备的命名可以在用户手册的第四章找到, 所以如果要找3c905的驱动, 您可以运行"man
4 xl"。
- OpenBSD/i386, amd64还有一些其它平台有"两层"分区, 第一层分区使用fdisk, 大多数使用IBM兼容机的用户熟悉这个BIOS可见分区。第二层分区使用disklabel, 这是传统BSD分区。OpenBSD在一块硬盘上可以使用15个disklabel分区, 这使OpenBSD可以与其它的操作系统共存于一块硬盘, 这也包括其他类Unix系统, OpenBSD必须使用四个主分区中的一个。
- 其它的操作系统鼓励用户修改系统内核, 而我们鼓励用户使用经过严格测试提供的标准系统内核GENERIC, 用户"定制"或"优化"系统往往可能破坏系统的稳定性, 我们也不对这种做法提供技术上的支持。
- OpenBSD项目十分重视应用程序的使用许可和安全性, 因为这个原因一些软件的新版本不能整合在系统内。我们永远不会因为考虑更高版本的软件而放弃安全和自由使用的原则。
9.2 - Linux和OpenBSD双启动
没错! 完全可能!
请参看 INSTALL.linux.
9.3 - 将您的Linux(或者其它第六版样式)密码文件转换成BSD格式
首先, 必须确认您的Linux密码是否是经过shadow, 如果是, 您需要安装packages or ports里的John the Ripper, 用它的自带的unshadow工具将您的密码和shadow文件组合成一个
Sixth Edition-style文件。
使用您的Linux密码文件, 我们这里暂且称之为linux_passwd, 您需要用
awk(1) 在field 4于7之间加入 ::0:0 。
# cat linux_passwd | awk -F : '{printf("%s:%s:%s:%s::0:0:%s:%s:%s\n", \
> $1, $2, $3, $4, $5, $6, $7); }' > new_passwd
这里您需要编辑您的新密码文件, 删除已经在OpenBSD密码文件中提供了的或和OpenBSD系统有冲突的root或其他系统选项(所有的), 并确保这个linux密码文件中的username和user IDs不会与OpenBSD的系统的 /etc/passwd文件有重复, 最好的方式是新建一个/etc/passwd文件:
# cat new_passwd >> /etc/master.passwd
# pwd_mkdb -p /etc/master.passwd
最后是需要用 pwd_mkdb 重新建立
/etc/spwd.db 和 /etc/pwd.db 文件。它还产生一个第六版样式的密码文件(减去加密的密码)/etc/passwd供程序使用。OpenBSD使用强壮的blowfish方式进行加密, 它不同于任何使用第六版样式加密的系统。任何用户只需键入'passwd'就可以用这种加密方式更改密码, 您输入的新密码将采用默认方式加密(除非您修改了 /etc/login.conf 文件, 否则, 一般是用blowfish算法)。还有, 作为root, 您也可以用运行passwd username 。
9.4 - 在OpenBSD中运行Linux程序包
如果在编译内核时开启了
COMPAT_LINUX 选项, 并且运行时设置了
sysctl kern.emul.linux
您就可以运行Linux二进制软件包。如果您使用一个标准内核(您应该使用它)COMPAT_LINUX 选项默认就是开启的, 您只需:
# sysctl kern.emul.linux=1
如果想每次系统启动后自动开启这个选项您需要去掉/etc/sysctl.conf文件中的下行前面的 "#" (注释符):
# kern.emul.linux=1 # enable running Linux binarie
修改后像这样
kern.emul.linux=1 # enable running Linux binarie
重新启动系统后就可以生效了
如果您需要运行非静态链接的Linux程序包(大多数), 您需要参考用户手册中有关
compat_linux(8) 的说明。
安装所需Linux libraries的最简单的办法就是从FTP上获得并安装fedora/base package。想了解更多packages和ports的知识清参阅FAQ 15 - OpenBSD的packages和ports系统, 安装如上所述的软件包您需要运行:
# export PKG_PATH=ftp://your.ftp.mirror/pub/OpenBSD/4.5/packages/i386/
# pkg_add -i fedora_base
注意:pkg_add(1)在安装软件时会自动执行sysctl将kern.emul.linux设置成正确值, 然而它不修改 /etc/sysctl.conf 文件, 所以如果您需要默认启动Linux模拟, 您必须自己将 /etc/sysctl.conf 里的 kern.emul.linux 设置成1。
9.5 - 在OpenBSD中访问Linux文件
OpenBSD 支持 EXT2FS 文件系统。更多信息请参阅FAQ 14.
[索引] [第八章 - 常见问题] [第十章 - 系统管理]
www@openbsd.org
$OpenBSD: faq9.html, v 1.91 2008/10/31 16:52:30 nick Exp $