時間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)
一、linux內(nèi)核的分類與版本
linux內(nèi)核起碼有標準內(nèi)核(來源https://www.kernel.org/ )及針對各種處理器或平臺的linux內(nèi)核。在做嵌入式開發(fā)時需要明確:什么平臺/處理器?什么版本的linux內(nèi)核?這關(guān)聯(lián)到需要什么內(nèi)核補丁,作怎樣的交叉編譯,需要什么交叉編譯環(huán)境。
1、什么是標準內(nèi)核?
按照資料上的習慣說法,標準內(nèi)核(或稱基礎(chǔ)內(nèi)核)就是指主要在https://www.kernel.org/維護和獲取的內(nèi)核,實際上它也有平臺屬性的!這些linux內(nèi)核并不總是適用于所有l(wèi)inux支持的體系結(jié)構(gòu)。這些內(nèi)核版本很多時候并不是為一些流行的嵌入式linux系統(tǒng)開發(fā)的,也很少運行于這些嵌入式linux系統(tǒng)上,這個站點上的內(nèi)核首先確保的是在Intel X86體系結(jié)構(gòu)上可以正常運行,它是基于X86處理器的內(nèi)核,如:
對 linux-2.4.18.tar.bz2的配置make menuconfig時就可以看到,Processor type and features --->中只有386、486、586/K5/5x86/6x86/6x86MX、Pentium-Classic、Pentium-MMX、Pentium-Pro/Celeron/Pentium-II、Pentium-III/Celeron(Coppermine)、Pentium-4、K6/K6-II/K6-III 、Athlon/Duron/K7 、Elan 、Crusoe、Winchip-C6 、Winchip-2 、Winchip-2A/Winchip-3 、CyrixIII/C3 選項,而沒有類似samsun 2410等其他芯片的選擇。
如果需要用在其他特定的處理器平臺上就需要對內(nèi)核進行打補丁,形成不同的嵌入式內(nèi)核。實際上,不同處理器系統(tǒng)的內(nèi)核下載站點中提供的也往往是補丁patch而已,故原x86平臺上的內(nèi)核變成了基礎(chǔ)內(nèi)核,也被稱為標準內(nèi)核了。
2、linxu操作系統(tǒng)的分類
第一層次分類:以主要功能差異和發(fā)行組織區(qū)分(基礎(chǔ)linux系統(tǒng)/內(nèi)核)
1)標準linux
2)uClinux
無MMU支持的linux系統(tǒng),運行在無MMU的CPU上;
3)Linux-RT
是最早在linux上實現(xiàn)硬實時支持的linux發(fā)行版本;
4)Linux/RTAI
支持硬實時的linux,于RT-linux最大的不同之處在于RTAI定義了RTHAL,它將RTAI需要在linux中修改的部分定義成一組API接口,RTAI只使用API接口與linux交互;
5)Embedix
由Lineo公司開發(fā),基于PowerpC和x86平臺開發(fā)的。
6)Blue Cat Linux
7)Hard Hat Linux
8)其他
第二層分類:以應用的嵌入式平臺區(qū)分(嵌入式linux系統(tǒng)/內(nèi)核,使上面第一類中的各種linux系統(tǒng)擴展為對特定目標硬件的支持,成為一種具體的嵌入式linux系統(tǒng))
由于嵌入式系統(tǒng)的發(fā)展與linux內(nèi)核的發(fā)展是不同步的,所以為了要找一個能夠運行于目標系統(tǒng)上的內(nèi)核,需要對內(nèi)核進行選擇、配置和定制。因為每一種系統(tǒng)都是國際上不同的內(nèi)核開發(fā)小組維護的,因此選擇linux內(nèi)核源碼的站點也不盡相同。
第二層分類中的linux系統(tǒng)/內(nèi)核相對于第一層分類的標準內(nèi)核來說,也可以稱為嵌入式linxu系統(tǒng)/內(nèi)核。如應用在ARM平臺上的嵌入式Linux系統(tǒng)通常有arm-linux(常運行在arm9平臺上),uclinux(常用在arm7平臺上),在標準linux基礎(chǔ)上擴展對其他的平臺的支持往往通過安裝patch實現(xiàn),如armlinux就是對linux安裝rmk補丁(如patch-2.4.18-rmk7.bz2)形成的,只有安裝了這些補丁,內(nèi)核才能順利地移植到arm Linux上。也有些是已經(jīng)安裝好補丁的內(nèi)核源碼包,如linux-2.4.18-rmk7.tar.bz2。
不同處理器系統(tǒng)的內(nèi)核/內(nèi)核補丁下載站點:
處理器系統(tǒng)
適合的內(nèi)核站點
x86
https://www.kernel.org/
arm
https://www.arm.linux.org.uk/developer/
PowerPC
https://penguinppc.org/
MIPS
https://www.linux-mips.org/
SuperH
https://linuxsh.sourceforge.net/
M68K
https://linux-m68k.org/
non-MMU (arm7TDMI/ColdFire)
https://www.uclinux.org/
這些站點不僅僅是linux內(nèi)核站點,它們可能直接提供了針對你的目標硬件系統(tǒng)的linux內(nèi)核版本。
#p#副標題#e#
3、標準linux與uclinux有什么關(guān)系和區(qū)別?armlinux與uclinux有什么分別?
標準內(nèi)核可以直接自己配置編譯,用到你的PC機去取代原先安裝系統(tǒng)時的內(nèi)核,它首先基于x86體系。uclinux是省略MMC的linux內(nèi)核,是標準內(nèi)核的一個簡化版本。而armlinux是基于平臺的一個嵌入式系統(tǒng)內(nèi)核,也就是一個具體的嵌入式系統(tǒng)。uclinux的獲取是一個類似于標準linux的內(nèi)核目錄,而armlinux的獲取一般是通過對標準linux內(nèi)核打補丁。
二、linux內(nèi)核的選擇
Linux核心源程序通常都安裝在 /usr/src/linux下,而且它有一個非常簡單的編號約定:任何偶數(shù)的核心(例如2.0.30)都是一個穩(wěn)定地發(fā)行的核心,而任何奇數(shù)的核心(例如2.1.42)都是一個開發(fā)中的核心。
Linux-2.4.10~Linux-2.4.15版本的內(nèi)核應該避免使用,因為它們出現(xiàn)在對內(nèi)核大量改動時期,不穩(wěn)定。
選擇內(nèi)核版本是很困難的,應該與負責維護該內(nèi)核的小組保持聯(lián)系,方法是通過訂閱一些合適的郵件列表(maillist)并查看郵件中相關(guān)的重要新聞,以及瀏覽一些主要站點,可以得到該內(nèi)核的最新發(fā)展動態(tài)。如針對arm的Linux內(nèi)核,可以訪問https://www.arm.linux.org.uk/ 并訂閱該網(wǎng)站上提供的maillist就可以了。如果覺得查閱郵箱中的郵件列表耗費太多時間,那么至少每周訪問所關(guān)心的內(nèi)核網(wǎng)站,并閱讀Kernel Traffic提供的過去一周中在內(nèi)核郵件清單中發(fā)生的重要的摘要,網(wǎng)址為https://kt.zork.net/kernel-traffic 這樣就可以得到相關(guān)Linux內(nèi)核的最新信息。
并不是Linux的每個版本都適合arm Linux的移植,可以加入其郵件列表(maillist)以獲得內(nèi)核版本所支持硬件的相關(guān)信息。
上表列出的資源可以幫助你找到哪些沒有列出的功能可以被你的系統(tǒng)支持!
arm Linux的移植,建議使用2.4.x或2.6.x版本
Linux內(nèi)核補丁可以到arm Linux的ftp(ftp://ftp.arm.linux.org.uk )下載。
三、內(nèi)核補丁與補丁的安裝
內(nèi)核補丁不是一定需要的,這要看你選擇的是怎樣的linux內(nèi)核,比如下載下來標準的linux內(nèi)核,想要編譯linux系統(tǒng)在x86的PC機上運行,就根本不用什么板間支持的補丁了,因為標準linux內(nèi)核本身基于x86平臺測試。而如果使用Embedix內(nèi)核,開發(fā)板是PPC體系的,內(nèi)核可能本身已經(jīng)支持PPC,也不需要安裝補丁了。但嵌入式系統(tǒng)往往工作在不同的特定目標板上,如arm,這就需要使linux內(nèi)核擴展對目標體系的支持了。
常見的如arm板,下載了標準linux內(nèi)核是不夠的,還要從arm linux的相關(guān)站點下載相應版本的補丁,標準內(nèi)核安裝了補丁后才能正確配置,對目標體系支持。如linux-2.4.18.tar.bz2內(nèi)核,打補丁patch-2.4.18-rmk7.bz2就跟整合了的源碼包linux-2.4.18-rmk7.tar.bz2一樣了,是一個armlinux系統(tǒng)內(nèi)核了。而如果需要擴展對m68k芯片的支持,就需要m68k的補丁了。
補丁的安裝方法可以參考man patch的說明,我總結(jié)自己常用的方法如下:
1、 patch應用的方法是進入內(nèi)核目錄后#patch -p1 文件的位置,如:
1)# bunzip2 patch-2.4.18-rmk7.bz2
把patch-2.4.18-rmk7.bz2解壓成patch-2.4.18-rmk7(覆蓋了原壓縮文件)
2)# mv patch-2.4.18-rmk7 linux/
把patch-2.4.18-rmk7移動到內(nèi)核解壓目錄linux中。
3)cd linux
進入linux目錄
4)# patch -p1 2.4.18-rmk7
注意 前后都有一個空格
得到
……
patching file net/irda/iriap.c
patching file net/irda/irlan/irlan_common.c
patching file net/irda/irlap_event.c
patching file net/irda/irlap_frame.c
patching file net/irda/irttp.c
patching file net/sched/Config.in
成功應用補丁。
2、把解壓的補丁(不用解壓)移動到解壓的內(nèi)核目錄中,執(zhí)行# bzip2 -dc patch-2.4.18-rmk7.bz2 | patch -p1
關(guān)鍵詞標簽:Linux內(nèi)核版本,patch
相關(guān)閱讀
熱門文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程使用screen管理你的遠程會話GNU/Linux安裝vmware如何登錄linux vps圖形界面 Linux遠程桌面連
人氣排行 Linux下獲取CPUID、硬盤序列號與MAC地址linux tc實現(xiàn)ip流量限制dmidecode命令查看內(nèi)存型號linux下解壓rar文件安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程Ubuntu linux 關(guān)機、重啟、注銷 命令lcx.exe、nc.exe、sc.exe入侵中的使用方法查看linux服務器硬盤IO讀寫負載