⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linux2.6内核配置.txt

📁 详细介绍了linux2.6内核如何配置
💻 TXT
📖 第 1 页 / 共 5 页
字号:
Linux kernel 2.6 配置指南
作者:王旭东
QQ:154526147 E-mail:wxd850223@163.com
说明:本配置文档全部由本人查询书籍,网上摘抄和自己经验积累得到,如果出现
和原作者内容相同,请尊重原作者,本文档只限于厦门大学Linux爱好者共享,如
果出现版权问题,请通知作者,马上更正!本文档只适合Linux 2.6内核使用,对
Linux 2.4 内核仅作参考.对Linux 2.6.5以上内核,完全依照本文档配置不会
出现问题,对Linux 2.6.5以下内核可能会出现U盘不能挂载和声卡不能发声问题
对于这种问题,本作者概不负责,如果您在使用本文档过程中出现这种问题,并
解决了问题,请通知作者,本作者立即修改本文档,并将您作为本文档作者之一.
本文档已经过作者多次试用,修改了BUG,可以放心使用!谢谢您的使用和支持!
注: 内核配置选项中关于Frame Buffer的选项不能编译成模块,否则无法使用
Frame Buffer.特此说明!本文档中关于硬件选项请遵照自己电脑的配置选择!
一,内核简介
内核,是一个操作系统的核心.它负责管理系统的进程,内存,设备驱动程序,文件和网络系统,决定着系统的性能和稳
定性.
Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软
件也都是遵循GPL而设计的,你都可以获取相应的源程序代码.全世界任何一个软件工程师都可以将自己认为优秀的代码
加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用.而Linux的内核则是这
些特点的最直接的代表.
想象一下,拥有了内核的源程序对你来说意味着什么 首先,我们可以了解系统是如何工作的.通过通读源代码,我们
就可以了解系统的工作原理,这在Windows下简直是天方夜谭.其次,我们可以针对自己的情况,量体裁衣,定制适合自
己的系统,这样就需要重新编译内核.在Windows下是什么情况呢 相信很多人都被越来越庞大的Windows整得莫名其
妙过.再次,我们可以对内核进行修改,以符合自己的需要.这意味着什么 没错,相当于自己开发了一个操作系统,但是
大部分的工作已经做好了,你所要做的就是要增加并实现自己需要的功能.在Windows下,除非你是微软的核心技术人员,
否则就不用痴心妄想了.
二,内核版本号
由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用.Linux的开发
采用的是集市模型(bazaar,与cathedral--教堂模型--对应),为了确保这些无序的开发过程能够有序地进行,Linux
采用了双树系统.一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(development
tree).一些新特性,实验性改进等都将首先在开发树中进行.如果在开发树中所做的改进也可以应用于稳定树,那么在开发
树中经过测试以后,在稳定树中将进行相同的改进.一旦开发树经过了足够的发展,开发树就会成为新的稳定树.开发数就
体现在源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定
树大一(因此,是奇数).到目前为止,稳定树的最高版本是2.6.5;开发树的最新版本是2.6.12.下载内核版本请访问
http://www.kernel.org/
三,为什么重新编译内核
Linux作为一个自由软件,在广大爱好者的支持下,内核版本不细隆P碌哪诤诵薅┝司赡诤说腷ug,并增加了许多
新的特性.如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核.

通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快, 更稳定,并且一般会修复老版本中
发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容.
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
l 自己定制编译的内核运行更快(具有更少的代码)
l 系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
l 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
l 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些
四,内核编译模式
要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(build-in),也可以把该部分编译成模
块(module),动态调用.如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便,速度
快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,
这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡.如果编译成模块,就会生成对应的.o
文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块.
五,新版本内核的获取和更新
Linux内核版本发布的官方网站是http://www.kernel.org 新版本的内核的发布有两种形式,一种是full/ Source
版本,另外一种是patch文件,即补丁.完整的内核版本比较大,一般是tar.gz或者是.bz2文件,二者分别是使用gzip
或者bzip2进行压缩的文件,使用时需要解压缩.patch文件则比较小,一般只有几十K到几百K,但是patch文件是针对
于特定的版本的,你需要找到自己对应的版本才能使用.
编译内核需要root权限,以下操作都假定你是root用户.请把你需要升级的内核拷贝到/usr/src/下(下文中以
2.6.5的内核的linux-2.6.5.tar.gz为例),命令为
#cp linux-2.6.5.tar.gz /usr/src
让我们先来查看一下当前/usr/src的内容,注意到有一个linux-2.4的符号链接,指向一个linux-2.4.7-10(以
REDHAT7.2为例)的目录.这就是你所装linux的kernel源代码,删除这个链接.
现在解压我们下载的源程序文件.如果所下载的是.tar.gz(.tgz)文件,请使用下面的命令:
#tar -zxvf linux-2.6.5.tar.gz.tar.gz
如果你所下载的是.bz2文件,例如linux-2.4.0test8.tar.bz2,请使用下面的命令
#bzip2 -d linux-2.6.5.tar.bz2
#tar -xvf linux-2.6.5.tar
文件将解压到/usr/src/linux目录中,我们把它稍作修改:
#mv linux linux-2.6.5
#ln -s linux-2.6.5 linux
如果下载的是patch文件,就可以进行patch操作(下面假设patch-2.6.5已经位于/usr/src目录下了,否则你需
要先把该文件拷贝到/usr/src下):
#patch -p0 应该选择

Prompt for development and/or incomplete code/drivers默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.你应该选择它,因为有许多设备可
能必需选择这个选项才能进行配置,实际上它是安全的.

Select only drivers expected to compile cleanly 应该选择选择这个选项你将不会看到一些已知的存在问题的驱动程序选项,默认的情况下也是选择的.如果你有设备没有找到驱动选
项,你可以将这一项去掉,或许就可以找到相关驱动了,不过它可能是有BUG的.

Select only drivers that don't need compile-time external firmware 应该选择
如果你不需要在内核对一些外部设备的固件作map支持就选择它,这也是默认选项.
2 General setup --->

Support for paging of anonymous memory (swap) 应该选择这个选项将使你的内核支持虚拟内存,也就是让你的计算机好象拥有比实际内存更多 多的内存空间用来执行很大的程序.
默认是选择的.

System V IPC 应该选择为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力.有些程序只有在选Y的情况下才能运行,所
以不用考虑,这里一定要选.

POSIX Message Queues 应该选择
BSD Process Accounting 应该选择这里选择Y将会让内核为用户层的进程建立一个帐目(进程通过一个特殊的系统调用来通知内核),当程序退出时内核会将
进程的相关信息记录到帐目文件中,主要包括进程的创建时间, 创建者,内存占用等信息.如果你需要就Y吧:)

Sysctl support 应该选择这将提供一个接口让你可以动态的更改一些核心参数与变量,而不需要重新启动系统.打开这个选项将会增加内核的体积至
少8KB.如果你的内核仅用制作安装与恢复系统系统盘那么可以不选,以减少对内存的占用.

Auditing support 审核的,一般不用选择了
Enable system-call auditing support 不用选择了(17) Kernel log buffer size (16 => 64KB, 17 => 128KB) 不用选择了

Support for hot-pluggable devices 支持热插拔的,最好选择
Kernel Userspace Events 用户空间时间,可以不用选择
Kernel .config support 不用选择这会把内核的配置信息与相关的文档说明编译进内核中,以后可以使用一些工具来提取它用来重新构建内核,一般不用选
它.

Enable access to .config through /proc/config.gz 不用选择这个和上面的那个一样把说明文档放在/proc中,所以可以不用选它

Configure standard kernel features (for small systems) ---> 为小系统设计的,不用选择了吧--- Configure standard kernel features (for small systems) 不用选择

Load all symbols for debugging/kksymoops (NEW) 不用选择
Enable futex support (NEW) 不用选择Futex(fast user space mutex) 不用选择

Enable eventpoll support (NEW) 不用选择
No-op I/O scheduler (NEW) 不用选择
Anticipatory I/O scheduler (NEW) 不用选择
Deadline I/O scheduler (NEW) 不用选择
CFQ I/O scheduler (NEW) 不用选择
Optimize for size 内核尺寸最优化,一般不用选择吧(如果是为小系统设计的,就不用选择了)3 Loadable module support --->

Enable loadable module support 应该选择这个选项可以让你的内核支持模块,模块是什么呢 模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从
而为内核增加一些特性或是对某种硬件进行支持.一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积.在运
行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它).
一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一
些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统.(当然还有一些
变通的方法,我以后会提到)

Module unloading 应该选择这个选项可以让你卸载不再使用的模块,如果不选的话你将不能卸载任何模块(有些模块一旦加载就不能卸载,不管是否选
择了这个选项).不选择这个选项会让你的内核体积减小一点

Forced module unloading 这个有点危险,可能导致内核不能启动,不要选择了
Module versioning support (EXPERIMENTAL) 不用选择这个选项将让你可以使用其它版本内核中编译的模块,不过并不可靠,所以一般我们不选择它

Source checksum for all modules 可以选择
Automatic kernel module loading 应该选择一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加
载它,内核才能使用.不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要
的模块,这是个很棒的特性,当然要选Y喽:)
4 Processor type and features --->
Subarchitecture Type (PC-compatible) --->
这是一个比较新的特性,主要的目的是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构
(pc/at).这个选项可以让你选择一些其它架构.我们一般选择PC-compatible就可以了.
(X) PC-compatible
( ) AMD Elan
( ) Voyager (NCR)
( ) NUMAQ (IBM/Sequent)
( ) Summit/EXA (IBM x440)
( ) Support for other sub-arch SMP systems with more than 8 CPUs
( ) SGI 320/540 (Visual Workstation)
( ) Generic architecture (Summit, bigsmp, default)
( ) Support for Unisys ES7000 IA32 series
Processor family (Pentium-Pro) ---> 这个就不用说了吧,你是什么cpu就选什么了
( ) 386
( ) 486
( ) 586/K5/5x86/6x86/6x86MX
( ) Pentium-Classic
( ) Pentium-MMX
(X) Pentium-Pro
( ) Pentium-II/Celeron(pre-Coppermine)
( ) Pentium-III/Celeron(Coppermine)/Pentium-III Xeon
( ) Pentium M
( ) Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon
( ) K6/K6-II/K6-III
( ) Athlon/Duron/K7
( ) Opteron/Athlon64/Hammer/K8
( ) Crusoe
( ) Winchip-C6
( ) Winchip-2
( ) Winchip-2A/Winchip-3
( ) CyrixIII/VIA-C3
( ) VIA C3-2 (Nehemiah)

Generic x86 support 不用选择这个选项提供了对X86系列CPU最大的兼容性,用来支持一些很少见的x86体系的CPU,它可能会降低一些系统性能.
所以如果你的CPU能够在上面的列表中找到就不要选这个吧.

4 GB kernel-space and 4 GB user-space virtual memory support 应该选择
HPET Timer Support 应该选择这也是一个新的特性,HPET是intel制定的新的用以代替传统的8254(PIT)中断定时器与RTC的定时器,全称叫作高
精度事件定时器.如果你有一台较新的机器就选它吧,一般它是一个安全的选项,即使你的硬件不支持HPET也不会造成
问题,因为它会自动用8254替换.

Symmetric multi-processing support 不用选择这个也不用多讲了吧,如果你使用多处理器系统就选吧,如果你和我一样使用一个单CPU系统还是把它请出去吧.
(8) Maximum number of CPUs (2-255) (NEW) 不用选择
这里用来配置让Linux最多支持几路CPU,根据你的需要选择.

Preemptible Kernel 应该选择这可是个新特性,几乎所有介绍2.6的文章都会提到,这就是可抢先式内核.也就是说被一些优先级很高的程序
可以先与一些低优先级的程序执行,即使这些程序是在核心态下执行(这实际上仍然不是真正的抢先式内核).从而减少内核
潜伏期,提高系统的响应.当然在一些特殊的点的内核是不可抢先的,比如内核中的调度程序自身在执行时就是不可被抢先
的.这个特性可以提高桌面系统,实时系统的性能,所以还是选上吧.

Machine Check Exception 应该选择如果你的系统出现一些问题比如CPU过热,内核将会在屏幕上打印相关信息来提醒你.这个功能是需要硬件支持的.你可
以查看/proc/cpuinfo看看是否有mce标志,有的话就选吧.如果你十分十分的不幸,选了它之后出现问题,可以在启动
时加nomce参数来关闭它.
Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 应该选择
打开这个选项将会检查你机器上可能存在的问题,如果有一个非致命错误出现将会自动的修复并且记录,这可以帮助
你查出程序出现问题的原因,是一个不错的选项,当然它只能用在AMD Athlon/Duron / Intel Pentium 4这类CPU
上.如果你正好在用它们中的一个你就选吧.

check for P4 thermal throttling interrupt. 应该选择如果打开这个选项,在P4的CPU温度过高(也就是P4的温控装置起作用)时会在屏幕上显示出相关的信息,根据你的情
况选择吧.
Toshiba Laptop support
这个选项是针对Toshiba笔记本的,可以用来访问Toshiba的系统管理模式,也就是可以直接设置BIOS.不过要注意它
只在Toshiba自己的 BIOS中起作用.假如你有一台Toshiba笔记本,可惜它的BIOS是Phoenix的,那这个选项仍然
无用
Dell laptop support
这个同上面的选项基本相同,自己看着办吧
/dev/cpu/microcode - Intel IA32 CPU microcode support

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -