新四季網

Linux內核動態加載方法

2023-05-08 17:01:21 1

專利名稱:Linux內核動態加載方法
技術領域:
本發明涉及基於嵌入式LINUX系統i殳備動態更新LINUX內核 的方法,並且具體i也,涉及一種利用運4亍中的LINUX動態加載並 切換到另一 LINUX內核的才支術。
背景技術:
目前,LINUX已經在大量嵌入式系統中使用,這些設備在使用 時常常需要對LINUX內核進行升級,目前加載和更新LINUX內核 版本通常採用相應的BootLoader (啟動力o載程序)來完成,通常需 要運行中的設備重新啟動再運行BootLoader重新加載新的LINUX
內核版本。
然而,上述的這些BootLoader往往功能比4交單一,所以在實際 使用中存在較多限制,主要體現在以下幾個方面
(1 )設備要更新LINUX內核版本時需要重新啟動,上電後再 運4亍BootLoader重新加載新的LINUX內核,而一些i殳備上電初始 化時需要花費較長時間,這導致整個過程變得漫長;
(2 )目前,大多數BootLoader功能比專交單一,編程4妄口比豐交 少,不支持多任務編程和中斷處理方式,大多數情況下採用4侖詢方 式依次處理,這樣,用戶在上面開發自己功能時編程比較困難;(3) 對設備驅動支持並不全面,例如,對通訊設備的支持比較 有限,通常它們只支持串口、網卡等比專交常用設備;
(4) 對通訊協議支持有限,使用通常BootLoader從外界獲取 LINUX內核片反本會受到不少限制。
針對前面所述內容可以看出,目前採用BOOTLAODER加載技 術來更新LINUX內核速度較慢,功能單一,且適應性專交差,因此, 為嵌入式設備^是供一種快速有效切換LINUX內核的方法無疑是理想的。

發明內容
考慮到上述問題而做出本發明,為此,本發明旨在提供一種 LINUX內核的動態加載方案,以快速完成LINUX內核版本更新。
為了實現上述目的,才艮據本發明的實施例,才是供了 一種LINUX 內牙亥動態力n載方'法。
該方法包括以下處理步驟S102,在運行已有LINUX內核的 系統中4呆留內存空間,用於加載新LINUX內核映象和重定4立禾呈序 映象;步驟S104,當需要更換運行中的已有LINUX內核時,將新 LINUX內核映象和重定位程序映象保存至保留內存空間;步驟 S106,停止運行中的已有LINUX內核,不再響應外界請求,並將 系統控制權交給重定位程序;步驟S108,重定位程序將新LINUX 內核映象搬移到指定系統內存位置,覆蓋已有LINUX內核映象, 並設定新LINUX內核的啟動參數;以及步驟SllO,啟動新LINUX 內核,並且啟動後的新LINUX內核接管系統控制權。
其中,在步驟S102中,保留內存空間分為兩部分,分別用於 加載新LINUX內核映象和重定位程序映象。並且,分為兩部分的
5保留內存空間可以為高端物理內存和4氐端物理內存,其中,高端物
理內存用於加載新LINUX內核映象,低端物理內存用於加載重定
^立禾呈序映象。
這樣,在步驟S104中,新LINUX內核映象和重定位程序映象 首先臨時保存在用戶內存空間中,然後通過相應的系統調用保存至 保留內存空間。
此後,在步-驟S106中,可以通過以下處理來4f止已有LINUX 內核關閉內存管理單元功能;以及使CPU退出系統特權模式。
其中,在關閉內存管理單元功能之前,已有LINUX內核准備 用於建立內存映射區的臨時頁表,其中,內存映射區的物理;也址和 虛擬地址一致,並且在內存映射區中關閉內存管理單元功能以及後 續執行重定位程序。
通過本發明的上述技術方案,可以在正在運行的LINUX系統 中實現LINUX內核的快速加載和快速切換,顯著4是高了內核版本 升級的效率,並且具有很強的適應性,能夠在複雜系統中提高設備 軟體管理功 能。


此處所說明的附圖用來才是供對本發明的進一步理解,構成本申 請的一部分,本發明的示意性實施例及其說明用於解釋本發明,並 不構成對本發明的不當限定。在附圖中
圖1是根據本發明實施例的LINUX內核動態加載方法的流程
圖;圖2是4艮據本發明實施例的LINUX內核動態加載方法中已有 LINUX內核佔有內存和保留內存的分布式意圖3是4艮據本發明實施例的LINUX內核動態加載方法中將新 的LINUX內核和重定位程序(重定向代碼)加載到保留內存的示 意圖4是根據本發明實施例的LINUX內核動態加栽方法中已有 LINUX內核與跳出重定位程序才丸行示意圖5是根據本發明實施例的LINUX內核動態加載方法中將新 的LINUX內核衝般移到系統指定^立置並啟動#斤的LINUX內衝亥的示意 圖;以及
圖6是根據本發明實施例的LINUX內核動態加載方法中重定
位的處理流程圖。
具體實施例方式
在本實施例中,提供了一種LINUX內核動態加載方法。以下 將X86系列為例進行說明(目前,X86CPU被大量應用到嵌入式設 備中,這些設備往往沒有硬碟這種存儲設備,而且由於電信設備特 點,系統設備經常需要更新系統軟體)。
如圖1所示,才艮據本實施例的LINUX內核動態加載方法包括 以下處理步驟S102,在運行已有LINUX內核的系統中保留內存 空間(該空間不會被已有LINUX內核佔用),用於加載新LINUX 內核映象和重定位程序映象;步驟S104,當需要更換運行中的已有 LINUX內核時,將新LINUX內核映象和重定位程序映象保存至保 留內存空間,因此避免了切換LINUX內核時所造成的損壞,同時 避免佔用系統的外部存儲器;步驟S106,停止運行中的已有LINUX內核,不再響應外界請求,並將系統控制權交給重定位程序,避免當前內核停止工作時出現無法運行系統的情況;步驟S108,重定位 程序將新LINUX內核映象搬移到指定系統內存位置,覆蓋已有 LINUX內核映象,並設定新LINUX內核的啟動參悽t;以及步驟 S110,啟動新LINUX內核,並且啟動後的新LINUX內核*接管系統控制區權。其中,在步驟S102中,已有LINUX內核佔用內存和保留內存 的分布如圖2所示。並且,將保留內存空間分為兩部分,分別用於 加載新LINUX內核映象和重定4立禾呈序映象,例如,分為兩部分的 保留內存空間為高端物理內存和低端物理內存,其中,高端物理內 存用於加載新LINUX內核映象,低端物理內存用於加載重定位程 序映象(在X86系統中,保留內存空間用於存儲新LINUX內核映 象的部分大於1兆)。這樣,在步驟S104中,新LINUX內核映象和重定位程序映象 首先臨時保存在用戶內存空間中,然後通過相應的系統調用保存至 保留內存空間,該處理過程如圖3所示。此外,在步驟S106中,需要停止已有LINUX內核,這是因為 在已有LINUX內核沒有停止工作的情況下覆蓋或l奮改內存中已有 LINUX內核的映象都會導致系統崩潰。這裡,停止已有LINUX內 核的處理如下關閉內存管理單元(MMU)功能;以及使CPU退 出系統特權模式(在X86系統中,將CPU從保護模式切換到實模 式)。該處理的目的就是切斷已有LINUX內核與系統的關係。其中, 關閉MMU功能的原因是,如果MMU繼續工作,就需要已有LINUX 內核建立內存頁面映射表,而Kl內核管理空間在後面會#>新的200710110864.9說明書第6/9頁LINUX內核映象覆蓋破壞,所以MMU功能將無法正常執行從而導致系統崩潰。然而,關閉CPUMMU功能會使當前執行的代碼地址從虛擬地 址變為物理地址。因此,在關閉MMU功能之前,需要在已有LINUX 內核准備用於建立內存映射區的臨時頁表,其中,內存映射區的物 理地址和虛擬地址一致,之後,在內存映射區中關閉MMU功能以 及後續執行重定位程序,這樣,不會出現當關閉MMU後後續指令 無法4丸行的情況。應當注意的是,重定位程序是一個不依賴內核服務的二進位執行程序BIN映象。重定位程序的#丸行不依賴於#:作系統提供任何服務,它的功能主要是把新的LINUX內核映象寺般移到系統規定的物 理內存位置上,同時覆蓋已有LINUX內核映象。其中,以X86系統為例,由於重定4立禾呈序開始運4亍在CPU實 模式下,能訪問的內存空間是不能超過1兆大小,但新的LINUX 內核映象又保存在高端內存空間中(地址大於1兆,原因是新的 LINUX內核映象大小有可能大於1兆,無法存在1兆以下內存空間 中),所以重定位程序必須使CPU重新進入32位保護模塊,在把新 的LINUX內核映象搬移到內存1M位置後,再使CPU重新回到實 模式下。至此,原有內核映象準備完畢,重定位程序設置好新的 LINUX內核啟動時參悽t塊,就可以i 兆入新的LINUX內核入口處啟 動運4亍新的LINUX內4亥(4o圖5所示)。下面將參照具體的實例來描述本發明。在該實例中,在X86系統下,i殳正在運4亍中的LINUX內核為 Kl,要加載的新的LINUX內核為K2。根據本發明實施例的LINUX內核動態加載方法包括以下步驟(1 )設備上電後,首先執行BIOS程序,然後再執行BootLoader 程序,以加載並運行以後的LINUX內核(即,Kl )映象(這是X86 嵌入式設備啟動基本過程);(對應於上述步驟S102)(2)當系統需要更新LINUX內核時,必須準備一個新的 LIINUX內核映象,之後為完成LINUX內核動態切換而設計的重定 位程序(BIN格式執行文件),這些程序通過系統的版本管理應用 程序從外界伺服器被直接加載到系統內存中,所以系統必須為它們 提供一個可靠的內存空間,與上面的描述相同,這裡採用是保留特 定物理內存來得到所需內存的方法;(對應於上述步驟S104 )其中,在步-驟(l)中,當K1內核啟動時,系統會4全查系統內 所有可用的內存,並且4巴這些內存交給內核內存管理才莫塊進行管理, 提供給系統各種應用使用。如圖2所示,這些保留內存將分為兩部 分,分別用於保存K2內核映象和重定位程序映象。之後,在步驟(2)中,當Kl啟動完畢開始正常運行時,LINUX 的應用程式就可以通過相應對外通訊設備從外界加載K2內核映象 和重定位程序映象,這些映象都暫時保留在用戶內存空間中,再通 過相應的系統調用把這些映象寫入上述的保留內存中(如圖3所示) (K2映象存儲在高端物理內存RAM中,而重定位程序(BIN格式 執行文件)存儲在保留的低端物理內存中)。K2內核映象和重定向 程序映象準備完畢後,接下來需要切換內核版本工作,首先通過相 應指令關閉系統中斷處理,這樣CPU不再處理中斷,Kl內核也不 會再發生進程調度和響應外界服務請求。(對應於上述步驟S106 )這裡,由於X86系列特點,系統保護模式下還需要GDT表才 能正常工作,K1內核建立的GDT表在內核切換中也是不能使用的, 所以在關閉MMU後4巴CPU從32位保護模式切換到實模式下,避 免依賴Kl建立的GDT表(全局段描述符表),此時系統基本上與Kl內核基本上不存在聯繫,接下來控制權將交給重定向程序。(如 圖4所示)通過LINUX的系統調用進入內核態後,關閉內核中系統中斷 處理,再才丸行內核各才莫塊卸載工作,內核在關閉MMU和退出32 位保護才莫式後通過跳轉指令跳入^f氐端保留內存的重定位程序入口 處,系統控制權也就交給了重定位程序,這時在內存中的Kl映象 已經沒有作用了。(3)執行圖6所示的重新定位建立一個臨時GDP表,CPU 進入32位保護模式;檢查高端物理內存中的LINUX內核映象,將 其拷貝到物理內存1M位置上;才艮據用戶要求i殳定內核啟動參數; 退回CPU實模式,跳入LINUX內核入口處,啟動新LINUX內核; (對應於步驟S108)進一步描述以上處理重定^M丸4於禾呈序開始在X86實才莫式下才丸 行,而K2映象存放在高端物理中(地址空間大於1兆),所以必 須切換到X86的32保護模式下才能訪問這些內存空間,因此,需 要建立一個臨時的GDT表(這是X86 CPU的特徵之一 );重定位 執行程序按LINUX內核運行要求搬移高端物理內存中K2映象到指 定的物理內存位置1兆處,這時在內存中Kl映象將會被覆蓋;(4 )下面啟動新的LINUX內核,這個可以參考標準 BOOTLOADER程序做法,這裡省略了其描述,在按用戶要求設定 內核啟動參悽t塊後,就可以^M亍K2映象了。(對應於步駛《S110)從上面的描述可以看出,本發明通過在基於LINUX嵌入式設 備啟動和內核片反本更新中採用內4亥動態力o載4支術,解決了傳統 BOOTLAODER加載技術更新LINUX內核速度慢、功能單一、以 及適應性差的問題。當運行中的嵌入式LINUX系統設備需要更新LINUX內核版本時,只需要4丸行相應的版本管理應用程式,通過對 外通訊設備從相應伺服器查詢最新的LINUX內核版本,4巴新的 LINUX內核拷貝到系統內存中,再利用LINUX內核動態加載才支術 運4亍新的LINUX內核版本,乂人而實現了更新i殳備LINUX內核,避 免了i殳備重新啟動來切:換LINUX內核。此外,由於切換內核過程中只使用系統內存資源,對其它外部 設備沒有要求,並且新的LINUX內核映象可以通過運行中LINUX 系統向外界月良務器獲取,而LINUX系統相對於傳統的 BOOTLOADER對各種通訊i殳備驅動和通訊協i義的支持更加豐富, 因此本發明可以更好地適應各種嵌入式系統,包4舌各種複雜的嵌入 式系統設備。由於LINUX系統相對於一般BOOTLOADER提供了 豐富的編程接口和良好的運行環境,所以更有利於開發人員在此基 礎上進行開發。以上所述^f又為本發明的優選實施例而已,並不用於限制本發明, 對於本領域的技術人員來說,本發明可以有各種更改和變化。凡在 本發明的精神和原則之內,所作的任何修改、等同替換、改進等, 均應包含在本發明的保護範圍之內。
權利要求
1.一種LINUX內核動態加載方法,其特徵在於,包括步驟S102,在運行已有LINUX內核的系統中保留內存空間,用於加載新LINUX內核映象和重定位程序映象;步驟S104,當需要更換運行中的所述已有LINUX內核時,將所述新LINUX內核映象和重定位程序映象保存至所述保留內存空間;步驟S106,停止運行中的所述已有LINUX內核,不再響應外界請求,並將系統控制權交給重定位程序;步驟S108,所述重定位程序將所述新LINUX內核映象搬移到指定系統內存位置,覆蓋已有LINUX內核映象,並設定新LINUX內核的啟動參數;以及步驟S110,啟動新LINUX內核,並且啟動後的所述新LINUX內核接管所述系統控制權。
2. 根據權利要求1所述的LINUX內核動態加載方法,其特徵在 於,在所述步驟S102中,所述保留內存空間分為兩部分,分 別用於加載所述新LINUX內核映象和所述重定位程序映象。
3. 根據權利要求2所述的LINUX內核動態加載方法,其特徵在 於,分為兩部分的所述保留內存空間為高端物理內存和低端物 理內存,其中,所述高端物理內存用於加載所述新LINUX內 核映象,所述低端物理內存用於加載所述重定位程序映象。
4. 根據權利要求2所述的LINUX內核動態加載方法,其特徵在 於,在所述步驟S104中,所述新LINUX內核映象和重定位程序映象首先臨時保存在用戶內存空間中,然後通過相應的系 統調用保存至所述保留內存空間。
5. 根據權利要求1所述的LINUX內核動態加載方法,其特徵在 於,在所述步驟S106中,通過以下處理來停止所述已有LINUX 內核關閉內存管理單元功能;以及 使CPU退出系統特權模式。
6. 根據權利要求5所述的LINUX內核動態加載方法,其特徵在 於,在關閉所述內存管理單元功能之前,所述已有LINUX內 核准備用於建立內存映射區的臨時頁表,其中,所述內存映射 區的物理i也址和虛擬;也址一致,並且在所述內存映射區中關閉 所述內存管理單元功能以及後續執行重定位程序。
全文摘要
一種LINUX內核動態加載方法,包括步驟S102,在運行已有LINUX內核的系統中保留內存空間,用於加載新LINUX內核映象和重定位程序映象;步驟S104,當需要更換運行中的已有LINUX內核時,將新LINUX內核映象和重定位程序映象放入保留內存空間;步驟S106,停止運行中的已有LINUX內核,不再響應外界請求,並將系統控制權交給重定位程序;步驟S108,重定位程序將新LINUX內核映象搬移到指定系統內存位置,覆蓋已有LINUX內核映象,並設定新LINUX內核的啟動參數;以及步驟S110,啟動新LINUX內核,並且啟動後的新LINUX內核接管系統控制權。
文檔編號G06F9/46GK101324850SQ20071011086
公開日2008年12月17日 申請日期2007年6月12日 優先權日2007年6月12日
發明者強 徐 申請人:中興通訊股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀