嵌入式研究-幾種典型 Linux 核心配置方案

來源:互聯網
上載者:User
P的普通核心配置

對於一般的使用者而言,對於Linux核心的效率和大小的要求都不高。因此一般不對核心重新設定,因為Linux安裝程式會在安裝時對大部分設定按照安裝的需求和實際的硬體做預設設定。這樣的核心會比實際需要的繁冗,有很多模組載入後根本就沒有用到,但是因為現在的PC的記憶體一般都是上百MB,而一個Linux核心再大也就是幾百K,因此對於一般使用者而言,無需再重新編譯核心了。

在一台P3-566的Dell機器安裝Red-Hat 7.2,核心版本為2.4.
以下是一些該機的配置:

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.經過筆者調試過沒有出現什麼問題。

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

小型嵌入式系統

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

1.引導工具,
2.Linux微核心,由記憶體管理、進程管理和交易處理構成
3.初始化進程

如果要讓它能幹點什麼且繼續保持小型化,還得加上:

1.硬體驅動程式
2.提供所需功能的一個或更多應用程式。

再增加功能,或許需要這些: 一個檔案系統(也許在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左右。

工控機的核心

對於工控機核心,對於核心的大小要求並不嚴格,關鍵的是正確性,健壯性和即時性(某些機子要求即時性較高).對檔案系統要求單一,但保證正確性.網路按需設定.

可作如下配置:

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

伺服器的核心:

伺服器的核心對網路設定和進程調度都非常關鍵.做如下配置:

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:可以關閉copy&checksum技術,防止流量大的伺服器的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

轉載:LinuxAid

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.