FreeBSD China Community FAQ --New

时间:2007-08-12 15:25:36   来源:freebsdchina.org  作者:  点击:次  出处:技术无忧
关键字:faq freebsd


Q: 10.14. 我忘了 root 密码了!怎么办?


A:不要惊慌!只要重新启动系统,在看到 Boot: 时输入 boot -s 即可进入单使用者模式 (在 3.2-RELEASE 之前的版本请改用 -s)。 在问要使用哪个 shell 时,按下 ENTER。你会看到一个 # 的提示号,输入 mount -u / 以重新挂上(mount) 你的根档案系统可供读/写。执行 passwd root 以更换 root 密码,然後执行 exit(1) 继续启动程序。

Q: 10.15. 我该怎么让 Control-Alt-Delete 不会重新启动系统?
A:如果你是使用 FreeBSD 2.2.7-RELEASE 或之後版本的 syscons(系统内定的主控台驱动程式),把下列这行放到核心设定档内, 然後重做一个新的核心:

options SC_DISABLE_REBOOT

若是使用 FreeBSD 2.2.5-RELEASE 或之後版本的 PCVT 主控台驱动 程式,则以下列选项代替:

options PCVT_CTRL_ALT_DEL

其他更早期的 FreeBSD 版本,请修改你正在使用的主控台键盘对应, 并将所有 boot 关键字以 nop 取代。内定的键盘对应是在 /usr/share/syscons/keymaps/us.iso.kbd。 你可能需要明白的吩咐 /etc/rc.conf 去读取 这个键盘对应以确保更动生效。当然如果你正在用适合你国籍的键盘对应, 你应该编辑那一个。

Q: 10.16. 我该怎么把 DOS 文字档案重新格式化成 UNIX 的?
A:只要使用这个 perl 命令:

% perl -i.bak -npe 's/\r\n/\n/g' file ...

file 就是要处理的档案。这个修改是在内部完成,原始的档案会储存成 副档名为 .bak 的档案。

或者你可以使用 tr(1) 这个命令:

% tr -d '\r' < dos-text-file > unix-file

dos-text-file 是包含 DOS 文字的 档案,而 unix-text-file 则是包含转换 的输出结果。这比使用 perl 还要快上一点点。

Q: 10.17. 我该怎么用名称砍掉 process?
A:使用 killall(1) 。

Q: 10.18. 为何在 su 一直说我不在 root 的 ACL 里?
A:这个错误是因为 Kerberos 分散认证系统。这个问题并不是很严重 但是令人厌烦。你可以用 -K 选项去执行 su,或是像下个问题所描述的 移除 Kerberos。

Q: 10.19. 我该怎么移除 Kerberos?
A:要从系统里移除 Kerberos,重装你正在执行的 release 版本的 bin distribution。如果你有 CDROM,你可以 mount cd(假设在 /cdrom) 并执行:

# cd /cdrom/bin
# ./install.sh

或者你也可以将 /etc/make.conf 里的 "MAKE_KERBEROS" 选项全都拿掉,然後再 build world.

Q: 10.20. 我该怎么增加系统的虚拟终端机?
A:如果你有许多 telnet,ssh,X 或是 screen 使用者,你或许会用完 虚拟终端机,这能教你怎么加更多:

1.

建立并安装一个新的核心程式并且把这一行

pseudo-device pty 256

加入到设定档里。
2.

执行这个命令:

# cd /dev
# sh MAKEDEV pty{1,2,3,4,5,6,7}

会造出 256 个虚拟终端机的装置节点。
3.

编辑 /etc/ttys 并加入符合 256 个终端机的行数。它们应该符合已经存在单项的格式,举例来说, 它们看起来像:

ttyqc none network

字母设计的顺序是 tty[pqrsPQRS][0-9a-v],使用正规表示式。
4.

用新的核心程式重新启动电脑就可以了。

Q: 10.21. /dev/snd0 这个装置做不出来!
A:并没 snd 这个装置的存在。这个名字 是用来当作各个组成 FreeBSD 声音驱动程式组,诸如 mixer, sequencer,以及 dsp 的简称。

可以用以下的命令作出这些装置:

# cd /dev
# sh MAKEDEV snd0


Q: 10.22. 可以不用开机,重新读取 /etc/rc.conf、 再次启动 /etc/rc 吗?
A:先进入单人使用者模式,然後再回到多使用者模式。

在主控台执行:

# shutdown now
(Note: without -r or -h)

# return
# exit


Q: 10.23. 什么是 sandbox?
A:``Sandbox'' 是系统安全用的术语,有两个意义:

*

放在某些虚拟防护墙里的执行程序,这些防护墙是用来阻止 某些人侵入这道程序,进而出入於更大的系统中。

这道程序可以完全在防护墙里 ``动作''。也就 是说,它所执行的任何程式不可能会渗透到墙的外面。所以如果 您对它有安全上的顾虑,并不需要特别去监听它的一举一动,反 正它只能在墙内活动。

举例来说,可以用 userid 来做这道防护墙,这正是 security 和 named 说明文件中的定义。

现在就用 ntalk 这个服务作说明(见 /etc/inetd.conf)。这个服务以前的 userid 是 root,现在执行时则是用 tty。tty 这个使用者就是一个 sandbox,如果有人能够顺利用 ntalk 侵入系统,现在他就算进得来也只能用这个 userid。
*

放在某个模拟机器里的程式,这比上述来得更严密。基本上 这表示能侵入该程式的人相信他能再进入所属的机器,但事实上 只会进入模拟出来的机器,无法进一步修改任何真实的资料。

达到这个目的最常用的方法,就是在某个子目录下做出模拟的 环境,然後用 chroot 执行该程式,这样该程式的根目录便是这个 子目录,而非系统真正的根目录。

另一个常见作法是将某个档案系统 mount 成唯读,但在它 上面另外制造出程式以为可以写入的档案系统。这个程式会相信 它可以对其他档案读写,但只有它看不到这个唯读效应 - 系统 执行的一般程式都看得到。

我们试图将这类 sandbox 尽量透明化,让使用者或侵入者 无法看到他是否在某个 sandbox 里面。

UNIX 实作两种 sandbox,一个在程式层面,另一个则是由 userid 来达成。

每个 UNIX 执行程序会用防火墙将它和所有其他程序隔开,某个程序 不可以随意修改其他程序位址的资料。这和 Windows 中,程式可以轻易 修改其他位址资料,结果导致当机的情形大不相同。

每个 UNIX 程序都属於某个特定的 userid。如果该 userid 不是 root,就会将它和其他使用者的程序隔开。 Userid 同时也用於硬碟资料的存取权上。

Q: 10.24. 什么是 securelevel?
A:securelevel 是核心中所实作的一个安全机制。基本上当 securelevel 是正值时,核心会限制某些工作;即使是 superuser (也就是 root) 也无法完成那些工作。在撰写 本文时,securelevel 机制在一般的限制外,还能够限制以下的功能:

*

清除某些特定的档案旗标,例如 schg (系统唯读标旗, the system immutable flag)
*

经由 /dev/mem 与 /dev/kmem, 将资料写入至核心记忆体中
*

载入核心模组
*

更动 ipfirewall(4) 规则。

想要检查在某个运作中的系统的 securelevel 状态,只要执行以下 命令即可:

# sysctl kern.securelevel

输出的结果会包含一个 sysctl(8) 变数名称 (在这个例子中, 它是 kern.securelevel) 以及一个数字。後者即是 目前的 securelevel 值。如果它是一个正值 (也就是大於 0),表示至少 有一些 securelevel 的保护机制已经开启了。

你没有办法降低一个运作中的系统的 securelevel;如果可以的话, 就失去了这个机制的意义了。如果你要作一些需要 securelevel 为 非正值才可以的动作的话 (例如 installworld 或更动日期),你需要修改 /etc/rc.conf 内的 securelevel 设定 (找找 kern_securelevel 和 kern_securelevel_enable 变数),然後重新开机。

想要知道更多有关於 securelevel 与各个不同等级影响的细节, 请参考 init(8) 说明文件。

Warning: securelevel 可不是万灵丹;它有许多已知的缺陷,往往造成 一种安全的假象。

它一个最大的问题,就是要让这个功能完全有效的话,在 securelevel 发挥作用前的启动过程中,所有使用到的档案都 必须被保护起来。如果一个攻击者在 securelevel 有效前 (由於 有些系统在启动中所作的事情,无法在较高的 securelevel 中 正常运作,所以这会在启动过程中後期才会运作),能让他们的程式 被执行的话,securelevel 的保护就完全无效了。保护启动程序 中所有的档案在技术上是可行的,但是如果真的这样作的话,系统 维护将会变成一场梦魇。即使只是修改一个设定档,也必须将整个 系统关闭,至少也得到单人模式。

除了这点,还有许多其它的东西都在通信论坛上讨论,尤其是 freebsd-security。请到 这里 搜寻以前的 讨论。有些人希望 securelevel 能够尽快消失,由另一个更优秀的 机制取代,不过机会有点渺茫。

风险自行承担。


Q: 10.25. 我想要把我的系统升级到最新的 -STABLE,但是得到的是 -RC 或 -PRERELEASE!怎么了?
A:简单地说:那只是名字而已。RC 的意思是 ``Release Candiate, 发行候选版本'',它表示新版本快要发行了。在 FreeBSD 中, -PRERELEASE 通常是发行前的程式码冻结的代名词。(有些发行版本中, -BETA 标签跟 -PRERELEASE 是相同意思的。)

详细地说:FreeBSD 从两个地方分支出它的发行版本。主版号、 点零、release (例如 3.0-RELEASE 及 4.0-RELEASE) 的,是从发展过程 开始时分支出来的,通常称为 -CURRENT 。有副版号的版本 (例如 3.1-RELEASE 或 4.2-RELEASE),是 活跃的 -STABLE 分支中的发行版本 快照。从 4.3-RELEASE 开始,每一个发行版本有它自己的分支,可为 偏好极度保守的发展速度 (通常只会作安全方面的更新) 的人所用。

准备要制作发行版本时,其所在的分支会经过一定的程序。有一个是 程式码冻结。当程式码冻结开始时,分支名称会更名,以反映它快要成为 一个发行版本了。举个例子,如果原来的分支叫 4.5-STABLE,它的名字 会变成 4.6-PRERELEASE 以表示程式码已冻结,并且额外的发行前测试 将要开始了。臭虫更正仍可回报,以成为发行版本的一部份。当程式码 有了可成为发行版本的雏形时,它的名字就会变成 4.6-RC,以表示发行 版本快好了。进入 RC 阶段後,只有找到的最有影响的臭虫才会被修正。 当发行版本 (本例中为 4.6-RELEASE) 产生後,发行版本会有自己的分支, 原分支会被更名为 4.6-STABLE。

想要得知更多有关版本号码与各 CVS 分支的资讯,请参考 Release Engineering 一文。


Q: 10.26. 我试著要安装一个新的核心,但是无法 chflags。我该怎么解决?
A:简单地说:你的 securelevel 可能大於零。直接重新开机到 单人模式,再安装核心。

详细地说:FreeBSD 在 securelevel 大於零情况下,不允许 变更系统旗标 (system flags)。你可以用这个指令检查你的 securelevel:

# sysctl kern.securelevel

你没有办法降低 securelevel;你必须启动系统到单人模式以 安装核心,或是修改 /etc/rc.conf 内的 securelevel 再重新开机。请参考 init(8) 说明文件,以取得 更多有关 securelevel 的资讯,还有 /etc/defaults/rc.conf 和 rc.conf(5) 说明文件,以取得更多有关 rc.conf 的资讯。


Q: 10.27. 在我的系统上,我无法变更时间超过一秒以上的范围! 我该怎么办?
A:简单地讲:你系统的 securelevel 也许大於 1。直接重新开机至 单人模式,然後再修改时间。

详细地说:在 securelevel 大於 1 的情况下,FreeBSD 不允许时间 变动大於一秒。你可以用以下的命令来检查目前的 securelevel:

# sysctl kern.securelevel

你无法降低 securelevel;你必须启动电脑至单人模式下以修改时间, 或是修改 /etc/rc.conf 再重新开机。请参考 init(8) 说明文件,以取得更多有关 securelevel 的资讯,还有 /etc/defaults/rc.conf 和 rc.conf(5) 说明文件,以取得更多有关 rc.conf 的资讯。

Q: 10.28. 为什么 rpc.statd 用了 256 megabytes 的记忆体?


A:不,那不是 memory leak,而且它也不是真的用了 256 Mbyte 的记忆体。它只是喜欢 (意思就是总会这样作) 将一狗票的记忆体 映谢到它自己的位址空间,以方便作事。就技术而言,这样并没有 什么不对;这样只是会让 top(1) 和 ps(1) 吓一大跳而已。

rpc.statd(8) 会将它的状态档案 (位於 /var ) 映射至它的位址空间里;为了防止需要的时候再增大所 导致的重新映射,它一次会使用相当大的大小。从程式码来看的话就 更明显了,可以看到 mmap(2) 的长度参数为 0x10000000 ,它是 IA32 架构上的十六分之一的定址空间,也就是 256MB。

Q: 10.29. 为什么我没办法取消 schg 档案旗标?
A:你正在一个提高了 securelevel (也就是大於 0) 的系统运作。 降低 securelevel 再试试看。请参考 FAQ 中对 securelevel 的说明 和 init(8) 说明文件。

Q: 10.30. 为什么近来的新版 FreeBSD 预设无法利用 .shosts 完成 SSH 认证?
A:为什么近来新版 FreeBSD .shosts 认证预设 为取消的原因,是因为 ssh(1) 预设不安装为 suid 成 root。要 ``修正'' 这点,你可以作下列的 任何一件事:

*

要一劳永逸解决,请将 /etc/make.conf 里的 ENABLE_SUID_SSH 设成 true ,然後再重新 build ssh (或是执行 make world)。
*

只作一时的修正的话,可以 root 身份 执行 chmod 4755 /usr/bin/ssh 将 /usr/bin/ssh 设成 4555 。然後将 ENABLE_SUID_SSH= true 加入 /etc/make.conf 里,这样下次 make world 执行就会生效了。


Q: 10.31. 什么是 vnlru?
A:当系统达到上限 kern.maxvnodes 时, vnlru 会清除并释放 vnode。这个核心 执行绪大部份的时间都没事作,只有当你有很大的记忆体,而且 正在存取上万个小档案时,才会被启动。

Q:
A:

: 16.1. 为甚么 FreeBSD 用的置换(swap)空间比 Linux 多?
A:FreeBSD仅是看起来置换空间(swap)用的比Linux多而已。在事实上, 并不然。主要的差异是在於,FreeBSD积极的将闲置无用的主记忆体内容 推入置换空间(swap)中,以使得主记忆体可以更为有效率的被使用。而 Linux的策略是将置换空间(swap)用来作为解决记忆体问题的最终手段。 较频繁的使用置换空间(swap)。是一种更有效率的使用主记忆体的手段。

注:当一方面FreeBSD积极的使用置换空间(swap)的同时,你必需注 意到,FreeBSD并不会任意的将所有的东西都推入置换空间(swap)中。如此, 你才不会在一夜宿醉起床後发现,整个系统都被倒进了置换空间(swap)之中。


Q: 16.2. 即使我只有运行少数程序,为什么 top 显示出 来的剩余记忆体还是很少?
A:简单的答案是,所有未使用到的闲置记忆体都是被浪费的记忆体, 任何未被你的程式所利用到的记忆体将被核心(kernel)用来当 作磁碟快取(disk cache)。而这种记忆体被 top(1) 标记为 闲置的(Inact),快取(Cache), 以及 缓冲区(Buf),并负责在各个不同的位置负责 暂存资料。被暂存(cached)的资料代表系统不需要去存取较慢的磁碟装置 就可以得到资料,如此,可以提升系统的效能。总而言之, top(1) 显示出较少的 闲置(Free) 记忆体是好的,只要显示 出来的值不是 非常 的低。


Q: 16.3. 为甚么要用(甚么是) a.out 和 ELF 执行档格式?
A:要了解为什么Freebsd使用 ELF 格式,你有必 要先认识一下三种在目前 Unix 系统中最被广泛应用到的执行档格式:

Note: 在 FreeBSD 3.x 之前,FreeBSD 使用 a.out 格式。

*

a.out(5)

这是最早,同是也是 ``最典型'' 的Unix目的档 格式。这种格式的档案使用一种短且紧密的档头,同时,伴随著一 个魔术数字用来辨识格式。(参考 a.out(5) 有更多详细的说 明)。它包含有三个节区: .text .data 及 .bss 加上一个符号表 及字串表。
*

COFF

SVR3目的档格式。档头包含了一个节区表,所以可以具备比 .text .data .bss 还多的节区。
*

ELF

ELF为 COFF 格式的後继者,主要的特徵为 可以具有复数节区段,并可以使用32-bits或是64-bits的数值。 主要的缺点为: ELF 格式是在每个系统中只 会有一种 ABI 的假设为前题被设计出来的。但是,在事实上,这个 假设错的离谱。因为,纵使在商用的 SYSV 世界里,也至少有 SVR4, Solaris 和 SCO 三种 ABI。

译注:ABI(Application Binary Interface)。如果一定要翻译, 就叫它 应用程式二进位介面 好了。 ABI被发 展出来的用意,是为了促使在相同CPU所发展出来的应用程式,能够 在不同的系统上,作到二元档(Binary Code)相容。比方说, Sun 所提出的 Solaris ABI ,保证执行档能够在相同 CPU 的 Solaris 系统上执行,另一个例子是 Windows 系统。同属於 Intel x86 版本的执行档能够自由的在Windows 9x/me及Windows NT/2k/XP之间执行。

FreeBSD提供一个公用程式将程式所需的ABI资讯烙上,藉此试著 去解决这个问题。请参考 brandelf(1) 以取得更多资讯。i

FreeBSD 来自 ``传统'' 的阵营。在传统上,FreeBSD都 使用 a.out(5) 格式,这样的技术在好几代的 BSD 都被证明是可靠的。 虽然,在FreeBSD上可以建立以及正确的执行原生 ELF 格式档案(包含核心)。然而, FreeBSD在一开始反对将预设格式转换为 ELF, 为什么呢?当Linux开始痛苦的转换至 ELF 格式时, 并非是为了要逃离 a.out 格式。相反的,这是因 为之前 Linux的共享函式库(shared libraries)采用以跳跃表格 (jump-table)为基础的技术去设计。这是一种让发展者感到困扰,且非常 难以使用,不具足够弹性的方法。既然,已经存在的 ELF 工具提供了共享函式库(shared libraries)的解 决方案,而且,那看起来是个 ``前卫的方法'',因此,所需 的转换代价就可接受因而转换。

在FreeBSD的状况中,我们的共享函式库(shared libraries)机制和 SunOS 的型式非常相近,且易於使用。然而, 从 3.0 开始,FreeBSD 正式将 ELF 改为预设格式。 虽然,a.out 格式依旧如以往般的好,但是,我们 编译工具的撰写者,GNU 的成员,他们中止了对 a.out 格式的支援与维护。在这种状况下,迫使 我们必须自行维护另一份版本的 compiler 和 linker,也使得我们无法 从最新的 GNU 发展成果中获得好处。此外,对 ISO-C++ 的需求,尤其是 建构子(constructors)和解构子(destructors),也带动未来版本中对 ELF 的原生支援。


Q: 16.4. 是的, 但是, 为什么会有这么多不同格式的执行档存在呢?
A:在黑暗而遥远的过去,仅有简陋的硬体存在。而因为硬体简陋,当然也 只能执行小而简单的系统。a.out 格式是基於那个时代所需要,而被创造 出来的(例如像PDP-11)。在这之後,许多人试著将 Unix 移植到其他平台 时,他们也保留了 a.out 格式的执行档。因为,这对早期的 Motorola 68k, VAXen 之类的系统已经足够使用了。

然而,人并不会满足於现状。一些聪明的硬体工程师想到了,如果能 让软体多处理一些事,那 CPU 的电晶体数就能少一点,并且跑得更快。要 在这种新式的硬体上工作(现在称为RISC),a.out 这种格式就不合适了。基於这样的现实所需,更多的执行档格式被发展出 来,以提供比简单且受到许多限制的 a.out 格式 更好的效能。比方像是 COFF, ECOFF,已及一些较不为人所周知的格式纷纷被创造 出来。但是,这些格式都已达到各自的极限,直到有一天 ELF 的出现。

此外,当程式的体积越来越大,而磁碟空间和主记忆体相对来说都较 小时,共享函式库(shared libraries)的观念被发展出来了。在这同时, 虚拟记忆体系统(VM System)也变得越来越精巧。当每一种进步都在 a.out格式上被发展出来时,它的可用性也同时变 得越来越低。另外,人们还希望程式能在执行期间动态载入,或是将已经 执行过且没有用的初始化程式码丢弃,藉以节省更多的记忆。程式语言在 这个时期也便得更精巧,人们也希望在 main 之前自动的执行更多的东西。 因此,许多繁杂且另人叹为观止的技巧被用在 a.out 格式上去解决这些问题。但是,由於 a.out 格式 先天的限制,要解决这些问题必需付出更多的代价及时间成本,并让程式 的复杂度大为提升。而 ELF 格式可以一举解决这一 切问题。但是,要将整个系统从根本转换过去,将会有不短的阵痛期,因 此, ELF格式将会有一阵子与 a.out 并存。

然而,随著时间的过去,FreeBSD的 build tools 演化成平行的两个 支线(尤其是组译器和载入器)。FreeBSD这条路加进了共享函式库 (shared libraries)并修正了一些错误。而原来发展这些程式的 GNU 成员 则为了因应现况,重写了这些程式,以更简单的方式对跨平台编译 (building cross compilers),以及多种格式 (plugging in different formats) 作出了支援。许多人想作出以 FreeBSD 为目的平台的跨平台编译器。但不幸的是,FreeBSD 的 as 和 ld 不能作 这项工作。新的 GNU 工具程式加入了跨平台编译 (Cross Compiler), ELF格式支援,共享函式库(shared libraries), C++ 的扩充... 等等。此外,许多厂商以 ELF 格式 发行其产品,如果这些东西能在 FreeBSD 上执行的话当然是最好的。既然, 能够执行 ELF 格式的执行档了,为什么还须要 a.out 呢?它已经是一匹垂垂老矣的马了,在竭力 尽忠的奉献这么多年之後,该是让它在牧场肥沃的草地上好好休息的时候 了。

ELF 格式比 a.out 具有更良好的展现能力,并 且在底层系统中具有更多的可扩展性。ELF 工具程式 更容易被维护,且提供跨平台编译的支援,这一点对很多人来说是很重要 的。ELF 格式可能比 a.out 慢一点,但是其差异非 常难测量出来。这两者间还有许多细节上的不同,比方说分页对应的方式, 程式码初始化的方法...等等。这些并不是很重要,但是,两者就是不同。 以後,GENERIC 核心(kernel)将会移除对 a.out 格式。当不在有执行传统 a.out 程式的须要时, 将会从核心(kernel)中移除。


Q: 16.5. 为甚么chmod不会改变符号连结(symlink)的存取权限?
A:Symlinks 本身并没有存取权限,同时,在预设的状况下, chmod(1) 将不会跟随著 symlinks 去改便目标档案的存取权限。因此, 如果你有一个档案 foo,同时,有一个 symlink bar 指向这个档案,以下这个命令将永远会成功 的被执行。

% chmod g-w bar

然而,在 foo 上的存取权限将不会被改 变。

你必需使用 -H 或是将 -L 与 -R 选项一起使用,参考 chmod(1) 以及 symlink(7) 以取得更多的资讯。

Warning: 使用选项 -R 会让 chmod(1) 以 递回(RECURSIVE) 的方式工作。当你把 chmod(1) 用在目录或是连结到目录的符号连结时更要小心。 如果你要改变一个符号连结参考到的目录之存取权限 chmod(1) , 且注意不要加上任何选项,并且在 symlink 的结尾加上斜线 (/)。举例来说,如果 foo 连结到目录 bar, 而你要更改 foo (实际上是 bar),那就使用:

% chmod 555 foo/

结尾的斜线会使得 chmod(1) 改变 foo 所指向的目录 bar 的权限。


Q: 16.6. 为什么在 FreeBSD 2.2.x 及更早的版本中,登入名称(login names) 被限制在八个字元以下呢?
A:你可能认为修改 UT_NAMESIZE 後在重新编译整个 系统是很容易的事。而且在这之後,每件事都可以运作的很好。不幸的是, 有许多的程式和工具(包含系统工具)把数字写死在程式里头(并非总是 8 或 9,有时可能是古怪的 15 或 20)。这不仅仅是会将 你的系统记录档弄坏而已(来自於变动长度和固定长度记录的差异),同时 也会破坏 Sun 的 NIS Client 的运作。同时,和其他的Unix系统之间也 有可能会产生未知的问题。

在FreeBSD 3.0 及之後的版本,帐号的最大长度增加到16个字元, 同时,那些将长度写死的程式也被找出来并作了适当的修正。正因为影响 系统的范围很广,所以直到3.0版之後才算大致修正完成。

如果你有自信在出问题的时後能自行解决,你可以利用下面的方法让 较早期的版本支援较长的帐号。首先,修改 /usr/include/utmp.h 中的UT_NAMESIZE。 然後,你必须把 /usr/include/sys/param.h 中的 MAXLOGNAME 改成跟 UT_NAMESIZE 相同。最後,如果你是从原始程 式建立系统, 别忘了 /usr/include 每次都会被更新。 修改 /usr/src/.. 中适当的档案。


Q: 16.7. 我能在FreeBSD下执行DOS程序吗?
A:是的,自3.0版起你可以使用BSDI的 doscmd DOS 模拟器,如果你对这个东西 有兴趣,或是想加入发展行列,请寄一封电子邮件到 FreeBSD-emulation mailing list <freebsd-emulation@FreeBSD.org> 。

对於3.0之前的系统,在 ports 中有一套软体可以模_ 8088,并提 供足够的BIOS中断服务以执行DOS文字模式的程式,这套软体叫做 pcemu,同时,运行它须要 X Windows(由XFree86提供)。


Q: 16.8. 如果要把FreeBSD文件翻译成我的母语,我需要作什么?
A:参阅FreeBSD文件中的 翻译常见问答。


Q: 16.9. 为什么我寄到 FreeBSD.org 相关地址的电子邮件都被退回了呢?
A:FreeBSD.org 的邮件系统对於进来的邮件采取严格的检查,并且退回 所有设定不正确,或是潜在的垃圾邮件。你的邮件被退回可能是因为下列 原因所引起:

*

这封电子邮件来自已知的垃圾邮件区域或是IP中。

FreeBSD邮件伺服器将拒绝接收已知的垃圾邮件来源的电子邮件。 如果提供你网路服务的公司或是网域中有产生过垃圾邮件或是有垃圾 邮件转播站,请你换一个服务提供者,或是乾脆放弃。
*

电子邮件的本文仅有HTML。

邮件应该已纯文字格式发送,请设定你的电子邮件软体送出纯文 字格式。
*

FreeBSD的邮件处理程式无法由IP反查送件主机的IP。

设置 DNS 反查是接受一台主机邮件的一个标准要求,请为您的邮件 主机设置 DNS 反查。许多提供家庭网路服务 (DSL,cable,dialup 等) 的公司并不提供这样的服务。在这种情况下,请透过网路服务提供者的 邮件伺服器送出您的电子邮件。
*

在 SMTP 使用 EHLO/HELO 命令时所给予的 hostname 无法被解析到 一个 IP 位置。

在邮件被接受以前,一个充分合格,且可被解析的主机名称在 SMTP 协定的对谈中是必要的。如果你没有在 DNS 伺服器中登记你 的主机名称,请透过网路服务提供者的邮件伺服器送出您的电子邮 件。
*

你的讯息中夹带著一个 message ID 以 ``localhost'' 字串结束。

某些邮件软体产生某些不正确的 message ID,这将不被接受。 你必需更改设定让你的邮件软体产生正确的 message ID,如果这无 法解决,考虑说服你的邮件软体作者更新程式以处理这个问题。


Q: 16.10. 我可以在哪里找到一个免费的FreeBSD帐号?
A:FreeBSD的伺服器本身不提供任何对外的服务,其他的单位中, 有人提供开放的 Unix 系统服务。其中有些可能要收取些许费用。

Arbornet, Inc, 也被称为 M-Net,自 1983 年起就开始提供 Unix 系统服务。一开始, 他们使用 Altos 并执行 System III。他们在 1991 年转换系统成为 BSD/OS。在 2000 年六月,他们再度更换成为 FreeBSD。M-Net 能让使 用者透过 SSH 及 telnet 连线到主机,并提供完整的 FreeBSD 软体以 供使用。然而,M-Net 作为一个非盈利组织运行,存取权只限於成员和 赞助者,M-Net 也提供 BBS 系统和网路聊天服务。

Grex 提供了非常 类似 M-Net 的服务,包括了 BBS 系统和网路聊天。然而,机器是使用 Sun 4M,并执行 SunOS。

WWW.pC51.Net


相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

300x250广告位招租