📄 kernelconfig-config.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>配置文件</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="配置FreeBSD的内核" href="kernelconfig.html" /><link rel="PREVIOUS" title="建立并安装一个定制的内核"href="kernelconfig-building.html" /><link rel="NEXT" title="创建设备节点" href="kernelconfig-nodes.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="kernelconfig-building.html"accesskey="P">Prev</a></td><td width="80%" align="center" valign="bottom">Chapter 9. 配置FreeBSD的内核</td><td width="10%" align="right" valign="bottom"><a href="kernelconfig-nodes.html"accesskey="N">Next</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="KERNELCONFIG-CONFIG" name="KERNELCONFIG-CONFIG">9.4.配置文件</a></h1><p>内核配置文件的格式是很简单的,每一行包含了一个关键词与一个或多个参数,而大多数的设置都只包含一个参数。<varclass="LITERAL">#</var>后面的文字是注释,会被忽略掉。下面的每个小节,将依次介绍每个列在<tt class="FILENAME">GENERIC</tt>中的参数,虽然各相关主题(比如网络)的关键词会放在同一小节,但是这些关键词可能位于 <ttclass="FILENAME">GENERIC</tt>文件的很多地方。<a id="KERNELCONFIG-OPTIONS"name="KERNELCONFIG-OPTIONS"></a> 透彻的选项列表和关于设备列表的更详细的解释出现在 <ttclass="FILENAME">LINT</tt>配置文件, 和<tt class="FILENAME">GENERIC</tt>文件在同一个目录。如果你不能确定某一行设定是否需要请先参考<tt class="FILENAME">LINT</tt>文件。</p><div class="NOTE"><blockquote class="NOTE"><p><b>Note:</b> 在FreeBSD5.X和更高的版本<ttclass="FILENAME">LINT</tt>将不存在。关于架构依赖的选项 请看<ttclass="FILENAME">NOTES</tt>。一些选项, 主要就是架构依赖的选项在<ttclass="FILENAME">/usr/src/sys/conf/NOTES</tt>文件里面,当然了,在这里复习这些选项也是明智的。</p></blockquote></div><p>下面是一个带有很多额外注释的<tt class="FILENAME">GENERIC</tt>内核配置文件的例子。这个例子与<tt class="FILENAME">/usr/src/sys/i386/conf/GENERIC</tt>很相似。有关内核配置的最详细的选项,请参看<ttclass="FILENAME">/usr/src/sys/i386/conf/LINT</tt>。</p><pre class="PROGRAMLISTING">## 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/doc/en_US.ISO8859-1/books/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# latest information.## An exhaustive list of options and more detailed explanations of the# device lines is also present in the ../../conf/NOTES and NOTES files. # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES.## $FreeBSD: src/sys/i386/conf/GENERIC,v 1.380 2003/03/29 13:36:41 mdodd Exp $</pre><p>下面这个选项在<span class="emphasis"><i class="EMPHASIS">每个</i></span>中都要有:</p><pre class="PROGRAMLISTING">machine i386</pre><p>这是机器的架构。它可能是<var class="LITERAL">i386</var>, <varclass="LITERAL">pc98</var>, <var class="LITERAL">sparc64</var>, <varclass="LITERAL">alpha</var>, <var class="LITERAL">ia64</var>, <varclass="LITERAL">amd64</var>, 或者 <var class="LITERAL">powerpc</var>。</p><pre class="PROGRAMLISTING">cpu I486_CPUcpu I586_CPUcpu I686_CPU</pre><p>面的选项指出了在你的系统中所用的CPU类型。你可以使用多个CPU类型(例如:你不能确定使用的是<var class="LITERAL">I586_CPU</var>还是<varclass="LITERAL">I686_CPU</var>),然而,对于一个定制的内核,最好是只指定你所拥有的CPU类型。如果你不能确定CPU类型,可以通过文件<tt class="FILENAME">/var/run/dmesg.boot</tt>来看你的启动信息。</p><p>在FreeBSD的内核里面仍然支持<var class="LITERAL">I386_CPU</var>,但是在-STABLE和-CURRENT里面缺省已经被禁用了。这就意味着安装FreeBSD在386-class的cpu,一般有下面几种情况:</p><ul><li><p>安装一个老的FreeBSD release并且按照<a href="kernelconfig-building.html">Section9.3</a>从源码重建系统.</p></li><li><p>在一个新的机器上构建用户和内核程序,然后用已经编译好的<ttclass="FILENAME">/usr/obj</tt>下的文件 安装到386的机器上(详细情况看<ahref="small-lan.html">Section 21.5</a>)。</p></li><li><p>用支持<var class="LITERAL">I386_CPU</var>内核的FreeBSD的release光盘安装</p></li></ul><p>这几种情况里面的第一种是最容易的,当是你需要很大的磁盘空间,而这在386-class机器上是很难找到的。</p><pre class="PROGRAMLISTING">ident GENERIC</pre><p>这是一个内核的标识符。 你应该自己命名一个容易辨认的名称,比如<varclass="LITERAL">MYKERNEL</var>。 放在<varclass="LITERAL">ident</var>后的参数,将在你用这个内核启动时显示在屏幕上。如果你同时设置了几个内核,采用不同的名称是个不错的主意。(例如,你想定制一个实验性质的内核)。</p><pre class="PROGRAMLISTING">maxusers <var class="REPLACEABLE">n</var></pre><p>这个 <var class="LITERAL">maxusers</var> 选项设置了重要系统表的大小。这个数值粗略地假设你的机器同时会有多少用户。</p><p>从FreeBSD 4.5开始,如果手动设置这个值为<varclass="LITERAL">0</var>系统将会自动赋值。<a id="AEN9880" name="AEN9880"href="#FTN.AEN9880"><span class="footnote">[1]</span></a>. 在FreeBSD 5.X里面,<varclass="LITERAL">maxusers</var> 如果没有定义,将缺省为 <varclass="LITERAL">0</var>。如果你使用的FreeBSD早于4.5, 或者你想自己设置这个值,那么你至少要设置<var class="LITERAL">maxusers</var>为4, 特别是你要执行XWindow或是编译程序。 原因是<varclass="LITERAL">maxusers</var>值决定了系统同时可有多少个进程(process), 其算法是<varclass="LITERAL">20 + 16 * maxusers</var>,所以如果你设置<varclass="LITERAL">maxusers</var>为1,则你的系统只能同时存在36个进程,包括18个(或更多)系统启动要占去的进程。 如果你执行了XWindow,则又要用掉15个以上。甚至阅读一个manpage也会使用九个进程来过滤、解压缩、然后显示文件。 设置<varclass="LITERAL">maxusers</var>到64将允许你有1044个进程,对任何人应该都是足够的。当你执行程序时, 得到像是<span class="ERRORTYPE">proc table full</span>这样的错误信息,或者你要建一个同时会有很多人来访问的网站(比如<ttclass="HOSTID">ftp.FreeBSD.org</tt>)时, 你就要增加这个设置的值,然后重新编译内核。</p><div class="NOTE"><blockquote class="NOTE"><p><b>Note:</b> <var class="LITERAL">maxusers</var>这个选项并<span class="emphasis"><iclass="EMPHASIS">不</i></span>限制可以登陆你系统的用户数目。它只是系统中用户可以最多执行的程序个数。 有一个关键词的值则<span class="emphasis"><iclass="EMPHASIS">真的</i></span>限制了可以同时 <span class="emphasis"><iclass="EMPHASIS">远程登入和X terminal windows</i></span>的人数:<ahref="kernelconfig-config.html#KERNELCONFIG-PTYS"><var class="LITERAL">pseudo-device pty16</var></a>。</p></blockquote></div><pre class="PROGRAMLISTING"># Floating point support - do not disable.device npx0 at nexus? port IO_NPX irq 13</pre><p><var class="LITERAL">npx0</var>是FreeBSD中浮点运算处理器的一个接口,不论你用硬件的浮点运算处理器还是使用软件仿真,都需要这个设置。 这个设置<spanclass="emphasis"><i class="EMPHASIS">不是</i></span>可有可无的。</p><pre class="PROGRAMLISTING"># Pseudo devices - the number indicates how many units to allocate.pseudo-device loop # Network loopback</pre><p>这是TCP/IP的通用回环伪设备,如果你telnet或者FTP到<tt class="HOSTID">localhost</tt>(a.k.a., <tt class="HOSTID">127.0.0.1</tt>),它将通过这个伪设备回到本机。 这个伪设备<spanclass="emphasis"><i class="EMPHASIS">强烈要求保留</i></span>。</p><p>接下来的那些项有一个或多个选项,关于每个选项的更多的信息参考下面注释。</p><pre class="PROGRAMLISTING">#To statically compile in device wiring instead of /boot/device.hints#hints "GENERIC.hints" #Default places to look for devices.</pre><p>在FreeBSD 5.X和更新的版本里面,<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">device.hints</span>(5)</span>被用来配置设备驱动选项。在启动的时候<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">loader</span>(8)</span>将会检查缺省位置<ttclass="FILENAME">/boot/devicehints</tt>。 使用<varclass="LITERAL">hints</var>选项你就可以把这些hints静态编译进内核。 这样就没有必要在<ttclass="FILENAME">/boot</tt>下创建<tt class="FILENAME">devicehints</tt>。</p><pre class="PROGRAMLISTING">#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols</pre><p>FreeBSD的普通建立过程是不包含调试信息的,建立内核的时候,在连接内核之前大部分的调试符号都被去掉了,这样能节省安装位置的磁盘空间。如果你打算建立-CURRENT分支的测试内核,或者在FreeBSD上开发自己的内核,你应该去掉这一行的注释,这样就打开了<var class="OPTION">-g</var>选项,传给<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">gcc</span>(1)</span>后,就可以保留内核的调试信息。如果你正在使用``传统''方法建立自己的内核(更多的信息参考<ahref="kernelconfig-building.html">Section 9.3</a>), 也能通过给<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">config</span>(8)</span>传递<varclass="OPTION">-g</var>选项达到同样的效果。</p><pre class="PROGRAMLISTING">options MATH_EMULATE #Support for x87 emulation</pre><p>如果你的计算机上没有数学协处理器(386或者486SX),这一行允许内核模拟数学协处理器。如果你有一个486DX,或者386或者486SX(使用387或487的芯片)或者更高的cpu(<spanclass="TRADEMARK">Pentium</span>®,<spanclass="TRADEMARK">Pentium</span> II等), 你可以注释掉这一行。</p><div class="NOTE"><blockquote class="NOTE"><p><b>Note:</b> 随FreeBSD带的普通数学协处理器模拟函数<span class="emphasis"><iclass="EMPHASIS">不是</i></span>非常精确。如果你没有数学协处理器,而又需要更精确的模拟,最好把这个选项改成使用GNU数学支持的<varclass="LITERAL">GPL_MATH_EMULATE</var>, 因为版权原因它没有被缺省的包含进来。</p><p>在FreeBSD 5.X里面, 数学模拟缺省是禁用的,因为使用不支持数学浮点的CPUs已经很少了。</p></blockquote></div><pre class="PROGRAMLISTING">options INET #InterNETworking</pre><p>网络支持,即使你不打算连网,也请保留它,大部分的程序至少需要回环网络(就是和本机进行网络连接),所以强烈要求保留它。</p><pre class="PROGRAMLISTING">options INET6 #IPv6 communications protocols</pre><p>这将打开IPv6连接协议。</p><pre class="PROGRAMLISTING">options FFS #Berkeley Fast Filesystemoptions FFS_ROOT #FFS usable as root device [keep this!]</pre><p>这是最基本的硬盘文件系统,如果你打算从本地硬盘启动,请保留它。</p><div class="NOTE"><blockquote class="NOTE"><p><b>Note:</b> 在FreeBSD 5.X里面,<varclass="LITERAL">FFS_ROOT</var>选项不再需要了。</p></blockquote></div><pre class="PROGRAMLISTING">options UFS_ACL #Support for access control lists</pre><p>这个选项只出现在FreeBSD 5.X,使得内核支持权限控制列表。这要依赖于扩展属性和<acronym class="ACRONYM">UFS2</acronym>选项, 这些特性在<ahref="fs-acl.html">Section 10.13</a>有详细的描述。 <acronymclass="ACRONYM">ACL</acronym>s缺省是打开的,并且如果已经使用在系统文件上,就不应该关闭它。</p><pre class="PROGRAMLISTING">options UFS_DIRHASH #Improve performance on big directories</pre><p>通过使用额外的内存,这个选项可以加速在大目录上的磁盘操作。你应该在大型服务器和频繁使用的工作站上打开这个选项,而在磁盘操作不是很重要的小型系统上关闭它,比如防火墙。</p><pre class="PROGRAMLISTING">options SOFTUPDATES #Enable FFS Soft Updates support</pre><p>这个选项打开内核的Soft Updates,这将有助于加速写磁盘操作。即使内核已经提供了这项功能,也必须给具体的磁盘打开此功能。 查看<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">mount</span>(8)</span>输出,看是为给你的系统盘启用了Soft Updates。如果你没有看到<var class="LITERAL">soft-updates</var> 选项,那么你需要 通过使用<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">tunefs</span>(8)</span>(对存在的文件系统)或者<spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">newfs</span>(8)</span>(对新文件系统)来激活它。</p><pre class="PROGRAMLISTING">options MFS #Memory Filesystemoptions MD_ROOT #MD is a potential root device</pre><p>这是内存映射的文件系统, 提供RAM disk,以供需要快速访问的资料或是暂存资料用。如果你分了很大的swap空间,使用这个选项可以给你不少好处。把MFS分区挂到/tmp是一个相当好的想法,因为不少程序都会在此暂存资料。要把MFS RAMdisk挂到<tt class="FILENAME">/tmp</tt>, 可以把下面这一行加到<ttclass="FILENAME">/etc/fstab</tt>里面:</p><div class="INFORMALEXAMPLE"><a id="AEN9975" name="AEN9975"></a><pre class="PROGRAMLISTING">/dev/ad1s2b /tmp mfs rw 0 0</pre></div><p>现在你只需要启动系统,或者执行命令<tt class="COMMAND">mount /tmp</tt>。</p><div class="NOTE"><blockquote class="NOTE"><p><b>Note:</b> 在FreeBSD 5.X里面,<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">md</span>(4)</span>-backedUFS文件系统比MFS文件系统更有利于内存文件操作。关于配置memory-backed文件系统的更多信息可以在手册页里面使用<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">mdconfig</span>(8)</span>和<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">mdmfs</span>(8)</span>以及<ahref="disks-virtual.html">Section 12.10</a>。 总之,<varclass="LITERAL">MFS</var>选项已经不再支持了。</p></blockquote></div><pre class="PROGRAMLISTING">options NFS #Network Filesystemoptions NFS_ROOT #NFS usable as root device, NFS required</pre><p>网络文件系统。除非你打算通过TCP/IP挂上<spanclass="TRADEMARK">UNIX</span>®文件服务器的分区, 不然可以注释掉这个选项。</p><pre class="PROGRAMLISTING">options MSDOSFS #MSDOS Filesystem</pre><p><spanclass="TRADEMARK">MS-DOS</span>®文件系统。除非你打算在启动的时候挂上DOS格式的硬盘分区,不然你可以安全的注释掉它。如前所述,在你第一次挂上一个DOS分区时,内核将会自动加载模块来支持它。 此外,<bclass="APPLICATION">mtools</b>是个相当不错的软件(可在ports里面找到),可以让你在访问DOS磁盘时,不需要挂上或卸载软盘(而且也不需要<var class="LITERAL">MSDOSFS</var>的支持)。</p><pre class="PROGRAMLISTING">options CD9660 #ISO 9660 Filesystemoptions CD9660_ROOT #CD-ROM usable as root, CD9660 required</pre>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -