亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種安全遠(yuǎn)程升級(jí)嵌入式Linux內(nèi)核的方法及系統(tǒng)的制作方法

文檔序號(hào):6587065閱讀:517來(lái)源:國(guó)知局
專(zhuān)利名稱:一種安全遠(yuǎn)程升級(jí)嵌入式Linux內(nèi)核的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于網(wǎng)絡(luò)通信領(lǐng)域,尤其涉及一種安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的方法及系統(tǒng)
背景技術(shù)
隨著現(xiàn)代電子設(shè)備智能化、網(wǎng)絡(luò)化的發(fā)展,越來(lái)越多的功能需要一個(gè)強(qiáng)大的操作系統(tǒng)作 支撐。Linux作為一種優(yōu)秀的操作系統(tǒng)在嵌入式領(lǐng)域有著廣泛應(yīng)用。在Li皿x廣泛應(yīng)用的情形 下,也產(chǎn)生了對(duì)Linux內(nèi)核進(jìn)行遠(yuǎn)程升級(jí)的需求 一方面電子設(shè)備在使用過(guò)程中需要升級(jí)功 能,有可能需要內(nèi)核的支持;另一方面,Linux本身也處在一個(gè)持續(xù)的發(fā)展過(guò)程中,許多新 的特性不斷的加入。
通常一個(gè)完整的嵌入式Li皿x軟件系統(tǒng)由Bootloader、內(nèi)核、文件系統(tǒng)和應(yīng)用程序組成 。內(nèi)核完成對(duì)所有的資源進(jìn)行管理,包括任務(wù)調(diào)度、驅(qū)動(dòng)各種外設(shè)和提供基本的服務(wù)(如文 件系統(tǒng)和網(wǎng)絡(luò)協(xié)議等)。應(yīng)用程序存放在文件系統(tǒng)中,啟動(dòng)后以進(jìn)程的形式存在。應(yīng)用程序 可以使用網(wǎng)絡(luò)連接主機(jī)通信,完成控制和數(shù)據(jù)傳輸?shù)裙δ堋i皿x內(nèi)核作為L(zhǎng)i皿x操作系統(tǒng)的 核心部件, 一般以壓縮后的二進(jìn)制文件存在,在嵌入式系統(tǒng)啟動(dòng)時(shí)由Bootloader從非易失性 存儲(chǔ)器(一般是FLASH)搬移到內(nèi)存并運(yùn)行。內(nèi)核運(yùn)行后,非易失性存儲(chǔ)器中的內(nèi)核鏡像在 重啟前不再使用,為在線升級(jí)提供了條件。
升級(jí)Li皿x內(nèi)核可以通過(guò)升級(jí)模塊的方式實(shí)現(xiàn),模塊存放在文件系統(tǒng)中,由應(yīng)用程序插 入到正在運(yùn)行的內(nèi)核中或是從中卸載。雖然模塊的方式易于實(shí)現(xiàn),但是限制很多,只能作為 當(dāng)前內(nèi)核的一些修補(bǔ),不能實(shí)現(xiàn)不同發(fā)行版本之間的升級(jí),也不能對(duì)系統(tǒng)的一些關(guān)鍵配置進(jìn) 行修改。直接在線升級(jí)內(nèi)核的方法是在應(yīng)用層將新版本的Li皿x內(nèi)核直接寫(xiě)入存儲(chǔ)器,但 這樣存在很高的風(fēng)險(xiǎn), 一旦升級(jí)過(guò)程中出現(xiàn)嚴(yán)重錯(cuò)誤(如斷電等)或者升級(jí)了一個(gè)不可啟動(dòng) 的錯(cuò)誤版本,系統(tǒng)將無(wú)法再次啟動(dòng),必須進(jìn)行現(xiàn)場(chǎng)的人工修復(fù),這點(diǎn)對(duì)于遠(yuǎn)端無(wú)人職守的設(shè) 備是無(wú)法容忍的。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的方法,旨在解決現(xiàn)有的Li皿x內(nèi)核遠(yuǎn)程升級(jí)技術(shù)要么不夠靈活要么缺乏安全保障的問(wèn)題。 本發(fā)明的目的是這樣實(shí)現(xiàn)的
一種安全遠(yuǎn)程升級(jí)嵌入式Li皿X內(nèi)核的方法,所述方法包括下述步驟
A、 系統(tǒng)存儲(chǔ)兩個(gè)或兩個(gè)以上Linux內(nèi)核文件,其中,Linux系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核為工作 內(nèi)核,其余的Linux內(nèi)核為后備內(nèi)核,所述后備內(nèi)核能夠確保系統(tǒng)成功啟動(dòng);
B、 當(dāng)需要對(duì)Linux內(nèi)核進(jìn)行升級(jí)時(shí),以所述工作內(nèi)核為升級(jí)對(duì)象進(jìn)行升級(jí);
C、 當(dāng)所述工作內(nèi)核因升級(jí)失敗而無(wú)法啟動(dòng)時(shí),啟動(dòng)所述后備內(nèi)核。 所述步驟C具體包括下述步驟
cl、設(shè)置狀態(tài)參數(shù)變量R和參數(shù)值STO、 ST1,并在系統(tǒng)上電復(fù)位和正常復(fù)位時(shí)設(shè)置 R=ST0;
c2、判斷R是否為STO,是則由Bootloader將工作內(nèi)核搬移到內(nèi)存運(yùn)行,并設(shè)置I^ST1, 否則Bootloader將后備內(nèi)核搬移到內(nèi)存運(yùn)行;
c3、當(dāng)內(nèi)核啟動(dòng)所耗時(shí)間超過(guò)預(yù)設(shè)時(shí)間限定時(shí),重啟系統(tǒng),否則設(shè)置I^ST0; 所述步驟B還包括升級(jí)后設(shè)置I^STO并重啟系統(tǒng)。
所述狀態(tài)參數(shù)還包括ST2,在所述步驟c2中,當(dāng)R為STO時(shí),在所述由Bootloader將工作 內(nèi)核搬移到內(nèi)存運(yùn)行后還進(jìn)一步包括對(duì)搬移中的工作內(nèi)核文件進(jìn)行校驗(yàn),如果校驗(yàn)通過(guò), 則設(shè)置I^ST1,否則設(shè)置I^ST2。
在所述步驟c3中,當(dāng)系統(tǒng)順利啟動(dòng)后,在所述設(shè)置I^STO前還進(jìn)一步包括判斷當(dāng)前R是 否為STO,是則退出,否則繼續(xù)判斷R是否為ST1,是則向遠(yuǎn)程主機(jī)發(fā)送攜帶有升級(jí)后的工作 內(nèi)核通過(guò)校驗(yàn)但不能正常啟動(dòng)的信息的告警信息,否則向遠(yuǎn)程主機(jī)發(fā)送攜帶有升級(jí)后的工作 內(nèi)核未通過(guò)校驗(yàn)的信息的告警信息。
所述后備內(nèi)核有2個(gè),并在設(shè)備出廠時(shí)均經(jīng)過(guò)嚴(yán)格測(cè)試能夠正常工作,其中一個(gè)后備內(nèi) 核不可改寫(xiě),在所述步驟c3中,如果當(dāng)前R為STO,則把另一個(gè)后備內(nèi)核覆蓋為當(dāng)前工作內(nèi)核 文件。
所述后備內(nèi)核有l(wèi)個(gè),其在設(shè)備出廠時(shí)經(jīng)過(guò)嚴(yán)格測(cè)試能夠正常工作,并不可改寫(xiě)。 本發(fā)明的另一目的在于提供一種安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的系統(tǒng),包括控制單 元和存儲(chǔ)有Linux系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核的內(nèi)核存儲(chǔ)單元,其特征在于,所述內(nèi)核存儲(chǔ)單元中 還存儲(chǔ)有l(wèi)個(gè)或者多個(gè)能夠確保系統(tǒng)成功啟動(dòng)的Li皿x內(nèi)核文件,所述系統(tǒng)還包括狀態(tài)寄存器 ,所述控制單元用于根據(jù)狀態(tài)寄存器中的不同參數(shù)值從所述內(nèi)核存儲(chǔ)單元中搬移相應(yīng)的內(nèi)核 文件至內(nèi)存運(yùn)行。所述系統(tǒng)還包括看門(mén)狗,用于在所述述控制單元運(yùn)行內(nèi)核異常超時(shí)時(shí),輸出一個(gè)復(fù)位信 號(hào)至控制單元使其重新啟動(dòng)。
所述內(nèi)核存儲(chǔ)單元為一個(gè)非易失性存儲(chǔ)器,所述Li皿x系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核和其它內(nèi)核 分別存儲(chǔ)在所述內(nèi)核存儲(chǔ)單元的不同MTD分區(qū)中。
所述內(nèi)核存儲(chǔ)單元包括多個(gè)相互獨(dú)立的非易失性存儲(chǔ)設(shè)備,所述Li皿x系統(tǒng)默認(rèn)啟動(dòng)的 內(nèi)核和其它內(nèi)核分別存儲(chǔ)在不同的存儲(chǔ)設(shè)備中。
本發(fā)明的突出優(yōu)點(diǎn)是本發(fā)明通過(guò)在設(shè)備中除系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核外還存儲(chǔ)了至少l個(gè) 的能夠保證系統(tǒng)成功啟動(dòng)的Linux內(nèi)核,在對(duì)系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核遠(yuǎn)程升級(jí)失敗而無(wú)法啟動(dòng) 時(shí)則可以啟動(dòng)其他內(nèi)核,可以實(shí)現(xiàn)系統(tǒng)任何情況下均能成功啟動(dòng),從而在實(shí)現(xiàn)對(duì)Linux內(nèi)核 靈活升級(jí)的同時(shí),也為遠(yuǎn)程升級(jí)提供了可靠的安全保障。


圖l是本發(fā)明的一個(gè)實(shí)施例提供的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核方法的流程圖2是本發(fā)明的一個(gè)優(yōu)選實(shí)施例提供的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核方法的流程圖;
圖3是本發(fā)明的一個(gè)優(yōu)選實(shí)施例提供的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核系統(tǒng)的結(jié)構(gòu)圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā) 明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用 于限定本發(fā)明。
本發(fā)明實(shí)施例提供的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核方法通過(guò)存儲(chǔ)兩個(gè)或更多Li皿x內(nèi)核 文件,并設(shè)定Linux系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核為工作內(nèi)核,該工作內(nèi)核能夠在升級(jí)過(guò)程中被修改 更新,其余的Linux內(nèi)核為后備內(nèi)核,該后備內(nèi)核能夠確保系統(tǒng)成功啟動(dòng)。工作內(nèi)核所在存 儲(chǔ)區(qū)是應(yīng)用層可寫(xiě)的,在需要對(duì)Linux內(nèi)核進(jìn)行升級(jí)時(shí),始終以所述工作內(nèi)核為升級(jí)對(duì)象進(jìn) 行升級(jí),新的內(nèi)核會(huì)覆蓋當(dāng)前的內(nèi)核。正常情況下,均啟動(dòng)工作內(nèi)核,當(dāng)工作內(nèi)核因升級(jí)過(guò) 程中出現(xiàn)嚴(yán)重錯(cuò)誤(如斷電等)或者升級(jí)了一個(gè)不可啟動(dòng)的錯(cuò)誤版本等原因造成無(wú)法啟動(dòng)時(shí) ,則啟動(dòng)所述后備內(nèi)核,成功啟動(dòng)后可以對(duì)工作內(nèi)核進(jìn)行重新升級(jí),從而可以保證設(shè)備不會(huì) 因?yàn)長(zhǎng)i皿x內(nèi)核遠(yuǎn)程升級(jí)失敗而造成無(wú)法通信的安全問(wèn)題,有效地避免現(xiàn)場(chǎng)的人工修復(fù)。
圖l示出了本發(fā)明的一個(gè)實(shí)施例提供的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核方法的實(shí)現(xiàn)流程。 在本發(fā)明實(shí)施例中,設(shè)置了兩個(gè)狀態(tài)參數(shù)STO (表示啟動(dòng)工作內(nèi)核)、ST1 (表示內(nèi)核正在啟動(dòng)中,Bootloader如果在啟動(dòng)時(shí)發(fā)現(xiàn)當(dāng)前狀態(tài)為STl,則說(shuō)明上次啟動(dòng)失敗),可以由
Boot loader根據(jù)狀態(tài)參數(shù)決定使用哪個(gè)內(nèi)核啟動(dòng)。
在步驟S100中,系統(tǒng)上電復(fù)位和正常復(fù)位時(shí)設(shè)置狀態(tài)參數(shù)值I^STO。
在步驟S102中,判斷當(dāng)前狀態(tài)參數(shù)是否為STO,是,則繼續(xù)執(zhí)行步驟S104;否,則執(zhí)行
步驟S108。
在步驟S104中,由Bootloader將工作內(nèi)核從非易失性存儲(chǔ)器(一般是FLASH)搬移到內(nèi)存。
在步驟S106中,在運(yùn)行工作內(nèi)核前或同時(shí)設(shè)置I^ST1,繼續(xù)執(zhí)行步驟SllO。 在步驟S108中,當(dāng)當(dāng)前狀態(tài)參數(shù)不為STO時(shí),即表示工作內(nèi)核不能啟動(dòng),貝l」Bootloader 將后備內(nèi)核從非易失性存儲(chǔ)器搬移到內(nèi)存。
在步驟S110中,啟動(dòng)內(nèi)核,并開(kāi)始監(jiān)測(cè)啟動(dòng)所耗時(shí)間。
在步驟S112中,判斷啟動(dòng)所耗時(shí)間是否超過(guò)預(yù)設(shè)時(shí)間限定,是,即表示該內(nèi)核啟動(dòng)失敗 ,則對(duì)設(shè)備重新啟動(dòng)后,返回執(zhí)行步驟S102;否,即表示該內(nèi)核文件啟動(dòng)成功,繼續(xù)執(zhí)行步 驟S114。
在步驟S 114中,通過(guò)應(yīng)用程序重新設(shè)置狀態(tài)參數(shù)值I^STO 。
內(nèi)核成功啟動(dòng)后,當(dāng)有升級(jí)內(nèi)核的需求時(shí),應(yīng)用程序?qū)⒅鳈C(jī)上的新版本的Linux內(nèi)核下 載到本地文件系統(tǒng),再將新內(nèi)核文件寫(xiě)入工作內(nèi)核所在存儲(chǔ)區(qū),再設(shè)置狀態(tài)參數(shù)為STO后重 啟系統(tǒng)。
圖2示出了本發(fā)明的一個(gè)優(yōu)選實(shí)施例提供的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核方法的流程。 在本發(fā)明實(shí)施例中,增設(shè)了一個(gè)狀態(tài)參數(shù)ST2 (表示啟動(dòng)后備內(nèi)核),同時(shí),還增加了對(duì)內(nèi) 核文件校驗(yàn)的步驟,從而可以提高啟動(dòng)效率,并便于升級(jí)故障的判別。 在步驟S200中,系統(tǒng)上電復(fù)位和正常復(fù)位時(shí)設(shè)置狀態(tài)參數(shù)值I^STO。 在步驟S202中,判斷當(dāng)前狀態(tài)參數(shù)是否為STO,是,則繼續(xù)執(zhí)行步驟S204;否,則執(zhí)行 步驟S212。
在步驟S204中,由Bootloader將工作內(nèi)核搬移到內(nèi)存。
在步驟S206中,對(duì)搬移中的工作內(nèi)核文件進(jìn)行校驗(yàn)(主要是校驗(yàn)文件的完整性等),如 果校驗(yàn)通過(guò),則繼續(xù)執(zhí)行步驟S208;否則,執(zhí)行步驟S210。 在步驟S208中,設(shè)置狀態(tài)參數(shù)為ST1后執(zhí)行步驟S214。 在步驟S210中,設(shè)置狀態(tài)參數(shù)為ST2。 在步驟S212中,Bootloader將后備內(nèi)核搬移到內(nèi)存。
7在步驟S214中,啟動(dòng)內(nèi)核,并開(kāi)始監(jiān)測(cè)啟動(dòng)所耗時(shí)間。
在步驟S216中,判斷啟動(dòng)所耗時(shí)間是否超過(guò)正常時(shí)間限定,是,則對(duì)設(shè)備重新啟動(dòng)后, 返回執(zhí)行步驟S202;否,則繼續(xù)執(zhí)行步驟S218。
在步驟S218中,作為本發(fā)明的一個(gè)優(yōu)選實(shí)施例,在啟動(dòng)成功后,還可以通過(guò)應(yīng)用程序進(jìn) 行升級(jí)過(guò)程的自檢,首先判斷完成啟動(dòng)后的當(dāng)前狀態(tài)參數(shù)是否仍為STO,是,則表示當(dāng)前啟 動(dòng)的是工作內(nèi)核,即升級(jí)成功;否,則表示當(dāng)前啟動(dòng)的是后備內(nèi)核,即工作內(nèi)核的升級(jí)出現(xiàn) 故障。
在步驟S220中,根據(jù)當(dāng)前狀態(tài)參數(shù)向遠(yuǎn)程主機(jī)發(fā)送不同的告警信息并重新設(shè)置R為STO, 如果重設(shè)前R為ST1,即工作內(nèi)核通過(guò)校驗(yàn)但不能正常啟動(dòng);如果重設(shè)前R為ST2,即工作內(nèi)核 未通過(guò)校驗(yàn)。
假設(shè)在對(duì)工作內(nèi)核升級(jí)的過(guò)程中斷電,上電后狀態(tài)參數(shù)復(fù)位為STO, Bootloader仍然按 照正常啟動(dòng)的流程進(jìn)行,當(dāng)Bootloader在搬移工作內(nèi)核的時(shí)候發(fā)現(xiàn)校驗(yàn)不通過(guò)時(shí),將狀態(tài)寄 存器設(shè)為ST2,然后將"后備內(nèi)核"啟動(dòng)。應(yīng)用程序啟動(dòng)后通過(guò)狀態(tài)寄存器知道最近一次升 級(jí)失敗,并發(fā)出告警信息。
假設(shè)寫(xiě)入了一個(gè)殘缺的工作內(nèi)核,重啟后,和上一種情況類(lèi)似。當(dāng)Bootloader在搬移內(nèi) 核的時(shí)候發(fā)現(xiàn)Linux內(nèi)核校驗(yàn)不對(duì),將狀態(tài)寄存器設(shè)為ST2,然后啟動(dòng)后備內(nèi)核,應(yīng)用程序啟 動(dòng)后發(fā)出告警信息。
假設(shè)寫(xiě)入一個(gè)完整的但不能啟動(dòng)的工作內(nèi)核,重啟后,Bootloader將其啟動(dòng),同時(shí)將狀 態(tài)寄存器設(shè)為ST1,隨后內(nèi)核在啟動(dòng)的時(shí)候死機(jī),正常情況下內(nèi)核死機(jī)一段時(shí)間(一般是 1S0秒)后會(huì)重啟,重啟后Bootloader能檢測(cè)到STl,并上報(bào)告警。假設(shè)遇到更嚴(yán)重的錯(cuò)誤, 死掉的內(nèi)核不能自己重啟,重啟的工作可以由看門(mén)狗(軟件或硬件)完成。
由于后備內(nèi)核是能夠確保正常啟動(dòng)的,只要遠(yuǎn)端設(shè)備硬件完好都能與主機(jī)建立起連接, 可以輔助以告警信息的日志進(jìn)行故障判別,再次啟動(dòng)正確的升級(jí)操作,最終安全的完成升級(jí) 工作。
在本發(fā)明的一個(gè)實(shí)施例中,上述后備內(nèi)核可以只預(yù)存一個(gè),該后備內(nèi)核在設(shè)備出廠時(shí)即 經(jīng)過(guò)嚴(yán)格測(cè)試能夠正常工作,并不可改寫(xiě)。在本發(fā)明的另一個(gè)實(shí)施例中,上述后備內(nèi)核可以 預(yù)存2個(gè),并在設(shè)備出廠時(shí)均經(jīng)過(guò)嚴(yán)格測(cè)試能夠正常工作,其中一個(gè)后備內(nèi)核不可改寫(xiě),在 上述步驟S218后,如果R仍為STO,則進(jìn)一步將當(dāng)前工作內(nèi)核文件內(nèi)容覆蓋所述另一個(gè)后備內(nèi) 核,從而可以實(shí)時(shí)保存最近一次成功完成升級(jí)的工作內(nèi)核。
圖3示出了是本發(fā)明的一個(gè)優(yōu)選實(shí)施例提供的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核系統(tǒng)的結(jié)構(gòu),為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,這些部分可以軟件、硬件或者軟硬 件結(jié)合的單元。
內(nèi)核存儲(chǔ)單元32存儲(chǔ)有2個(gè)或者更多的Linux內(nèi)核,其中,系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核為工作內(nèi) 核,其余為后備內(nèi)核。本發(fā)明實(shí)施例中,利用狀態(tài)寄存器34存儲(chǔ)啟動(dòng)狀態(tài)(ST0、 ST1或ST2 )。系統(tǒng)上電時(shí),狀態(tài)寄存器34復(fù)位為ST0??刂茊卧?1通過(guò)總線讀取狀態(tài)寄存器34中的參 數(shù)值,并根據(jù)該參數(shù)值從內(nèi)核存儲(chǔ)單元32中搬移相應(yīng)的內(nèi)核文件(工作內(nèi)核/后備內(nèi)核)至 內(nèi)存運(yùn)行,在搬移工作內(nèi)核時(shí)還可以對(duì)工作內(nèi)核進(jìn)行校驗(yàn),并根據(jù)校驗(yàn)是否通過(guò)設(shè)置狀態(tài)寄 存器34中的參數(shù)為ST1或ST2??刂茊卧?1啟動(dòng)內(nèi)核后如果出現(xiàn)死機(jī),當(dāng)死機(jī)持續(xù)一段時(shí)間, 控制單元31將控制系統(tǒng)自動(dòng)重啟。本發(fā)明實(shí)施例中,為防止死掉的內(nèi)核不能自己重啟,利用 看門(mén)狗33對(duì)控制單元31的啟動(dòng)過(guò)程進(jìn)行監(jiān)測(cè),當(dāng)系統(tǒng)異常超時(shí),看門(mén)狗33會(huì)輸出一個(gè)復(fù)位信 號(hào)讓控制單元31重新啟動(dòng)。在成功啟動(dòng)后,控制單元31還可以根據(jù)此時(shí)狀態(tài)寄存器34中的參 數(shù)值判斷工作內(nèi)核的升級(jí)是否有出現(xiàn)故障,如有則根據(jù)參數(shù)值判別出故障類(lèi)型,并向主機(jī)發(fā) 送相應(yīng)的告警信息。
所述工作內(nèi)核和后備內(nèi)核可以存儲(chǔ)在同一個(gè)非易失性存儲(chǔ)器(例如FLASH)的不同MTD分 區(qū)中,也可以存儲(chǔ)在不同的、相互獨(dú)立的存儲(chǔ)設(shè)備中。所述看門(mén)狗33可以通過(guò)軟件或者硬件 實(shí)現(xiàn)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原 則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種安全遠(yuǎn)程升級(jí)嵌入式Linux內(nèi)核的方法,其特征在于,所述方法包括下述步驟A、系統(tǒng)存儲(chǔ)兩個(gè)或兩個(gè)以上Linux內(nèi)核文件,其中,Linux系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核為工作內(nèi)核,其余的Linux內(nèi)核為后備內(nèi)核,所述后備內(nèi)核能夠確保系統(tǒng)成功啟動(dòng);B、當(dāng)需要對(duì)Linux內(nèi)核進(jìn)行升級(jí)時(shí),以所述工作內(nèi)核為升級(jí)對(duì)象進(jìn)行升級(jí);C、當(dāng)所述工作內(nèi)核因升級(jí)失敗而無(wú)法啟動(dòng)時(shí),啟動(dòng)所述后備內(nèi)核。
2.如權(quán)利要求l所述的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的方法,其特 征在于,所述步驟C具體包括下述步驟cl、設(shè)置狀態(tài)參數(shù)變量R和參數(shù)值STO、 ST1,并在系統(tǒng)上電復(fù)位和正常復(fù)位時(shí)設(shè)置 R=ST0;c2、判斷R是否為STO,是則由Bootloader將工作內(nèi)核搬移到內(nèi)存運(yùn)行,并設(shè)置I^ST1, 否則Bootloader將后備內(nèi)核搬移到內(nèi)存運(yùn)行;c3、當(dāng)內(nèi)核啟動(dòng)所耗時(shí)間超過(guò)預(yù)設(shè)時(shí)間限定時(shí),重啟系統(tǒng),否則設(shè)置I^ST0;所述步驟B還包括升級(jí)后設(shè)置I^STO并重啟系統(tǒng)。
3.如權(quán)利要求2所述的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的方法,其特 征在于,所述狀態(tài)參數(shù)還包括ST2,在所述步驟c2中,當(dāng)R為STO時(shí),在所述由Bootloader將 工作內(nèi)核搬移到內(nèi)存運(yùn)行后還進(jìn)一步包括對(duì)搬移中的工作內(nèi)核文件進(jìn)行校驗(yàn),如果校驗(yàn)通 過(guò),則設(shè)置I^ST1,否則設(shè)置I^ST2。
4.如權(quán)利要求3所述的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的方法,其特 征在于,在所述步驟c3中,當(dāng)系統(tǒng)順利啟動(dòng)后,在所述設(shè)置I^STO前還進(jìn)一步包括判斷當(dāng) 前R是否為STO,是則退出,否則繼續(xù)判斷R是否為ST1,是則向遠(yuǎn)程主機(jī)發(fā)送攜帶有升級(jí)后的 工作內(nèi)核通過(guò)校驗(yàn)但不能正常啟動(dòng)的信息的告警信息,否則向遠(yuǎn)程主機(jī)發(fā)送攜帶有升級(jí)后的 工作內(nèi)核未通過(guò)校驗(yàn)的信息的告警信息。
5 如權(quán)利要求4所述的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的方法,其特 征在于,所述后備內(nèi)核有2個(gè),并在設(shè)備出廠時(shí)均經(jīng)過(guò)嚴(yán)格測(cè)試能夠正常工作,其中一個(gè)后 備內(nèi)核不可改寫(xiě),在所述步驟c3中,如果當(dāng)前R為STO,則把另一個(gè)后備內(nèi)核覆蓋為當(dāng)前工作 內(nèi)核文件。
6 如權(quán)利要求l所述的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的方法,其特 征在于,所述后備內(nèi)核有l(wèi)個(gè),其在設(shè)備出廠時(shí)經(jīng)過(guò)嚴(yán)格測(cè)試能夠正常工作,并不可改寫(xiě)。
7 一種安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的系統(tǒng),包括控制單元和存儲(chǔ) 有Linux系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核的內(nèi)核存儲(chǔ)單元,其特征在于,所述內(nèi)核存儲(chǔ)單元中還存儲(chǔ)有 l個(gè)或者多個(gè)能夠確保系統(tǒng)成功啟動(dòng)的Li皿x內(nèi)核文件,所述系統(tǒng)還包括狀態(tài)寄存器,所述控 制單元用于根據(jù)狀態(tài)寄存器中的不同參數(shù)值從所述內(nèi)核存儲(chǔ)單元中搬移相應(yīng)的內(nèi)核文件至內(nèi) 存運(yùn)行。
8 如權(quán)利要求7所述的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的系統(tǒng),其特 征在于,所述系統(tǒng)還包括看門(mén)狗,用于在所述述控制單元運(yùn)行內(nèi)核異常超時(shí)時(shí),輸出一個(gè)復(fù) 位信號(hào)至控制單元使其重新啟動(dòng)。
9 如權(quán)利要求7所述的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的系統(tǒng),其特 征在于,所述內(nèi)核存儲(chǔ)單元為一個(gè)非易失性存儲(chǔ)器,所述Li皿x系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核和其它 內(nèi)核分別存儲(chǔ)在所述內(nèi)核存儲(chǔ)單元的不同MTD分區(qū)中。
10 如權(quán)利要求7所述的安全遠(yuǎn)程升級(jí)嵌入式Li皿x內(nèi)核的系統(tǒng),其特 征在于,所述內(nèi)核存儲(chǔ)單元包括多個(gè)相互獨(dú)立的非易失性存儲(chǔ)設(shè)備,所述Li皿x系統(tǒng)默認(rèn)啟 動(dòng)的內(nèi)核和其它內(nèi)核分別存儲(chǔ)在不同的存儲(chǔ)設(shè)備中。
全文摘要
本發(fā)明適用于網(wǎng)絡(luò)通信領(lǐng)域,提供了一種安全遠(yuǎn)程升級(jí)嵌入式Linux內(nèi)核的方法及系統(tǒng),所述方法包括下述步驟A.系統(tǒng)存儲(chǔ)兩個(gè)或兩個(gè)以上Linux內(nèi)核文件,其中,Linux系統(tǒng)默認(rèn)啟動(dòng)的內(nèi)核為工作內(nèi)核,其余的Linux內(nèi)核為后備內(nèi)核,所述后備內(nèi)核能夠確保系統(tǒng)成功啟動(dòng);B.當(dāng)需要對(duì)Linux內(nèi)核進(jìn)行升級(jí)時(shí),以所述工作內(nèi)核為升級(jí)對(duì)象進(jìn)行升級(jí);C.當(dāng)所述工作內(nèi)核因升級(jí)失敗而無(wú)法啟動(dòng)時(shí),啟動(dòng)所述后備內(nèi)核。
文檔編號(hào)G06F9/445GK101556547SQ20091030255
公開(kāi)日2009年10月14日 申請(qǐng)日期2009年5月25日 優(yōu)先權(quán)日2009年5月25日
發(fā)明者余春蕾, 周彥沛, 周祺睿, 湯國(guó)東 申請(qǐng)人:芯通科技(成都)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1