新聞中心

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

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

        作者: 時間:2011-03-12 來源:網絡 收藏
        摘要
        本文主要介紹了幾種減裁Linux核心的方法,可以用于系統服務器的核心配置。

        By iamafan


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

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

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

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

        Loadablemodulesupport:Y

        Networkingsupport:Y

        PCIsupport:Y

        SystemVIPC:Y因為可以做一些基于SystemV的程序

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

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

        Blockdevices:對此根據該機的硬件做了相應的配置,去除一些本機沒有的硬件設備的支持模塊。如: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筆者有時會用到該機上的VFAT分區

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

        還有一些缺省的設置筆者沒有改。這樣編譯出來的版本有700K.經過筆者調試過沒有出現什么問題。

        2.PDA的內核設置

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

        可作如下設置:

        Networkingsupport:Y:一般PDA都支持上網更新功能

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

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

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

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

        Networkingoptions

        Packetsocket

        FileSystem

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

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

        3.小型系統的內核配置

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

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

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

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

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

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

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

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

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

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

        因為Linux的filesystem相當大,大約在230K左右,占了1/3的體積。內存管理占了80K,和核心其它部分的總和差不多。TCP/IPstack占了65K,驅動程序占了120K。SysVIPC占了21K,必要的話可以拿掉,核心檔應該可以再小個10K左右。

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

        4.工控機的內核配置

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

        可作如下配置:

        Symmetricmulti-processingsupport:Y

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

        Networkingsupport:Y

        SystemVIPC:Y

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

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

        Networkingoptions

        packetsocket:Y

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

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

        QoS(QualityOfService)andfairqueueling是一種排定某種封包先送的網絡線程表,可同時針對多個網絡封包處理并依優先處理順序來排序,稱之為packetschedulers.此功能特別是針對實時系統時格外重要,當多個封包同時送到網絡設備時,Kernel可以適當的決定出哪一個封包必須優先處理.因此Kernel提供數種packetschedulingalgorithm.

        Filesystems

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

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

        5.服務器的內核配置:

        
        服務器的內核對網絡設置和進程調度都非常關鍵.做如下配置:

        Symmetricmulti-processingsupport:Y

        Loadablemodulesupport:Y

        Networkingsupport:Y

        Networkingoption

        Packetsocket:Y。

        TCP/IPnetworkeing:Y

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

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

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

        IP:multicasting:可以一次就完成傳送一個packet到好幾臺計算機的操作。

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

        IP:firewalling:該臺計算機是否是防火墻服務器。

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

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

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

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

        IP:accounting:統計IPpacket的流量,也就是網絡的流通情況。

        IP:optimizeasrouternothost:可以關閉copychecksum技術,防止流量大的服務器的IPpackets丟失。

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

        IP:ReverseARP:主要是提供bootp的功能,讓計算機從可以從網卡的BootRam啟動。

        IP:DisablePathMTUDiscovery:是否取消PathMTUDiscovery.MTU有助于處理擁擠的網絡。

        TheIPXprotocol:IPX為Netware網絡使用的通訊協議。

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

        linux相關文章:linux教程


        路由器相關文章:路由器工作原理


        路由器相關文章:路由器工作原理




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 临洮县| 定结县| 淮滨县| 伊宁市| 台湾省| 雅江县| 东宁县| 潞西市| 瑞安市| 克拉玛依市| 鄂尔多斯市| 吉林省| 沅江市| 丹巴县| 云浮市| 青川县| 开远市| 望谟县| 色达县| 泰和县| 洪泽县| 乌拉特后旗| 宁都县| 天镇县| 东乡族自治县| 新泰市| 抚顺市| 瓮安县| 隆昌县| 讷河市| 德江县| 巴东县| 常山县| 江永县| 乌拉特后旗| 新乡县| 勐海县| 富川| 武邑县| 福安市| 神农架林区|