專利名稱:一種加快嵌入式Linux系統(tǒng)啟動的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體涉及一種加快嵌入式Linux系統(tǒng)啟動的方法。
背景技術(shù):
Linux系統(tǒng)以其開源的特性得到了廣泛的應(yīng)用,在嵌入式系統(tǒng)編程中也占有越來 越大的份量。Linux系統(tǒng)安全可靠、內(nèi)核可定制、源代碼開放等這些都其優(yōu)點,但Linux系統(tǒng)也 有不足之處,比如實時性不好,比如啟動時間過長等。嵌入式Linux要求定制的Linux快速、輕巧,而越來越多的服務(wù)應(yīng)用導(dǎo)致嵌入式 Linux系統(tǒng)啟動和運行變得越來越緩慢,很多Linux廠商都發(fā)行了加快Linux啟動的優(yōu)化版 本,但是針對嵌入式Linux系統(tǒng)的啟動優(yōu)化還未成熟。嵌入式Linux系統(tǒng)應(yīng)用環(huán)境復(fù)雜,各個版本的嵌入式Linux系統(tǒng)安裝的服務(wù)應(yīng)用 大都不同,需要尋找一種通用的優(yōu)化啟動的方法。
發(fā)明內(nèi)容
本發(fā)明提供一種通用的加快嵌入式Linux系統(tǒng)啟動的方法,能夠為嵌入式系統(tǒng)提 供快速啟動的能力。為了實現(xiàn)發(fā)明目的,本發(fā)明實施例公開了一種加快嵌入式Linux系統(tǒng)啟動的方 法,其特征在于,包括登錄嵌入式Linux系統(tǒng);基于嵌入式Linux系統(tǒng)優(yōu)化內(nèi)核處理速度;對Linux系統(tǒng)中的啟動過程進(jìn)行跟蹤和分析,得到Linux啟動時間消耗的詳細(xì)報
生 P=I ;根據(jù)Linux啟動時間消耗的詳細(xì)報告優(yōu)化Linux系統(tǒng)中的進(jìn)程。所述基于嵌入式Linux系統(tǒng)優(yōu)化內(nèi)核處理速度包括優(yōu)化FLASH讀取內(nèi)核的速度,根據(jù)自己使用的Flash的用戶手冊,修改其參數(shù)配 置,使其讀寫速度盡可能的達(dá)到最快;裁剪內(nèi)核,減小內(nèi)核體積;把內(nèi)核中一些模塊直接編譯成模塊的方式;屏蔽掉printk函數(shù)的輸出;加快裝載根文件系統(tǒng)和主應(yīng)用程序到內(nèi)存中,根文件系統(tǒng)的格式采用cramfs格 式并用動態(tài)庫代替靜態(tài)庫來縮小主應(yīng)用程序的體積;加快啟動腳本的運行,把該啟動腳本中的任務(wù)最大限度的刪減,把所有無關(guān)的任 務(wù)都去掉。所述對Linux系統(tǒng)中的啟動過程進(jìn)行跟蹤和分析,得到Linux啟動時間消耗的詳 細(xì)報告包括
開啟Linux Kernel PrintkTime 功能在 Linux 系統(tǒng)中提供 I^rintkTime 功能為啟 動過程的所有內(nèi)核信息增加時間戳;對Linux啟動過程的跟蹤和分析,生成詳細(xì)的啟動時間報告。所述對根據(jù)Linux啟動時間消耗的詳細(xì)報告優(yōu)化Linux系統(tǒng)中的進(jìn)程包括通過屏蔽啟動過程中所進(jìn)行的RTC時鐘同步或者將這一過程放到啟動后進(jìn)行;或 者通過在啟動參數(shù)中強制指定LPJ值而跳過實際的計算過程。本發(fā)明具有以下優(yōu)點上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果本發(fā) 明可以加快嵌入式Linux系統(tǒng)的啟動速度。本發(fā)明提供的是一種通用的方法,能為不同的 嵌入式Linux系統(tǒng)提供啟動優(yōu)化的方法。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可 以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例中的Linux系統(tǒng)結(jié)構(gòu)示意圖;圖2是本發(fā)明實施例中的加快嵌入式Linux系統(tǒng)啟動的方法流程圖;圖3是本發(fā)明實施例中的嵌入式Linux系統(tǒng)一般性啟動優(yōu)化方法流程圖;圖4是本發(fā)明實施例中的嵌入式Linux系統(tǒng)特殊性啟動優(yōu)化方法流程圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它 實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例提供一種通用的加快嵌入式Linux系統(tǒng)啟動的方法,能夠為嵌入式 Linux系統(tǒng)提供快速啟動的能力,其主要包括登錄嵌入式Linux系統(tǒng);基于嵌入式Linux 系統(tǒng)優(yōu)化內(nèi)核處理速度;對Linux系統(tǒng)中的啟動過程進(jìn)行跟蹤和分析,得到Linux啟動時間 消耗的詳細(xì)報告;根據(jù)Linux啟動時間消耗的詳細(xì)報告優(yōu)化Linux系統(tǒng)中的進(jìn)程以下分別 進(jìn)行詳細(xì)說明。如圖1所示,其為本發(fā)明實施例中的Linux系統(tǒng)結(jié)構(gòu)示意圖,本發(fā)明主要包括以下 單元嵌入式Linux系統(tǒng)一般性啟動優(yōu)化平臺單元、嵌入式Linux系統(tǒng)特殊性啟動優(yōu)化平臺單元。所述嵌入式Linux系統(tǒng)一般性啟動優(yōu)化平臺為嵌入式Linux系統(tǒng)提供通用的啟動 優(yōu)化方案。所述嵌入式Linux系統(tǒng)特殊性啟動優(yōu)化平臺為嵌入式Linux系統(tǒng)的不同服務(wù)提供 針對性的優(yōu)化方案。圖2為本發(fā)明實施例中的加快嵌入式Linux系統(tǒng)啟動的方法流程圖,包括步驟
步驟1 獲取嵌入式Linux系統(tǒng)。步驟2 建立嵌入式Linux系統(tǒng)一般性啟動優(yōu)化平臺。步驟3 根據(jù)嵌入式Linux系統(tǒng)的不同性建立特殊性啟動優(yōu)化平臺。圖3為嵌入式Linux系統(tǒng)一般性啟動優(yōu)化方法流程圖,包括如下 盡管嵌入式Linux系統(tǒng)各不相同,但是啟動流程還是一樣的,嵌入式Linux系統(tǒng)一 般性啟動優(yōu)化平臺為不同的嵌入式Linux系統(tǒng)提供了相同的啟動優(yōu)化。嵌入式Linux系統(tǒng) 啟動流程如下從Flash讀取內(nèi)核到內(nèi)存、在內(nèi)存解壓并運行內(nèi)核、加載根文件系統(tǒng)及應(yīng)用 程序鏡像到內(nèi)存、運行根文件系統(tǒng)啟動腳本運行主程序、啟動完成。加快嵌入式Linux的啟 動就是要對啟動步驟進(jìn)行優(yōu)化。步驟21 優(yōu)化FLASH讀取內(nèi)核的速度,根據(jù)自己使用的Flash的用戶手冊,修改其 參數(shù)配置,使其讀寫速度盡可能的達(dá)到最快。步驟22 裁剪內(nèi)核,減小內(nèi)核體積。在編譯內(nèi)核時去掉不需要的硬件驅(qū)動、文件系 統(tǒng)、調(diào)試信息,使內(nèi)核盡可能地達(dá)到最小。比如可以去掉內(nèi)核對鍵盤、鼠標(biāo)等硬件的支持,去 掉RomFs、RamDisk等文件系統(tǒng)的支持。內(nèi)核中的文件系統(tǒng)占了相當(dāng)大的部分,因此應(yīng)盡量 去掉那些根本不需要文件系統(tǒng)。步驟23 把內(nèi)核中一些模塊直接編譯成模塊的方式,而不是與內(nèi)核編譯在一起, 在內(nèi)核啟動之后再裝載那些模塊,這樣也能減小內(nèi)核體積。比如網(wǎng)卡驅(qū)動,USB驅(qū)動,這些 都不是內(nèi)核啟動所必需的模塊,因此不必與內(nèi)核編譯一起,而是編譯成單獨的模塊,當(dāng)內(nèi)核 啟動之后再加載這些模塊即可。步驟M 為加快在內(nèi)存中運行內(nèi)核的速度,屏蔽掉printk函數(shù)的輸出,去掉了在 運行內(nèi)核時的所有的調(diào)試輸出信息,這樣也能縮短解壓并運行內(nèi)核的時間。步驟25 為加快裝載根文件系統(tǒng)和主應(yīng)用程序到內(nèi)存中,根文件系統(tǒng)的格式采用 cramfs格式并用動態(tài)庫代替靜態(tài)庫來縮小主應(yīng)用程序的體積。步驟沈加快啟動腳本的運行,可以把該啟動腳本中的任務(wù)最大限度的刪減,把 所有無關(guān)的任務(wù)都去掉;另外還把一些能并行啟動的任務(wù)都做成并行執(zhí)行,這樣就加快了 加載系統(tǒng)中各任務(wù)的速度。圖4為本發(fā)明實施例中的嵌入式Linux系統(tǒng)特殊性啟動優(yōu)化方法流程圖,包括如 下由于嵌入式Linux系統(tǒng)啟動的服務(wù)并不完全相同,需要對啟動的服務(wù)進(jìn)行分析, 為每個服務(wù)制定好優(yōu)化策略。步驟31 開啟 Linux Kernel PrintkTime 功能在 Linux Kernel 2. 6. 11 版本及更 高級的版本中提供了 I^rintkTime功能為啟動過程的所有內(nèi)核信息增加時間戳,如果低級 的Linux Kernel版本可以采取補丁的方式加入I^rintkTime功能。開啟I^rintkTime功能 只需在內(nèi)核啟動參數(shù)中增加“time”即可。步驟32 對Linux啟動過程的跟蹤和分析,生成詳細(xì)的啟動時間報告。完成步驟 21的配置后,重啟Linux,然后通過以下命令將內(nèi)核啟動信息輸出到文件dmeSg-S 131072 > ktime,然后利用一個腳本“show_delta” (位于Linux源碼的scripts文件夾下)將上 述輸出的文件轉(zhuǎn)換為時間增量顯示格式/usr/src/linux-x. xx. xx/scripts/show_delta ktime > dtime。這樣就得到了一份關(guān)于Linux啟動時間消耗的詳細(xì)報告。
步驟33 通過步驟32生成的啟動時間報告,找出啟動中相對耗時的過程。生成的 報告大致如下內(nèi)核啟動總時間6. 188s關(guān)鍵的耗時部分1) 0. 652s-Timer, IRQ, Cache, Mem Pages 等核心部分的初始化2)0. 611s-內(nèi)核與RTC時鐘同步3)0. 328s-計算 Calibrating Delay (4 個 CPU 核心的總消耗)4) 0. 144s-校準(zhǔn) APIC 時鐘5) 0. 312s-校準(zhǔn) Migration Cost6)3. 520s-Intel ElOOO 網(wǎng)卡初始化內(nèi)核關(guān)鍵部分(Timer、IRQ, Cache、Mem Pages......)的初始化目前暫時沒有比
較可靠和可行的優(yōu)化方案,可以先不考慮。第二項可以采用RTCNoSync方案,通過屏蔽啟動過程中所進(jìn)行的RTC時鐘同步或 者將這一過程放到啟動后進(jìn)行。第三項可以采用ft~esetLPJ方案,通過在啟動參數(shù)中強制指定LPJ值而跳過實際 的計算過程,這是基于LPJ值在硬件條件不變的情況下不會變化的考慮。所以在正常啟動 后記錄下內(nèi)核信息中的“Calibrating Delay”數(shù)值后就可以在啟動參數(shù)中以下面的形式強 制指定 LPJ 值了 =Ipj = 9600700。其他的項可以根據(jù)不同的優(yōu)化方案進(jìn)行優(yōu)化,這里不詳細(xì)討論。以上對本發(fā)明實施例所提供的一種加快嵌入式Linux系統(tǒng)啟動的方法進(jìn)行了詳 細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說 明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù) 本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不 應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種加快嵌入式Linux系統(tǒng)啟動的方法,其特征在于,包括 登錄嵌入式Linux系統(tǒng);基于嵌入式Linux系統(tǒng)優(yōu)化內(nèi)核處理速度;對Linux系統(tǒng)中的啟動過程進(jìn)行跟蹤和分析,得到Linux啟動時間消耗的詳細(xì)報告; 根據(jù)Linux啟動時間消耗的詳細(xì)報告優(yōu)化Linux系統(tǒng)中的進(jìn)程。
2.如權(quán)利要求1所述的加快嵌入式Linux系統(tǒng)啟動的方法,其特征在于,所述基于嵌入 式Linux系統(tǒng)優(yōu)化內(nèi)核處理速度包括優(yōu)化FLASH讀取內(nèi)核的速度,根據(jù)自己使用的Flash的用戶手冊,修改其參數(shù)配置,使 其讀寫速度盡可能的達(dá)到最快; 裁剪內(nèi)核,減小內(nèi)核體積; 把內(nèi)核中一些模塊直接編譯成模塊的方式; 屏蔽掉printk函數(shù)的輸出;加快裝載根文件系統(tǒng)和主應(yīng)用程序到內(nèi)存中,根文件系統(tǒng)的格式采用cramfs格式并 用動態(tài)庫代替靜態(tài)庫來縮小主應(yīng)用程序的體積;加快啟動腳本的運行,把該啟動腳本中的任務(wù)最大限度的刪減,把所有無關(guān)的任務(wù)都去掉。
3.如權(quán)利要求1所述的加快嵌入式Linux系統(tǒng)啟動的方法,其特征在于,所述對Linux 系統(tǒng)中的啟動過程進(jìn)行跟蹤和分析,得到Linux啟動時間消耗的詳細(xì)報告包括開啟Linux Kernel I^rintkTime功能在Linux系統(tǒng)中提供I^rintkTime功能為啟動過 程的所有內(nèi)核信息增加時間戳;對Linux啟動過程的跟蹤和分析,生成詳細(xì)的啟動時間報告。
4.如權(quán)利要求1所述的加快嵌入式Linux系統(tǒng)啟動的方法,其特征在于,所述對根據(jù) Linux啟動時間消耗的詳細(xì)報告優(yōu)化Linux系統(tǒng)中的進(jìn)程包括通過屏蔽啟動過程中所進(jìn)行的RTC時鐘同步或者將這一過程放到啟動后進(jìn)行;或者 通過在啟動參數(shù)中強制指定LPJ值而跳過實際的計算過程。
全文摘要
本發(fā)明實施例公開了一種加快嵌入式Linux系統(tǒng)啟動的方法,包括登錄嵌入式Linux系統(tǒng);基于嵌入式Linux系統(tǒng)優(yōu)化內(nèi)核處理速度;對Linux系統(tǒng)中的啟動過程進(jìn)行跟蹤和分析,得到Linux啟動時間消耗的詳細(xì)報告;根據(jù)Linux啟動時間消耗的詳細(xì)報告優(yōu)化Linux系統(tǒng)中的進(jìn)程。通過實施本發(fā)明,本發(fā)明可以加快嵌入式Linux系統(tǒng)的啟動速度。本發(fā)明提供的是一種通用的方法,能為不同的嵌入式Linux系統(tǒng)提供啟動優(yōu)化的方法。
文檔編號G06F11/34GK102096591SQ201110049618
公開日2011年6月15日 申請日期2011年3月1日 優(yōu)先權(quán)日2011年3月1日
發(fā)明者馮枝偉, 莊敬暉, 殷偉 申請人:云浮南風(fēng)數(shù)字科技有限公司