一種基于容器的移動(dòng)終端操作系統(tǒng)升級方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及電數(shù)字?jǐn)?shù)據(jù)處理領(lǐng)域,尤其涉及一種在基于容器的多操作系統(tǒng)移動(dòng)終端中進(jìn)行操作系統(tǒng)升級的方法和裝置。
【背景技術(shù)】
[0002]目前,行業(yè)內(nèi)對移動(dòng)終端如手機(jī)操作系統(tǒng)升級的方案主要有2種。一種是完整升級,即將一個(gè)完整的操作系統(tǒng)鏡像(通常幾百M(fèi)大小)寫入到存儲設(shè)備。另一種是增量升級,即僅僅更新兩個(gè)版本之間的差異文件,升級包通常很小。然而,這兩種方案均需要重啟手機(jī)、進(jìn)入升級recovery模式才能進(jìn)行升級,升級完成后需要再次重啟手機(jī)。
【發(fā)明內(nèi)容】
[0003]本申請的目標(biāo)在于提供一種不需要重啟機(jī)器即可對操作系統(tǒng)進(jìn)行升級的方法和
目.ο
[0004]本申請的目標(biāo)由一種基于容器的移動(dòng)終端操作系統(tǒng)升級方法實(shí)現(xiàn),其中多個(gè)操作系統(tǒng)分別在不同容器中運(yùn)行,該方法包括:
[0005]將待升級操作系統(tǒng)切換到后臺,及將非升級操作系統(tǒng)之一切換到前臺;
[0006]停止待升級操作系統(tǒng)所在的容器;
[0007]所述非升級操作系統(tǒng)從服務(wù)器下載待升級操作系統(tǒng)的升級包;
[0008]在用戶確認(rèn)升級時(shí)驗(yàn)證所述升級包的簽名是否合法;
[0009]在所述簽名合法時(shí)用所述升級包中的升級文件蓋寫待升級操作系統(tǒng)的相應(yīng)文件;及
[0010]在升級完成后啟動(dòng)待升級操作系統(tǒng)所在的容器。
[0011]本申請的目標(biāo)還由一種基于容器的移動(dòng)終端操作系統(tǒng)升級裝置實(shí)現(xiàn),其中多個(gè)操作系統(tǒng)分別在不同容器中運(yùn)行,其該裝置包括:
[0012]系統(tǒng)切換單元,用于將待升級操作系統(tǒng)切換到后臺及將非升級操作系統(tǒng)之一切換到前臺;
[0013]容器停止單元,用于停止待升級操作系統(tǒng)所在的容器;
[0014]升級包下載單元,用于使所述非升級操作系統(tǒng)從服務(wù)器下載待升級操作系統(tǒng)的升級包;
[0015]升級確認(rèn)單元,用于使用戶能進(jìn)行是否升級的確認(rèn);
[0016]驗(yàn)證單元,用于在用戶確認(rèn)升級時(shí)驗(yàn)證所述升級包的簽名是否合法;
[0017]升級單元,用于在所述簽名合法時(shí)用所述升級包中的升級文件蓋寫待升級操作系統(tǒng)的相應(yīng)文件;及
[0018]容器啟動(dòng)單元,用于在升級單元完成升級后啟動(dòng)待升級操作系統(tǒng)所在的容器。
[0019]基于Linux容器技術(shù),可以在同一個(gè)移動(dòng)終端設(shè)備上同時(shí)運(yùn)行2個(gè)以上操作系統(tǒng),在bootfs(啟動(dòng)文件系統(tǒng))啟動(dòng)時(shí)使各個(gè)操作系統(tǒng)分別運(yùn)行于不同容器中,各個(gè)操作系統(tǒng)共享kernel(內(nèi)核)。本發(fā)明在進(jìn)行系統(tǒng)升級時(shí),把待升級操作系統(tǒng)切換到后臺,然后停掉待升級操作系統(tǒng)所在的容器。而用當(dāng)前運(yùn)行于前臺的操作系統(tǒng)對后臺操作系統(tǒng)進(jìn)行升級,升級成功后再把后臺操作系統(tǒng)所在的容器啟動(dòng)起來。在整個(gè)升級過程中,移動(dòng)終端均不需要重啟O
[0020]除非明確指出,在此所用的單數(shù)形式“一”、“該”均包括復(fù)數(shù)含義(即具有“至少一”的意思)。應(yīng)當(dāng)進(jìn)一步理解,說明書中使用的術(shù)語“具有”、“包括”和/或“包含”表明存在所述的特征、步驟、操作、元件和/或部件,但不排除存在或增加一個(gè)或多個(gè)其他特征、步驟、操作、元件、部件和/或其組合。如在此所用的術(shù)語“和/或”包括一個(gè)或多個(gè)列舉的相關(guān)項(xiàng)目的任何及所有組合。除非明確指出,在此公開的任何方法的步驟不必精確按照所公開的順序執(zhí)行。
【附圖說明】
[0021 ]本發(fā)明將在下面參考附圖并結(jié)合優(yōu)選實(shí)施例進(jìn)行更完全地說明。
[0022]圖1為根據(jù)本發(fā)明方法的一實(shí)施例的流程圖。
[0023]圖2為根據(jù)本發(fā)明方法的另一實(shí)施例的流程圖。
[0024]圖3為根據(jù)本發(fā)明裝置的一實(shí)施例的結(jié)構(gòu)示意圖。
[0025]圖4為根據(jù)本發(fā)明裝置的另一實(shí)施例的結(jié)構(gòu)示意圖。
[0026]為清晰起見,這些附圖均為示意性及簡化的圖,它們只給出了對于理解本發(fā)明所必要的細(xì)節(jié),而省略其他細(xì)節(jié)。
【具體實(shí)施方式】
[0027]通過下面給出的詳細(xì)描述,本發(fā)明的適用范圍將顯而易見。然而,應(yīng)當(dāng)理解,在詳細(xì)描述和具體例子表明本發(fā)明優(yōu)選實(shí)施例的同時(shí),它們僅為說明目的給出。
[0028]基于Linux容器技術(shù),可以在同一個(gè)移動(dòng)終端設(shè)備如手機(jī)上同時(shí)運(yùn)行2個(gè)以上操作系統(tǒng),如2個(gè)或3個(gè)以上操作系統(tǒng)。在此以2個(gè)為例進(jìn)行說明。在bootfs啟動(dòng)時(shí),把第一操作系統(tǒng)OS-1如SyberOS和第二操作系統(tǒng)0S-2如Android分別運(yùn)行于不同容器中,兩個(gè)操作系統(tǒng)共享內(nèi)核kerne I。
[0029]圖1示出了本發(fā)明方法的一實(shí)施例,其用于在基于容器的具有如上所述的操作系統(tǒng)的移動(dòng)終端中用OS-1作為運(yùn)行態(tài)系統(tǒng)來升級0S-2,該方法開始于步驟S10,通過設(shè)備節(jié)點(diǎn)/^1"0(:/(16¥_118/8¥;^(311_118將03-2切換到后臺,及將03-1切換到前臺。具體地,切換通過控制容器前后臺切換的節(jié)點(diǎn)switch_ns進(jìn)行,各容器只需向其寫入1,即切換到前臺,寫入0,即切換到后臺。之后,處理進(jìn)行到步驟S20,執(zhí)行命令lxc-stop-n android停止待升級操作系統(tǒng)0S-2所在的容器。之后,處理進(jìn)行到步驟S30,0S-1中有一個(gè)otad進(jìn)程負(fù)責(zé)與服務(wù)器通信并從服務(wù)器下載0S-2的升級包,在此該升級包為完整升級包,下載后存放在內(nèi)置sdcard目錄上。之后,處理進(jìn)行到步驟S40,彈出提示框提示用戶是否確認(rèn)升級。如果用戶點(diǎn)擊確認(rèn)升級,處理進(jìn)行到步驟S50,發(fā)送dbus給updated進(jìn)程指示可以更新了。由于完整升級包比較大,沒有使用對稱加密,只進(jìn)行了簽名,在此只利用pubkey驗(yàn)證升級包的簽名是否合法。合法則允許進(jìn)入下一步升級流程,不合法則提示用戶升級包非法,結(jié)束升級。在簽名合法時(shí),處理進(jìn)行到步驟S60,將升級包中的鏡像寫入到0S-2所在的分區(qū)。之后,處理進(jìn)行到步驟S70,執(zhí)行命令lxc-start-n android再次啟動(dòng)0S-2所在的容器??梢?,在整個(gè)升級過程中,均不需要重新啟動(dòng)移動(dòng)終端。
[0030]圖2示出了本發(fā)明方法的另一實(shí)施例,其類似于圖1所示的實(shí)施例,但該實(shí)施例適用于升級包為增量升級包的情形即其中0S-2的升級包為增量升級包。由于增量升級包經(jīng)過opens