<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式Linux研究-對幾種典型的系統(tǒng)的內(nèi)核配置方案

          嵌入式Linux研究-對幾種典型的系統(tǒng)的內(nèi)核配置方案

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

          By iamafan


          1.對于一般PC的普通內(nèi)核配置

          對于一般的用戶而言,對于Linux內(nèi)核的效率和大小的要求都不高。因此一般不對內(nèi)核重新配置,因?yàn)長inux安裝程序會在安裝時(shí)對大部分設(shè)置按照安裝的需求和實(shí)際的硬件做缺省設(shè)置。這樣的內(nèi)核會比實(shí)際需要的繁冗,有很多模塊加載后根本就沒有用到,但是因?yàn)楝F(xiàn)在的PC的內(nèi)存一般都是上百M(fèi)B,而一個(gè)Linux內(nèi)核再大也就是幾百K,因此對于一般用戶而言,無需再重新編譯內(nèi)核了。

          在一臺P3-566的Dell機(jī)器安裝Red-Hat7.2,內(nèi)核版本為2.4.6

          以下是一些該機(jī)的配置:

          Loadablemodulesupport:Y

          Networkingsupport:Y

          PCIsupport:Y

          SystemVIPC:Y因?yàn)榭梢宰鲆恍┗赟ystemV的程序

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

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

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

          Networkingoptions:

          Packetsocket:Y

          TCP/IPnetworking:Y

          Networkfirewalls:Y

          TheIPX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í)會用到該機(jī)上的VFAT分區(qū)

          /procfilesystemsupportY

          ISO9660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

          還有一些缺省的設(shè)置筆者沒有改。這樣編譯出來的版本有700K.經(jīng)過筆者調(diào)試過沒有出現(xiàn)什么問題。

          2.PDA的內(nèi)核設(shè)置

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

          可作如下設(shè)置:

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

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

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

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

          Blockdevices:應(yīng)該加入對硬件特殊的支持模塊

          Networkingoptions

          Packetsocket

          FileSystem

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

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

          3.小型系統(tǒng)的內(nèi)核配置

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

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

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

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

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

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

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

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

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

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

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

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

          4.工控機(jī)的內(nèi)核配置

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

          可作如下配置:

          Symmetricmulti-processingsupport:Y

          Loadablemodulesupport:N工控機(jī)一般將可能用到的模塊都全部裝入內(nèi)存.

          Networkingsupport:Y

          SystemVIPC:Y

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

          Blockdevices:根據(jù)具體硬件配置

          Networkingoptions

          packetsocket:Y

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

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

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

          Filesystems

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

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

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

          
          服務(wù)器的內(nèi)核對網(wǎng)絡(luò)設(shè)置和進(jìn)程調(diào)度都非常關(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ò)防火墻。如果計(jì)算機(jī)想當(dāng)firewallsserver或者是處于TCP/IP通信協(xié)議的網(wǎng)絡(luò)的網(wǎng)路結(jié)構(gòu)下,這一項(xiàng)要選[Y]

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

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

          IP:multicasting:可以一次就完成傳送一個(gè)packet到好幾臺計(jì)算機(jī)的操作。

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

          IP:firewalling:該臺計(jì)算機(jī)是否是防火墻服務(wù)器。

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

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

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

          IP:alwaysdefragment:可將接收到的packetfragments重新組合回原來那個(gè)封包。

          IP:accounting:統(tǒng)計(jì)IPpacket的流量,也就是網(wǎng)絡(luò)的流通情況。

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

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

          IP:ReverseARP:主要是提供bootp的功能,讓計(jì)算機(jī)從可以從網(wǎng)卡的BootRam啟動。

          IP:DisablePathMTUDiscovery:是否取消PathMTUDiscovery.MTU有助于處理擁擠的網(wǎng)絡(luò)。

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

          其余根據(jù)需要設(shè)置。編譯出的內(nèi)核為800K。
          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

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


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


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




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();