專利名稱:引導(dǎo)和自動更新軟件和從更新錯(cuò)誤中恢復(fù)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及更新軟件的方法和系統(tǒng),尤其涉及更新安裝在系統(tǒng)中的軟件部件和從在更新期間出現(xiàn)的錯(cuò)誤中恢復(fù)過來的引導(dǎo)方法、自動更新軟件和從錯(cuò)誤中恢復(fù)過來的方法和系統(tǒng)、和存儲該方法的計(jì)算機(jī)可讀記錄介質(zhì)。
背景技術(shù):
內(nèi)核是現(xiàn)有技術(shù)操作系統(tǒng)(OS)的核心。當(dāng)由于系統(tǒng)崩潰使內(nèi)核圖像的自動更新停止時(shí),甚至不可能引導(dǎo)OS。
圖1是現(xiàn)有技術(shù)系統(tǒng)的引導(dǎo)區(qū)的方塊圖。參照圖1,當(dāng)前圖像110是綜合了OS和應(yīng)用程序的二值圖像。引導(dǎo)裝入程序120是為啟動系統(tǒng)而執(zhí)行的代碼,它將當(dāng)前圖像110裝入隨機(jī)訪問存儲器(RAM)中和執(zhí)行裝入圖像以引導(dǎo)系統(tǒng)。引導(dǎo)區(qū)的缺點(diǎn)在于,當(dāng)當(dāng)前圖像110的更新失敗時(shí),不可能自動恢復(fù)失敗的更新。此外,引導(dǎo)區(qū)不提供更新幾個(gè)軟件部件和恢復(fù)的功能。
圖2是另一個(gè)現(xiàn)有技術(shù)系統(tǒng)的引導(dǎo)區(qū)的方塊圖,它利用更新有效性確認(rèn)庫230更新內(nèi)核。參照圖2,當(dāng)更新內(nèi)核時(shí),將當(dāng)前圖像220復(fù)制到備份庫中,生成備份圖像210,并且,下載新圖像220。如果系統(tǒng)的引導(dǎo)發(fā)生什么麻煩,引導(dǎo)裝入程序240根據(jù)更新有效性確認(rèn)庫230檢驗(yàn)更新有效性,和將備份圖像210復(fù)制成新圖像220,重新引導(dǎo)系統(tǒng)。這種現(xiàn)有技術(shù)系統(tǒng)的缺點(diǎn)在于,復(fù)制整個(gè)備份圖像210以恢復(fù)系統(tǒng)。因此,現(xiàn)有技術(shù)系統(tǒng)不怎么有效,因?yàn)樗ǔP枰ㄙM(fèi)20到30秒時(shí)間來復(fù)制閃速存儲器中12Mb(兆字節(jié))的內(nèi)核圖像。
圖3是另一個(gè)現(xiàn)有技術(shù)系統(tǒng)的引導(dǎo)區(qū)的方塊圖,它利用兩個(gè)引導(dǎo)裝入程序330和340來自動更新內(nèi)核。參照圖3,當(dāng)更新內(nèi)核時(shí),將當(dāng)前圖像320復(fù)制到備份庫中,生成備份圖像310,并且,下載新圖像320。如果在執(zhí)行第一引導(dǎo)裝入程序340時(shí)系統(tǒng)的引導(dǎo)發(fā)生什么麻煩,則執(zhí)行第二引導(dǎo)裝入程序330裝入備份圖像310。這種現(xiàn)有技術(shù)系統(tǒng)的缺點(diǎn)在于,系統(tǒng)應(yīng)該具有物理執(zhí)行兩個(gè)引導(dǎo)裝入程序330和340的功能。
于是,需要一種自動更新內(nèi)核和當(dāng)出現(xiàn)更新錯(cuò)誤時(shí)有效恢復(fù)系統(tǒng)的技術(shù)。此外,當(dāng)在更新包括內(nèi)核在內(nèi)的幾個(gè)軟件部件的過程中出現(xiàn)錯(cuò)誤時(shí),該技術(shù)必須進(jìn)行更新回返。更具體地說,當(dāng)出現(xiàn)更新錯(cuò)誤時(shí),該技術(shù)必須自動將軟件恢復(fù)成它以前的狀態(tài)(例如,恢復(fù)到最后重新引導(dǎo)點(diǎn)),以便提供軟件自動更新的可靠性。
發(fā)明內(nèi)容
本發(fā)明提供了更新包括內(nèi)核的軟件部件和自動從在更新期間出現(xiàn)的錯(cuò)誤中恢復(fù)過來的引導(dǎo)方法、自動更新軟件和從錯(cuò)誤中恢復(fù)過來的方法和系統(tǒng)、和存儲該方法的計(jì)算機(jī)可讀記錄介質(zhì)。
根據(jù)本發(fā)明的一個(gè)方面,提供了通過裝入內(nèi)核引導(dǎo)系統(tǒng)的方法,該方法包含確定包括有關(guān)內(nèi)核的信息的主引導(dǎo)記錄是否有效;如果確定主引導(dǎo)記錄有效,利用主引導(dǎo)記錄裝入和執(zhí)行內(nèi)核;和如果確定主引導(dǎo)記錄無效,利用包括有關(guān)前內(nèi)核的信息的備份引導(dǎo)記錄裝入和執(zhí)行前內(nèi)核。
該方法可以進(jìn)一步包含根據(jù)部件配置信息確定前更新結(jié)果,部件配置信息包括與安裝在系統(tǒng)中的軟件部件的更新有關(guān)的信息;如果確定前更新成功完成,根據(jù)包括在部件配置信息中的當(dāng)前部件信息裝入和執(zhí)行部件;和如果確定前更新已停止,根據(jù)包括在部件配置信息中的前部件信息裝入和執(zhí)行部件。
該方法可以進(jìn)一步包含當(dāng)前更新已停止時(shí),如果確定除了內(nèi)核之外的部件的更新已完成,和包括在部件配置信息中的當(dāng)前內(nèi)核信息與存儲在主引導(dǎo)記錄中的內(nèi)核信息彼此相同,根據(jù)包括在部件配置信息中的當(dāng)前部件信息裝入和執(zhí)行部件。
根據(jù)本發(fā)明的另一個(gè)方面,提供了更新內(nèi)核和從更新錯(cuò)誤中恢復(fù)過來的自動更新軟件的方法,該方法包含下載新版本的內(nèi)核和存儲下載的內(nèi)核;將包括有關(guān)內(nèi)核的信息的主引導(dǎo)記錄復(fù)制在備份引導(dǎo)記錄上;和將有關(guān)新版本的內(nèi)核的信息記錄在主引導(dǎo)記錄上。
根據(jù)本發(fā)明的另一個(gè)方面,提供了自動更新軟件和從更新錯(cuò)誤中恢復(fù)過來以更新內(nèi)核的方法,該方法包含開始更新事務(wù)處理;將有關(guān)內(nèi)核的狀態(tài)信息改變成“下載”,將有關(guān)內(nèi)核的前信息改變成當(dāng)前信息,下載新版本的內(nèi)核,和存儲下載的內(nèi)核;將有關(guān)內(nèi)核的狀態(tài)信息改變成“更新”,將包括有關(guān)內(nèi)核的當(dāng)前信息的主引導(dǎo)記錄上的信息復(fù)制到備份引導(dǎo)記錄中,和將有關(guān)新版本的內(nèi)核的信息記錄在有關(guān)內(nèi)核的當(dāng)前信息和主引導(dǎo)記錄中;將有關(guān)內(nèi)核的狀態(tài)信息改變成“完成”;和結(jié)束更新事務(wù)處理。
該方法可以進(jìn)一步包含在將新信息記錄在主引導(dǎo)記錄上之前,將主引導(dǎo)記錄的有效性標(biāo)志表示成“無效”,和在將新信息記錄在主引導(dǎo)記錄上之后,將主引導(dǎo)記錄的有效性標(biāo)志表示成“有效”。
根據(jù)本發(fā)明的另一個(gè)方面,提供了自動恢復(fù)含有更新錯(cuò)誤的內(nèi)核和從更新錯(cuò)誤中恢復(fù)過來的自動更新軟件的方法,該方法包含確定內(nèi)核的更新是否已停止;和如果確定更新已停止,將備份引導(dǎo)記錄復(fù)制成主引導(dǎo)記錄。
確定步驟可以進(jìn)一步包含如果更新的事務(wù)處理已開始,確定更新已停止。
確定步驟可以進(jìn)一步包含如果有關(guān)內(nèi)核的當(dāng)前信息與包括在主引導(dǎo)記錄中的有關(guān)內(nèi)核的信息相同,確定更新成功完成。
根據(jù)本發(fā)明的另一個(gè)方面,提供了更新不止一個(gè)有必要更新的軟件部件和從更新錯(cuò)誤中恢復(fù)過來的自動更新軟件的方法,該方法包含依次更新包括在更新軟件包中的除了內(nèi)核之外的部件,更新軟件包包括有必要更新的部件的列表;和如果更新軟件包包括內(nèi)核,最后更新內(nèi)核。
部件的更新可以進(jìn)一步包括將有關(guān)部件的前信息改變成有關(guān)部件的當(dāng)前信息,和下載新版本的部件;和將有關(guān)部件的當(dāng)前信息改變成有關(guān)新版本部件的信息。
該方法可以進(jìn)一步包含在更新除了內(nèi)核之外的部件之前,開始更新事務(wù)處理;和在更新了內(nèi)核之后,結(jié)束更新事務(wù)處理。
內(nèi)核的更新可以進(jìn)一步包含將有關(guān)內(nèi)核的狀態(tài)信息改變成“下載”,將有關(guān)內(nèi)核的前信息改變成當(dāng)前信息,下載新版本的內(nèi)核,和存儲下載的內(nèi)核;將有關(guān)內(nèi)核的狀態(tài)信息改變成“更新”,將包括有關(guān)當(dāng)前內(nèi)核的信息的主引導(dǎo)記錄復(fù)制到備份引導(dǎo)記錄中,和將有關(guān)新版本的內(nèi)核的信息記錄在有關(guān)內(nèi)核的當(dāng)前信息和主引導(dǎo)記錄中;和將有關(guān)內(nèi)核的狀態(tài)信息改變成“完成”。
根據(jù)本發(fā)明的另一個(gè)方面,提供了恢復(fù)合有更新錯(cuò)誤的軟件部件和從更新錯(cuò)誤中恢復(fù)過來的自動更新軟件的方法,該方法包含確定包含在更新軟件包中的部件的更新是否已停止;和如果確定更新已停止,將包含在更新軟件包中的部件的備份部件轉(zhuǎn)換成原部件。
備份部分的轉(zhuǎn)換可以進(jìn)一步包含如果部件是內(nèi)核,將備份引導(dǎo)記錄復(fù)制成主引導(dǎo)記錄。
根據(jù)本發(fā)明的另一個(gè)方面,提供了自動更新軟件和從更新錯(cuò)誤中恢復(fù)過來的系統(tǒng),該系統(tǒng)包含非易失性存儲器,用于存儲當(dāng)前內(nèi)核、包括有關(guān)當(dāng)前內(nèi)核的地址信息的主引導(dǎo)記錄、和利用主引導(dǎo)記錄將當(dāng)前內(nèi)核裝入RAM中和執(zhí)行RAM中的當(dāng)前內(nèi)核以引導(dǎo)系統(tǒng)的引導(dǎo)裝入程序;和處理器,用于執(zhí)行存儲在非易失性存儲器中的引導(dǎo)裝入程序。
主引導(dǎo)記錄可以進(jìn)一步包含指示當(dāng)前內(nèi)核是否有效的有效性標(biāo)志,非易失性存儲器進(jìn)一步包含前內(nèi)核和包括有關(guān)前內(nèi)核的地址信息的備份引導(dǎo)記錄,和如果確定主引導(dǎo)記錄有效,引導(dǎo)裝入程序利用主引導(dǎo)記錄上的信息裝入當(dāng)前內(nèi)核,和如果確定主引導(dǎo)記錄無效,引導(dǎo)裝入程序利用備份引導(dǎo)記錄上的信息裝入前內(nèi)核。
非易失性存儲器進(jìn)一步包含包括有關(guān)軟件更新的信息的部件配置信息、和利用部件配置信息更新軟件部件和從在部件更新期間出現(xiàn)的錯(cuò)誤中恢復(fù)過來的更新引擎。
部件配置信息可以包括有關(guān)更新事務(wù)處理的狀態(tài)信息、包括前部件的名稱、地址和版本的前信息、包括當(dāng)前部件的地址和版本的當(dāng)前信息、和有關(guān)部件的更新狀態(tài)信息,和更新引擎根據(jù)部件配置信息更新每個(gè)部件和從更新錯(cuò)誤中恢復(fù)過來。
通過參照附圖對本發(fā)明的示范性實(shí)施例進(jìn)行詳細(xì)描述,本發(fā)明的上述和其它方面將更加清楚,在附圖中圖1是現(xiàn)有技術(shù)系統(tǒng)的引導(dǎo)區(qū)的方塊圖;圖2是利用更新有效性確認(rèn)庫自動更新內(nèi)核的另一個(gè)現(xiàn)有技術(shù)系統(tǒng)的引導(dǎo)區(qū)的方塊圖;圖3是利用兩個(gè)引導(dǎo)裝入程序自動更新內(nèi)核的另一個(gè)現(xiàn)有技術(shù)系統(tǒng)的引導(dǎo)區(qū)的方塊圖;圖4A例示了根據(jù)本發(fā)明示范性實(shí)施例的引導(dǎo)記錄的例子;圖4B是根據(jù)本發(fā)明示范性實(shí)施例的部件配置信息的方塊圖;
圖5是根據(jù)本發(fā)明示范性實(shí)施例的引導(dǎo)區(qū)的方塊圖;圖6是例示利用如圖5所示的引導(dǎo)區(qū)裝入內(nèi)核的機(jī)制的流程圖;圖7是例示內(nèi)核被完全裝入之后裝入其它軟件部件的操作的流程圖;圖8是例示根據(jù)本發(fā)明示范性實(shí)施例自動更新內(nèi)核的機(jī)制的流程圖;圖9A、9B、和9C詳細(xì)例示了在根據(jù)本發(fā)明示范性實(shí)施例的自動內(nèi)核更新期間的存儲器狀態(tài)變化;圖10A、10B、10C、和10D例示了在根據(jù)本發(fā)明示范性實(shí)施例的更新軟件包的部件自動更新期間的存儲器狀態(tài)變化;圖11是根據(jù)本發(fā)明示范性實(shí)施例更新軟件和從更新錯(cuò)誤中恢復(fù)過來的系統(tǒng)的方塊圖;和圖12是根據(jù)本發(fā)明另一個(gè)示范性實(shí)施例更新軟件和從更新錯(cuò)誤中恢復(fù)過來的系統(tǒng)的方塊圖。
具體實(shí)施例方式
在下文中,將參照附圖詳細(xì)描述本發(fā)明的示范性實(shí)施例。
圖4A例示了根據(jù)本發(fā)明示范性實(shí)施例的引導(dǎo)記錄的例子。當(dāng)啟動系統(tǒng)時(shí),引導(dǎo)裝入程序利用引導(dǎo)記錄裝入內(nèi)核和執(zhí)行裝入的內(nèi)核。
引導(dǎo)記錄包含內(nèi)核地址412和有效性標(biāo)志413。內(nèi)核地址412表示存儲在閃速存儲器中的內(nèi)核所在的位置。引導(dǎo)裝入程序利用內(nèi)核地址412找出內(nèi)核和裝入內(nèi)核。有效性標(biāo)志413指示內(nèi)核是否有效。也就是說,當(dāng)更新內(nèi)核時(shí),糾正引導(dǎo)記錄中的信息。在糾正引導(dǎo)記錄之前,將有效性標(biāo)志413設(shè)置成指示內(nèi)核無效,和在糾正了引導(dǎo)記錄之后,將有效性標(biāo)志413設(shè)置成指示內(nèi)核有效,從而使人們可以準(zhǔn)確確定引導(dǎo)記錄中的信息是否有效。此外,內(nèi)核標(biāo)識符(ID)410和版本411也可以包括在引導(dǎo)記錄中。
本示范性實(shí)施例包括兩個(gè)引導(dǎo)記錄。其中之一是存儲有關(guān)當(dāng)前內(nèi)核的信息的主引導(dǎo)記錄,和另一個(gè)是包括有關(guān)已成功裝入的前內(nèi)核的信息的備份引導(dǎo)記錄。
圖4B是根據(jù)本發(fā)明示范性實(shí)施例的部件配置信息的方塊圖。參照圖4B,部件配置信息包括有關(guān)安裝在系統(tǒng)中的軟件部件的基本信息和更新信息。部件配置信息可以以數(shù)據(jù)庫(DB)形式實(shí)現(xiàn)。
事務(wù)處理狀態(tài)信息420用于管理更新事務(wù)處理,它是用于存儲更新事務(wù)處理的當(dāng)前狀態(tài)和確定更新是否成功的標(biāo)志。
部件配置信息包含有關(guān)每個(gè)部件430的信息。例如,該信息包含名稱431、包括地址信息432和版本信息433的當(dāng)前部件信息440、當(dāng)前部件被更新之前管理前部件地址434和前版本435的前部件信息450、和管理部件更新的狀態(tài)的部件狀態(tài)信息436,但不局限于這些。本示范性實(shí)施例利用部件狀態(tài)信息436自動恢復(fù)系統(tǒng)。
圖5是根據(jù)本發(fā)明示范性實(shí)施例的引導(dǎo)區(qū)的方塊圖。參照圖5,引導(dǎo)區(qū)包含引導(dǎo)裝入程序550、當(dāng)前內(nèi)核520、備份前內(nèi)核510、記錄有關(guān)當(dāng)前內(nèi)核520的信息的主引導(dǎo)記錄540、和記錄有關(guān)前內(nèi)核510的信息的備份引導(dǎo)記錄530。
圖6是例示利用如圖5所示的引導(dǎo)區(qū)裝入內(nèi)核的機(jī)制的流程圖。參照圖6,啟動引導(dǎo)裝入程序550(操作S602),以便確定主引導(dǎo)記錄540的有效性標(biāo)志是否有效(操作S604)。如果確定主引導(dǎo)記錄540的有效性標(biāo)志有效(操作S606),則利用主引導(dǎo)記錄540裝入和執(zhí)行內(nèi)核(操作S608)。即,由主引導(dǎo)記錄540表示的當(dāng)前內(nèi)核520被裝入。但是,如果確定主引導(dǎo)記錄540的有效性標(biāo)志無效(操作S606),這表示在內(nèi)核的前一次更新期間出現(xiàn)錯(cuò)誤,那么,利用備份引導(dǎo)記錄530裝入和執(zhí)行內(nèi)核510(操作S610),以穩(wěn)定地啟動該系統(tǒng)。
圖7是例示內(nèi)核被完全裝入之后裝入其它軟件部件的操作的流程圖。參照圖7,更新引擎程序裝入和執(zhí)行用在系統(tǒng)中的軟件部件。啟動更新引擎(操作S702),以便根據(jù)部件配置信息確定前一次更新是否成功完成(操作S704)。該確定基于部件配置信息的事務(wù)處理狀態(tài)信息。如果事務(wù)處理狀態(tài)信息表示事務(wù)處理已結(jié)束,則表示更新事務(wù)處理成功完成。如果事務(wù)處理狀態(tài)信息表示事務(wù)處理已開始,則表示更新事務(wù)處理未成功停止。
如果確定前一次更新成功完成(操作S706),則利用包括在部件配置信息中的當(dāng)前部件信息裝入和執(zhí)行軟件部件(操作S708)。也就是說,根據(jù)當(dāng)前部件地址信息裝入軟件部件的當(dāng)前版本。
但是,如果確定前一次更新已停止(操作S706),則利用包括在部件配置信息中的前部件信息裝入和執(zhí)行軟件部件(操作S712)。也就是說,根據(jù)前部件地址信息裝入前一版本的軟件部件。
根據(jù)本發(fā)明的一個(gè)示范性實(shí)施例,可以在更新了除內(nèi)核之外的所有其它應(yīng)用程序之后更新內(nèi)核。因此,盡管前一次更新已停止,但可以確定除內(nèi)核之外的其它軟件部件的更新已成功完成,和包括在部件配置信息中的當(dāng)前內(nèi)核信息與主引導(dǎo)記錄的內(nèi)核信息相同(操作S710)。這意味著內(nèi)核更新是在主引導(dǎo)記錄上的信息都成功糾正之后停止的。在這種情況下,由于即使事務(wù)處理未得到認(rèn)定,也可以確定更新事務(wù)處理已經(jīng)成功完成,所以利用包括在部件配置信息中的當(dāng)前部件信息裝入和執(zhí)行軟件部件是有效的(操作S708)。
即使幾個(gè)部件的更新是在系統(tǒng)被重新引導(dǎo)之前停止的,也可以將系統(tǒng)恢復(fù)成用戶最后一次使用的部件配置。
圖8是例示根據(jù)本發(fā)明示范性實(shí)施例自動更新內(nèi)核的機(jī)制的流程圖。參照圖8,通過下載新版本的內(nèi)核(操作S802),將包括有關(guān)內(nèi)核的信息的主引導(dǎo)記錄備份在備份引導(dǎo)記錄中(操作S804),和將有關(guān)新版本的內(nèi)核的信息(例如,地址等,但不限于此)記錄到主引導(dǎo)記錄中(操作S806)更新內(nèi)核。
圖9A、9B、和9C詳細(xì)例示了在根據(jù)本發(fā)明示范性實(shí)施例的自動內(nèi)核更新期間的存儲器狀態(tài)變化。參照圖9A、9B、和9C,文件系統(tǒng)區(qū)910存儲三個(gè)應(yīng)用程序App.1、App.2、和App.3,和原始格式區(qū)920具有與如圖5所示的引導(dǎo)區(qū)幾乎相同的結(jié)構(gòu)。存儲更新和恢復(fù)所需的部件配置信息的配置DB 930包含作為事務(wù)處理狀態(tài)信息的PACKAGECOMMIT 940、部件標(biāo)識符950、當(dāng)前版本信息960、部件狀態(tài)信息970、和前版本信息980。盡管在圖9A、9B、和9C中未示出,但當(dāng)更新版本信息時(shí),也更新如圖4B所示的當(dāng)前地址信息423和前地址信息435。
作為不包括文件系統(tǒng)的引導(dǎo)區(qū)的原始格式區(qū)920存儲引導(dǎo)裝入程序921。但是,如果引導(dǎo)裝入程序921包括文件系統(tǒng),則可以將內(nèi)核和引導(dǎo)記錄存儲在文件系統(tǒng)區(qū)910中。此外,由于文件系統(tǒng)區(qū)910存儲像盤操作系統(tǒng)(DOS)那樣的文件系統(tǒng),因此本示范性實(shí)施例不需要這樣的文件系統(tǒng)。
如果本示范性實(shí)施例沒有文件系統(tǒng),則可以將應(yīng)用程序存儲在原始格式區(qū)920中。此外,可以將配置DB 930存儲在原始格式區(qū)920和文件系統(tǒng)區(qū)910之一中。
參照圖9A,將PACKAGECOMMIT 940設(shè)置成“NO”(操作S91),這意味著更新事務(wù)處理已開始,但未得到認(rèn)定。將要更新的內(nèi)核的狀態(tài)信息970改變成“DOWNLOAD”(S92),將前版本信息980改變成與當(dāng)前版本信息相對應(yīng)的“1.0”(S93),和下載和存儲新版本(1.1)的新內(nèi)核925(S94)。主引導(dǎo)記錄922表示當(dāng)前版本1.0的內(nèi)核924,而備份引導(dǎo)記錄923包括有關(guān)前版本0.5的備份內(nèi)核的信息。
參照圖9B,將內(nèi)核狀態(tài)信息改變成“UPDATE”(S95),將主引導(dǎo)記錄922上的信息復(fù)制到備份引導(dǎo)記錄923中,和將有關(guān)新版本的內(nèi)核的信息記錄在當(dāng)前內(nèi)核信息和主引導(dǎo)記錄922中。更具體地說,主引導(dǎo)記錄922表示新下載的版本1.1的內(nèi)核925(S97),和據(jù)此改變配置DB 930的相應(yīng)當(dāng)前版本和地址。
參照圖9C,將內(nèi)核狀態(tài)信息改變成“DONE”(S98),以表示內(nèi)核已成功更新。最后,將PACKAGECOMMIT 940設(shè)置成“YES”(S99),以表示更新事務(wù)處理已成功完成。
在上述過程中,在將新信息記錄在主引導(dǎo)記錄922上之前,主引導(dǎo)記錄922的有效性標(biāo)志總是表示“無效”,和在將新信息記錄在主引導(dǎo)記錄922上之后,主引導(dǎo)記錄922的有效性標(biāo)志總是表示“有效”。
當(dāng)在內(nèi)核更新過程中出現(xiàn)錯(cuò)誤時(shí),通過確定內(nèi)核更新是否成功完成,和如果確定內(nèi)核更新已停止,將備份引導(dǎo)記錄923復(fù)制成主引導(dǎo)記錄922,可以使系統(tǒng)自動恢復(fù)成成功裝載版本的內(nèi)核。
內(nèi)核更新是否已停止是根據(jù)PACKAGECOMMIT 940確定的。詳細(xì)地說,當(dāng)引導(dǎo)系統(tǒng)時(shí),如果PACKAGECOMMIT 940被設(shè)置成“NO”,則確定更新事務(wù)處理已經(jīng)停止。
但是,即使更新事務(wù)處理失敗,當(dāng)前內(nèi)核信息和存儲在主引導(dǎo)記錄922中的內(nèi)核信息彼此也有可能幾乎相同,那就是,當(dāng)更新事務(wù)處理在S91到S97完成之后停止時(shí)。在這種情況下,認(rèn)為內(nèi)核更新已成功完成,和更新事務(wù)處理可以被認(rèn)定為沒有自動恢復(fù)過程地完成。
圖10A、10B、10C、和10D例示了在根據(jù)本發(fā)明示范性實(shí)施例自動更新更新軟件包990中的部件期間的存儲器狀態(tài)變化。
參照圖10A,更新軟件包990是要更新的軟件部件的列表。該列表可以包括應(yīng)用程序部件和內(nèi)核。可以依次更新應(yīng)用程序部件(S102到S109),然后更新作為關(guān)鍵部件的內(nèi)核。
包括在更新軟件包990中除內(nèi)核之外的應(yīng)用程序部件,即,應(yīng)用程序App.1像圖10B、10C、和10D所示那樣更新。應(yīng)用程序App.1是通過將前部件信息改變成當(dāng)前部件信息,下載新版本的部件,和將當(dāng)前部件信息改變成有關(guān)新版本部件的信息更新的。
參照圖10B,將PACKAGECOMMIT 940設(shè)置成“NO”,以便開始更新事務(wù)處理(操作S101)。將當(dāng)前部件狀態(tài)信息970改變成“DOWNLOAD”(S102),將前部件信息980改變成當(dāng)前部件信息960(操作S103),和下載和存儲新版本的部件,即,new App.1(操作S104)。
參照圖10C,將部件狀態(tài)信息970改變成“UPDATE”(操作S105),將前版本的部件App.1備份成Appl.bak(操作S106),和將新版本的部件,即,new App.1改變成原部件App.1(操作S107)。
參照圖10D,將當(dāng)前部件信息960改變成有關(guān)新版本的部件的信息(操作S108),和將部件狀態(tài)信息970改變成“DONE”(操作S109)。部件App.1的當(dāng)前和前版本分別是1.1和1.0。
通過操作S102到S109更新包括在更新軟件包990中的每個(gè)應(yīng)用程序。最后,通過如圖9A、9B、和9C所示的操作S92到S98更新內(nèi)核。當(dāng)包括在更新軟件包990中的每個(gè)部件都被完全更新時(shí),將PACKAGECOMMIT 940設(shè)置成“YES”,以完成更新事務(wù)處理(操作S120)。
當(dāng)在部件更新過程中出現(xiàn)錯(cuò)誤時(shí),通過確定包括在更新軟件包中的部件是否成功更新,和如果確定部件更新已停止,將與包括在更新軟件包中的所有部件相對應(yīng)的備份部件改變成原部件,可以使部件自動恢復(fù)成前版本。當(dāng)在內(nèi)核更新過程中出現(xiàn)錯(cuò)誤時(shí),通過將備份引導(dǎo)記錄923復(fù)制成主引導(dǎo)記錄922,可以使內(nèi)核自動恢復(fù)成前版本。
是否出現(xiàn)更新錯(cuò)誤是根據(jù)有關(guān)更新事務(wù)處理的狀態(tài)信息確定的。如果在重新引導(dǎo)系統(tǒng)時(shí)更新事務(wù)處理處在表示開始的狀態(tài)下,則確定更新事務(wù)處理在重新引導(dǎo)之前未成功停止。但是,盡管更新事務(wù)處理未完成,但如果有關(guān)除了內(nèi)核之外的包括在更新軟件包990中的部件的狀態(tài)信息被設(shè)置成“DONE”,和當(dāng)前內(nèi)核信息和存儲在主引導(dǎo)記錄922中的內(nèi)核信息彼此相同,則內(nèi)核更新實(shí)際上已完成了。因此,認(rèn)為內(nèi)核更新已成功完成,內(nèi)核可能未恢復(fù)成前版本和更新事務(wù)處理得到認(rèn)定。
圖11是根據(jù)本發(fā)明示范性實(shí)施例更新軟件和從更新錯(cuò)誤中恢復(fù)過來的系統(tǒng)的方塊圖。參照圖11,該系統(tǒng)包含處理器1200、RAM 1100、和非易失性存儲器1000,非易失性存儲器1000存儲當(dāng)前內(nèi)核1001、包括有關(guān)當(dāng)前內(nèi)核1001的地址信息的主引導(dǎo)記錄1002、和作為引導(dǎo)系統(tǒng)的程序代碼(例如,一組指令)的引導(dǎo)裝入程序1003。
引導(dǎo)裝入程序1003利用主引導(dǎo)記錄1002將當(dāng)前內(nèi)核1001裝入RAM 1100中和執(zhí)行RAM 1100,以引導(dǎo)系統(tǒng)。主引導(dǎo)記錄1002可以包括指示當(dāng)前內(nèi)核1001是否有效的有效性標(biāo)志。
圖12是根據(jù)本發(fā)明另一個(gè)示范性實(shí)施例更新軟件和從更新錯(cuò)誤中恢復(fù)過來的系統(tǒng)的方塊圖。非易失性存儲器1000可以包括作為備份內(nèi)核的前版本的前內(nèi)核1004、和作為備份主引導(dǎo)記錄1002的備份引導(dǎo)記錄1005。在這種情況下,當(dāng)引導(dǎo)系統(tǒng)時(shí),引導(dǎo)裝入程序1003確定主引導(dǎo)記錄1002是否有效。如果確定主引導(dǎo)記錄1002有效,則利用主引導(dǎo)記錄1002上的信息裝入當(dāng)前內(nèi)核1001,和如果確定主引導(dǎo)記錄1002無效,則利用備份引導(dǎo)記錄1005上的信息裝入前內(nèi)核1004。
非易失性存儲器1000可以包括包含有關(guān)軟件更新的信息的部件配置信息1010、和利用部件配置信息1010更新軟件部件和從在部件更新過程中出現(xiàn)的錯(cuò)誤中恢復(fù)過來的更新引擎1020。
如圖4B所示,部件配置信息1010可以包括有關(guān)更新事務(wù)處理的狀態(tài)信息、包括更新之前安裝的部件的名稱、地址和版本的前信息、包括更新部件的地址和版本的當(dāng)前信息、和有關(guān)部件的更新狀態(tài)信息。更新引擎1020根據(jù)部件配置信息1010更新每個(gè)部件和從更新錯(cuò)誤中恢復(fù)過來。
本示范性實(shí)施例也可以具體化成計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可讀代碼(例如,一組指令)。
如上所述,本示范性實(shí)施例可以更新當(dāng)其更新失敗時(shí)可能導(dǎo)致致命結(jié)果的軟件和內(nèi)核,和可以利用部件配置信息使系統(tǒng)從更新錯(cuò)誤中恢復(fù)過來。
此外,即使由于外部原因使軟件更新停止了,本示范性實(shí)施例也可以利用成功裝入的最后配置信息在引導(dǎo)單元中恢復(fù)系統(tǒng),從而使系統(tǒng)幾乎完全地回返到前版本。
此外,本示范性實(shí)施例利用引導(dǎo)記錄有效地更新內(nèi)核和引導(dǎo)系統(tǒng),和在內(nèi)核得到恢復(fù)時(shí)只改變引導(dǎo)記錄,使系統(tǒng)運(yùn)行速度顯著提高。
雖然通過參照本發(fā)明的示范性、非限制性實(shí)施例,已經(jīng)對本發(fā)明進(jìn)行了具體圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式和細(xì)節(jié)上對其作各種各樣的改變,而不偏離本發(fā)明權(quán)利要求書限定的本發(fā)明的精神和范圍。
本申請要求2005年9月27日向韓國知識產(chǎn)權(quán)局提出的韓國專利申請第10-2005-0089692號的優(yōu)先權(quán),特此全文引用以供參考。
權(quán)利要求
1.一種通過裝入內(nèi)核引導(dǎo)系統(tǒng)的方法,該方法包含確定包括有關(guān)內(nèi)核的信息的主引導(dǎo)記錄是否有效;如果確定主引導(dǎo)記錄有效,則利用主引導(dǎo)記錄裝入和執(zhí)行內(nèi)核;和如果確定主引導(dǎo)記錄無效,則利用包括有關(guān)前內(nèi)核的信息的備份引導(dǎo)記錄裝入和執(zhí)行前內(nèi)核。
2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包含根據(jù)部件配置信息確定前更新的結(jié)果,部件配置信息包括與安裝在系統(tǒng)中的軟件部件的更新有關(guān)的信息;如果確定前更新成功完成,則根據(jù)包括在部件配置信息中的當(dāng)前部件信息裝入和執(zhí)行該部件;和如果確定前更新未成功完成,則根據(jù)包括在部件配置信息中的前部件信息裝入和執(zhí)行該部件。
3.根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包含當(dāng)前更新已停止時(shí),如果確定除了內(nèi)核之外的軟件部件的更新已完成,和包括在部件配置信息中的當(dāng)前內(nèi)核信息與存儲在主引導(dǎo)記錄中的內(nèi)核信息幾乎彼此相同,則根據(jù)包括在部件配置信息中的當(dāng)前部件信息裝入和執(zhí)行該部件。
4.一種更新內(nèi)核和從更新錯(cuò)誤中恢復(fù)過來的自動更新軟件的方法,該方法包含下載新版本的內(nèi)核和存儲下載的新版本內(nèi)核;將包括有關(guān)內(nèi)核的信息的主引導(dǎo)記錄復(fù)制在備份引導(dǎo)記錄上;和將有關(guān)新版本的內(nèi)核的信息記錄在主引導(dǎo)記錄上。
5.一種自動更新軟件和從更新錯(cuò)誤中恢復(fù)過來以更新內(nèi)核的方法,該方法包含開始更新事務(wù)處理;將有關(guān)內(nèi)核的狀態(tài)信息改變成“下載”,將有關(guān)內(nèi)核的前信息改變成當(dāng)前信息,下載新版本的內(nèi)核,和存儲下載的新版本內(nèi)核;將有關(guān)內(nèi)核的狀態(tài)信息改變成“更新”,將包括有關(guān)內(nèi)核的當(dāng)前信息的主引導(dǎo)記錄上的信息復(fù)制到備份引導(dǎo)記錄中,和將有關(guān)新版本的內(nèi)核的信息記錄在有關(guān)內(nèi)核的當(dāng)前信息和主引導(dǎo)記錄中;將內(nèi)核的狀態(tài)信息改變成“完成”;和結(jié)束更新事務(wù)處理。
6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包含在將新信息記錄在主引導(dǎo)記錄上之前,將主引導(dǎo)記錄的有效性標(biāo)志表示成“無效”;和在將新信息記錄在主引導(dǎo)記錄上之后,將主引導(dǎo)記錄的有效性標(biāo)志表示成“有效”。
7.一種自動恢復(fù)含有更新錯(cuò)誤的內(nèi)核和從更新錯(cuò)誤中恢復(fù)過來的自動更新軟件的方法,該方法包含確定內(nèi)核的更新是否已停止;和如果確定更新已停止,則將備份引導(dǎo)記錄復(fù)制成主引導(dǎo)記錄。
8.根據(jù)權(quán)利要求7所述的方法,其中,該確定步驟進(jìn)一步包含如果更新的事務(wù)處理已開始,則確定更新已停止。
9.根據(jù)權(quán)利要求8所述的方法,其中,該確定步驟進(jìn)一步包含如果有關(guān)內(nèi)核的當(dāng)前信息與包括在主引導(dǎo)記錄中的有關(guān)內(nèi)核的信息幾乎相同,確定更新成功完成。
10.一種更新不止一個(gè)有必要更新的軟件部件和從更新錯(cuò)誤中恢復(fù)過來的自動更新軟件的方法,該方法包含依次更新包括在更新軟件包中的除了內(nèi)核之外的部件,更新軟件包包括有必要更新的部件的列表;和如果更新的軟件包包括內(nèi)核,最后更新內(nèi)核。
11.根據(jù)權(quán)利要求10所述的方法,其中,部件的更新進(jìn)一步包含將有關(guān)部件的前信息改變成有關(guān)部件的當(dāng)前信息,和下載新版本的部件;和將有關(guān)部件的當(dāng)前信息改變成有關(guān)新版本的部件的信息。
12.根據(jù)權(quán)利要求11所述的方法,其中,內(nèi)核的更新進(jìn)一步包含下載新版本的內(nèi)核和存儲下載的新版本內(nèi)核;將包括有關(guān)當(dāng)前內(nèi)核的信息的主引導(dǎo)記錄復(fù)制到備份引導(dǎo)記錄;和將新版本內(nèi)核的信息記錄在主引導(dǎo)記錄上。
13.根據(jù)權(quán)利要求10所述的方法,進(jìn)一步包含在更新除了內(nèi)核之外的部件之前,開始更新事務(wù)處理;和在更新了內(nèi)核之后,結(jié)束更新事務(wù)處理。
14.根據(jù)權(quán)利要求13所述的方法,其中,該內(nèi)核的更新進(jìn)一步包含將有關(guān)內(nèi)核的狀態(tài)信息改變成“下載”,將有關(guān)內(nèi)核的前信息改變成當(dāng)前信息,下載新版本的內(nèi)核,和存儲下載的新版本內(nèi)核;將有關(guān)內(nèi)核的狀態(tài)信息改變成“更新”,將包括有關(guān)當(dāng)前內(nèi)核的信息的主引導(dǎo)記錄復(fù)制到備份引導(dǎo)記錄中,和將有關(guān)新版本的內(nèi)核的信息記錄在有關(guān)內(nèi)核的當(dāng)前信息和主引導(dǎo)記錄中;和將有關(guān)內(nèi)核的狀態(tài)信息改變成“完成”。
15.根據(jù)權(quán)利要求14所述的方法,其中,部件的更新進(jìn)一步包含將有關(guān)部件的狀態(tài)信息改變成“下載”,將有關(guān)部件的前信息改變成當(dāng)前信息,下載新版本的部件,和存儲下載的新版本部件;將有關(guān)部件的狀態(tài)信息改變成“更新”,將前版本的部件轉(zhuǎn)換成備份部件,和將新版本的部件轉(zhuǎn)換成原部件;和將有關(guān)部件的當(dāng)前信息改變成有關(guān)新版本部件的信息,和將有關(guān)部件的狀態(tài)信息改變成“完成”。
16.一種恢復(fù)含有更新錯(cuò)誤的軟件部件和從更新錯(cuò)誤中恢復(fù)過來的自動更新軟件的方法,該方法包含確定包括在更新軟件包中的部件的更新是否已停止;和如果確定更新已停止,則將包括在更新軟件包中的部件的備份部件轉(zhuǎn)換成原部件。
17.根據(jù)權(quán)利要求16所述的方法,其中,該確定步驟進(jìn)一步包含如果更新的事務(wù)處理已開始,則確定更新已停止。
18.根據(jù)權(quán)利要求17所述的方法,其中,該確定步驟進(jìn)一步包含當(dāng)更新的事務(wù)處理已開始時(shí),如果除了內(nèi)核之外的部件的更新已完成,和當(dāng)前內(nèi)核信息與存儲在主引導(dǎo)記錄中的內(nèi)核信息幾乎彼此相同,則確定更新已成功完成。
19.根據(jù)權(quán)利要求16所述的方法,其中,該轉(zhuǎn)換步驟進(jìn)一步包含如果部件是內(nèi)核,則將備份引導(dǎo)記錄復(fù)制成主引導(dǎo)記錄。
20.一種上面記錄著執(zhí)行通過裝入內(nèi)核引導(dǎo)系統(tǒng)的方法的計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),該方法包含確定包括有關(guān)內(nèi)核的信息的主引導(dǎo)記錄是否有效;如果確定主引導(dǎo)記錄有效,則利用主引導(dǎo)記錄裝入和執(zhí)行內(nèi)核;和如果確定主引導(dǎo)記錄無效,則利用包括有關(guān)內(nèi)核的前版本的信息的備份引導(dǎo)記錄裝入和執(zhí)行內(nèi)核的前版本。
21.一種上面記錄著執(zhí)行更新內(nèi)核的自動更新軟件的方法的計(jì)算機(jī)程序的計(jì)算機(jī)可讀介質(zhì),該方法包含下載新版本的內(nèi)核和存儲下載的內(nèi)核;將包括有關(guān)內(nèi)核的信息的主引導(dǎo)記錄復(fù)制在備份引導(dǎo)記錄上;和將有關(guān)新版本的內(nèi)核的信息記錄在主引導(dǎo)記錄上。
22.一種自動更新軟件和從更新錯(cuò)誤中恢復(fù)過來的系統(tǒng),該系統(tǒng)包含非易失性存儲器,用于存儲當(dāng)前內(nèi)核、包括有關(guān)當(dāng)前內(nèi)核的地址信息的主引導(dǎo)記錄、和利用主引導(dǎo)記錄將當(dāng)前內(nèi)核裝入RAM中和執(zhí)行該RAM以引導(dǎo)系統(tǒng)的引導(dǎo)裝入程序;和處理器,用于執(zhí)行存儲在非易失性存儲器中的引導(dǎo)裝入程序。
23.根據(jù)權(quán)利要求22所述的系統(tǒng),其中,主引導(dǎo)記錄進(jìn)一步包含指示當(dāng)前內(nèi)核是否有效的有效性標(biāo)志,非易失性存儲器進(jìn)一步包含前內(nèi)核和包括有關(guān)前內(nèi)核的地址信息的備份引導(dǎo)記錄,和如果確定主引導(dǎo)記錄有效,則引導(dǎo)裝入程序利用主引導(dǎo)記錄上的信息裝入當(dāng)前內(nèi)核,和如果確定主引導(dǎo)記錄無效,則引導(dǎo)裝入程序利用備份引導(dǎo)記錄上的信息裝入前內(nèi)核。
24.根據(jù)權(quán)利要求23所述的系統(tǒng),其中,非易失性存儲器進(jìn)一步包含包括有關(guān)軟件更新的信息的部件配置信息、和利用部件配置信息更新軟件部件和從在部件更新期間出現(xiàn)的錯(cuò)誤中恢復(fù)過來的更新引擎。
25.根據(jù)權(quán)利要求24所述的系統(tǒng),其中,部件配置信息包括有關(guān)更新事務(wù)處理的狀態(tài)信息、包括前部件的名稱、地址和版本的前信息、包括當(dāng)前部件的地址和版本的當(dāng)前信息、和有關(guān)部件的更新狀態(tài)信息的至少一個(gè),和更新引擎根據(jù)部件配置信息更新每個(gè)部件和從更新錯(cuò)誤中恢復(fù)過來。
26.根據(jù)權(quán)利要求23所述的系統(tǒng),其中,主引導(dǎo)記錄和備份引導(dǎo)記錄進(jìn)一步包含有關(guān)內(nèi)核標(biāo)識符和版本的信息。
全文摘要
本發(fā)明提供了更新安裝在系統(tǒng)中的軟件部件和從在更新期間出現(xiàn)的錯(cuò)誤中恢復(fù)過來的引導(dǎo)方法、自動更新軟件和從錯(cuò)誤中恢復(fù)過來的方法和系統(tǒng)、和存儲該方法的計(jì)算機(jī)可讀記錄介質(zhì)。主引導(dǎo)記錄和備份引導(dǎo)記錄用于穩(wěn)定地更新內(nèi)核和有效地從更新錯(cuò)誤中恢復(fù)過來。部件配置數(shù)據(jù)庫用于在事務(wù)處理中更新包括內(nèi)核的數(shù)個(gè)軟件部件,和完全從更新錯(cuò)誤中恢復(fù)過來。
文檔編號G06F9/445GK1940878SQ200610159300
公開日2007年4月4日 申請日期2006年9月27日 優(yōu)先權(quán)日2005年9月27日
發(fā)明者李鐘碩 申請人:三星電子株式會社