一種Linux內核和應用程序的升級方法及系統的制作方法
【技術領域】
[0001]本發明屬于計算機技術領域,涉及一種系統及應用程序升級方法,特別是涉及一種Linux內核和應用程序的升級方法及系統。
【背景技術】
[0002]在計算機應用技術領域,由于采用嵌入式Linux系統的嵌入式設備的應用日益廣泛,如何采用簡便易用的方法進行系統的升級,是嵌入式產品研發中一個十分關鍵的環節。因為這關系到產品的生命周期、產品的維護成本、產品功能的完善等諸多方面。
[0003]在嵌入式項目中,常見的升級是對內核、應用程序、配置文件、文件系統等的升級。其中,文件系統包括根文件系統和非根文件系統。
[0004]—種現有的升級方案是將Linux內核和根文件系統捆綁在一起同時升級,這種升級方法存在以下缺陷:
[0005]I)軟件層次分明但無法將Linux內核和根文件系統獨立升級,導致升級過程不夠靈活。
[0006]2)打包的升級文件只有Linux系統和根文件系統兩部分組成,無法添加更多的文件系統。
[0007]3)升級之后必須重新啟動系統才能使所有的功能模塊生效,在一些不能隨時重啟系統的情況下無法使得新系統或者功能立即投入工作。
[0008]另一種現有的基于MTD分區的嵌入式Linux系統的在線升級方法雖然簡便了升級方法,可廣泛應用于基于Linux系統的各種嵌入式設備,但是其僅對非根文件系統的MTD區有效。
[0009]還有一種Linux內核及文件系統的升級方法可以使升級后的程序立即投入工作,但是該方法升級數據包大,升級過程中需要占用很大的內存空間。
【發明內容】
[0010]鑒于以上所述現有技術的缺點,本發明的目的在于提供一種Linux內核和應用程序的升級方法及系統,用于解決現有內核及非根系統文件的升級方法不靈活、占用很大的內存空間的問題。
[0011]為實現上述目的及其他相關目的,本發明提供一種Linux內核和應用程序的升級方法,所述Linux內核和應用程序的升級方法包括:接收所述package, gz文件至Linux系統的/tmp目錄下;其中,所述package, gz文件包含有內核升級文件和所述app.gz文件;所述app.gz文件包含有所有應用程序升級文件;將所述package, gz文件中的app.gz文件解壓至所述/tmp目錄下,再將所述app.gz文件中的所有文件解壓至指定目錄下;刪除所述app.gz文件;將所述package, gz文件中的內核升級文件解壓至所述/tmp目錄下,然后將所述內核升級文件寫入指定flash分區;刪除所述內核升級文件和所述package, gz文件。
[0012]可選地,所述Linux內核和應用程序的升級方法還包括:利用命令flashcp和flash_erase將所述內核升級文件寫入指定flash分區;或利用命令flashcp和flash_eraseall將所述內核升級文件寫入指定flash分區。
[0013]可選地,所述Linux內核和應用程序的升級方法還包括:將所有應用程序升級文件打包生成一個app.gz文件;將內核升級文件和所述app.gz文件打包生成package, gz文件。
[0014]可選地,所述應用程序升級文件包括app可執行文件和ko模塊文件。
[0015]可選地,所述指定目錄是Linux系統存放所述app可執行文件和ko模塊文件的目錄。
[0016]可選地,所述Linux內核和應用程序的升級方法還包括:通過網絡接收所述package, gz文件至Linux系統的/tmp目錄下。
[0017]本發明還提供一種Linux內核和應用程序的升級系統,所述Linux內核和應用程序的升級系統包括:接收存放模塊,接收所述package, gz文件至Linux系統的/tmp目錄下;其中,所述package, gz文件包含有內核升級文件和所述app.gz文件;所述app.gz文件包含有所有應用程序升級文件;第一解壓存放模塊,與所述接收存放模塊相連,將所述package, gz文件中的app.gz文件解壓至所述/tmp目錄下,再將所述app.gz文件中的所有文件解壓至指定目錄下;第一刪除模塊,與所述接收存放模塊和第一解壓存放模塊分別相連,刪除所述app.gz文件;第二解壓存放模塊,與所述第一解壓存放模塊相連,將所述package, gz文件中的內核升級文件解壓至所述/tmp目錄下,然后將所述內核升級文件寫入指定flash分區;第二刪除模塊,與所述第一解壓存放模塊和第二解壓存放模塊分別相連,刪除所述內核升級文件和所述package, gz文件。
[0018]可選地,所述Linux內核和應用程序的升級系統還包括:第一寫入模塊,與所述第二解壓存放模塊相連,利用命令flashcp和flash_erase將所述內核升級文件寫入指定flash分區;或第二寫入模塊,與所述第二解壓存放模塊相連,利用命令flashcp和flash_eraseall將所述內核升級文件寫入指定flash分區。
[0019]可選地,所述應用程序升級文件包括app可執行文件和ko模塊文件。
[0020]可選地,所述指定目錄是Linux系統存放所述app可執行文件和ko模塊文件的目錄。
[0021]如上所述,本發明的Linux內核和應用程序的升級方法及系統,具有以下有益效果:
[0022]本發明所述的升級辦法既可以升級內核和應用程序,還可以避免破壞文件系統,同時還可以大大減少升級過程所占用的內存空間。
【附圖說明】
[0023]圖1顯示為本發明實施例所述的Linux內核和應用程序的升級方法的一種實現流程不意圖。
[0024]圖2顯示為本發明實施例所述的Linux內核和應用程序的升級系統的一種實現結構示意圖。
[0025]圖3顯示為本發明實施例所述的Linux內核和應用程序的升級系統的另一種實現結構示意圖。
[0026]元件標號說明
[0027]100 Linux內核和應用程序的升級系統
[0028]110 接收存放模塊
[0029]120 第一解壓存放模塊
[0030]130 第一刪除模塊
[0031]140 第二解壓存放模塊
[0032]150 第二刪除模塊
[0033]160 第一寫入模塊
[0034]170 第二寫入模塊
[0035]511?517步驟
【具體實施方式】
[0036]以下通過特定的具體實例說明本發明的實施方式,本領域技術人員可由本說明書所揭露的內容輕易地了解本發明的其他優點與功效。本發明還可以通過另外不同的【具體實施方式】加以實施或應用,本說明書中的各項細節也可以基于不同觀點與應用,在沒有背離本發明的精神下進行各種修飾或改變。需說明的是,在不沖突的情況下,以下實施例及實施例中的特征可以相互組合。
[0037]需要說明的是,以下實施例中所提供的圖示僅以示意方式說明本發明的基本構想,遂圖式中僅顯示與本發明中有關的組件而非按照實際實施時的組件數目、形狀及尺寸繪制,其實際實施時各組件的型態、數量及比例可為一種隨意的改變,且其組件布局型態也可能更為復雜。
[0038]請參閱圖1,本發明提供一種Linux內核和應用程序的升級方法,所述Linux內核和應用程序的升級方法包括:
[0039]S11,將所有應用程序升級文件打包生成一個app.gz文件。所述應用程序升級文件包括app可執行文件和ko模塊文件。
[0040]S12,將內核升級文件和所述app.gz文件打包生成package, gz文件。所述package, gz文件即是一個升級升級包。
[0041]步驟Sll至S12描述的是升級數據包的生成過程。
[0042]S13,接收所述package, gz文件至Linux系統的/tmp目錄下。其中,所述package.gz文件包含有內核升級文件和所述app.gz文件;所述app.gz文件包含有所有應用程序升級文件。本步驟可以通過本地接收所述package, gz文件至Linux系統的/tmp目錄下,也可以通過網絡接收所述package, gz文件至Linux系統的/tmp目錄下。Linux系統的/tmp目錄使用的是內存空間,因此不會占用flash空間。
[0043]S14,將所述package, gz文件中的app.gz文件解壓至所述/tmp目錄下,再將所述app.gz文件中的所有文件解壓至指定目錄下。所述指定目錄是Linux系統存放所述app可執行文件和ko模塊文件的目錄,而這個目錄必須是文件系統路徑。
[0044]S15,刪除所述app.gz文件。
[0045]S16,將所述package, gz文件中的內核升級文件解壓至所述/tmp目錄下,然后將所述內核升級文件寫入指定flash分區。本步驟的具體實現過程包括:利用命令flashcp和flash_erase將所述內核升級文件寫入指定flash分區;或利用命令flashcp和flash_eraseall將所述內核升級文件寫入指