摘要 本文主要介绍了几种减裁Linux核心的方法,可以用于嵌入式系统、嵌入式服务器的核心配置。 -------------------------------------------------------------------------------- By iamafan 1.对于一般PC的普通内核配置
? 杂谝话愕挠没Ф?言,对于Linux内核的效率和大小的要求都不高。因此一般不对内核重新配置,因为Linux安装程序会在安装时对大部分设置按照安装的需求和实际的硬件做缺省设置。这样的内核会比实际需要的繁冗,有很多模块加载后根本就没有用到,但是因为现在的PC的内存一般都是上百MB,而一个Linux内核再大也就是几百K,因此对于一般用户而言,无需再重新编译内核了。 ? 谝惶 3-566的Dell机器安装Red-Hat??7.2,内核版本为2.4.6 ? 韵率且恍└没?的配置: ? oadable? odule? upport??:Y ? etworking? upport:? ? CI? upport:Y ? ystem? ? PC? 因为可以做一些基于System? 的程序 ? ernel? upport? or? .out? inaries:Y ? ernel? upport? or? LF? inaries:Y ? lock? evices? 憾源烁?据该机的硬件做了相应的配置,去除一些本机没有的硬件设备的支持模块。如:Loopback? evice? upport ? etworking? ptions: ? acket? ocket:Y ? CP/IP? etworking:Y ? etwork? irewalls:Y ? he? PX? rotocol:Y ? etwork? evice? upport: ? etwork? evice? upport:Y ? thernet(10? r??100Mb/s):Y ? haracter? evice ? irtual? erminal:Y ? upport? or? onsole? n? irtual? erminal:Y ? ilesystems ? econd? xtended? s? upport:Y ? FAT? s? upport??:m? 收哂惺被嵊玫礁没?上的VFAT分区?? ? ?/proc? ilesystem? upport? ? SO9660? drom? ilesystem? upport:m ? etwork? ile? ystems ? FS? ilesystem? upport:Y ? MB? ilesystem? upport:m ? onsole? rivers ? GA? ext? onsole??:Y ? ideo? ode? election? upport:Y ? ESA? GA? raphics? onsole??:Y ? ernel? acking ? agic? ysRq? ey:Y ? 褂幸恍┤笔〉纳柚帽收呙挥懈摹U庋?编译出来的版本有700K.经过笔者调试过没有出现什么问题。 2.PDA的内核设置 ? DA(Personal? igital? ssist)如:手机,快译通,文曲星等等。这类系统要求系统稳定,内核小而且效率高,常常需要一些特殊的硬件支持。对进程调度、文件系统要求单一,有些就是单进程系统。对网络的支持由根据需要确定。RedHat的内核无法直接用来设计一些特殊要求的PDA,一般还要加入对硬件的特定模块。 ? 勺魅缦律柚茫? ? etworking? upport:Y??:一般PDA都支持上网更新功能 ? ernel? upport? or? LF? inaries??:Y ? ompile? s? LF??–if? our? CC? s? LF-GCC??:Y这两个设置使系统的执行文件都为ELF ? dvanced? ower? anager? ios? upport:Y?? ? lock? evices??:应该加入对硬件特殊的支持模块 ? etworking? ptions ? acket? ocket?? ? ileSystem?? ? econd? xtended? s? upport:Y ? 硗獾囊恍┕δ芪 ,当然一些功能必须选择用来支持上述的模块。编译后为100KB---400KB 3.小型嵌入式系统的内核配置 ? 桓鲂⌒偷那度胧 inux系统只需要下面三个基本元素: ? ? 引导工具? ? Linux微内核,由内存管理、进程管理和事务处理构成? ? 初始化进程
? 绻?要让它能干点什么且继续保持小型化,还得加上: 硬件驱动程序? ? 提供所需功能的一个或更多应用程序。 ? 僭黾庸δ埽?或许需要这些:? 桓鑫募?系统(也许在ROM或RAM)中? CP/IP网络堆栈对该种系统,做了不同的设置: ? 灰?? loppy;不要SMP、MTRR;不要? etworking、SCSI;把所有的? lock? evice? 瞥?,只留下? DE? evice;把所有的? haracter? evice? 瞥?;把所有的? ilesystem? 瞥?,只留下? inix;不要? ound? г?。这样己经把所有的选项都移除了。这样做之后,得到了一个??188K? 暮诵?. ? 严铝辛礁龅蛋钢械模?-O3,-O2? 茫?-Os? 〈?。 ? ?./Makefile ? ?./arch/i386/kernel/ ? akefile ? 庋?一来,整个核心变小了??9K,成为??179K。 ? 还?这个核心恐怕很难发挥? inux? 墓δ埽?因此把网络加回去。把General? etup中的? etwork? upport? 踊厝ィ?重新编译,核心变成??189? 。10K就加上个? CP/IP? tack。? tack没有driver也是枉然,把? mbedded? oard常用的RTL8139的driver加回去,195K. ? 绻?你需要? OS? 蛋赶低常?那大小成为??213K。如果? inix? 茫 xt2? 淮?,则大小成长至??222K。 ? inux所需的内存大约在600K~800K之间。1MB内存就可能可以开机了,但不太有用,因为连载入C程序库都有困难。2MB内存应该就可以做点事了,但要到??4MB以上才可以执行一个比较完整的系统。 ? 蛭 inux的filesystem? 嗟贝螅?大约在??230K? 笥遥?占了??1/3? 奶寤?。内存管理占了80K,和核心其它部分的总和差不多。TCP/IP? tack? 剂?65K,驱动程序占了120K。SysV? PC占了??21K,必要的话可以拿掉,核心档应该可以再小个10K左右。 ? 绻?要裁剪核心大小,应该动那里呢?? 鸢负苊飨裕?当然是文件系统。Linux? 模 FS简化了档案系统的设计,buffer? ache,? irectory? ache增加了系统的效率。但这些embedded系统根本就用处不大。如果可以把它们拿掉,核心可以马上缩小??20K? 笥摇H绻?跳过整个? FS,直接将文件系统写成一个? river? 男褪剑?应该可以将??230K缩减至50K左右。整个核心缩到100K左右。 4.工控机的内核配置 ? 杂诠た鼗?内核,对于内核的大小要求并不严格,关键的是正确性,健壮性和实时性(某些机子要求实时性较高).对文件系统要求单一,但保证正确性.网络按需设置。 ? 勺魅缦屡渲?: ? ymmetric? ulti-processing? upport:Y ? oadable? odule? upport:N? た鼗?一般将可能用到的模块都全部装入内存. ? etworking? upport:Y ? ystem? ? PC??:Y ? ernel? upply? or? LF? inaries:Y ? lock? evices:根据具体硬件配置 ? etworking? ptions ? acket? ocket:Y ? ?据具体需要,一般工控机是通过LAN连接,与外界隔离故要IPX协议,另外Tcp/ip一般也需要. ? oS? nd/or? air? ueueing:Y ? oS(Quality? f? ervice??)? nd? air? ueueling? 且恢峙哦?某种封包先送的网络线程表,可同时针对多个网络封包处理并依优先处理顺序来排序,称之为packet? chedulers.此功能特别是针对实时系统时格外重要,当多个封包同时送到网络设备时,Kernel可以适当的决定出哪一个封包必须优先处理.因此Kernel提供数种packet? cheduling? lgorithm. ? ilesystems ? econd? xtended? s? upport:Y ? 溆嗯渲煤托⌒颓度胧较低巢畋鸩淮?.同一台机器上编译出来的内核大小为800多KB。 5.服务器的内核配置: ? ? ? ?务器的内核对网络设置和进程调度都非常关键.做如下配置: ? ymmetric? ulti-processing? upport:Y ? oadable? odule? upport:Y ? etworking? upport:Y ? etworking? ption ? acket? ocket:Y。 ? CP/IP? etworkeing:Y ? etwork? irewalls:是否采用网络防火墙。如果计算机想当firewalls? erver? 蛘呤谴τ CP/IP? ㄐ判?议的网络的网路结构下,这一项要选[Y] ? etwork? liasing[Y/m/n/?]:一台网络上的计算机可以拥有多组IP地址。如果计算机想拥有多个IP地址,就选择[Y]. ? P:forwarding/gatewaying[Y/m/n/?]:假如用户想当路由器的话,选择[Y],但先决条件是有“两张”网卡,一张对外部网络、一张对内部网络,并且使用的ISP那一端也必须设定routing,允许用户这台路由器才行。 ? P:multicasting:可以一次就完成传送一个packet到好几台计算机的操作。 ? P:syn_cookies:一种保护措施,将各种TCP/IP的通信协议加密,防止Attacker攻击用户的计算机,并且可以纪录企图攻击用户的计算机的IP地址。 ? P:firewalling:该台计算机是否是防火墙服务器。 ? P:firewall? acket? ogging:是否由klogd记录防火墙服务器到底接收了哪些Packet。 ? P:? asquerading:可以将内部网络的计算机送出去的封包,通过防火墙服务器直接传递给远端的计算机,而远端的计算机看到的就是接收到的防火墙服务器送过来的封包,而不是从内部的计算机送过来的。这样如果内部只有一台计算机可以上网,其余的机器可以通过这台机子的防火墙服务器向外连线。选择这个选项必需先确定先前的Network? irewalls? P:forwarding/gatewaying? P:firewalling? 馊?个选项选[Y]。以及下一个选项IP:always? eframent? 惨?选[Y]. ? P:ICMP? asquerading:? 话 asquerading? 惶峁┐?理TCP,UDP? ackets,若要让masqurerading? 材艽?理ICMP? ackets,这个选项要选[Y]. ? P:always? efragment:可将接收到的packet? ragments重新组合回原来那个封包。 ? P:accounting:统计IP? acket的流量,也就是网络的流通情况。 ? P:optimize? s? outer? ot? ost:可以关闭copy&checksum技术,防止流量大的服务器的IP? ackets丢失。 ? P:tunneling:可在不同网域中使用linux,且都不用改IP就可以直接上网了。适合于笔记本型计算机用户。 ? P:Reverse? RP??:主要是提供bootp的功能,让计算机从可以从网卡的Boot? am启动。 ? P:Disable? ath? TU? iscovery:是否取消Path? TU? iscovery.MTU? 兄?于处理拥挤的网络。 ? he? PX? rotocol:IPX为Netware? ?络使用的通讯协议。 ? 溆喔?据需要设置。编译出的内核为800K。
|