×
嵌入式开发 > 详情

嵌入式Linux研究-对几种典型的系统的内核配置方案

摘要
本文主要介绍了几种减裁Linux核心的方法,可以用于嵌入式系统嵌入式服务器的核心配置。

By iamafan


1.对于一般PC的普通内核配置

ue5e5ue5e5对于一般的用户而言,对于Linux内核的效率和大小的要求都不高。因此一般不对内核重新配置,因为Linux安装程序会在安装时对大部分设置按照安装的需求和实际的硬件做缺省设置。这样的内核会比实际需要的繁冗,有很多模块加载后根本就没有用到,但是因为现在的PC的内存一般都是上百MB,而一个Linux内核再大也就是几百K,因此对于一般用户而言,无需再重新编译内核了。

ue5e5ue5e5在一台P3-566的Dell机器安装Red-Hatue5e57.2,内核版本为2.4.6

ue5e5ue5e5以下是一些该机的配置:

ue5e5ue5e5Loadableue5e5moduleue5e5supportue5e5:Y

ue5e5ue5e5Networkingue5e5support:ue5e5Y

ue5e5ue5e5PCIue5e5support:Y

ue5e5ue5e5Systemue5e5Vue5e5IPCue5e5:Y因为可以做一些基于Systemue5e5V的程序

ue5e5ue5e5Kernelue5e5supportue5e5forue5e5a.outue5e5binaries:Y

ue5e5ue5e5Kernelue5e5supportue5e5forue5e5ELFue5e5binaries:Y

ue5e5ue5e5Blockue5e5devicesue5e5:对此根据该机的硬件做了相应的配置,去除一些本机没有的硬件设备的支持模块。如:Loopbackue5e5deviceue5e5support

ue5e5ue5e5Networkingue5e5options:

ue5e5ue5e5ue5e5Packetue5e5socket:Y

ue5e5ue5e5ue5e5TCP/IPue5e5networking:Y

ue5e5ue5e5ue5e5Networkue5e5firewalls:Y

ue5e5ue5e5ue5e5Theue5e5IPXue5e5protocol:Y

ue5e5ue5e5Networkue5e5deviceue5e5support:

ue5e5ue5e5ue5e5Networkue5e5deviceue5e5support:Y

ue5e5ue5e5ue5e5Ethernet(10ue5e5orue5e5100Mb/s):Y

ue5e5ue5e5Characterue5e5device

ue5e5ue5e5ue5e5Virtualue5e5terminal:Y

ue5e5ue5e5ue5e5Supportue5e5forue5e5consoleue5e5onue5e5virtualue5e5terminal:Y

ue5e5ue5e5Filesystems

ue5e5ue5e5ue5e5Secondue5e5extendedue5e5fsue5e5support:Y

ue5e5ue5e5ue5e5VFATue5e5fsue5e5supportue5e5:mue5e5笔者有时会用到该机上的VFAT分区ue5e5

ue5e5ue5e5ue5e5/procue5e5filesystemue5e5supportue5e5Y

ue5e5ue5e5ue5e5ISO9660ue5e5cdromue5e5filesystemue5e5support:m

ue5e5ue5e5Networkue5e5Fileue5e5Systems

ue5e5ue5e5ue5e5NFSue5e5filesystemue5e5support:Y

ue5e5ue5e5ue5e5SMBue5e5filesystemue5e5support:m

ue5e5ue5e5Consoleue5e5drivers

ue5e5ue5e5ue5e5VGAue5e5textue5e5consoleue5e5:Y

ue5e5ue5e5ue5e5Videoue5e5modeue5e5selectionue5e5support:Y

ue5e5ue5e5ue5e5VESAue5e5VGAue5e5graphicsue5e5consoleue5e5:Y

ue5e5ue5e5Kernelue5e5hacking

ue5e5ue5e5ue5e5Magicue5e5SysRque5e5key:Y

ue5e5ue5e5还有一些缺省的设置笔者没有改。这样编译出来的版本有700K.经过笔者调试过没有出现什么问题。

2.PDA的内核设置

ue5e5ue5e5PDA(Personalue5e5Digitalue5e5Assist)如:手机,快译通,文曲星等等。这类系统要求系统稳定,内核小而且效率高,常常需要一些特殊的硬件支持。对进程调度、文件系统要求单一,有些就是单进程系统。对网络的支持由根据需要确定。RedHat的内核无法直接用来设计一些特殊要求的PDA,一般还要加入对硬件的特定模块。

ue5e5ue5e5可作如下设置:

ue5e5ue5e5Networkingue5e5support:Yue5e5:一般PDA都支持上网更新功能

ue5e5ue5e5Kernelue5e5supportue5e5forue5e5ELFue5e5binariesue5e5:Y

ue5e5ue5e5Compileue5e5asue5e5ELFue5e5–ifue5e5yourue5e5GCCue5e5isue5e5ELF-GCCue5e5:Y这两个设置使系统的执行文件都为ELF

ue5e5ue5e5Advancedue5e5Powerue5e5Managerue5e5Biosue5e5support:Yue5e5

ue5e5ue5e5Blockue5e5devicesue5e5:应该加入对硬件特殊的支持模块

ue5e5ue5e5Networkingue5e5options

ue5e5ue5e5ue5e5Packetue5e5socketue5e5

ue5e5ue5e5FileSystemue5e5

ue5e5ue5e5ue5e5Secondue5e5extendedue5e5fsue5e5support:Y

ue5e5ue5e5另外的一些功能为N,当然一些功能必须选择用来支持上述的模块。编译后为100KB---400KB

3.小型嵌入式系统的内核配置

ue5e5ue5e5一个小型的嵌入式Linux系统只需要下面三个基本元素:

ue5e5ue5e5
引导工具ue5e5ue5e5
Linux微内核,由内存管理、进程管理和事务处理构成ue5e5ue5e5
初始化进程
ue5e5ue5e5如果要让它能干点什么且继续保持小型化,还得加上:

ue5e5ue5e5
硬件驱动程序ue5e5ue5e5
提供所需功能的一个或更多应用程序。
ue5e5ue5e5再增加功能,或许需要这些:ue5e5一个文件系统(也许在ROM或RAM)中ue5e5TCP/IP网络堆栈对该种系统,做了不同的设置:

ue5e5ue5e5不要ue5e5floppy;不要SMP、MTRR;不要ue5e5Networking、SCSI;把所有的ue5e5blockue5e5deviceue5e5移除,只留下ue5e5IDEue5e5device;把所有的ue5e5characterue5e5deviceue5e5移除;把所有的ue5e5filesystemue5e5移除,只留下ue5e5minix;不要ue5e5soundue5e5支援。这样己经把所有的选项都移除了。这样做之后,得到了一个ue5e5188Kue5e5的核心.

ue5e5ue5e5把下列两个档案中的ue5e5-O3,-O2ue5e5用ue5e5-Osue5e5取代。

ue5e5ue5e5ue5e5./Makefile
ue5e5ue5e5ue5e5./arch/i386/kernel/
ue5e5ue5e5ue5e5Makefile

ue5e5ue5e5这样一来,整个核心变小了ue5e59K,成为ue5e5179K。

ue5e5ue5e5不过这个核心恐怕很难发挥ue5e5Linuxue5e5的功能,因此把网络加回去。把Generalue5e5setup中的ue5e5networkue5e5supportue5e5加回去,重新编译,核心变成ue5e5189ue5e5K。10K就加上个ue5e5TCP/IPue5e5stack。ue5e5有stack没有driver也是枉然,把ue5e5embeddedue5e5board常用的RTL8139的driver加回去,195K.

ue5e5ue5e5如果你需要ue5e5DOSue5e5档案系统,那大小成为ue5e5213K。如果ue5e5minixue5e5用ue5e5ext2ue5e5换代,则大小成长至ue5e5222K。

ue5e5ue5e5Linux所需的内存大约在600K~800K之间。1MB内存就可能可以开机了,但不太有用,因为连载入C程序库都有困难。2MB内存应该就可以做点事了,但要到ue5e54MB以上才可以执行一个比较完整的系统。

ue5e5ue5e5因为Linux的filesystemue5e5相当大,大约在ue5e5230Kue5e5左右,占了ue5e51/3ue5e5的体积。内存管理占了80K,和核心其它部分的总和差不多。TCP/IPue5e5stackue5e5占了65K,驱动程序占了120K。SysVue5e5IPC占了ue5e521K,必要的话可以拿掉,核心档应该可以再小个10K左右。

ue5e5ue5e5如果要裁剪核心大小,应该动那里呢?ue5e5答案很明显,当然是文件系统。Linuxue5e5的ue5e5VFS简化了档案系统的设计,bufferue5e5cache,ue5e5directoryue5e5cache增加了系统的效率。但这些embedded系统根本就用处不大。如果可以把它们拿掉,核心可以马上缩小ue5e520Kue5e5左右。如果跳过整个ue5e5VFS,直接将文件系统写成一个ue5e5driverue5e5的型式,应该可以将ue5e5230K缩减至50K左右。整个核心缩到100K左右。

4.工控机的内核配置

ue5e5ue5e5对于工控机内核,对于内核的大小要求并不严格,关键的是正确性,健壮性和实时性(某些机子要求实时性较高).对文件系统要求单一,但保证正确性.网络按需设置。

ue5e5ue5e5可作如下配置:

ue5e5ue5e5Symmetricue5e5multi-processingue5e5support:Y

ue5e5ue5e5Loadableue5e5moduleue5e5support:Nue5e5工控机一般将可能用到的模块都全部装入内存.

ue5e5ue5e5Networkingue5e5support:Y

ue5e5ue5e5Systemue5e5Vue5e5IPCue5e5:Y

ue5e5ue5e5Kernelue5e5supplyue5e5forue5e5ELFue5e5binaries:Y

ue5e5ue5e5Blockue5e5devices:根据具体硬件配置

ue5e5ue5e5Networkingue5e5options

ue5e5ue5e5ue5e5packetue5e5socket:Y

ue5e5ue5e5ue5e5根据具体需要,一般工控机是通过LAN连接,与外界隔离故要IPX协议,另外Tcp/ip一般也需要.

ue5e5ue5e5ue5e5QoSue5e5and/orue5e5fairue5e5queueing:Y

ue5e5ue5e5ue5e5QoS(Qualityue5e5Ofue5e5Serviceue5e5)ue5e5andue5e5fairue5e5queuelingue5e5是一种排定某种封包先送的网络线程表,可同时针对多个网络封包处理并依优先处理顺序来排序,称之为packetue5e5schedulers.此功能特别是针对实时系统时格外重要,当多个封包同时送到网络设备时,Kernel可以适当的决定出哪一个封包必须优先处理.因此Kernel提供数种packetue5e5schedulingue5e5algorithm.

ue5e5ue5e5Filesystems

ue5e5ue5e5ue5e5Secondue5e5Extendedue5e5fsue5e5support:Y

ue5e5ue5e5其余配置和小型嵌入式系统差别不大.同一台机器上编译出来的内核大小为800多KB。

5.服务器的内核配置:

ue5e5ue5e5ue5e5ue5e5
ue5e5ue5e5服务器的内核对网络设置和进程调度都非常关键.做如下配置:

ue5e5ue5e5Symmetricue5e5multi-processingue5e5support:Y

ue5e5ue5e5Loadableue5e5moduleue5e5support:Y

ue5e5ue5e5Networkingue5e5support:Y

ue5e5ue5e5Networkingue5e5option

ue5e5ue5e5ue5e5Packetue5e5socket:Y。

ue5e5ue5e5ue5e5TCP/IPue5e5networkeing:Y

ue5e5ue5e5ue5e5Networkue5e5firewalls:是否采用网络防火墙。如果计算机想当firewallsue5e5serverue5e5或者是处于TCP/IPue5e5通信协议的网络的网路结构下,这一项要选[Y]

ue5e5ue5e5ue5e5Networkue5e5aliasing[Y/m/n/?]:一台网络上的计算机可以拥有多组IP地址。如果计算机想拥有多个IP地址,就选择[Y].

ue5e5ue5e5ue5e5IP:forwarding/gatewaying[Y/m/n/?]:假如用户想当路由器的话,选择[Y],但先决条件是有“两张”网卡,一张对外部网络、一张对内部网络,并且使用的ISP那一端也必须设定routing,允许用户这台路由器才行。

ue5e5ue5e5ue5e5IP:multicasting:可以一次就完成传送一个packet到好几台计算机的操作。

ue5e5ue5e5ue5e5IP:syn_cookies:一种保护措施,将各种TCP/IP的通信协议加密,防止Attacker攻击用户的计算机,并且可以纪录企图攻击用户的计算机的IP地址。

ue5e5ue5e5ue5e5IP:firewalling:该台计算机是否是防火墙服务器。

ue5e5ue5e5ue5e5IP:firewallue5e5packetue5e5logging:是否由klogd记录防火墙服务器到底接收了哪些Packet。

ue5e5ue5e5ue5e5IP:ue5e5masquerading:可以将内部网络的计算机送出去的封包,通过防火墙服务器直接传递给远端的计算机,而远端的计算机看到的就是接收到的防火墙服务器送过来的封包,而不是从内部的计算机送过来的。这样如果内部只有一台计算机可以上网,其余的机器可以通过这台机子的防火墙服务器向外连线。选择这个选项必需先确定先前的Networkue5e5Firewallsue5e5IP:forwarding/gatewayingue5e5ue5e5IP:firewallingue5e5这三个选项选[Y]。以及下一个选项IP:alwaysue5e5deframentue5e5也要选[Y].

ue5e5ue5e5ue5e5IP:ICMPue5e5masquerading:ue5e5一般masqueradingue5e5只提供处理TCP,UDPue5e5packets,若要让masqureradingue5e5也能处理ICMPue5e5packets,这个选项要选[Y].

ue5e5ue5e5ue5e5IP:alwaysue5e5defragment:可将接收到的packetue5e5fragments重新组合回原来那个封包。

ue5e5ue5e5ue5e5IP:accounting:统计IPue5e5packet的流量,也就是网络的流通情况。

ue5e5ue5e5ue5e5IP:optimizeue5e5asue5e5routerue5e5notue5e5host:可以关闭copychecksum技术,防止流量大的服务器的IPue5e5packets丢失。

ue5e5ue5e5ue5e5IP:tunneling:可在不同网域中使用linux,且都不用改IP就可以直接上网了。适合于笔记本型计算机用户。

ue5e5ue5e5ue5e5IP:Reverseue5e5ARPue5e5:主要是提供bootp的功能,让计算机从可以从网卡的Bootue5e5Ram启动。

ue5e5ue5e5ue5e5IP:Disableue5e5Pathue5e5MTUue5e5Discovery:是否取消Pathue5e5MTUue5e5Discovery.MTUue5e5有助于处理拥挤的网络。

ue5e5ue5e5ue5e5Theue5e5IPXue5e5protocol:IPX为Netwareue5e5网络使用的通讯协议。

ue5e5ue5e5其余根据需要设置。编译出的内核为800K。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430单片机硬件知识-复位