基於linux的設備雙系統保護及升級方法
2023-07-02 07:18:21
基於linux的設備雙系統保護及升級方法
【專利摘要】本發明公開了一種基於linux的設備雙系統保護及升級方法,其中,上述的linux的設備雙系統保護方法,包括如下步驟:S01、在linux文件系統存儲空間中建立一個備份系統;S02、判斷linux系統是否為第一次啟動;S03、判斷params分區中的damaged標誌位是否被置位,若是,則從備用系統中恢復kernel分區及rootfs分區,若否,則執行步驟S04;S04、判斷判斷params分區中的appupdate標誌位是否被置位;S05、判斷params分區中的kernel、rootfs及appfs更新標誌位是否同時被置位;S06、檢查kernel分區鏡像是否完好;S07、檢查rootfs分區鏡像是否完好;S08、加載內核分區,linux系統開始工作。本發明通過對系統重要分區進行備份,檢測到損壞時用來恢復整個系統。
【專利說明】基於I inux的設備雙系統保護及升級方法
【技術領域】
[0001]本發明涉及嵌入式Iinux系統的【技術領域】,尤其涉及一種基於Iinux的設備雙系統保護及升級方法。
【背景技術】
[0002]一個典型的嵌入式Linux系統按照存儲空間的劃分通常包括引導區,內核區與文件系統區,引導區存放Boot Loader與系統參數,內核區存放特定嵌入式平臺的定製Linux內核。文件系統包括根文件系統和建立與Flash內存設備之上的文件系統。圖形界面系統和用戶應用程式就放在文件系統區中:l、Boot Loader佔用的空間一般都比較小,它後面緊挨著一個啟動參數區,用來保存Linux內核啟動參數和用戶啟動配置。2、Boot Loader程序是嵌入式系統的引導加載程序,是系統加電後運行的第一段軟體代碼。Boot Loader程序的主要任務就是初始化硬體設備,建立內存空間的映射圖,從而將系統的軟硬體環境帶到一個合適的環境中,Boot Loader程序最重要的任務就是啟動Linux內核。3、文件系統是嵌入式Iinux系統佔用空間最大的部分,它通常佔據了 Boot Loader和內核之外的所有空間,Linux啟動完畢之後會加載一個根文件系統,根文件系統包含了系統必備、配置信息、庫函數和shell解釋器以及核心目錄。其他的文件系統則可以掛載在根文件系統下面。BootLoader 一般通過JTAG接口和仿真器燒寫到存儲器,而內核和文件系統則可以通過串口和網口燒寫到存儲器。
[0003]現有技術中的嵌入式設備通常使用nandflash作為系統的存儲單元,當flash出現壞塊等情況時,會極大的影響系統的穩定性和可靠性。另外,系統程序進行升級時,flash出現壞塊等情況也會帶來對系統穩定性的影響。
【發明內容】
[0004]本發明提出了一種基於Iinux的設備雙系統保護及升級方法,主要解決的技術問題是現有技術中flash出現壞塊等情況時,會極大地影響系統的穩定性和可靠性的問題。
[0005]為解決上述技術問題,本發明採用的一個技術方案是:提供一種基於Iinux的設備雙系統保護方法,包括如下步驟:
[0006]S01、在Iinux文件系統存儲空間中建立一個備份系統,並在備份系統上設置有bakkernel分區、bakrootfs分區及bakappfs分區,Iinux文件系統上設置有params分區、kernel分區、rootfs分區及appfs分區,其中,params分區包括damage、appupdate標誌位、以及ker、rootfs與appfs更新標誌位;
[0007]S02、判斷Iinux系統是否為第一次啟動,若是,初始化params分區,並將更新的uprootfs鏡像去掉包頭後寫入rootfs分區及bakrootfs分區,以及將更新的upappfs鏡像去掉包括頭後寫入appfs分區及bakappfs分區,若否,則直接步驟S03 ;
[0008]S03、判斷params分區中的damaged標誌位是否被置位,若是,貝U從備用系統中恢復kernel分區及rootfs分區,若否,則執行步驟S04 ;[0009]S04、判斷判斷params分區中的appupdate標誌位是否被置位,若是,貝U檢查upappfs鏡像是否損壞,若損壞,則忽略此次更新,恢復appupdate標誌位並初始化params分區;若否,則將去掉包頭的鏡像寫入appfs分區之後,初始化params分區;
[0010]S05、判斷params分區中的kernel、rootfs及appfs更新標誌位是否同時被置位,若是,則檢查需更新的upker、uprootfs及upappfs鏡像是否損壞,若是,則忽略此次升級,並恢復kernel、rootfs及appfs更新標誌位;若否,則將upkernel、去掉包頭的uprootfs、upappfs 鏡像寫入到 kernel、rootfs、appfs 分區中;
[0011]S06、檢查kernel分區鏡像是否完好,若損壞,則將damaged標誌位置位,並從bakkernel、bakrootfs、bakappfs 中恢復 kerne 1、rootfs、appfs 分區後,刪除 damaged 標誌位;
[0012]S07、檢查rootfs分區鏡像是否完好,若損壞,則將damaged標誌位置位,並從bakkernel、bakrootfs、bakappfs 中恢復 kernel、rootfs、appfs 分區後,刪除 damaged 標誌位;
[0013]S08、加載內核分區,Iinux系統開始工作。
[0014]其中,所述步驟S02中將更新的upappfs鏡像去掉包括頭後寫入appfs及bakappfs分區,還包括初始化Ptb表,所述Ptb表保存有更新後的各分區校驗碼及版本信
肩、O
[0015]其中,所述備份系統還包括bakparamfs分區,所述bakparamfs分區包含初始的params 分區。
[0016]其中,所述步驟S03之後,還包括判斷params中的factory標誌位是否被置位,若是,則從備份系統中的bakparamfs分區恢復params分區、kernel分區、rootfs分區及appfs分區。
[0017]其中,所述步驟S04中,當upappfs鏡像無損壞時,還包括將upappfs中前64byte的包頭信息提取,更新到Ptb表中。
[0018]其中,所述步驟S05中,當更新的upker、uprootfs及upappfs鏡像無損壞時,還包括提取uprootfs及upappfs的前64byte的包頭信息,更新到ptb表中。
[0019]為解決上述技術問題,本發明採用的一個技術方案是:提供了一種基於Iinux的設備雙系統升級方法,包括如下步驟:
[0020]S01、接收下載的應用程式的升級包;
[0021]S02、校驗下載的應用程式的升級包是否為準確,若否,則停止升級,並向網頁返回錯誤;若是,貝U通過nandwrite將鏡像寫入到相應的upkernel、uprootfs、upappfs中;
[0022]S03、設置params分區中的標誌位;
[0023]S04、重啟系統後,執行上述的基於Iinux的設備雙系統保護方法的步驟。
[0024]本發明的有益技術效果是:區別於現有技術中flash出現壞塊等情況時,會極大地影響系統的穩定性和可靠性的問題,本發明提供了一種基於Iinux的設備雙系統保護方法,採用了雙系統的設計方法,通過對系統重要分區進行備份,檢測到損壞時用來恢復整個系統,具體備用系統包括bakkernel分區、bakrootfs分區及bakappfs分區,在params中的標誌位被置位後,若kernel、rootfs以及appfs分區被損壞時,能夠通過bakkernel分區、bakrootfs分區及bakappfs分區恢復,能夠提高系統的穩定性。【專利附圖】
【附圖說明】
[0025]圖1是本發明基於Iinux的設備雙系統保護的流程圖;
[0026]圖2是本發明基於Iinux的設備雙系統升級的部分流程圖。
【具體實施方式】
[0027]為詳細說明本發明的技術內容、構造特徵、所實現目的及效果,以下結合實施方式並配合附圖詳予說明。
[0028]params分區:傳遞用戶空間的標誌位到uboot, uboot表示bootloader ;
[0029]Ptb分區:儲存有Ptb表,用於保存各個分區的crc校驗碼、版本號等信息;
[0030]kernel分區:內核分區,用於系統運行的內核;
[0031]bakkernel分區:內核備份分區,用於恢復損壞的主內核;
[0032]rootfs分區:根文件系統分區,用於儲存系統的根文件系統;
[0033]bakrootfs分區:根文件系統備份分區:恢復損壞的根文件系統;
[0034]paramfs分區:系統數據分區,用於保存應用程式需要的參數;
[0035]bakparamfs分區:系統數據備份分區,用於恢復出廠設置時使用;
[0036]appfs分區:應用程式分區,用於保存系統運行的各個應用程式;
[0037]bakappfs分區:應用程式備份分區,用於恢復損壞的應用程式分區;
[0038]upkernel分區:內核升級分區,用於保存內核升級鏡像;
[0039]uprootfs分區:根文件系統升級分區,用於保存根文件系統升級鏡像;
[0040]upappfs分區:應用程式升級分區,用於保存應用程式升級鏡像。
[0041]請參閱圖1,本實施例提供了基於Iinux的設備雙系統保護方法,包括如下步驟:
[0042]S01、在Iinux文件系統存儲空間中建立一個備份系統,並在備份系統上設置有bakkernel分區、bakrootfs分區及bakappfs分區,Iinux文件系統上設置有params分區、kernel分區、rootfs分區及appfs分區,其中,params分區包括damage、appupdate標誌位、以及ker、rootfs與appfs更新標誌位,並可以將其傳遞至bootloader ;該步驟對系統進行分區,搭建雙備份升級系統。
[0043]S02、判斷Iinux系統是否為第一次啟動,若是,初始化params分區,並將更新的uprootfs鏡像去掉包頭後寫入rootfs分區及bakrootfs分區,以及將更新的upappfs鏡像去掉包括頭後寫入appfs分區及bakappfs分區,若否,則直接步驟S03 ;該對upappfs及uprootfs鏡像寫入Iinux系統及備份系統中。該步驟在於判斷系統為第一次啟動時,初始化系統參數。
[0044]S03、判斷params分區中的damaged標誌位是否被置位,若是,貝U從備用系統中恢復kernel分區及rootfs分區,若否,則執行步驟S04 ;該步驟在於,如果上一次系統恢復過程中kernel分區及rootfs分區出現了異常,則重新對kernel分區及rootfs分區進行恢復操作。
[0045]S04、判斷判斷params分區中的appupdate標誌位是否被置位,若是,則檢查upappfs鏡像是否損壞,若損壞,則忽略此次更新,恢復appupdate標誌位並初始化params分區;若否,則將去掉包頭的鏡像寫入appfs分區之後,初始化params分區;該步驟在於,檢查是否有應用程式升級請求,以置位為標誌,如果有則進行升級。
[0046]S05、判斷params分區中的kernel、rootfs及appfs更新標誌位是否同時被置位,若是,則檢查需更新的upker、uprootfs及upappfs鏡像是否損壞,若損壞,則忽略此次升級,並恢復kernel、rootfs及appfs更新標誌位;若否,則將upkernel、去掉包頭的uprootfs、upappfs鏡像寫入到kernel、rootfs、appfs分區中;該步驟在於,檢查是否有內核、文件系統的升級請求,以置位為標誌,如果有則進行升級。
[0047]S06、檢查kernel分區鏡像是否完好,若損壞,則將damaged標誌位置位,並從bakkernel、bakrootfs、bakappfs 中恢復 kernel、rootfs、appfs 分區後,刪除 damaged 標誌位;該步驟在於,對內核進行檢查,如果損壞,則進行恢復。
[0048]S07、檢查rootfs分區鏡像是否完好,若損壞,則將damaged標誌位置位,並從bakkernel、bakrootfs、bakappfs 中恢復 kernel、rootfs、appfs 分區後,刪除 damaged 標誌位;該步驟在於,對文件系統進行檢查,如果損壞,則進行恢復。
[0049]S08、加載內核分區,Iinux系統開始工作。
[0050]在一實施例中,所述步驟S02中將更新的upappfs鏡像去掉包括頭後寫入appfs及bakappfs分區,還包括初始化Ptb表,所述Ptb表保存有更新後的各分區校驗碼及版本信息。
[0051]在一實施例中,所述備份系統還包括bakparamfs分區,所述bakparamfs分區包含初始的params分區。
[0052]在一實施例中,所述步驟S03之後,還包括判斷params中的factory標誌位是否被置位,若是,則從備份系統中的bakparamfs分區恢復params分區、kernel分區、rootfs分區及appfs分區。
[0053]在一實施例中,所述步驟S04中,當upappfs鏡像無損壞時,還包括將upappfs中前64byte的包頭信息提取,更新到ptb表中。
[0054]在一實施例中,所述步驟S05中,當更新的upker、uprootfs及upappfs鏡像無損壞時,還包括提取uprootfs及upappfs的前64byte的包頭信息,更新到ptb表中。
[0055]本發明區別於現有技術中flash出現壞塊等情況時,會極大地影響系統的穩定性和可靠性的問題,本發明提供了一種基於Iinux的設備雙系統保護方法,採用了雙系統的設計方法,通過對系統重要分區進行備份,檢測到損壞時用來恢復整個系統,具體備用系統包括bakkernel分區、bakrootfs分區及bakappfs分區,在params中的標誌位被置位後,若kernel、rootfs以及appfs分區被損壞時,能夠通過bakkernel分區、bakrootfs分區及bakappfs分區恢復,能夠提高系統的穩定性。
[0056]參閱圖2,本發明,提供了一種基於Iinux的設備雙系統升級方法,包括如下步驟:
[0057]S01、接收下載的應用程式的升級包;
[0058]S02、校驗下載的應用程式的升級包是否為準確,若否,則停止升級,並向網頁返回錯誤;若是,貝U通過nandwrite將鏡像寫入到相應的upkernel、uprootfs、upappfs中;
[0059]S03、設置params分區中的標誌位;
[0060]S04、重啟系統後,執行上述的基於Iinux的設備雙系統保護方法的步驟;
[0061]S04、在Iinux文件系統存儲空間中建立一個備份系統,並在備份系統上設置有bakkernel分區、bakrootfs分區及bakappfs分區,I inux文件系統上設置有params分區、kernel分區、rootfs分區及appfs分區,其中,params分區包括damage、appupdate標誌位、以及ker、rootfs與appfs更新標誌位,並將其傳遞至bootloader ;
[0062]S05、判斷Iinux系統是否為第一次啟動,若是,初始化params分區,並將更新的uprootfs鏡像去掉包頭後寫入rootfs分區及bakrootfs分區,以及將更新的upappfs鏡像去掉包括頭後寫入appfs分區及bakappfs分區,若否,則直接步驟S03 ;
[0063]S06、判斷params分區中的damaged標誌位是否被置位,若是,貝U從備用系統中恢復kernel分區及rootfs分區,若否,則執行步驟S04 ;
[0064]S07、判斷判斷params分區中的appupdate標誌位是否被置位,若是,則檢查upappfs鏡像是否損壞,若損壞,則忽略此次更新,恢復appupdate標誌位並初始化params分區;若否,則將去掉包頭的鏡像寫入appfs分區之後,初始化params分區;
[0065]S08、判斷params分區中的kernel、rootfs及appfs更新標誌位是否同時被置位,若是,則檢查需更新的upker、uprootfs及upappfs鏡像是否損壞,若損壞,則忽略此次升級,並恢復kernel、rootfs及appfs更新標誌位;若否,則將upkernel、去掉包頭的uprootfs、upappfs 鏡像寫入到 kernel、rootfs、appfs 分區中;
[0066]S09、檢查kernel分區鏡像是否完好,若損壞,則將damaged標誌位置位,並從bakkernel、bakrootfs、bakappfs 中恢復 kernel、rootfs、appfs 分區後,刪除 damaged 標誌位;
[0067]S10、檢查rootfs分區鏡像是否完好,若損壞,則將damaged標誌位置位,並從bakkernel、bakrootfs、bakappfs 中恢復 kernel、rootfs、appfs 分區後,刪除 damaged 標誌位;
[0068]S11、加載內核分區,Iinux系統開始工作。
[0069]本發明升級基於Iinux的設備雙系統升級方法,可分為下載和實際寫入兩個階段,分別交給應用程式和bootloader完成,通過應用上述的基於Iinux的設備雙系統保護方法,可以提高系統準確性及穩定性。
[0070]另外:
[0071]params分區定義如下:
[0072]
【權利要求】
1.一種基於Iinux的設備雙系統保護方法,其特徵在於,包括如下步驟: 501、在Iinux文件系統存儲空間中建立一個備份系統,並在備份系統上設置有bakkernel分區、bakrootfs分區及bakappfs分區,Iinux文件系統上設置有params分區、kernel分區、rootfs分區及appfs分區,其中,params分區包括damage、appupdate標誌位、以及ker、rootfs與appfs更新標誌位; 502、判斷Iinux系統是否為第一次啟動,若是,初始化params分區,並將更新的uprootfs鏡像去掉包頭後寫入rootfs分區及bakrootfs分區,以及將更新的upappfs鏡像去掉包括頭後寫入appfs分區及bakappfs分區,若否,則直接步驟S03 ; 503、判斷params分區中的damaged標誌位是否被置位,若是,則從備用系統中恢復kernel分區及rootfs分區,若否,則執行步驟S04 ; 504、判斷判斷params分區中的appupdate標誌位是否被置位,若是,則檢查upappfs鏡像是否損壞,若損壞,則忽略此次更新,恢復appupdate標誌位並初始化params分區;若否,則將去掉包頭的鏡像寫入appfs分區之後,初始化params分區; 505、判斷params分區中的kernel、rootfs及appfs更新標誌位是否同時被置位,若是,貝1J檢查需更新的upker、uprootfs及upappfs鏡像是否損壞,若損壞,則忽略此次升級,並恢復kernel、rootfs及appfs更新標誌位;若否,則將upkernel、去掉包頭的uprootfs、upappfs 鏡像寫入到 kernel、rootfs、appfs 分區中; 506、檢查kernel分區鏡像是否完好,若損壞,則將damaged標誌位置位,並從bakkernel、bakrootfs、bakappfs 中恢復 kerne 1、rootfs、appfs 分區後,刪除 damaged 標誌位; 507、檢查rootfs分區鏡像是否完好,若損壞,則將damaged標誌位置位,並從bakkernel、bakrootfs、bakappfs 中恢復 kernel、rootfs、appfs 分區後,刪除 damaged 標誌位; 508、加載內核分區,Iinux系統開始工作。
2.一種基於Iinux的設備雙系統保護方法,其特徵在於,所述步驟S02中將更新的upappfs鏡像去掉包括頭後寫入appfs及bakappfs分區,還包括初始化Ptb表,所述Ptb表保存有更新後的各分區校驗碼及版本信息。
3.根據權利要求1所述的基於Iinux的設備雙系統保護方法,其特徵在於,所述備份系統還包括bakparamfs分區,所述bakparamfs分區包含初始的params分區。
4.根據權利要求3所述的基於Iinux的設備雙系統保護方法,其特徵在於,所述步驟S03之後,還包括判斷params中的factory標誌位是否被置位,若是,則從備份系統中的bakparamfs分區恢復params分區、kernel分區、rootfs分區及appfs分區。
5.根據權利要求1所述的基於Iinux的設備雙系統保護方法,其特徵在於,所述步驟S04中,當upappfs鏡像無損壞時,還包括將upappfs中前64byte的包頭信息提取,更新到ptb表中。
6.根據權利要求1所述的基於Iinux的設備雙系統保護方法,其特徵在於,所述步驟S05中,當更新的upker、uprootfs及upappfs鏡像無損壞時,還包括提取uprootfs及upappfs的前64byte的包頭信息,更新到ptb表中。
7.一種基於Iinux的設備雙系統升級方法,其特徵在於,包括如下步驟:S01、接收下載的應用程式的升級包; S02、校驗下載的應用程式的升級包是否為準確,若否,則停止升級,並向網頁返回錯誤;若是,則通過nandwrite將鏡像寫入到相應的upkernel、uprootfs、upappfs中; S03、設置par ams分區中的標誌位; S04、重啟系統後,執行權利要求1-6任一項所述的基於1inux的設備雙系統保護方法的步驟。
【文檔編號】G06F17/30GK103677947SQ201410003631
【公開日】2014年3月26日 申請日期:2014年1月3日 優先權日:2014年1月3日
【發明者】李遠哲 申請人:深圳英飛拓科技股份有限公司