Linux内核配置文档.docx
《Linux内核配置文档.docx》由会员分享,可在线阅读,更多相关《Linux内核配置文档.docx(43页珍藏版)》请在冰豆网上搜索。
Linux内核配置文档
Linux内核配置文档
一、引言:
本文档的内容大部份内容都是从网上收集而来,然后配合一些新的截图(内核版本:
V2.4.19)。
在每一配置项后会有一个选择指南的部份,用来指导大家怎么样根据自己的情况来做相应的选择;还有在每一个大项和文档的最后会有一个经验谈,它是一些高手们在应对问题和处理特有硬件时的一些经验(这个还得靠各位)。
文档最后会发到网上,到时会根据网友们的回复随时进行更新。
二、配置内核:
Codematurityleveloptions:
代码成熟等级。
1.1.promptfordevelopmentand/orincompletecode/drivers.
如果要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。
在Linux的世界里,每天都有许多人为它发展支持的driver和加强它的核心。
但是有些driver还没进入稳定的阶段。
但其作者很欢迎其他人去测试这些driver并提出一些bugs。
这个问题是说,有一些drive还在做测试中,问您是否要选择这些drive或支持的程序码。
如果键入Y,往后将会出现一些还在测试中的东西给您做选择。
(像Java的程序码和PCIbridge),台则就键入N。
经验谈:
Generalsetup
[*]Supportforpagingofanonymousmemory(swap)
这个选项将使你的内核支持虚拟内存,也就是让你的计算机好象拥有比实际内存更多多的内存空间用来执行很大的程序。
默认是选择的。
[*]SystemVIPC
为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。
有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。
[*]POSIXMessageQueues应该选择
[*]BSDProcessAccounting
这里选择Y将会让内核为用户层的进程建立一个帐目(进程通过一个特殊的系统调用来通知内核),
当程序退出时内核会将进程的相关信息记录到帐目文件中,主要包括进程的创建时间、创建者内存占用等信息。
如果你需要就Y吧
[*]Sysctlsupport
这将提供一个接口让你可以动态的更改一些核心参数与变量,
而不需要重新启动系统。
打开这个选项将会增加内核的体积至少8KB。
如果你的内核仅用制作安装与恢复系统系统盘那么可以不选,以减少对内存的占用。
[*]Auditingsupport审核的,一般不用选择了
[*]Enablesystem-callauditingsupport不用选择了
(17)Kernellogbuffersize(16=>64KB,17=>128KB)不用选择了
[*]Supportforhot-pluggabledevices支持热插拔的,最好选择
[*]Kernel.configsupport不用选择
这会把内核的配置信息与相关的文档说明编译进内核中,
以后可以使用一些工具来提取它用来重新构建内核,一般不用选它。
[*]Enableaccessto.configthrough/proc/config.gz不用选择
这个和上面的那个一样把说明文档放在/proc中,所以可以不用选它
[*]Configurestandardkernelfeatures(forsmallsystems)--->
为小系统设计的,不用选择了吧
---Configurestandardkernelfeatures(forsmallsystems)
[*]Loadallsymbolsfordebugging/kksymoops(NEW)不用选择
[*]Enablefutexsupport(NEW)不用选择
Futex(fastuserspacemutex)不用选择
[*]Enableeventpollsupport(NEW)不用选择
[*]No-opI/Oscheduler(NEW)不用选择
[*]AnticipatoryI/Oscheduler(NEW)不用选择
[*]DeadlineI/Oscheduler(NEW)不用选择
[*]CFQI/Oscheduler(NEW)不用选择
[*]Optimizeforsize内核尺寸最优化,一般不用选择吧
1.Loadablemodulesupport:
对模块的支持。
预备知识:
模块就像你特意插入核心中的某些东西,如果办公室有一个小网络并且有时想用一下(但并不经常),也许你想把网卡编译成一个模块。
使用这个模块,机器必运行和存取/libs下的模块,意思是驱动程序(IDE,SCSI等但必须是NFS支持的网卡),文件系统(通常是ext2但也可以是nfs)和核心类型(最好是elf)必须编译在内核并且不能是模块,模块只有核心引导时才起作用,驱动程序(来网络)的存取,和文件系统安装。
这些文件必须编译在核心内否则将能安装启动分区。
如果安装启动分区和网络,你需要网络系统文件,和己经编译的网卡。
为什么要使用模块?
模块化使核心变的更简捷,它减少核心释放大量的受保护的空间。
模块的安装和卸载使用的空间是可重复分配利用的。
如果你打开机器有90%以上的时间用到一个模块,编译它。
运用这类模块是浪费内存的,原因是一旦你编译了模块它们同样将占用大量的内存,核心需要一些代码来挂上模块。
记住,核心在保护空间运行,但模块并不是。
这么说,并不经常使用我的设备,把它编译成只支持ext2,ide和elf。
而一直使用的网卡,把其它的编译成模块:
如a.out,java,floppy,iso9960,msdos,minix,vfat,smb,nfs,smcultra(ethernetcard),serial,printer,sound,ppp,等等。
它们许多只是在这或那用上那么几分钟。
严格的说,这样做会使核心增大许多而降低它的执行速度。
这时我们就可以把这些可能会用的驱动程序编译成一个—个的模块,在需要用的时候才用insmod这个指令加入核心,不用的时候也能rmmod把它从核心移除,或是用lsmod察看目前所载入的模块。
2.1.Enableloadablemodulesupport.
除非准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
2.2.Setversioninformationonallmodulesymbols.
通常,我们更新核心版本之后,模块耍重新的编译。
这个选项使您不必更新编译模块而能使用以前的模块。
可以不选它。
但如果您选y,则按照它的说明,您必须有genksyms这个程序(可用whereis指令查看有无此程序)。
2.3.Kernelmoduleloader.
让内核在启动时有自己装入必需模块的能力,建议选上。
注意:
在开机就会mount上来的partition的FS、devicedriver记得要compiler进kernel,不能把它弄成modules。
请不要夸张到为了完全模组化而忘了把ext2fs和IDEdirvercompiler进kernel里。
经验谈:
a.可加载模块是指内核代码(kernelcode)的一些片断,比如驱动程序,当编译内核的时候它们也被单独编译。
因此,这些代码不是内核的一部分,但是当你需要它的时候,它可以被加载并使用。
通常的建议是如果可能,将内核代码编译成可加载模块,因为这样可以使内核更小,而且更稳定。
警告!
千万不要将文件系统(FileSystem)部分的代码编译为可加载模块,如果你犯了这个错误,将文件系统(FileSystem)部分的代码编译为可加载模块,结果将是内核无法读取它自己的文件系统。
然后内核无法加载它自己的配置文件——一些很明显是在正常启动Linux时所必需的东西。
我很少使用可加载模块:
我喜欢我的内核能够直接和硬件对话,但这只是我自己的偏好。
2.Processortypeandfeatures:
处理器类型和特色。
3.1.Processorfamily.
它会对每种CPU做最佳化,让它跑得快又好。
一般来说,没有选择正确的CPU并不会有重大的影响(特别是选择386,这样编译出来的核心也许会比较小但它的速度可能就会变慢了)。
所以,最好要知道您的CPU是哪一种。
不过,如果您的gCC编译器是2.7.0版以前的。
那么只能选择386或是486。
通常“/dev/cpu”选项更高级,多数用户并不需要选择它。
3.2.HighMemorySupport.
只有当你的计算机有超过1GB内存(不是磁盘空间)时才是必须的。
多数计算机的内存从64到512MB(并且拥有8到60GB硬盘空间),因此“HighMemorySupport”通常并不使用。
3.3.Mathemulation.
这项询问是否需L1nux核心模拟数学浮点运算器。
如果有486Dx、AMD以及Pentium机器的话,这个选项就不必选了,因为它们都有内建的浮点运算器。
协处理器是在386时代的宠儿,现在早已不用了。
不过,对于有内建浮点运算器的人来说,选了这个选项并不会因此让内建的浮点运算器失效。
但它会增大核心约45KB。
3.4.MTTR(memorytyperangeregister)support.
这项允许在PCI或者AGP总线众进行更快速的通讯。
由于现在所有系统都将它们的显卡接在PCI或AGP总线上,你通常需要选择“MTRR”:
无论如何,打开这个选项通常都是安全的——即使你的机器没有使用PCI或AGP总线的显卡
3.5.Symmetricmulti-processingsupport.
选项保证内核能够以最佳方式加载多处理器。
除非有多个CPU,否则就不用选了。
3.6.MutiquadNUMAsystem.
通常也需要多处理器,但它通常是关闭的。
经验谈:
3.Generalsetup:
常规内核选项。
4.1.Networkingsupport.
通常每个人都会选择“Networkingsupport”,因为你通常需要它,比如Internel。
Linux有很重的Internet偏向,而且它在没有联网的情况下无法充分发挥优势。
另外,许多其他的操作也网络支持——即使它们看上去跟网络没多大关系。
内核在没有网络支持选项的情况下甚至无法编译。
简而言之:
一定要打开“Networkingsupport”选项。
4.2.PCIsupport.
现在的所有系统都使用PCI总线,所以你应该选择相关选项。
4.3.PCIaccessmode.
PCI存取模式。
可供选择的有BIOS、Direct和Any,选Any吧。
4.4.Supportforhot-pluggabeldevices.
热插拔设备支持。
支持的不是太好,可不选。
4.5.PCMCIA/CardBussupport------>PCMCIA/CardBussupport.
有PCMCIA就必选了。
4.6.SystemVIPC.
如果将来想编译dosemu(DOS模拟器),则这个选项一定要选,它是一个让各个程序(process)同步且能彼此交换数据的函数库和一些系统的调用,没它,很多的程序将会无法执行。
4.7.BSDProcessAccounting.
4.8.Sysctlsupport.
除非你的内存少的可怜,否则你应该启动这个功能,启用该选项后内核会大8K,但能让你直接改变内核的参数而不必重新开机。
以上三项是有关进程处理/IPC调用的,主要就是SystemV和BSD两种风格。
如果你不是使用BSD,就按照缺省吧。
4.9.Kernelcore(/proc/kcore/)format.
现在的Linux发行版以ELF格式作为它们的“内核核心格式”。
4.10.KernelsupportforA.OUTbinaries.
a.out的执行文件是比较古老的可执行码,用在比较早期的UNIX系统上。
Linux最初也是使用这种码来执行程序,一直到ELF格式的可执行码出来后,有愈来俞多的程序码随着ELF格式的优点而变成了ELF的可执码。
将来势必完全取代a.out格式的可执行码。
但目前由于沿有许多的程序还没有取代过来,所以只好选择Y,等将来有一天,全部的程序都变成了ELF的天下时,那时再disable掉。
4.11.PowerManagementsupport.
电源管理支持。
4.12.AdvancedPowerManagementBIOSsupport.
高级电源管理BIOS支持。
这通常是用在笔记本电脑上的东西,如果您有APM的BIOS,支持省电的设备的(有电池的那种),那么您可以选上这项,一般人这一项是选n,以避免一些可能会发生的问题。
后有8个选项。
ATX主板需要这两个选项来自动关闭计算机(turnoffthecomputer,包括关闭电源)。
经验谈:
4.MemoryTechnologyDevices(MTD):
配置存储设备。
5.1.MemoryTechnologyDevices(MTD)support.
你需要这个选项来使Linux可以读取闪存卡(FlashCard)之类的存储器。
闪存卡通常用于数码相机。
通过这个选项,Linux可以读取闪存卡(从特殊的设备中,比如读卡机),并且将图片保存为.jpg格式。
除非你确定你需要它,否则不必打开它:
如果你发现自己需要,你可以在以后加上。
5.Parallelportsupport:
配置并口。
6.1.Parallelportsupport.
如果不打算使用,就别选了。
6.PlugandPlayconfiguration:
即插即用支持。
7.1.PlugandPlaysupport.
几乎所有人都有即插即用设备,因此需要这个选项的支持。
打开这个选项使内核能够自动配置即插即用设备并且使它们在系统中能够使用。
有时需要在BIOS中打开“Plug&PlayOS”,否则Linux(当然Windows也一样)无法配置即插即用设备。
7.2.ISAPlug&Playsupport.
选项需要以即插即用模式运行的ISA卡(ISACard)。
例如AWE64声卡。
ISA总线(ISAbus)从来都没有即插即用标准,这增加了配置这些板卡的难度。
在2.4.x内核之前的早些时候,Linux用户在启动时必须呼叫(call)“isapnp”程序(isapnptools包,使用rpmqilisapnptools查看包含的所有文件)。
“isapnp”读取“/etc/isapnp.conf”文件。
这个文件包含不同板卡使用的所有端口,地址和中断。
如果/etc/isapnp.conf中的信息不正确,或者“isapnp”没有被激活,即插即用设备就无法使用,甚至网卡、modem、声卡也无法工作。
打开“ISAPlug&Playsupport”选项来代替以前的工序:
不再需要/etc/isapnp.conf文件。
检测和配置工作都自动进行。
在SuSE7.1中,在编译2.4.x内核后我必须重命名/etc/isapnp.conf为“/etc/isapnp.conf.old”之类的名称。
因为内核和“isapnp”使用相同的资源,造成很惨的后果。
问题在于SuSE7.1(以及更老的版本)在启动时自动激活“isapnp”,即使内核已经包括了对即插即用的必要支持。
这只是对于老Linux系统而言,新的系统默认不使用“isapnp”。
7.Blockdevices:
块设备支持。
8.1.NormalPCfloppydisksupport.
普通PC软盘支持。
每个人都要使用软盘(floppy),所以这个选项要打开(或者,象我这样,作为一个可加载模块)。
倘若/etc/modules.conf或者/etc/conf.modules文件在你的Linux发行版中已经被适当配置了,当需要访问软盘的时候,内核会自动加载必须的模块。
其他的选项在你使用并口链接IDE存储设备的时候是必需的,但是它们通常是关闭的。
“loopbackdevicesupport”选项可能例外。
在Linux下,刻录(burn)光盘之前你通常需要制作一个光盘镜像,在查看镜像文件的内容时需要“loopbackdevice”。
我选择了这个选项作为可加载模块。
8.2.XTharddisksupport.
支持XT的古董硬盘,这是IBM电脑时代的东西,如果您还有这种很旧很旧的硬盘。
那么,您可以把它编进核心或是编成一个模块。
大部分的人这个选项都是选择N的。
8.3.Loopbackdevicesupport.
这个选项的意思是说,可以将一个文件挂成一个文件系统。
如果要烧光盘片的,那么您很有可能在把一个文件烧进去之前,看看这个文件是否符合IS09660的文件系统的内容,是否符合您的需求。
而且,可以对这个文件系统加以保护。
不过,如果您想做到这点的话,您必须有最新的mount程序,版本是在2.5X版以上的。
而且如果您希望对这个文件系统加上保护,则您必须有des.1.tar.gz这个程序。
注意:
此处与网络无关。
8.Multipledevicesdriversupport:
多设备驱动支持。
9.1.Multipledevicesdriversupport.
普通Linux用户通常不需要RAID(廉价冗余磁盘阵列)或者LVM支持。
“RAID”的意思是系统使用两块或两块以上硬盘存储并行信息。
当一块磁盘出现问题的时候另一块可以继续工作,系统不停顿。
LVM让使用增加一块硬盘来扩展一个分区成为可能。
。
在实际应用中,这意味着你不必重新分区或将一个小的分区复制到一个大分区中。
路径名也不会改变。
这可能会十分方便,但是普通用户并不需要它。
9.Networkingoptions:
网络选项。
10.1.PacketSocket.
选择“Y”,你需要这个选项来与网卡进行通信而不需要在内核中实现网络协议。
在这里我可以简捷一些:
一般情况下,打开这个选项。
大多数选项是关闭的,除非你需要特殊的支持。
10.2.TCP/IPnetworking.
选择“Y”,内核将支持TCP/IP协议。
这个选项无论如何请您选择Y,即使没有网络卡,或是没有连到网络上的设备,在linux上仍有所谓的lookback设备而且有些程序需要这个选项。
在说明文件中提到,如果您没有打开这个设定,则X-windowsystem可能会有问题(回为它也需要TCP/IP)。
10.3.IP:
multicasting.
所谓的multicasting是群组广播,它是用在视频会议上的协议,如果想送一个网络封包(网络的数据),同样的一份数据将送往十部机器上。
您可以连续送十次给十台机器(点对点的传送),也可以同时送一次,然后让十台机器同时接收到。
当然后者比前者好,由于视频会议要求是最好每个人都能同时收到同一份信息,所以如果您有类似的需要,这个选项就要打开。
同时您还必须去找相关的软件。
经验谈:
a.我选择了“Networkpacketfiltering(replacesipchains)”,因为我使用了SuSE的标准防火墙(StandardFirewall)。
防火墙可以保护你的机器不受来自外部Internet的攻击——至少当你正确配置了防火墙的时候是如此。
内核级的防火墙保护显然是十分优越的。
为了使防火墙能够正常工作,SuSELinux需要对ipchains的兼容支持(BackwardsSupport)。
因此,我为我的SuSELinux打开了这个选项。
如果你也在其他发行版中使用了防火墙,请参考它们的手册。
你需要“Unixdomainsockets”来进行网络链接,但也可以使用其他的东西:
XWindow要自动使用Unixsockets,所以如果没有打开这个选项,XWindow将无法启动。
通常这个选项是打开的。
“TCP/IPnetworking”选项包括了Internet和内部网络所需要的协议。
通常你会希望激活TCP/IP支持。
如果你不确定是否应该打开一个选项,参考一下帮助文档。
如果你还是不知道是否应该打开它,一般来说,就把它打开,然后通过试用来决定是否保留。
将某些特定的选项编译为模块也是一个很好的办法。
10.TelephonySupport:
电话支持。
11.1.LinuxTelephonySupport.
这个选项只有当你在计算机中使用电话卡的时候才有用,比如在Internet上打电话。
大多数普通用户没有电话卡,因此不需要这个选项。
11.ATA/IDE/MFM/RLLsupport:
配置对ATA,IDE,MFM和RLL的支持。
12.1.ATA/IDE/MFM/RLLsupport.
几乎每个人都需要这些协议,除非你的机器只有SCSI硬盘而没有其他任何类型的硬盘。
因此,大多数用户都应该把它打开。
点击它下面的那一栏将会出现一个有更详细配置选项的菜单。
仔细填写它们:
它们极为重要!
12.2.EnhancedIDE/MFM/RLLdisk/cdrom/tape/floppysupport.
选项是每个使用IDE/ATAPI界面的人都需要的。
包括硬盘,磁带机,ZIP盘,光驱(CDROM)和刻录机(CD-R(W))。
基本上现在的所有计算机(译者注:
这里指的是PC)都使用IDE/ATAPI界面,因此这个选项必须打开。
12.3.IncludeIDE/ATA-2DISKsupport.
选项在支持硬盘的时候需要。
因此这个选项也必须打开,除非你的机器是一个纯粹的SCSI系统。
其它的就使用缺省的选项吧,如果你使用了比较特殊的设备,比如PCMCIA等,就到里面自己找相应的选项吧。
经验谈:
a.如果你有ATAPICDROM的话,应该打开“includeIDE/ATAPICDROMsupport”选项。
ATAPI的CD-R(W)需要仿真为SCSI的才能被访问。
SCSI仿真可以用来访问CDROM和CD-R(W)。
如果你使用仿真SCSI的方式来访问CDROM,你将会遇到问题,比如当你挂载(mount)CD的时候出现错误信息(ErrorMessage),或者使用CDROM播放CD唱片(AudioCD)最好的办法是象图这样,将“includeIDE/ATAPICDROMsupport”和“SCSIemulationsupport”选项都打开。
需要SCSI仿真的设备通常是CD-R(W),可以在/etc/lilo.conf中加入“append="hdd=ide-scsi":
”行进行定义,这将在“配置lilo”中进行讨论。
因为我有一个使用ATAPI界面的内置ZIP驱动器,所以我把“includeIDE/ATAPIFLOPPYsupport”选项打开。
如果你有软盘类的驱动器(译者注:
包括ZIP盘、LS-120等大容软驱,但不包括MO磁光盘)。
大部分主板