|
FreeBSD handbook中文版 9 配制FreeBSD 的内核
|
|
目录
9 配制FreeBSD 的内核
9.1 概要
第3 页9.2 为什么要定制一个内核?
9.3 建立和安装一个定制的内核
9.4 配置文件
9.5 建立设备的节点
9.6 如果出现问题怎么办
=============================================================
(翻译中出现的任何问题或错误,请广大读者及时反馈给我:freebsdhandbook@163.com)
9.1 概要
时你需要重新配置和编译你的内核。
.
.
.
.
.
.
9.2 为什么要定制一个的内核?
带来很多好处。不象GENERIC 内核,它需要支持很广泛的硬件设备,而定制的内核将只支持
你机器的硬件设备,这样会带来很多好处:
FreeBSD 使用手册
第9章配置FreeBSD 的内核
内核是FreeBSD 的核心。它用来管理内存,执行安全控制,网络,磁盘访问等等。而有
读完这章,你将了解到:
为什么需要建构一个定制的内核。
如何写一个内核配置文件,或修改已存在的配置文件。
如何使用内核配置文件创建和建构一个新的内核。
如何安装一个新内核。
如何在/dev 中创建设备文件的入口。
如何解决一些常见的问题。
定制内核基本上是每一个UNIX 用户必须经历的一关。这样做将会对你的FreeBSD 系统
1. 快速启动。既然系统内核只检测你机器上的硬件,那它所花费的启动时间将大大减
少。
2. 较少的内存使用。一个定制的内核会比GENERIC 内核使用较少的内存。这一点非常
重要,因为内核在处理时必须经常使用内存。所以,一个定制的内核对于内存较少的机
器来说是非常有用的。
3. 额外的硬件支持。一个定制的内核允许你加入象声卡之类设备的支持,而这恰恰是
GENERIC 内核所做不到的。
第1 页FreeBSD 使用手册
9.3 建立并安装一个定制的内核
首先,让我们先来看一下建立内核的目录。所有提到的目录都在/usr/src/sys 中,也
可以通过/sys 访问。有许多子目录充当了内核的不同部分。但最重要的是/arch/conf,你
可以在这儿配置内核,然后进行编译。这里的arch 也可能是i386,alpha,pc98。在一个特
殊的架构目录内,所有的东西都是为这个架构服务的;其它部分的代码是与所有平台共享的。
注意一下这个目录的逻辑结构,所有支持的硬件驱动程序、文件系统、参数选项,都放在各
自的目录下。另外,所有放在i386 目录下的是只跟PC 硬件有关的,而i386 目录之外的其
它目录,则是FreeBSD 可能移植到的平台会共享到的部分。
注意:如果你的系统没有这个/usr/src/sys 目录,那么内核源代码就没有被安装。最
快速的安装方式是以root 登陆, 然后运行/stand/sysinstall , 选择
configure Distributions src sys。
接着,切换到arch/conf 目录,拷贝GENERIC 配置文件,并给这个文件起一个容易辨认的名
称,它就是你的内核名称。例如:
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL
通常,这个名称是大写的,如果正维护着多台不同硬件的FreeBSD 机器,以你机器的域
名来命名是非常好的主意。我们把它命名为MYKERNEL 就是这个原因。
注意:你必须以root 帐户登陆再执行下面的命令,否则你会没有权限,而导致错误。
现在,用你喜欢的文本编辑器编辑MYKERNEL。如果你是初学者,那唯一能用的编辑器
可能就是vi,它由于太复杂而不在这儿介绍了,但在参考书目中有许多书会介绍到它。然
而,FreeBSD 中最容易的编辑器是ee,如果你是一个工程师,它是一个非常好的选择。你可
以很自由地改变注释行来反映你的配置情况,或你在GERNERIC 中已经做的变化。如果你在
Sunos 或其它BSD 系统下定制过内核,那这个文件中的绝大部分将对你非常熟悉。如果你使
用的是诸如DOS 这样的系统,那GENERIC 配置文件就看起来非常困难,所以在下面的配置文
件章节将慢慢地、仔细地进行介绍。
注意:确信经常检查/usr/src/UPDATING,在你执行任何修改之前,记得要用最新发布
的源代码来同步你的源代码树。在这个文件中所有重要的升级都要记下来。
/sur/src/UPDATING 总是符合你的FreeBSD 源代码版本,而且总是比手册所说的信息更加精
确。
当你完成以上步骤之后,如果你使用的FreeBSD 是4.0 之前的版本的话,就执行下面的
第2 页FreeBSD 使用手册
命令进行编译和安装内核;如果你使用的是4.0 版或是之后的版本,你的/usr/src/目录可
能已经包含了sys/子目录了。
注意:如果你设法从一个旧版本的FreeBSD 升级你的内核,你可能必须从你得到新内核
源代码的地方,找到新版的配制文件,重建并安装它。
# /usr/sbin/config MYKERNEL
# cd ../../compile/MYKERNEL
# make depend
# make
# make install
如果你刚升级到一个比较新的版本,确信你已经重建了整个系统,然后运行下面的命令:
# cd /usr/src
# make buildkernel KERNCONF=MYKERNEL
# make installkernel KERNCONF=MYKERNEL
如果你还没有升级你的源代码树,那你应当按顺序执行:
config,make depend,make,make install
警告:如果你已经升级了你的源代码,你必须使用make buildkernel 方法来定制你的
内核。否则,用旧的工具来定制内核,可能会引起错误。如果你已经升级了源代码,不要
使用config/make 来定制内核。
新的内核将会被拷贝到/kernel 目录下,而旧的内核将会被移到/kernel.old。现在,
关闭系统,然后重新用你的内核启动系统。如果发生错误,在这章结尾会有一些故障的解决
办法。一旦你的新内核不能启动,请务必读一下有关如何恢复的章节。
注意:如果你已经加入了新的设备(如声卡),你可能在使用之前,要先在你的/dev 目
录下加入这些设备节点。
9.4 配置文件
内核设置的格式是很简单的,每一行包含了一个关键词(keyword)与一个或多个参数,
而大多数的设置都只包含一个参数。#号之后的文字都是注释,会被程序忽略掉。下面的每
个小节,将依次介绍每个列在GENERIC 中的参数,虽然各相关主题(如网络)的关键词会放在
同一小节,但是这些关键词可能位于GENERIC 的很多地方。详细地列出各个选项(option),
而LINT 列出了绝大部分的选项(options),比起在同一目录下的GENERIC,有更详细的解释。
第3 页FreeBSD 使用手册
如果你不能确定某一行设定的目的是否必要,请先看看LINT。
目前内核在处理各个选项上正转到一个比较好的模式。一般地,设置文件中的各个选项
都转换到内核程序的Makefile 中,属于CFLAGS 的一个-D 参数。时间一长,就造成了一个
选项处理机制的问题,没有人知道在哪个文件中参考使用了那个选项。
在新的机制中,使用#ifdef 来参考选项的程序代码是存放在由执行config 时所产生的
opt_foo.h。由config 所产生的有效的选项清单存储在两个文件里:独立于系统架构的选项
放在/sys/conf/options,与系统架构有关的选项则放在/sys/arch/conf/options.arch,其
中arch 的一个例子便是i386。
数字的引号限制(Quoting numbers): 目前所有FreeBSD 版本,包括3-stable
版,其内核设置文件中如果有任何属于文字形式的数字(如i386),必须用双引号引
起来,不然执行config 时会出错。
如果数字是表示数目、个数,如maxuser 64 这个设置,则不要加双引号。目
前FreeBSD CURRENT 版本已经去掉上述限制,不论是哪种形式的数字都不需要加双
引号。本章的例子,在文字形式的数字前后仍加了双引号(“”),如果你使用FreeBSD
CURRENT,请自动去除双引号。
下面是一个带有很多额外注释的GENERIC 内核配置文件的例子。这个例子与
/usr/src/sys/i386/conf/GENERIC 非常相似。有关内核配置的最详细的选项,请参
看/usr/src/sys/i386/conf/LINT。
#
# GENERIC -- Generic kernel configuration file for FreeBSD/i386
#
# For more information on this file, please read the handbook section on
# Kernel Configuration Files:
#
# http://www.FreeBSD.org/handbook/kernelconfig-config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.ORG/) for the
第4 页FreeBSD 使用手册
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present
[1] [2] [3] [4] [5] 下一页
|
| 上一篇:FreeBSD handbook中文版 10 安全 下一篇:FreeBSD handbook中文版 8 用户和基本的帐户管理 |