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