(57)【要約】【課題】  正常なファイルをロードすることができずにブートに失敗した場合、自動的に別のバックアップファイルを選択し復旧起動する。【解決手段】  起動システムテーブル３０６にあらかじめ定められた優先度の最も高いプログラムファイルに含まれるカーネル４０を起動し、起動監視タイマ７０によって計測される起動開始からの経過時間にもとづいて、当該カーネル４０が正常に起動されたか否かを判断する。正常に起動されていないと判断された場合には、このカーネル４０を再起動する。起動カウンタテーブル３０４にあらかじめ定められた所定の回数、再起動を行っても正常に起動されないと判断される場合には、次に優先度の高いプログラムファイルに含まれるカーネル４０の起動を開始する。カーネル４０が正常に起動された場合、起動カウンタ３０３によってカウントされた、当該カーネル４０の起動が試行された回数を、アプリケーションプロセス６０に通知する。【選択図】  図１
2005222366.tif 000002
【特許請求の範囲】
【請求項１】
カーネルとアプリケーションを含むプログラムファイルが複数備えられた処理装置の自動復帰方法であって、
優先順位が付けられた前記複数のプログラムファイルから、優先度の最も高いプログラムファイルに含まれるカーネルの起動を開始するステップと、
カーネルの起動開始からの経過時間にもとづいて、当該カーネルが正常に起動されたか否かを判断するステップと、
正常に起動されていないと判断された場合、当該カーネルを再起動するステップと、
所定の回数、正常に起動されていないと判断された場合、次に優先度の高いプログラムファイルに含まれるカーネルの起動を開始するステップを有する方法。
【請求項２】
カーネルが正常に起動されると、当該カーネルの起動が試行された回数を、当該カーネルに対応するアプリケーションに通知するステップをさらに有する、請求項１に記載の方法。
【請求項３】
前記所定の回数を前記プログラムファイルごとにあらかじめ定める、請求項１または２に記載の方法。
【請求項４】
請求項１から３のいずれか１項に記載の各ステップをコンピュータに実行させるプログラム。
【請求項５】
請求項１から３のいずれか１項に記載の各ステップをコンピュータに実行させるプログラムを記録した、コンピュータ読み取りが可能な記録媒体。
【請求項６】
カーネルとアプリケーションを含み、優先順位の付けられた複数のプログラムファイルのなかから、最も優先度の高いプログラムファイルに含まれるカーネルの起動を開始する手段と、
カーネルの起動開始からの経過時間にもとづいて、当該カーネルが正常に起動されたか否かを判断する手段と、
正常に起動されていないと判断された場合、当該カーネルを再起動する手段と、
所定の回数、正常に起動されていないと判断された場合、次に優先度の高いプログラムファイルに含まれるカーネルの起動を開始する手段を有する処理装置。
【請求項７】
カーネルが正常に起動されると、当該カーネルの起動が試行された回数を、当該カーネルに対応するアプリケーションに通知する手段をさらに有する、請求項６に記載の処理装置。
【請求項８】
前記所定の回数は、前記プログラムファイルごとにあらかじめ定められている、請求項６または７に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおける、オペレーティングシステム（ＯＳ）などの復帰方法に関する。
【背景技術】
【０００２】
既存のコンピュータシステムでは、１台のコンピュータシステムで複数のＯＳなどを実行させるために、手動でＯＳを選択して起動していた（例えば、非特許文献１、２参照）。
【非特許文献１】“ＧＮＵ ＧＲＵＢ−ＧＮＵ Ｐｒｏｊｅｃｔ−Ｆｒｅｅ Ｓｏｆｔｗａｒｅ Ｆｏｕｎｄａｔｉｏｎ（ＦＳＦ）”、［ｏｎｌｉｎｅ］、［平成１６年１月３０日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｇｎｕ．ｏｒｇ／ｓｏｆｔｗａｒｅ／ｇｒｕｂ／ｇｒｕｂ．ｈｔｍｌ＞
【非特許文献２】奥地秀則、松嶋明宏、“次世代ＧＲＵＢブートローダの基本設計と実装”、[ｏｎｌｉｎｅ]、［平成１６年１月３０日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｐａ．ｇｏ．ｊｐ／ＳＰＣ／ｒｅｐｏｒｔ／０２ｆｙ−ｐｒｏ／ｒｅｐｏｒｔ／８７５／ｐａｐｅｒ．ｐｄｆ＞
【発明の開示】
【発明が解決しようとする課題】
【０００３】
したがって、設定の誤りやファイルの破損などにより、正常なファイルをロードすることができずに、ブートに失敗した場合、手動で別のバックアップファイルを選択し、ＯＳなどを復旧起動させなければならなかった。
【０００４】
本発明の目的は、設定の誤りやファイルの破損などにより、正常なファイルをロードすることができずに、ブートに失敗した場合、自動的に別のバックアップファイルを選択し、ＯＳなどを復旧起動できる方法を提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は、まず、あらかじめ定められた優先度の最も高いプログラムファイルに含まれるカーネルを起動し、起動開始からの経過時間にもとづいて、当該カーネルが正常に起動されたか否かを判断する。例えば、所定の時間を経過しても正常に起動されない場合には、正常に起動されなかったと判断する。
【０００６】
次に、正常に起動されていないと判断された場合には、このカーネルを再起動する。
【０００７】
次に、所定の回数、再起動を行っても、正常に起動されないと判断される場合には、次に優先度の高いプログラムファイルに含まれるカーネルの起動を開始する。以下、以上の処理が繰り返される。
【０００８】
また、カーネルが正常に起動された場合、当該カーネルの起動が試行された回数を、当該カーネルに対応するアプリケーションに通知するようにする。こうすると、アプリケーションは、この情報を自身が保有するデータの整合処理に利用できる。
【発明の効果】
【０００９】
以上説明したように、本発明によれば、現用のプログラムファイルを用いて起動を開始し、万一現用のプログラムファイルを用いて起動ができなくても、バックアップファイルを新しい順に用いて自動的に起動ができるようになるので、システムの信頼性向上が可能となる。
【発明を実施するための最良の形態】
【００１０】
次に、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１１】
図１を参照すると、本発明の一実施形態の処理装置１０の機能ブロック図が示されている。処理装置１０は、外部記憶装置８０から各種のデータを読み出しながら、ＢＩＯＳ（Ｂａｓｉｃ Ｉｎｐｕｔ Ｏｕｔｐｕｔ Ｓｙｓｔｅｍ）２０、ブートローダ３０、カーネル４０、基底プロセス５０、アプリケーションプロセス６０、起動監視タイマ７０を起動し、処理を実行していく。
【００１２】
ＢＩＯＳ２０は、外部記憶装置８０のブートローダ保存領域８０１にあるブートローダプログラム８０１１を読み出して実行し、ブートローダ３０を起動する。
【００１３】
ブートローダ３０は、ファイル選択部３０１と、カーネルローダ３０２と、起動カウンタ３０３と、起動カウンタテーブル３０４と、起動システム選択フラグ３０５と、起動システムテーブル３０６と、起動カウンタ保存領域３０７を含む。
【００１４】
起動カウンタ３０３と、起動カウンタテーブル３０４と、起動システム選択フラグ３０５と、起動システムテーブル３０６には、外部記憶装置８０の起動情報保存領域８０５にある起動カウンタ保存ファイル８０５１と、起動カウンタテーブル保存ファイル８０５２と、起動システム選択フラグ保存ファイル８０５３と、起動システムテーブル保存ファイル８０５４から読み出されたデータがそれぞれ格納される。
【００１５】
表１を参照すると、起動カウンタ３０３の一例が示されている。起動カウンタ３０３は、当該起動システムの起動回数を保存する。ブートローダ３０は、この値を読み込むことで、当該起動システムの現在の起動回数に関する情報を取得することができる。
【００１６】
【表１】
2005222366.tif 000003
表２を参照すると、起動カウンタテーブル３０４の一例が示されている。起動カウンタテーブル３０４は、起動順（優先順）として順序を示す値、起動システム名として文字列、当該起動システムの起動を諦め、次の起動順の起動システムの起動を開始する際の基準となる閾値を示す値から構成されている。ブートローダ３０は、起動システム名から、閾値を取得したり、現在の起動システム名をもとに次に起動する起動システム名を取得したりすることが可能となる。
【００１７】
【表２】
2005222366.tif 000004
表３を参照すると、起動システム選択フラグ３０５の一例が示されている。起動システム選択フラグ３０５は、起動システム名で構成され、起動システム全体を現す文字列を保存する。ブートローダ３０は、この値を読み込むことで、現在、起動対象としているシステムの情報を取得することができる。
【００１８】
【表３】
2005222366.tif 000005
表４を参照すると、起動システムテーブル３０６の一例が示されている。起動システムテーブル３０６は、起動システム名、パーティションラベル、カーネルファイル名から構成され、全て文字列として保存される。起動システム名から、実際にロードの対象とする外部記憶装置８０の保存領域の情報やロードするファイル名の情報を取得することが可能となる。
【００１９】
【表４】
2005222366.tif 000006
ファイル選択部３０１は、起動カウンタ３０３と、起動カウンタテーブル３０４と、起動システム選択フラグ３０５と、起動システムテーブル３０６に示される起動情報から、起動するカーネルファイルを選択する。選択するカーネルファイルは、外部記憶装置８０の現用ファイル保存領域８０２の現用カーネルファイル８０２１と、バックアップ１保存領域８０３のバックアップ１カーネルファイル８０３１と、バックアップ２保存領域８０４のバックアップ２カーネルファイル８０４１の中から選択される。
【００２０】
カーネルローダ３０２は、ファイル選択部３０１が選択したカーネルファイルにもとづき、カーネル４０を起動する。
【００２１】
起動カウンタ保存領域３０７には、後述するように、基底プロセス５０によって起動カウンタ３０３の値がコピーされる。コピーされた情報は、アプリケーションプロセス６０によって利用される。
【００２２】
カーネル４０は、起動監視タイマ７０の起動と、各種初期化と、基底プロセス５０の起動を行う。
【００２３】
基底プロセス５０は、カーネル４０の正常な起動を確認すると、起動監視タイマ７０の停止をカーネル４０に要求する。また、アプリケーションプロセス６０がその保持する情報の整合処理を行うのに利用させるために、起動カウンタ３０３の値を起動カウンタ保存領域３０７にコピーする。そして、基底プロセス５０は、起動されたカーネルに対応するアプリケーションファイル（現用アプリケーションファイル８０２２、バックアップ１アプリケーションファイル８０３２、バックアップ２アプリケーションファイル８０４２）を読み出して実行し、アプリケーションプロセス６０を起動する。
【００２４】
アプリケーションプロセス６０は、起動システム選択フラグ３０５と起動カウンタ保存領域３０７の情報を読み出し、自身が保有するデータの整合処理に利用する。
【００２５】
起動監視タイマ７０は、カーネル４０の起動開始とともに起動され、カーネル４０の起動が正常に終了すると、基底プロセス５０の要求により、カーネル４０によって停止される。所定の時間が経過すれば、カーネル４０の起動が失敗したものとみなし、カーネル４０の再起動を要求する。
【００２６】
図２Ａ、Ｂを参照すると、本実施形態の処理装置１０における自動復帰方法の処理の流れを示すフローチャートが示されている。
【００２７】
ステップ２０１で、ＢＩＯＳ２０が、処理装置１０の再起動が開始されると、起動される。
【００２８】
ステップ２０２で、ＢＩＯＳ２０は、基本的なハードウェア（ディスプレーカード、ハードディスクコントローラ、フロッピーディスクコントローラなど）の初期化を行うとともに、外部記憶装置８０のブートローダ保存領域８０１から、ブートローダプログラム８０１１を読み出し、ブートローダプログラム８０１１のロードと実行を行う。以降、ブートローダ３０に処理が移される。
【００２９】
ステップ２０３で、ブートローダ３０は、ファイル選択部３０１に処理を移す。ファイル選択部３０１は、外部記憶装置８０の起動情報保存領域８０５にある起動カウンタ保存ファイル８０５１と、起動カウンタテーブル保存ファイル８０５２と、起動システム選択フラグ保存ファイル８０５３と、起動システムテーブル保存ファイル８０５４を読み出し、これらを、起動カウンタ３０３と、起動カウンタテーブル３０４と、起動システム選択フラグ３０５と、起動システムテーブル３０６にそれぞれ格納する。この際、起動順１位の起動システムが起動システム選択フラグ保存ファイル８０５３に格納される。
【００３０】
ステップ２０４で、ファイル選択部３０１は、起動カウンタ３０３の値を１だけ増やす。
【００３１】
ステップ２０５で、ファイル選択部３０１は、起動システム選択フラグ３０５の値をキーとして、起動カウンタテーブル３０４から、起動システム選択フラグ３０５の値に対応する閾値を取り出し、この閾値と起動カウンタ３０３の値を比較する。
【００３２】
例えば、表３の起動システム選択フラグ３０５の値は“現用”であるので、この“現用”をキーとして、表２の起動カウンタテーブル３０４から、“現用”に対応する閾値である２を取り出し、表１の起動カウンタ３０３の値（ステップ２０４により、この時点では少なくとも１以上）と比較する。
【００３３】
閾値＜起動カウンタであればステップ２０６に進み、閾値≧起動カウンタであればステップ２０９に進む。ステップ２０６以降は、起動しようとしている起動システムを諦め、別の起動システムを起動する処理であり、ステップ２０９以降は、起動しようとしている起動システムの起動を続行する処理にあたる。
【００３４】
閾値＜起動カウンタの場合、ステップ２０６で、ファイル選択部３０１は、起動カウンタ３０３の値を０とする。これは、別の起動システムを起動するためである。
【００３５】
ステップ２０７で、ファイル選択部３０１は、起動システム選択フラグ３０５の値をキーとして、起動カウンタテーブル３０４から、起動システム選択フラグ３０５の値に対応する起動順の値を取り出す。
【００３６】
例えば、表３の起動システム選択フラグ３０５の値が“現用”であるので、“現用”をキーとして、表２の起動カウンタテーブル３０４から、“現用”に対応する起動順の値である１を取り出す。
【００３７】
ステップ２０８で、ファイル選択部３０１は、ステップ２０７で取り出した起動順の値を１だけ増やし、この値をキーとして、起動カウンタテーブル３０４から、この値に対応する起動システム名を取り出し、起動システム選択フラグ３０５に格納した後、ステップ２０４に戻る。以降、ステップ２０４から処理が繰り返される。
【００３８】
例えば上の例で言うと、“現用”に対応する起動順の値は１なので、表２の起動カウンタテーブル３０４から、起動順２に対応する起動システム名である“バックアップ１”を取り出し、表３の起動システム選択フラグ３０５に格納する。
【００３９】
閾値≧起動カウンタの場合、ステップ２０９で、ファイル選択部３０１は、起動システム選択フラグ３０５の値をキーとして、起動システムテーブル３０６から、起動システム選択フラグ３０５の値に対応するパーティションラベルおよびカーネルファイル名を取得する。
【００４０】
例えば、表３の起動システム選択フラグ３０５の値は“現用”であるので、表４の起動システムテーブル３０６から、“現用”に対応するパーティションラベル／ｄｅｖ／ｈｄａｌ、カーネルファイル名ｖｍｌｉｎｕｚ−２．６．０−ｔｅｓｔ９を取得する。
【００４１】
ステップ２１０で、ファイル選択部３０１は、ステップ２０９で取得したパーティションラベルで示される領域をマウントし、カーネルファイル名で示されるカーネルのファイル（現用カーネルファイル８０２１、バックアップ１カーネルファイル８０３１、バックアップ２カーネルファイル８０４１）をロードする。そして、カーネルローダ３０２が、カーネル４０を起動する。以降、カーネル４０に処理が移される。
【００４２】
ステップ２１１で、カーネル４０は、起動監視タイマ７０を起動する（起動監視タイマ７０の処理は、ステップ２１８以降で説明する）。
【００４３】
ステップ２１２で、カーネル４０は、各種初期化を行う。
【００４４】
ステップ２１３で、カーネル４０は、ステップ２０９で取得したパーティションラベルで示される領域から基底プロセス５０をロードし実行する。以降、基底プロセス５０に処理が移される。
【００４５】
ステップ２１４で、基底プロセス５０は、起動監視タイマ７０の停止および起動監視タイマ７０のクリアをカーネル４０に要求する。これにより、カーネル４０の起動が正常に行われたことが示される。
【００４６】
ステップ２１５で、基底プロセス５０は、起動監視カウンタ３０３の値を起動カウンタ保存領域３０７にコピーしたあと、起動カウンタ３０３の値を０にする。これは、起動カウンタ３０３の値を保存しておくことにより、アプリケーションプロセス６０が、アプリケーションプロセス６０自身が保持するデータの整合処理を行うために、起動情報を利用できるようにするためである。
【００４７】
ステップ２１６で、基底プロセス５０は、ステップ２０９で取得したパーティションラベルで示される領域から、アプリケーションプロセス６０をロードし実行する。以降、アプリケーションプロセス６０に処理が移される。
【００４８】
ステップ２１７で、アプリケーションプロセス６０は、起動システム選択フラグ３０５と起動カウンタ保存領域３０７を読み出すことで、アプリケーションプロセス６０における起動種別の判定とそれに基づく独自の処理（アプリケーションプロセス６０自身が保持するデータの整合処理）を行う。
【００４９】
ステップ２１８で、起動監視タイマ７０は、ステップ２１１に平行して、起動監視タイマ７０に対する停止要求（ステップ２１４）があるかどうかを確認し、ある場合は、ステップ２２０に進み、ない場合はステップ２１９に進む。
【００５０】
ステップ２１９で、起動監視タイマ７０は、起動監視タイマ７０の値が起動監視タイマ７０にあらかじめ設定された規定値をオーバしていないかどうかを確認し、オーバしている場合は、カーネル４０が起動できなかったとみなし、ステップ２０４に戻る（再起動）。オーバしていない場合は、ステップ２１８に戻る。
【００５１】
ステップ２２０で、起動監視タイマ７０は、起動監視タイマ７０に対する停止要求があった場合には、起動監視タイマ７０を停止し、起動監視タイマ７０の値をクリアする。
【００５２】
なお、処理装置１０は、専用のハードウェアにより実現する以外に、その機能を実現するためのプログラムを、コンピュータ読み取りが可能な記録媒体に記録して、この記録媒体に記録されたプログラムを処理装置１０となるべきコンピュータに読み込ませて実行することにより、実現するものでもよい。コンピュータ読み取りが可能な記録媒体とは、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記録媒体、コンピュータシステムに内蔵されるハードディスク装置等の記憶装置を指す。さらに、コンピュータ読み取りが可能な記録媒体とは、インターネットを介してプログラムを送信する場合のように、短時間の間に、動的にプログラムを保持するもの（伝送媒体もしくは伝送波）、コンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含む。
【図面の簡単な説明】
【００５３】
【図１】本発明の一実施形態の処理装置１０の機能ブロック図である。
【図２Ａ】本発明の一実施形態の自動復帰方法の処理の流れを示すフローチャートである。
【図２Ｂ】本発明の一実施形態の自動復帰方法の処理の流れを示すフローチャートである（図２Ａの続き）。
【符号の説明】
【００５４】
１０  処理装置
２０  ＢＩＯＳ
３０  ブートローダ
３０１  ファイル選択部
３０２  カーネルローダ
３０３  起動カウンタ
３０４  起動カウンタテーブル
３０５  起動システム選択フラグ
３０６  起動システムテーブル
３０７  起動カウンタ保存領域
４０  カーネル
５０  基底プロセス
６０  アプリケーションプロセス
７０  起動監視タイマ
８０  外部記憶装置
８０１  ブートローダ保存領域
８０１１  ブートローダプログラム
８０２  現用ファイル保存領域
８０２１  現用カーネルファイル
８０２２  現用アプリケーションファイル
８０３  バックアップ１保存領域
８０３１  バックアップ１カーネルファイル
８０３２  バックアップ１アプリケーションファイル
８０４  バックアップ２保存領域
８０４１  バックアップ２カーネルファイル
８０４２  バックアップ２アプリケーションファイル
８０５  起動情報保存領域
８０５１  起動カウンタ保存ファイル
８０５２  起動カウンタテーブル保存ファイル
８０５３  起動システム選択フラグ保存ファイル
８０５４  起動システムテーブル保存ファイル
２０１〜２２０  ステップ
【図１】
2005222366.tif 000007
【図２Ａ】
2005222366.tif 000008
【図２Ｂ】
2005222366.tif 000009