<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式Linux研究-對幾種典型的系統的內核配置方案

嵌入式Linux研究-對幾種典型的系統的內核配置方案

作者: 時(shí)間:2011-03-12 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要
本文主要介紹了幾種減裁Linux核心的方法,可以用于系統、服務(wù)器的核心配置。

By iamafan


1.對于一般PC的普通內核配置

對于一般的用戶(hù)而言,對于Linux內核的效率和大小的要求都不高。因此一般不對內核重新配置,因為L(cháng)inux安裝程序會(huì )在安裝時(shí)對大部分設置按照安裝的需求和實(shí)際的硬件做缺省設置。這樣的內核會(huì )比實(shí)際需要的繁冗,有很多模塊加載后根本就沒(méi)有用到,但是因為現在的PC的內存一般都是上百MB,而一個(gè)Linux內核再大也就是幾百K,因此對于一般用戶(hù)而言,無(wú)需再重新編譯內核了。

在一臺P3-566的Dell機器安裝Red-Hat7.2,內核版本為2.4.6

以下是一些該機的配置:

Loadablemodulesupport:Y

Networkingsupport:Y

PCIsupport:Y

SystemVI(yíng)PC:Y因為可以做一些基于SystemV的程序

Kernelsupportfora.outbinaries:Y

KernelsupportforELFbinaries:Y

Blockdevices:對此根據該機的硬件做了相應的配置,去除一些本機沒(méi)有的硬件設備的支持模塊。如:Loopbackdevicesupport

Networkingoptions:

Packetsocket:Y

TCP/IPnetworking:Y

Networkfirewalls:Y

TheI(yíng)PXprotocol:Y

Networkdevicesupport:

Networkdevicesupport:Y

Ethernet(10or100Mb/s):Y

Characterdevice

Virtualterminal:Y

Supportforconsoleonvirtualterminal:Y

Filesystems

Secondextendedfssupport:Y

VFATfssupport:m筆者有時(shí)會(huì )用到該機上的VFAT分區

/procfilesystemsupportY

I(yíng)SO9660cdromfilesystemsupport:m

NetworkFileSystems

NFSfilesystemsupport:Y

SMBfilesystemsupport:m

Consoledrivers

VGAtextconsole:Y

Videomodeselectionsupport:Y

VESAVGAgraphicsconsole:Y

Kernelhacking

MagicSysRqkey:Y

還有一些缺省的設置筆者沒(méi)有改。這樣編譯出來(lái)的版本有700K.經(jīng)過(guò)筆者調試過(guò)沒(méi)有出現什么問(wèn)題。

2.PDA的內核設置

PDA(PersonalDigitalAssist)如:手機,快譯通,文曲星等等。這類(lèi)系統要求系統穩定,內核小而且效率高,常常需要一些特殊的硬件支持。對進(jìn)程調度、文件系統要求單一,有些就是單進(jìn)程系統。對網(wǎng)絡(luò )的支持由根據需要確定。RedHat的內核無(wú)法直接用來(lái)設計一些特殊要求的PDA,一般還要加入對硬件的特定模塊。

可作如下設置:

Networkingsupport:Y:一般PDA都支持上網(wǎng)更新功能

KernelsupportforELFbinaries:Y

CompileasELF–ifyourGCCisELF-GCC:Y這兩個(gè)設置使系統的執行文件都為ELF

AdvancedPowerManagerBiossupport:Y

Blockdevices:應該加入對硬件特殊的支持模塊

Networkingoptions

Packetsocket

FileSystem

Secondextendedfssupport:Y

另外的一些功能為N,當然一些功能必須選擇用來(lái)支持上述的模塊。編譯后為100KB---400KB

3.小型系統的內核配置

一個(gè)小型的嵌入式Linux系統只需要下面三個(gè)基本元素:


引導工具
Linux微內核,由內存管理、進(jìn)程管理和事務(wù)處理構成
初始化進(jìn)程
如果要讓它能干點(diǎn)什么且繼續保持小型化,還得加上:


硬件驅動(dòng)程序
提供所需功能的一個(gè)或更多應用程序。
再增加功能,或許需要這些:一個(gè)文件系統(也許在ROM或RAM)中TCP/IP網(wǎng)絡(luò )堆棧對該種系統,做了不同的設置:

不要floppy;不要SMP、MTRR;不要Networking、SCSI;把所有的blockdevice移除,只留下I(yíng)DEdevice;把所有的characterdevice移除;把所有的filesystem移除,只留下minix;不要sound支援。這樣己經(jīng)把所有的選項都移除了。這樣做之后,得到了一個(gè)188K的核心.

把下列兩個(gè)檔案中的-O3,-O2用-Os取代。

./Makefile
./arch/i386/kernel/
Makefile

這樣一來(lái),整個(gè)核心變小了9K,成為179K。

不過(guò)這個(gè)核心恐怕很難發(fā)揮Linux的功能,因此把網(wǎng)絡(luò )加回去。把Generalsetup中的networksupport加回去,重新編譯,核心變成189K。10K就加上個(gè)TCP/IPstack。有stack沒(méi)有driver也是枉然,把embeddedboard常用的RTL8139的driver加回去,195K.

如果你需要DOS檔案系統,那大小成為213K。如果minix用ext2換代,則大小成長(cháng)至222K。

Linux所需的內存大約在600K~800K之間。1MB內存就可能可以開(kāi)機了,但不太有用,因為連載入C程序庫都有困難。2MB內存應該就可以做點(diǎn)事了,但要到4MB以上才可以執行一個(gè)比較完整的系統。

因為L(cháng)inux的filesystem相當大,大約在230K左右,占了1/3的體積。內存管理占了80K,和核心其它部分的總和差不多。TCP/IPstack占了65K,驅動(dòng)程序占了120K。SysVI(yíng)PC占了21K,必要的話(huà)可以拿掉,核心檔應該可以再小個(gè)10K左右。

如果要裁剪核心大小,應該動(dòng)那里呢?答案很明顯,當然是文件系統。Linux的VFS簡(jiǎn)化了檔案系統的設計,buffercache,directorycache增加了系統的效率。但這些embedded系統根本就用處不大。如果可以把它們拿掉,核心可以馬上縮?。?0K左右。如果跳過(guò)整個(gè)VFS,直接將文件系統寫(xiě)成一個(gè)driver的型式,應該可以將230K縮減至50K左右。整個(gè)核心縮到100K左右。

4.工控機的內核配置

對于工控機內核,對于內核的大小要求并不嚴格,關(guān)鍵的是正確性,健壯性和實(shí)時(shí)性(某些機子要求實(shí)時(shí)性較高).對文件系統要求單一,但保證正確性.網(wǎng)絡(luò )按需設置。

可作如下配置:

Symmetricmulti-processingsupport:Y

Loadablemodulesupport:N工控機一般將可能用到的模塊都全部裝入內存.

Networkingsupport:Y

SystemVI(yíng)PC:Y

KernelsupplyforELFbinaries:Y

Blockdevices:根據具體硬件配置

Networkingoptions

packetsocket:Y

根據具體需要,一般工控機是通過(guò)LAN連接,與外界隔離故要IPX協(xié)議,另外Tcp/ip一般也需要.

QoSand/orfairqueueing:Y

QoS(QualityOfService)andfairqueueling是一種排定某種封包先送的網(wǎng)絡(luò )線(xiàn)程表,可同時(shí)針對多個(gè)網(wǎng)絡(luò )封包處理并依優(yōu)先處理順序來(lái)排序,稱(chēng)之為packetschedulers.此功能特別是針對實(shí)時(shí)系統時(shí)格外重要,當多個(gè)封包同時(shí)送到網(wǎng)絡(luò )設備時(shí),Kernel可以適當的決定出哪一個(gè)封包必須優(yōu)先處理.因此Kernel提供數種packetschedulingalgorithm.

Filesystems

SecondExtendedfssupport:Y

其余配置和小型差別不大.同一臺機器上編譯出來(lái)的內核大小為800多KB。

5.服務(wù)器的內核配置:


服務(wù)器的內核對網(wǎng)絡(luò )設置和進(jìn)程調度都非常關(guān)鍵.做如下配置:

Symmetricmulti-processingsupport:Y

Loadablemodulesupport:Y

Networkingsupport:Y

Networkingoption

Packetsocket:Y。

TCP/IPnetworkeing:Y

Networkfirewalls:是否采用網(wǎng)絡(luò )防火墻。如果計算機想當firewallsserver或者是處于TCP/IP通信協(xié)議的網(wǎng)絡(luò )的網(wǎng)路結構下,這一項要選[Y]

Networkaliasing[Y/m/n/?]:一臺網(wǎng)絡(luò )上的計算機可以擁有多組IP地址。如果計算機想擁有多個(gè)IP地址,就選擇[Y].

I(yíng)P:forwarding/gatewaying[Y/m/n/?]:假如用戶(hù)想當路由器的話(huà),選擇[Y],但先決條件是有“兩張”網(wǎng)卡,一張對外部網(wǎng)絡(luò )、一張對內部網(wǎng)絡(luò ),并且使用的ISP那一端也必須設定routing,允許用戶(hù)這臺路由器才行。

I(yíng)P:multicasting:可以一次就完成傳送一個(gè)packet到好幾臺計算機的操作。

I(yíng)P:syn_cookies:一種保護措施,將各種TCP/IP的通信協(xié)議加密,防止Attacker攻擊用戶(hù)的計算機,并且可以紀錄企圖攻擊用戶(hù)的計算機的IP地址。

I(yíng)P:firewalling:該臺計算機是否是防火墻服務(wù)器。

I(yíng)P:firewallpacketlogging:是否由klogd記錄防火墻服務(wù)器到底接收了哪些Packet。

I(yíng)P:masquerading:可以將內部網(wǎng)絡(luò )的計算機送出去的封包,通過(guò)防火墻服務(wù)器直接傳遞給遠端的計算機,而遠端的計算機看到的就是接收到的防火墻服務(wù)器送過(guò)來(lái)的封包,而不是從內部的計算機送過(guò)來(lái)的。這樣如果內部只有一臺計算機可以上網(wǎng),其余的機器可以通過(guò)這臺機子的防火墻服務(wù)器向外連線(xiàn)。選擇這個(gè)選項必需先確定先前的NetworkFirewallsI(yíng)P:forwarding/gatewayingI(yíng)P:firewalling這三個(gè)選項選[Y]。以及下一個(gè)選項IP:alwaysdeframent也要選[Y].

I(yíng)P:ICMPmasquerading:一般masquerading只提供處理TCP,UDPpackets,若要讓masqurerading也能處理ICMPpackets,這個(gè)選項要選[Y].

I(yíng)P:alwaysdefragment:可將接收到的packetfragments重新組合回原來(lái)那個(gè)封包。

I(yíng)P:accounting:統計IPpacket的流量,也就是網(wǎng)絡(luò )的流通情況。

I(yíng)P:optimizeasrouternothost:可以關(guān)閉copychecksum技術(shù),防止流量大的服務(wù)器的IPpackets丟失。

I(yíng)P:tunneling:可在不同網(wǎng)域中使用linux,且都不用改IP就可以直接上網(wǎng)了。適合于筆記本型計算機用戶(hù)。

I(yíng)P:ReverseARP:主要是提供bootp的功能,讓計算機從可以從網(wǎng)卡的BootRam啟動(dòng)。

I(yíng)P:DisablePathMTUDiscovery:是否取消PathMTUDiscovery.MTU有助于處理?yè)頂D的網(wǎng)絡(luò )。

TheI(yíng)PXprotocol:IPX為Netware網(wǎng)絡(luò )使用的通訊協(xié)議。

其余根據需要設置。編譯出的內核為800K。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

linux相關(guān)文章:linux教程


路由器相關(guān)文章:路由器工作原理


路由器相關(guān)文章:路由器工作原理




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>