JP5491675B2 - 情報処理装置及び情報処理装置制御方法 - Google Patents

情報処理装置及び情報処理装置制御方法 Download PDF

Info

Publication number
JP5491675B2
JP5491675B2 JP2013502120A JP2013502120A JP5491675B2 JP 5491675 B2 JP5491675 B2 JP 5491675B2 JP 2013502120 A JP2013502120 A JP 2013502120A JP 2013502120 A JP2013502120 A JP 2013502120A JP 5491675 B2 JP5491675 B2 JP 5491675B2
Authority
JP
Japan
Prior art keywords
information
bios
boot
hdd
activation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013502120A
Other languages
English (en)
Other versions
JPWO2012117556A1 (ja
Inventor
学 金谷
恭司 関口
隆 大橋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Fujitsu Advanced Engineering Ltd
Original Assignee
Fujitsu Ltd
Fujitsu Advanced Engineering Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd, Fujitsu Advanced Engineering Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of JP5491675B2 publication Critical patent/JP5491675B2/ja
Publication of JPWO2012117556A1 publication Critical patent/JPWO2012117556A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/4408Boot device selection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、情報処理装置及び情報処理装置制御方法に関する。
サーバ装置などのコンピュータのBIOS(Basic Input/Output System)が開発された場合、BIOSの動作確認試験が行われる。このBIOSの動作確認試験では、コンピュータがサポートするOS(Operation System)のブートの確認が行われる。OSがブートする際には、OSは、自己が使用できるメモリやその他のハードウェアの状況を調べたり、HDD(Hard Disc Drive)からそのOSのブートに必要なデータを読み出したりする処理を行う。この処理を行うにあたり、OSは、BIOSの機能を呼出し、メモリの使用状況やハードウェアの接続状況を調べて、HDDから必要なデータを読み出すことを行う。
このOSがブートする際のBIOS機能の呼出しにおける処理は、OSの種別毎に異なっている。そのため、複数の種類のOSのブートに対してBIOSの動作確認を行うには、OSの種類毎にOSのブートを確認しなくてはいけない。
BIOSの開発においては、動作確認中に発生した不具合に対応するために、BIOSの修正・変更が行われる。そして、BIOSを修正・変更した内容が正しく反映されているか否かをさらに確認することが求められる。この不具合修正後の動作確認は、不具合修正を行ったBIOSを基に動作確認を行うことになる。そして、この不具合修正後の動作確認では、コンピュータがサポートする全てのOSのブートに対して、その修正による動作への影響が無いことを確認しなくてはならない。このような、不具合修正後の動作確認を、以下では「リグレッション試験」と呼ぶ。
一般的に、リグレッション試験は、BIOSにおける一部の機能変更や不具合修正が、変更していないBIOSの他の機能に影響を及ぼしていないことを確認するものである。OSのブートにおけるBIOS機能の呼出しは、OSローダまでの間に行われる。そこで、BIOS機能の呼出しによる挙動の確認は、専門家によって、画面情報を確認したり、ハードウェアデバッガにより一時停止した上でBIOS呼出しの追跡を行ったりすることで行われてきた。このように、従来は、リグレッション試験におけるOSのブート動作確認は、目視確認にて挙動を確認することで行われていた。
また、複数のOSに対してリグレッション試験を行う場合には、以下の2つの方法があった。まず1つに、ハードディスクを繋ぎ変えながら試験を行う方法がある。これは、複数のOSをそれぞれ異なったHDDにインストールし、ブートさせるHDDを作業者が繋ぎかえることで、異なるOSのブートにおけるBIOSの動作確認を行う方法である。この場合は、BIOSの呼出しをハードウェアデバッガで一時停止させながら、目視確認していくことでBIOSのリグレッション試験が行われる。
また、他の方法として、それぞれ異なったOSがインストールされたHDDを全て接続し、BIOSの設定により作業者がブートするHDDを順次変えていく方法がある。この場合も、BIOSの呼出しをハードウェアデバッガで一時停止させながら、目視確認していくことでBIOSのリグレッション試験が行われる。
また、従来技術として、優先順位の高いデバイスから優先順位の低いデバイスのOSを起動する技術が提案されている。
特開2005−122410号公報
しかしながら、従来のBIOSのリグレッション試験では、複数のOSをブートさせるために、ハードディスクの繋ぎ変えや、BIOSの設定変更といったことを作業者が行うため、多くの時間と手間がかかってしまっていた。また、OSのブートにおける挙動の確認も、作業者の目視確認により行われるため、この点でも多くの時間と手間がかかってしまっていた。
開示の技術は、上記に鑑みてなされたものであって、リグレッション試験における作業者の手間を軽減する情報処理装置及び情報処理装置制御方法を提供することを目的とする。
本願の開示する情報処理装置及び情報処理装置制御方法は、一つの態様において、BIOS記憶部は、BIOSを記憶する。OS記憶部は、複数のOSを記憶する。ブート制御部は、前記OS記憶部に記憶されているOSを順次起動させていく。起動情報取得部は、前記ブート制御部によるOSの起動時に、起動させるOSと前記BIOSとの間で受け渡しが行われる起動情報を取得する。リグレッション解析部は、前記起動情報取得部が取得した前記起動情報と、その起動情報の予め決められた値である期待値とを比較し、双方が一致するか否かを判定する。
本願の開示する情報処理装置及び情報処理装置制御方法の一つの態様によれば、リグレッション試験における作業者の手間を軽減するという効果を奏する。
図1は、実施例1に係る情報処理装置の構成図である。 図2は、実施例1に係る情報処理装置のブロック図である。 図3は、ブートデバイス順番テーブルの一例の図である。 図4は、HDD認識順番テーブルの一例の図である。 図5は、実施例1に係るブート制御情報に記載されている項目の一例及びその内容を示す図である。 図6は、HDD認識優先度テーブルの優先度変更を説明する図である。 図7は、呼出情報と復帰情報の一例を説明するための図である。 図8は、比較結果ログのフォーマットの一例を示す図である。 図9は、比較結果ログの一例を示す図である。 図10は、呼出情報及び復帰情報の取得処理の一例を説明するための図である。 図11は、実施例1に係るサーバ装置の各ハードウェア及びプログラムによる処理の流れを説明するための図である。 図12は、実施例1に係るリグレッション試験における全体的な処理のフローチャートである。 図13は、実施例1における起動対象のHDDを順番に切り替えながらOSの起動を行う処理のフローチャートである。 図14は、テストプログラムが行う処理のフローチャートである。 図15は、本実施例に係るサーバ装置の全体的なハードウェア構成の概略図である。 図16は、実施例2に係るに係るサーバ装置の各ハードウェア及びプログラムによる処理の流れを説明するための図である。 図17は、実施例2に係るブート制御情報に記載されている項目の一例及びその内容を示す図である。 図18は、UEFI(Unified Extensible Firmware Interface)に対応したOSでのブートデバイス順番テーブルの一例の図である。 図19は、実施例2に係るHDD認識優先度テーブルの優先度の変更について説明するための図である。 図20は、実施例2における呼出情報及び復帰情報の取得処理の一例を説明するための図である。 図21は、実施例2における起動対象のHDDを順番に切り替えながらOSの起動を行う処理のフローチャートである。
以下に、本願の開示する情報処理装置及び情報処理装置制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置及び情報処理装置制御方法が限定されるものではない。
以下では、本実施例に係る情報処理装置としてサーバ装置を例に説明する。ただし、情報処理装置は、サーバ装置に限られるものではなく、コンピュータであればクライアント装置といった他の装置でも良い。図1は、実施例1に係るサーバ装置の構成図である。ここで、図1を用いてサーバ装置1の構成及び格納されている情報について概略を説明する。
サーバ装置1は、CPU10、メインメモリ11、ROM(Read Only Memory)12、不揮発性メモリ13、FPD(Floppy(登録商標) Disk Drive)14、HDD15〜17を有している。不揮発性メモリ13は、「CMOS」と呼ばれる場合もある。
そして、ROM12の中にはBIOS21が格納されている。また、不揮発性メモリ13の中には、ブートデバイス順番テーブル31及びHDD認識順番テーブル32が格納されている。また、FPD14の中には、FPD−MBR(Master Boot Record)41、制御プログラム42及びブート制御情報43が格納されている。HDD15の中には、HDD−MBR51、OS52、テストプログラム53及び期待値情報54が格納されている。また、HDD16及びHDD17にもHDD15と同様に、HDD−MBR、OS、テストプログラム及び期待値情報が格納されている。ただし、HDD15、HDD17及びHDD16に格納されているOSはそれぞれ異なるOSである。
図2は、実施例1に係るサーバ装置の機能を表すブロック図である。図2を用いて、サーバ装置1の機能構成及び各部の動作について説明する。図2に示すように、本実施例に係るサーバ装置1は、起動情報取得部102、ブート制御部103、テーブル記憶部104、ブート制御情報記憶部105、OS記憶部106、BIOS記憶部107、リグレッション解析処理部108及びログ記憶部109を有している。
OS記憶部106は、各種OSを記憶しておく記憶部である。OS記憶部106は、例えば図1のHDD15〜17にあたる。本実施例では、OS記憶部106は、3つの異なるOSを記憶している。
BIOS記憶部107は、BIOSを記憶している。BIOS記憶部107は、例えば図1のROM12にあたる。
テーブル記憶部104は、ブートデバイス順番テーブル31及びHDD認識順番テーブル32を記憶している。テーブル記憶部104は、例えば図1の不揮発性メモリ13にあたる。
ここで、ブートデバイス順番テーブル31は、BIOS21によるデバイスの起動の順番を制御するためのデータが記載されたテーブルである。図3は、ブートデバイス順番テーブルの一例の図である。図3に示すように、ブートデバイス順番テーブルは、デバイスを示す列302を有しており、紙面に向かって上に向かうに従い起動の順番が高くなることを表している。図3に示すように、ブートデバイス順番テーブル31は、起動の順番が1番となる列302のデバイスをFPDとしておくことで、FPD14から起動するように設定しておく。
また、HDD認識順番テーブル32は、BIOS21によるHDD15〜17の起動の優先順位が記載されたテーブルである。すなわち、BIOS21がHDDからの起動を行う場合に、BIOS21は、HDD認識順番テーブル32の優先順位が一番高いHDDを起動する。図4は、HDD認識順番テーブルの一例の図である。図4に示すように、HDD認識順番テーブル32は、HDDデバイスを示す列304を有しており、紙面に向かって上に向かうに従いHDDの認識順番が高くなることを表している。
ブート制御情報記憶部105は、ブート制御情報43を記憶している。ブート制御情報記憶部105は、例えば図1のFPD14にあたる。
ブート制御情報43は、複数のOSの起動を制御するためのパラメータの情報である。図5は、実施例1に係るブート制御情報に記載されている項目の一例及びその内容を示す図である。図5に示すように、本実施例に係るブート制御情報には、「初回起動フラグ」、「接続ブート可能HDD数」、「ブート完了HDD数」、「HDDブートモードフラグ」、「HDD認識優先度テーブル」及び「連続ブート回数」が記載されている。
「初回起動フラグ」は、最初の起動か否かを判定するフラグである。「初回起動フラグ」の初期値は「0」であり、1度起動されるとその値は「1」に変更される。すなわち、「初回起動フラグ」の値が0の場合は、最初の起動であることを示しており、「初回起動フラグ」の値が1である場合は、少なくとも1度は起動が行われていることを示している。
「接続ブート可能HDD数」は、サーバ装置1に接続された起動可能なHDDの数である。これは、後述するように、HDDブート処理部133によって書込まれる情報である。
「ブート完了HDD数」は、ブートが完了したHDDの数である。これも、後述するように、HDDブート処理部133によって書込まれる情報である。
「HDDブートモードフラグ」は、起動対象となっているHDDから起動を行うか否かを判定するフラグである。「HDDブートモードフラグ」の初期値は0であり、起動対象のHDDから起動を行う場合、その値は「1」に変更される。すなわち、「HDDブートモードフラグ」の値が0の場合は、起動を行わずに起動の準備のみを行う。また、「初回起動フラグ」の値が1である場合は、起動の対象となっているHDDからの起動を行う。
「HDD認識優先度テーブル」は、接続されている起動可能なHDDがBIOSに認識される順番を示す情報である。これは、後述するように、HDDブート処理部133によって書込まれる情報である。
「連続ブート回数」は、起動可能な全てのHDDから1回ずつOSの起動が行われた状態を1回のテストとして、このテストを何回繰り返すかの情報である。例えば、「連続ブート回数」として1が設定されていると、各HDDを用いた起動がそれぞれ1回ずつ行なわれる。また、例えば、「連続ブート回数」として0が設定されていると、それぞれのHDDを用いた起動が中止命令を受けるまで行われる。
ブート制御部103は、BIOS起動処理部131、FPDMBR処理部132、HDDブート処理部133、OS起動処理部134及びBIOS機能処理部135を有している。
BIOS起動処理部131は、サーバ装置1に電源が投入されると、BIOS記憶部107に記憶されているBIOS21を起動する。そして、BIOS起動処理部131は、テーブル記憶部104に記憶されているブートデバイス順番テーブル31を参照して、最初に起動するデバイスを決定する。ここで、本実施例ではブートデバイス順番テーブル31は、図3のように最初にFPDから起動するよう決まっているので、BIOS起動処理部131は、FPD14より起動することを決定する。そして、BIOS起動処理部131は、FPD14からのブート処理を開始する。BIOS起動処理部131は、FPDMBR処理部132を呼出す。
さらに、BIOS起動処理部131は、起動可能なHDD数及びHDD認識順番テーブル32の取得要求をHDDブート処理部133から受ける。そして、BIOS起動処理部131は、HDD15〜17のHDD−MBR(例えば、HDD15ではHDD−MBR51)などを確認するなどして起動可能なHDD数を取得する。本実施例では、HDD15〜17の3つ全てが起動可能なHDDであるので、BIOS起動処理部131は、起動可能なHDD数として3を取得する。また、BIOS起動処理部131は、テーブル記憶部104に記憶されているHDD認識順番テーブル32を取得する。BIOS起動処理部131は、取得した起動可能なHDD数及びHDD認識順番テーブル32をHDDブート処理部133へ出力する。
また、BIOS起動処理部131は、変更されたHDDの起動の優先順位の入力をHDDブート処理部133から受信する。そして、BIOS起動処理部131は、テーブル記憶部104に記憶されているHDD認識順番テーブル32のHDDの起動の優先順位を、受信したHDDの起動の優先順位に書き換える。BIOS起動処理部131は、例えば図1におけるCPU10によって実行されるBIOS21にあたる。
FPDMBR処理部132は、HDDブート処理部133を呼出す。FPDMBR処理部132は、例えば図1におけるCPU10によって実行されるFPD−MBR41にあたる。
HDDブート処理部133は、ブート制御情報記憶部105に記憶されているブート制御情報43の「HDDブートモードフラグ」を確認し、起動対象となっているHDDから起動を行うか否かを判定する。この時、HDDブート処理部133は、「HDDブートモードフラグ」の値が0であれば、HDDから起動を行わないと判定し、「HDDブートモードフラグ」の値が1であればHDDから起動を行うと判定する。
HDDから起動を行わないと判定した場合、HDDブート処理部133は、ブート制御情報記憶部105に記憶されているブート制御情報43の「初回起動フラグ」を確認し最初の起動か否かを判定する。この時、HDDブート処理部133は、「初回起動フラグ」の値が0であれば、最初の起動と判定し、「初回起動フラグ」の値が1であれば2回目以降の起動と判定する。
最初の起動であれば、HDDブート処理部133は、起動可能なHDD数及びHDD認識順番テーブル32を含むHDD情報の取得要求をBIOS起動処理部131へ通知する。そして、HDDブート処理部133は、起動可能なHDD数及びHDD認識順番テーブル32を含むHDD情報をBIOS起動処理部131から取得する。本実施例では、起動可能なHDDはHDD15〜17の3つであるので、HDDブート処理部133は、起動可能なHDD数として3つを取得する。また、本実施例では、HDDブート処理部133は、図4に示すHDD認識順番テーブル32を取得する。そして、HDDブート処理部133は、取得した起動可能なHDD数及びHDD認識順番テーブル32を、ブート制御情報記憶部105に格納されているブート制御情報43に登録する。本実施例では、HDDブート処理部133は、ブート制御情報43の「接続ブート可能HDD数」として3を登録する。また、HDDブート処理部133は、ブート制御情報43の「HDD認識優先度テーブル」として、図4に示すHDD認識順番テーブル32を登録する。
これに対して、2回目以降の起動であれば、HDDブート処理部133は、ブート制御情報記憶部105に格納されているブート制御情報43を参照して、HDD認識優先度テーブルのHDDの起動の優先順位を変更する。そして、HDDブート処理部133は、HDDの起動の優先順位の変更をBIOS起動処理部131に通知する。
ここで、HDDブート処理部133によるHDDの起動の優先順位の変更について説明する。図6は、HDD認識優先度テーブルの優先度変更を説明する図である。図6のテーブル305は、変更前の優先順位を示している。また、図6のテーブル306は、変更後の優先順位を表している。そして、テーブル305及びテーブル306共に紙面に向かって左に向かうに従い優先順位が高いハードディスクを表している。また、テーブル305及びテーブル306における0は対応するハードディスクが無いことを表している。すなわち、本実施例では起動可能なハードディスクはHDD15〜17の3台のみであるので、優先順位が高いほうから3つ以外は、テーブル305及びテーブル306共に0が記載されている。
例えば、テーブル305のように優先順位が割り当てられている状態で優先順位の変更を行う場合、HDDブート処理部133は、一番高い優先順位を有するHDD15を3番目の優先順位に変える。さらに、HDDブート処理部133は、2番目と3番目の優先順位を有するHDD16及びHDD17の優先順位を一つずつ繰り上げる。これにより、HDDブート処理部133は、テーブル305からテーブル306への優先順位の変更を行うことができる。
そして、最初の起動であれば「初回起動フラグ」を1に設定した後に、HDDブート処理部133は、ブート制御情報43の「接続ブート可能HDD数」の値と「ブート完了HDD数」の値とが一致するか否かを判定する。また、2回目以降の起動であればHDDの起動の優先度を変更した後に、HDDブート処理部133は、ブート制御情報43の「接続ブート可能HDD数」の値と「ブート完了HDD数」の値とが一致するか否かを判定する。ここで、「接続ブート可能HDD数」の値と「ブート完了HDD数」の値とが一致していれば、HDDブート処理部133は、OSの起動処理を終了する。これに対して、「接続ブート可能HDD数」の値と「ブート完了HDD数」の値とが不一致であれば、HDDブート処理部133は、「HDDブートモードフラグ」を1に変更し、サーバ装置1を再起動させる。
また、ブート制御情報43の「HDDブートモードフラグ」が1の場合、HDDブート処理部133は、ブート制御情報43の「ブート認識優先度テーブル」を参照して、一番高い優先度のHDDを起動対象のHDDとして特定する。そして、HDDブート処理部133は、OS起動処理部134に、特定した起動対象のHDDからの起動を指示する。
そして、HDDブート処理部133は、ブート制御情報43の「HDDブートモードフラグ」を0に変更する。
また、HDDブート処理部133は、OS起動処理部134に特定した起動対象のHDDからの起動を指示する直前に、ブート制御情報43の「ブート完了HDD数」をインクリメントする。HDDブート処理部133は、例えば図1におけるCPU10によって実行された制御プログラム42にあたる。
OS起動処理部134は、起動対象のHDDの指定とともにそのHDDからの起動の指示をHDDブート処理部133から受信する。そして、OS起動処理部134は、指定されたHDDからOSを起動させる。
そして、OS起動処理部134は、OSから呼出されるBIOSの機能の呼出において指定される各処理と後述する呼出情報取得部121が有する処理との対応を予め記憶している。例えば、OS起動処理部134は、BIOSにおける処理Aに対して呼出情報取得部121における処理A’、BIOSにおける処理Bに対して呼出情報取得部121における処理B’といったような対応を記憶している。
そして、OS起動処理部134は、起動させているOSからBIOSの機能の呼出しを呼出情報とともに受ける。ここで、呼出情報とは、OSがBIOSの機能を呼出すときにBIOSに通知するパラメータ及びシーケンス番号の集合である。図7は、呼出情報と復帰情報の一例を説明するための図である。データ列307が呼出情報を表している。また、データ列308が復帰情報を表している。データ列307に示すように、呼出し情報は、シーケンス番号、呼出機能ID、サブファンクション、及び対象ドライブ番号などを含む。シーケンス番号は0からのシリアル番号である。呼出機能IDは、ソフトウェア割り込みの番号である。サブファンクションは、特定のソフトウェア割り込みの中からさらに処理を指定するための番号である。この呼出機能ID及びサブファンクションによって、呼出すBIOSの処理が指定される。対象ドライブ番号は、呼出すBIOSの機能が格納されているハードディスクの識別子である。
OS起動処理部134は、自己が記憶している呼出されたBIOSの処理に対応する呼出情報取得部121の処理を特定する。そして、OS起動処理部134は、特定した呼出情報取得部121の処理を呼出す。そして、OS起動処理部134は、呼出情報を呼出情報取得部121へ出力する。例えば、OSからBIOSの処理Aの呼出しを受けて、OS起動処理部134は、呼出情報取得部121の機能A’を呼出す。その後、OS起動処理部134は、呼出情報取得部121から復帰情報の入力を受ける。そして、OS起動処理部134は、OSの起動を継続させる。
OS起動処理部134は、OSの起動が終了すると、HDDブート処理部133に対しOSの起動完了を通知する。OS起動処理部134は、例えば図1におけるCPU10によって実行された制御プログラム42にあたる。
起動情報取得部102は、呼出情報取得部121及び復帰情報取得部122を有している。以下では、呼出情報及び復帰情報をまとめて起動情報と呼ぶ場合がある。起動情報取得部102は、例えば図1におけるCPU10によって実行された制御プログラム42にあたる。
呼出情報取得部121は、BIOSの処理に対応する処理を記憶している。この対応は、OS起動処理部134が記憶しているBIOSの処理と呼出情報取得部121の処理との対応に一致する。例えば、呼出情報取得部121は、BIOSの処理Aに対応する処理A’、BIOSの処理Bに対応する処理B’を有している。そして呼出情報取得部121が有する各処理は、対応するBIOSの処理を呼出す処理である。例えば、処理A’はBIOSの処理Aを呼出す処理である。
呼出情報取得部121は、呼出情報とともにOS起動処理部134から自己が有する処理の呼出しを受ける。そして、呼出情報取得部121は、受信した呼出情報を記憶する。そして、呼出情報取得部121は、呼出情報をBIOS機能処理部135に送信し、呼出された自己の処理に対応するBIOSの処理を呼出す。
復帰情報取得部122は、復帰情報をBIOS機能処理部135から受ける。そして、復帰情報取得部122は、受信した復帰情報を記憶する。そして、復帰情報取得部122は、復帰情報をOS起動処理部134に送信し、処理をOS起動処理部134へ返す。
BIOS機能処理部135は、呼出情報とともにBIOSの処理の呼出しを呼出情報取得部121から受ける。そして、BIOS機能処理部135は、指定されたBIOSの処理を実行する。そして、BIOS機能処理部135は、BIOSの処理によって生成された復帰情報を復帰情報取得部122へ出力する。ここで、図7を用いて復帰情報の一例について説明する。データ列308に示すように、復帰情報は、シーケンス番号、呼出機能ID、復帰コード、復帰詳細コードを含んでいる。復帰情報のシーケンス番号は、対応する呼出情報のデータ列307の「シーケンス番号+1」であり、呼出機能IDは、対応する呼出情報のデータ列307のシーケンス番号及び呼出機能IDと同一である。また、復帰コードは、処理がエラーかエラーで無いかを示す値である。また、復帰詳細コードは、エラーの詳細コードが記載されている。このBIOS機能処理部135は、例えば図1におけるCPU10によって実行されたBIOS21にあたる。
リグレッション解析処理部108は、OSがBIOSの各処理を呼出すときに用いる、呼出情報の期待値を予め記憶している。呼出情報の期待値とは、例えば、OSからのBIOSの呼出しが正常に行われている場合において用いられる内容を有する呼出情報である。すなわち、この期待値と異なる呼出情報が用いられた場合には、OSからのBIOSの呼出しが正常に行われていないことになる。また、リグレッション解析処理部108は、BIOSが呼出された処理を完了しOSに制御を戻す場合に用いる復帰情報の期待値を予め記憶している。復帰情報の期待値とは、例えば、BIOSからOSへの制御の復帰が正常に行われている場合において用いられる内容を有する復帰情報である。すなわち、復帰情報の期待値と異なる復帰情報が用いられた場合には、BIOSからのOSへの制御の復帰が正常に行われていないことになる。
リグレッション解析処理部108は、呼出情報取得部121及び復帰情報取得部122が取得した呼出情報及び復帰情報と、自己が記憶している呼出情報の期待値及び復帰情報の期待値とを比較する。そして、呼出情報取得部121及び復帰情報取得部122が取得した呼出情報及び復帰情報がそれぞれの期待値と一致していない場合、リグレッション解析処理部108は、リグレッションが発生していると判定する。そして、リグレッション解析処理部108は、リグレッションが発生したと判定した場合、比較結果を示す比較結果ログを作成しログ記憶部109に格納する。リグレッション解析処理部108は、例えば図1のCPU10によって実行されたテストプログラム53にあたる。また、ログ記憶部109は、例えば図1のHDD15〜17にあたる。
図8は、比較結果ログのフォーマットの一例を示す図である。また、図9は、比較結果ログの一例を示す図である。
リグレッション解析処理部108は、図8に示すような比較結果ログのフォーマット309を記憶している。本実施例では、比較結果ログのフォーマット309には、比較を実行した日時、比較した情報のシーケンス番号、呼出機能名、比較したパラメータの内容及び比較結果の欄が設けられている。そして、リグレッション解析処理部108は、記憶しているフォーマット309を用いて比較結果を基に、図9に示すような比較結果ログを作成する。リグレッション解析処理部108は、図9に示すように、フォーマット309を基にして、実行した比較毎に、比較を実行した日時、比較した情報のシーケンス番号、呼出機能名、比較したパラメータの内容及び比較結果を比較結果ログに記載する。そして、リグレッション解析処理部108は、比較結果が異常、すなわち、取得した呼出情報又は復帰情報とその期待値とが一致しなかった場合に、点線で囲んだ領域310のように期待値と実際の取得した情報を記載する。BIOSの開発者などの作業者は、この比較結果ログを確認することで、BIOSの機能の呼び出しにおいて、リグレッションが発生したか、またリグレッションではどのようなエラーが発生したかを簡単に確認することができる。これにより、作業者は、迅速にBIOSの修正を行うことができる。
次に、図10を参照して、呼出情報及び復帰情報の取得の全体的な処理の流れを説明する。図10は、呼出情報及び復帰情報の取得処理の一例を説明するための図である。図10における実線の四角で囲われた部分は、動作する対象及びその対象が行う処理を表している。ここで、図10では、OSがBIOSの機能である処理Aを呼出す場合で説明する。また、以下では説明の都合上、プログラム(OSなど)同士がデータや命令の授受を直接行っているように説明しているが、実際には、プログラム間でのデータや命令の授受はCPU10を介して行われる。
まず、OSが、ブート処理を実行し、そのブート処理を行っている最中にBIOSの機能を実行する処理Aを呼出す。具体的には、OSは、BIOSのソフトウェア割込みで行う。そして、OSがソフトウェア割込みを行うための割込みベクタが存在する。この割込みベクタには、OSにより呼出されたBIOSの処理へのアドレスが記載されている。すなわち、OSは、割込みベクタに記載されたアドレスで指定された処理に制御を移すように呼出しを行う(ステップS101)。ここで、制御プログラムは、予め割込みベクタに設定されているBIOSの処理のアドレスを起動情報の取得及びBIOSの処理の呼出しを実行する処理のアドレスに書き換えている。ここでは、制御プログラムは、呼出された処理Aに対応する処理として処理A’にアドレスを書き換えている。
OSは、処理Aの呼出しを行うために、指定されたソフトウェア割込みに対応する割込みベクタテーブルのアドレスを参照する。そして、上述したように割込みベクタの処理Aのアドレスが処理A’に変更されているので、OSは、処理Aへのソフトウェア割込みに対応する割込みベクタテーブルに記載された処理A’のアドレス を取得する。そして、OSは、取得した割込みベクタのアドレスが制御プログラムの処理A’を指していることを確認し、制御プログラムの処理A’へ制御を移す(ステップS102)。
次に、制御プログラムは、自己の処理A’を実施する。この処理Aには、呼出情報の取得、BIOSの処理Aの呼び出し及び復帰情報取得が含まれる。ここでは、制御プログラムが実施する処理A’は、呼出情報を取得した後、BIOSの処理Aを呼出す段階までの動作を行う(ステップS103)。
BIOSは、呼出された処理Aを実施する。そして、処理Aの完了後、BIOSは、復帰情報を制御プログラムの処理A’へ送信する(ステップS104)。
そして、制御プログラムの処理A’は、BIOSから受信した復帰情報を取得する。さらに、制御プログラムの処理A’の復帰情報をOSに送信して、OSに制御を移し、OSのブート処理を継続させる(ステップS105)。
さらに、図11を参照して、サーバ装置1のハードウェア構成及びプログラム構成に合わせて処理の流れを説明する。図11は、実施例1に係るサーバ装置の各ハードウェア及びプログラムによる処理の流れを説明するための図である。また、図11の点線で囲われたプログラムは、メモリ上に展開されたプログラムを表している。
図11では、ここでの説明に使用するサーバ装置1のハードウェアのみ記載している。また、図11では、FPD14及びHDD15〜17といった外部記憶装置以外のハードウェアをまとめてサーバ装置本体100としている。また、以下では説明の都合上、プログラムが処理を行っているように説明する場合があるが、実際には、プログラムを実行させてCPU10が処理を行っている。そして、HDD15には、OS(a)、テストプログラム(a)及び期待値情報(a)が格納されている。HDD16には、OS(b)、テストプログラム(b)及び期待値情報(b)が格納されている。HDD17には、OS(c)、テストプログラム(c)及び期待値情報(c)が格納されている。
まず、サーバ装置1に電源が投入されると、CPU10は、ROM12のBIOS21を読み込み、BIOS21をメインメモリ11にBIOS211として展開する。その後、BIOS211は、不揮発性メモリ13に格納されているブートデバイス順番テーブル31を確認し、最初にブートすべきデバイスをFPD14と決定する。また、BIOS211は、接続されているHDD15〜17を確認し、起動可能なHDD数を取得する。また、BIOS211は、COMS13からHDD認識順番テーブル32を取得する。
そして、BIOS211は、FPD14のFPD−MBR41を読込み、メインメモリ11にFPD−MBR(不図示)を展開し、制御をメインメモリ11に展開されたFPD−MBRに移す。そして、メインメモリ11上に展開されたFPD−MBRは、FPD14から制御プログラム42を読込み、メインメモリ11に制御プログラム421として展開し、制御を制御プログラム421に移す。
制御プログラム421は、FPD14のブート制御情報43を確認し、最初の起動か否かを判定する。最初の起動であれば、制御プログラム421は、BIOS211から起動可能なHDD数やHDD認識順番テーブル32といったHDD情報を取得する。そして、制御プログラム421は、取得したHDD情報をFPD14のブート制御情報43へ登録する。
次に、制御プログラム421は、不揮発性メモリ13のHDD認識順番テーブル32の認識順番をブート制御情報43のHDD認識優先度テーブルと同じになるようにBIOS211へ依頼する。そしてBIOS211は、HDD認識順番テーブル32のHDDの認識順番をブート制御情報43のHDD認識優先度テーブルと同じになるように変更する。
制御プログラム421は、ブート制御情報43のブートモードフラグを1に変更する。そして、制御プログラム421は、HDD認識順番テーブル32の認識順番の変更を反映するために、サーバ装置1の再起動を行う。
再起動後、制御プログラム421は、ブート制御情報43に記載されたHDD認識順番テーブルを確認して、起動の優先順位が一番高いHDDの情報を起動対象のHDDとして取得する。ここでは、起動対象のHDDがHDD15の場合で説明する。
そして、制御プログラム421は、起動対象のHDDからの起動において、呼出情報及び復帰情報を取得するように、割込みベクタのアドレスをBIOSの処理のアドレスから自己の処理のアドレスへと変更する。
次に、制御プログラム421は、HDD15からHDD−MBR51を読込み、メインメモリ11にHDD−MBRを展開し(不図示)、展開したHDD−MBRへ制御を移す。メインメモリ11に展開されたHDD−MBRは、HDD15に格納されているOSを読込み、メインメモリ11にOS112として展開する。そして、制御プログラム421は、OS112に制御を移す。ここでは、HDD15を起動対象のHDDとしているので、制御プログラム421は、OS(a)をメインメモリ11上に展開する。図11では、OS(a),(b),(c)のいずれかが展開されることを表すため、OS(x)(x=a,b,c)と記載している。
OS112は、起動処理を行う。OS112の起動処理の間、制御プログラム421は、OSによるBIOSの処理の呼出しにおける呼出情報115及び復帰情報116を取得し、メインメモリ11に格納しておく。図11では、OS(a),(b),(c)のいずれかに対応する呼出情報及び復帰情報であることを表すため、呼出情報(x)、復帰情報(x)(x=a,b,c)と記載している。
そして、OS112の起動が完了すると、OS112は、プログラム自動起動機能を用いて、OS112を起動したHDD15からテストプログラム(a)及び期待値情報(a)を読込む。そして、OS112は、テストプログラム(a)をテストプログラム113としてメインメモリ11上に展開する。この時、期待値情報(a)は、テストプログラム(a)の処理で使用されるパラメータである期待値情報114としてメインメモリ11上に展開される。図11では、OS(a),(b),(c)のいずれかに対応するテストプログラム及び期待値であることを表すため、テストプログラム(x)、期待値情報(x)(x=a,b,c)と記載している。
そして、テストプログラム113は、自己が保持している期待値情報と呼出情報115及び復帰情報116とを比較する。そして、テストプログラム113は、比較結果を比較結果ログとしてHDD15などに記録する。そして、テストプログラム113は、比較において不一致が発生した場合には、処理を中断する。これに対して、比較において不一致が無ければ、再起動を行う。
再起動後、BIOS211は、FPD−MBR41をメインメモリ11上に展開し(不図示)、制御を移す。そして、メモリ上に展開されたFPD−MBR41は、制御プログラム42をメインメモリ11に制御プログラム421として展開する。制御プログラム421は、ブート制御情報43を確認して、接続されている全ての起動可能なHDD(本実施例では、HDD15〜17)にインストールされているOSのリグレッション試験が完了したか否かを確認する。リグレッション試験を行っていないOSがある場合には、制御プログラム421は、リグレッション試験を繰り返す。これに対して、リグレッション試験が全てのOSについて完了している場合、制御プログラム421は、処理を終了する。
ここで、本実施例では起動可能なHDDのそれぞれでリグレッション試験を1回ずつ行った時点でリグレッション試験を完了しているが、これは何回行ってもよい。この試験の反復回数は、ブート制御情報43の連続ブート回数によって規定される。すなわち、制御プログラム421は、起動可能なHDDの全てでリグレッション試験が1回ずつ終わるたびに、ブート回数をインクリメントしていく。そして、制御プログラム421は、ブート回数が連続ブート回数に一致した場合にリグレッション試験が完了したと判定し、処理を終了する。
次に、図12を参照して、本実施例に係るリグレッション試験における全体的な流れを説明する。図12は、実施例1に係るリグレッション試験における全体的な処理のフローチャートである。ここでは、図11の各ハードウェア及びプログラムを処理の動作主体として説明する。
サーバ装置1の電源が投入される(ステップS201)。
CPU10は、BIOS21をメインメモリ11上にBIOS211として展開し起動を開始する(ステップS202)。そして、BIOS211は、FPD14からFPD−MBR41を読込む(ステップS203)。そして、BIOS211は、FPD−MBR41をメインメモリ11上に展開し制御を移す(ステップS204)。
メインメモリ11上に展開されたFPD−MBR41は、制御プログラム42をFPD14から読込み、メインメモリ11上に制御プログラム421として展開し実行する(ステップS205)。
制御プログラム421は、BIOS211及びブート制御情報43からHDD情報を取得する(ステップS206)。
制御プログラム421は、リグレッション試験を行うHDDが残っているか否かを確認する(ステップS207)。リグレッション試験を行うHDDが残っていない場合(ステップS207否定)、サーバ装置1は、リグレッション試験の処理を終了する。
これに対して、リグレッション試験を行うHDDが残っている場合(ステップS207肯定)、制御プログラム421は、ブート制御情報43を確認して起動の対象となるHDDを決定する。そして、制御プログラム421は、HDDブートモードフラグの設定などの起動対象と決定したHDDからの起動の準備を行う(ステップS208)。
さらに、制御プログラム421は、割込みベクタのアドレスを変更するなどして、BIOSの呼出しにおける呼出情報及び復帰情報の取得の準備をする。さらに。制御プログラム421は、起動対象のHDDからHDD−MBRを読込む(ステップS209)。そして、制御プログラム421は、読込んだHDD−MBRをメインメモリ11上に展開し実行する(ステップS210)。
メインメモリ11上に展開されたHDD−MBRは、起動対象のHDDからOSを読込み、メインメモリ11上にOS112として展開し起動する(ステップS211)。
制御プログラム421は、OS112がBIOS211の機能を呼出す際の呼出情報及び復帰情報を取得する(ステップS212)。
OS112は、起動完了後、起動対象のHDDからテストプログラムを呼出し、メインメモリ11上に期待値情報114を含むテストプログラム113として展開する。そして、テストプログラム113は、呼出情報及び復帰情報とその期待値とを比較する(ステップS213)。そして、テストプログラム113は、比較結果を比較結果ログとして起動対象のHDDに登録する。
テストプログラム113は、サーバ装置1を再起動する(ステップS214)。そして、再起動したサーバ装置1は、ステップS202へ戻る。
次に、図13を参照して、制御プログラムによる起動対象のHDDを順番に切り替えてOSを起動させる処理について説明する。図13は、実施例1における起動対象のHDDを順番に切り替えながらOSの起動を行う処理のフローチャートである。
制御プログラム421が開始される(ステップS301)。
制御プログラム421は、FPD14上のブート制御情報43のHDDブートモードフラグが1か否かを確認する(ステップS302)。HDDブートモードフラグが1の場合(ステップS302肯定)、制御プログラム421は、ブート制御情報43のHDDブートモードフラグを0にセットする。そして、制御プログラム421は、ブート完了HDD数をインクリメントする(ステップS303)。
そして、制御プログラム421は、OSによるBIOS呼出しの割込みベクタの内容を、読込情報及び復帰情報の取得を行う処理のアドレスに書き換える(ステップS304)。
そして、制御プログラム421は、書き換え前の割込みベクタの内容を保持し、呼出情報取得の処理の終了後にBIOS呼び出しができるように設定する(ステップS305)。
制御プログラム421は、起動対象のHDDのHDD−MBRを実行する(ステップS306)。
OSは、起動処理を実行する。そして、制御プログラム421は、呼出情報及び復帰情報の取得を行う(ステップS307)。OSの起動完了後、ステップS301に戻る。
これに対して、HDDブートモードフラグが0の場合(ステップS302否定)、制御プログラム421は、ブート制御情報43の初回起動フラグが1か否かを判定する(ステップS308)。初回起動フラグが1の場合(ステップS308肯定)、制御プログラム421は、ブート制御情報43のHDD認識優先度を変更する。そして、制御プログラム421は、BIOS211に対してHDD認識順番テーブル32の内容を自己が設定したHDD認識優先度に変更するよう依頼する(ステップS309)。BIOS211は、HDD認識順番テーブル32の優先度を指定された値に変更する。
これに対して、初回起動フラグが0だった場合(ステップS308否定)、制御プログラム421は、ブート可能なHDD数及びHDD認識順番テーブル32をBIOS211から取得する。そして、制御プログラム421は、ブート制御情報43にブート可能なHDD数及びHDD認識優先度テーブルを設定する(ステップS310)。そして、制御プログラム421は、ブート制御情報43の初回起動フラグを1にセットする(ステップS311)。
そして、制御プログラム421は、ブート制御情報43の接続可能HDD数がブート完了HDD数と一致するか否かを判定する(ステップS312)。接続可能HDD数がブート完了HDD数と一致しない場合(ステップS312否定)、制御プログラム421は、ブート制御情報43のHDDブートフラグを1に設定する(ステップS313)。その後、制御プログラム421は、サーバ装置1を再起動させ(ステップS314)、ステップS301に戻る。
これに対して、接続可能HDD数がブート完了HDD数と一致する場合(ステップS312肯定)、制御プログラム421は、処理を終了する。
次に、図14を参照して、テストプログラム113が行う処理について説明する。図14は、テストプログラムが行う処理のフローチャートである。
テストプログラム113が、OSによって開始される(ステップS401)。
テストプログラム113は、自己を起動したOSのログにOSが正常に起動したことを記録する(ステップS402)。
テストプログラム113は、自己を起動したOSが格納されていたHDDに格納されていた期待値情報のうち、最初のシーケンス番号を有する期待値情報を取得する(ステップS403)。
次に、テストプログラム113は、メインメモリ11上を検索し、最初のシーケンス番号を有する呼出情報及び復帰情報を取得する(ステップS404)。
テストプログラム113は、期待値情報のシーケンス番号と呼出情報及び復帰情報のシーケンス番号とが一致するか否かを判定する(ステップS405)。
一致する場合(ステップS405肯定)、テストプログラム113は、期待値情報の機能IDと呼出情報及び復帰情報の機能IDとが一致するか否かを判定する(ステップS406)。
一致する場合(ステップS406肯定)、テストプログラム113は、期待値情報と呼出情報とのサブファンクションが一致するか、又は期待値情報と復帰情報との復帰コードとが一致するか否かを判定する(ステップS407)。
一致する場合(ステップS407肯定)、テストプログラム113は、期待値情報と呼出情報との対象ドライブ番号が一致するか、又は期待値情報と復帰情報との復帰詳細コードとが一致するか否かを判定する(ステップS408)。
一致する場合(ステップS408肯定)、テストプログラム113は、比較日時、シーケンス番号、機能ID、パラメータなどが正しいことをログに記録する(ステップS409)。
そして、テストプログラム113は、HDDに格納されている期待値情報、もしくは取得した呼出情報又は復帰情報の中に比較を行っていないものがあるか否かを判定する(ステップS410)。比較を行っていないものが有る場合(ステップS410肯定)、テストプログラム113は、次の期待値情報、並びに呼出情報又は復帰情報を読み込み(ステップS411)、ステップS405へ戻る。
シーケンス番号、機能ID、サブファンクション、復帰コード、対象ドライブ番号又は復帰詳細コードのいずれかが一致しない場合(ステップS405否定、ステップS406否定、ステップS407否定又はステップS408否定)、ステップS412に進む。すなわち、テストプログラム113は、呼出情報又は復帰情報のいずれか一方もしくは両方が正しくない旨をログに記録する。さらに、テストプログラム113は、取得した呼出情報及び復帰情報、並びにそれに対応する期待値情報をログに記録する(ステップS412)。
比較を行っていないものが無い場合(ステップS410否定)又はステップS412の後、テストプログラム113は、サーバ装置1の再起動を実行し、テストプログラムを終了する(ステップS413)。
図15は、本実施例に係るサーバ装置の全体的なハードウェア構成の概略図である。図15に示すように、サーバ装置1は、CPU10、メモリ1001、入力装置1002、出力装置1003、外部記憶装置1004、媒体駆動装置1005及びネットワーク接続装置1007を有している。
CPU10は、メモリ1001を利用してプログラムを実行することにより上述した各処理を行う。
メモリ1001は、メインメモリ11、ROM12及び不揮発性メモリ13などを含む。メモリ1001には、上述した処理を行うプログラムやデータなどが格納されている。
入力装置1002は、例えば、キーボード、ポインティングデバイス又はタッチパネルなどである。入力装置1002は、操作者からの指示の入力に用いられる。また、入力装置1002は、可搬記録媒体を駆動してその記録内容の入力に用いられる。この可搬記録媒体に上述したプログラムとデータを格納しておき、必要に応じて、それらをメモリにロードして使用することもできる。
また、出力装置1003は、モニタなどである。
外部記憶装置1004は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置などである。磁気ディスク装置は、例えば、HDD15〜17である。この外部記憶装置1004に上述したプログラムとデータを保存しておき、必要に応じてそれらをメモリにロードして使用することもできる。
媒体駆動装置1005は、可搬記録媒体1006を駆動し、その記録内容にアクセスする。可搬記録媒体1006としては、メモリカード、FPD、CD−ROM(Compact Disk-Read Only Memory)、光ディスク、光磁気ディスクなど、任意のコンピュータ読取可能な記録媒体が用いられる。この可搬記録媒体1006に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリにロードして使用することもできる。例えば、媒体駆動装置1005であるFPDドライブに可搬記録媒体1006であるFPDを挿入した状態が、図1のFPD14である。また、本実施例では、可搬記録媒体1006としてFPDを例に説明したが、他の可搬記録媒体を用いることも可能である。さらには、可搬記録媒体を用いずに、HDDの中にMBR、制御プログラム及びブート制御情報を格納させておき、実施例におけるFPDと同じ動作を行わせることもできる。また、ネットワークを介して外部からMBR、制御プログラム及びブート制御情報を取得して、実施例におけるFPDと同じ動作を行わせることもできる。
ネットワーク接続装置1007は、LAN(Local Aria Network)やWAN(Wide Aria Network)などの任意のネットワーク(回線、あるいは伝送媒体)を介して外部装置と通信し、通信に伴うデータ変換を行う。
以上に説明したように、本実施例に係る情報処理装置は、自動的にハードディスクを切り替えながら、各ハードディスクに格納された異なるOSを起動させていき、さらに、OS毎のBIOSの呼出しの試験を自動的に行う。これにより、BIOSの修正のチェックを行う作業者は、ハードディスクの物理的な付け替えやBIOSの設定変更によるハードディスクの切り替えを行わずに、異なるOSを順次起動していくことができる。これにより、リグレッション試験における作業者の手間を軽減することができる。さらに、OS起動時のBIOSの呼出し状況を見ながらチェックを行う必要がなくなるため、リグレッション試験における作業者の手間を軽減することができ、作業の効率化を図ることができる。また比較結果の正否を専門家以外でも判定することができる。
さらに、本実施例に係るサーバ装置を用いることで、サーバ装置の製造元が提供したBIOSと他のハードウェアベンダが提供する拡張BIOSとの障害の切り分けを行うこともできる。例えば、まず、サーバ装置の製造元により供給されたハードディスクコントローラに接続されたハードディスクからOSを起動させ、次に、他のハードウェアベンダから提供されたハードディスクコントローラに接続されたハードディスクからOSを起動させる。この時、どちらかのコントローラに接続されたハードディスクからの起動時のみで起動情報の比較結果が不一致の場合には、そのコントローラのBIOSが障害を発生させていることがわかる。
図16は、実施例2に係るサーバ装置の各ハードウェア及びプログラムによる処理の流れを説明するための図である。図16の点線で囲われたプログラムは、メモリ上に展開されたプログラムを表している。図16において図11と同じ符号を有する各部は、特に説明の無い限り同じ機能を有するものとする。
本実施例に係るサーバ装置1は、実施例1の場合と異なりUEFI(Unified Extensible Firmware Interface)に準拠したBIOS22を有している。サーバ装置1にBIOS22がインストールされている場合、OSもUEFI対応のOSを用いることになる。図16のハードディスク15〜17には、UEFI対応のOSが格納されている。そして、ハードディスク15〜17には、実施例1のOSと異なり、HDD−MBRではなくOSローダが格納されている。また、FPD14には、実施例1のFPD−MBR41ではなくスタートアップ44が格納されている。スタートアップ44は、電源投入後最初にBIOS22によって起動されるプログラムである。
図17は、実施例2に係るブート制御情報に記載されている項目の一例及びその内容を示す図である。本実施例に係るサーバ装置1は、図17に示す項目をブート制御情報として有している。本実施例に係るブート制御情報は、実施例1の場合のブート制御情報からHDDブートモードフラグを除いたものである。
サーバ装置1に電源が投入されると、CPU10は、BIOS22をメインメモリ11上にBIOS221として展開し、BIOS221に制御を移す。BIOS221は、不揮発性メモリ13に格納されているブートデバイス順番テーブル31を読込み、UEFIで規定されているEFI(Extensible Firmware Interface)シェルの自動起動の機能を利用してFPD14からスタートアップ44を読み込む。スタートアップ44は、FPD14から制御プログラム42を読み込み、そして、スタートアップ44は、メインメモリ11上に制御プログラム421として展開し、制御プログラム421に制御を移す。ここで、BIOS221による制御プログラム42の展開の詳細を説明する。
図18は、UEFIに対応したOSでのブートデバイス順番テーブルの一例の図である。BIOS221が用いるブートデバイス順番テーブル31は、図18に示すようなテーブルである。図18のように、本実施例におけるブートデバイス順番テーブル31は、ブートデバイス401として、各ハードディスクが記載されている。そして、例えば、BIOS221は最初にブートデバイス順番テーブル31の最初のデバイスとしてEFIシェルを起動する。その状態で、BIOS221がexitコマンドを発行すると、EFIシェルが終了し、次の順番のブートデバイス(図18では、HDD15)からブートが開始される。
BIOS221は、FPD14に格納されているスタートアップ44を検索する。そして、BIOS221は、FPD14上のスタートアップ44をメインメモリ11に展開し(不図示)、展開したスタートアップ44に制御を移す。スタートアップの処理は簡単なシェルプログラムである。そして、展開されたスタートアップ44が、制御プログラム42を読込み、メインメモリ11上に制御プログラム421として展開する。
制御プログラム421は、最初に起動したタイミングで、起動可能なHDD数及びブートデバイス順番テーブル31をBIOS221から取得する。そして、制御プログラム421は、取得した起動可能なHDD数をブート制御情報43に登録する。さらに、制御プログラム42は、取得したブートデバイス順番テーブル31の情報をブート制御情報43のHDD認識優先度テーブルに登録する。図19は、実施例2に係るHDD認識優先度テーブルの優先度の変更について説明するための図である。制御プログラム42が取得したブートデバイス順番テーブル31の情報をブート制御情報43のHDD認識優先度テーブルに登録した状態が、図19のテーブル402である。テーブル402は紙面に向かって左側に向かって優先度が上がっている。すなわち、テーブル402では、一番左のHDD15がもっとも起動の優先度が高いデバイスである。
制御プログラム421は、ブート制御情報43のHDD優先度テーブルを用いて起動対象とするHDDを決定する。
ここで、OSローダやOSは、例えば、HDDからのデータ読出しなどをBIOS221の機能に対してプロトコル呼出しを行うことで実行する。すなわち、本実施例では、OSローダやOSによるBIOS221の機能のプロトコル呼出しにおいて、呼出情報及び復帰情報が用いられる。このプロトコル呼出しでは、プロトコル処理テーブルが用いられ、OSローダやOSは、プロトコル処理テーブルに記載されたアドレスに対応する処理が呼出される。
そこで、制御プログラム421は、プロトコル処理テーブルで指定されるアドレスを、起動情報の取得及びBIOS221の処理の呼び出しを行う処理のアドレスに変更する。その後、制御プログラム421は、決定したHDDに格納されているOSローダを呼出し、メインメモリ11に展開する。そして、メインメモリ11に展開されたOSローダがOSを起動する。そして、OSのリグレッション試験の完了後に、再起動が行われ、制御プログラム421が起動される。
制御プログラム421は、ブート制御情報43のHDD優先度認識テーブルをテーブル402の状態からテーブル403の状態に変更する。
そして、制御プログラム421は、OSの起動における呼出情報及び復帰情報の取得を行う。そして、制御プログラム421は、テーブル403の情報を用いて起動対象のHDDを決定し、次のHDDからのOSのブートを開始させる。
そして、制御プログラム421は、ブート制御情報43を確認して、起動可能なHDDの全てでリグレッション試験が完了したか否かを判定する。制御プログラム421は、ブート制御情報43のブート可能HDD数とブート完了HDD数が一致している場合に、起動可能なHDDの全てでリグレッション試験が完了したと判定する。
その後、OSによりメインメモリ11上に展開されたテストプログラム113によって、取得した起動情報とその期待値情報との比較が行われ、その比較結果がOSのログとして登録される。
ここで、OSによるBIOS221の呼出しにおける呼出情報及び復帰情報の取得について、図20を参照して説明する。図20は、実施例2における呼出情報及び復帰情報の取得処理の一例を説明するための図である。図20における実線の四角で囲われた部分は、動作する対象及びその対象が行う処理を表している。ここで、図20では、OSがBIOSの機能である処理Aを呼出す場合で説明する。また、以下では説明の都合上、プログラム(OSなど)同士がデータや命令の授受を直接行っているように説明しているが、実際には、プログラム間でのデータや命令の授受はCPU10を介して行われる。
まず、OSが、ブート処理を実行し、そのブート処理を行っている最中にBIOSの機能を実行する処理Aを呼出す。具体的には、OSは、BIOSに対してプロトコル呼出しを行うことでBIOSの処理Aを呼出す。そして、OSがプロトコル呼出しを行うためのプロトコル処理テーブルが存在する。このプロトコル処理テーブルには、OSにより呼出されたBIOSの処理へのアドレスが記載されている。すなわち、OSは、プロトコル処理テーブルに記載されたアドレスで指定された処理に制御を移すように呼出しを行う(ステップS501)。ここで、制御プログラムは、予めプロトコル処理テーブルに設定されているBIOS221の処理のアドレスを起動情報の取得及びBIOSの処理の呼出しを実行する処理のアドレスに書き換えている。ここでは、制御プログラムは、呼出された処理Aに対応する処理として処理A’にアドレスを書き換えている。
OSは、処理Aの呼出しを行うために、指定されたプロトコル呼出しに対応するプロトコル処理テーブルのアドレスを参照する。そして、上述したようにプロトコル処理テーブルの処理Aのアドレスが処理A’に変更されているので、OSは、処理Aへのプロトコル呼出しに対応するプロトコル処理テーブルに記載された処理A’のアドレス を取得する。そして、OSは、取得したアドレスが制御プログラムの処理A’を指していることを確認し、制御プログラムの処理A’へ制御を移す(ステップS502)。
次に、制御プログラムは、自己の処理A’を実施する。この処理Aには、呼出情報の取得、BIOSの処理Aの呼び出し及び復帰情報取得が含まれる。ここでは、制御プログラムが実施する処理A’は、呼出情報を取得した後、BIOSの処理Aを呼出す段階までの動作を行う(ステップS503)。
BIOSは、呼出された処理Aを実施する。そして、処理Aの完了後、BIOSは、復帰情報を制御プログラムの処理A’へ送信する(ステップS504)。
そして、制御プログラムの処理A’は、BIOSから受信した復帰情報を取得する。さらに、制御プログラムの処理A’の復帰情報をOSに送信して、OSに制御を移し、OSのブート処理を継続させる(ステップS505)。
次に、図21を参照して、本実施例に係るリグレッション試験における全体的な流れを説明する。図21は、実施例2に係るリグレッション試験における全体的な処理のフローチャートである。ここでは、図16の各ハードウェア及びプログラムを処理の動作主体として説明する。
制御プログラム421が開始される(ステップS601)。
制御プログラム421は、ブート制御情報43の初回起動フラグが1か否かを判定する(ステップS602)。初回起動フラグが1の場合(ステップS602肯定)、制御プログラム421は、ブート制御情報43のHDD認識優先度テーブルの優先度を変更する(ステップS603)。
これに対して、初回起動フラグが0だった場合(ステップS602否定)、制御プログラム421は、ブート可能なHDD数及びブートデバイス順番テーブル31をBIOS221から取得する。そして、制御プログラム421は、ブート制御情報43にブート可能なHDD数及びHDD認識優先度テーブルを設定する(ステップS604)。そして、制御プログラム421は、ブート制御情報43の初回起動フラグを1にセットする(ステップS605)。
そして、制御プログラム421は、ブート制御情報43の接続可能HDD数がブート完了HDD数と一致するか否かを判定する(ステップS606)。接続可能HDD数がブート完了HDD数と一致しない場合(ステップS606否定)、制御プログラム421は、ブート完了HDD数をインクリメントする(ステップS607)。
そして、制御プログラム421は、OSによるBIOS呼出しのプロトコル処理テーブルの内容を、呼出情報及び復帰情報の取得を行う処理のアドレスに書き換える(ステップS608)。
そして、制御プログラム421は、書換え前のプロトコル処理テーブルの内容を保持し、呼出情報及び復帰情報の取得の処理の終了後にBIOS呼出しを行うように設定する(ステップS609)。
制御プログラム421は、起動対象のHDDのOSローダを読込みOSを実行する(ステップS610)。
OSは、起動処理を実行する。そして、制御プログラム421は、呼出情報及び復帰情報の取得を行う(ステップS611)。OSの起動完了後、ステップS601に戻る。
これに対して、接続可能HDD数がブート完了HDD数と一致する場合(ステップS606肯定)、制御プログラム421は、処理を終了する。
以上に説明したように、本実施例に係る情報処理装置は、UEFIに準拠したBIOSを用いた場合においても、実施例1と同様の効果を得ることができる。
1 サーバ装置
10 CPU
11 メインメモリ
12 ROM
13 不揮発性メモリ
14 FPD
15〜17 HDD
21 BIOS
31 ブートデバイス順番テーブル
32 HDD認識順番テーブル
41 FPD−MBR
42 制御プログラム
43 ブート制御情報
51 HDD−MBR
52 OS
53 テストプログラム
54 期待値情報
102 起動情報取得部
103 ブート制御部
104 テーブル記憶部
105 ブート制御情報記憶部
106 OS記憶部
107 BIOS記憶部
108 リグレッション解析処理部
109 ログ記憶部
121 呼出情報取得部
122 復帰情報取得部
131 BIOS起動処理部
132 FPDMBR処理部
133 HDDブート処理部
134 OS起動処理部
135 BIOS機能処理部

Claims (5)

  1. BIOSを記憶するBIOS記憶部と、
    複数のOSを記憶するOS記憶部と、
    前記OS記憶部に記憶されているOSを順次起動させていくブート制御部と、
    前記ブート制御部によるOSの起動時に、起動させるOSと前記BIOSとの間で受け渡しが行われる起動情報を取得する起動情報取得部と、
    前記起動情報取得部が取得した前記起動情報と、その起動情報の予め決められた値である期待値とを比較し、双方が一致するか否かを判定するリグレッション解析処理部と
    を備えたことを特徴とする情報処理装置。
  2. 前記起動情報は、前記ブート制御部により起動されたOSが前記BIOSを呼出すときに該BIOSに通知する呼出情報、及び呼出された前記BIOSが処理を行った後に該BIOSを呼出したOSに制御を戻すときに該BIOSに通知する復帰情報を含み、
    前記起動情報取得部は、
    前記呼出情報を取得する呼出情報取得部と、
    前記復帰情報を取得する復帰情報取得部とを備え、
    前記リグレッション解析処理部は、
    前記呼出情報取得部が取得した呼出情報とその呼出情報の期待値との比較、及び前記復帰情報取得部が取得した復帰情報とその復帰情報の期待値との比較を行い、それぞれ一致するか否かを判定する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記複数のOSは、それぞれ別個のハードディスクに記憶されており、
    前記ブート制御部は、前記ハードディスクの中から起動に用いるハードディスクを順次選択していき、選択したハードディスクに記憶されているOSを順次起動していく
    ことを特徴とする請求項1又は請求項2に記載の情報処理装置。
  4. 前記複数のOSは、それぞれ別個のハードディスクに記憶されており、
    前記ブート制御部は、最も高い順位を有するハードディスクを起動に用いるハードディスクとして選択するハードディスクの優先順位を記憶しており、該優先順位を変更していくことで起動に用いるハードディスクの選択を行っていくことを特徴とする請求項1又は請求項2に記載の情報処理装置。
  5. OS記憶装置に記憶されているOSを順次起動させていき、
    起動されたOSの起動時に、該OSとBIOSとの間で受け渡しが行われる起動情報を取得し、
    前記起動情報と前記起動情報の予め決められた値である期待値とを比較し、双方が一致するか否かを判定する
    ことを特徴とする情報処理装置制御方法。
JP2013502120A 2011-03-03 2011-03-03 情報処理装置及び情報処理装置制御方法 Expired - Fee Related JP5491675B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/054957 WO2012117556A1 (ja) 2011-03-03 2011-03-03 情報処理装置及び情報処理装置制御方法

Publications (2)

Publication Number Publication Date
JP5491675B2 true JP5491675B2 (ja) 2014-05-14
JPWO2012117556A1 JPWO2012117556A1 (ja) 2014-07-07

Family

ID=46757515

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013502120A Expired - Fee Related JP5491675B2 (ja) 2011-03-03 2011-03-03 情報処理装置及び情報処理装置制御方法

Country Status (3)

Country Link
US (1) US9329959B2 (ja)
JP (1) JP5491675B2 (ja)
WO (1) WO2012117556A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014186501A (ja) * 2013-03-22 2014-10-02 Nec Corp 情報処理装置及びその起動制御方法、記憶媒体、並びにコンピュータ・プログラム
US10146657B2 (en) * 2014-03-26 2018-12-04 Intel Corporation Initialization trace of a computing device
US9921819B2 (en) * 2014-12-29 2018-03-20 Airwatch Llc Persistent mobile device enrollment
US10803437B2 (en) * 2015-08-28 2020-10-13 Ncr Corporation Self-service terminal technical state monitoring and alerting
US20180157557A1 (en) * 2016-12-02 2018-06-07 Intel Corporation Determining reboot time after system update
US10372661B1 (en) 2017-02-28 2019-08-06 American Megatrends International, Llc Firmware debug trace capture using serial peripheral interface
US10409619B2 (en) * 2017-03-22 2019-09-10 Vmware, Inc. Persistent enrollment of a computing device using vendor autodsicovery
US10635819B2 (en) 2017-03-22 2020-04-28 Vmware, Inc. Persistent enrollment of a computing device based on a temporary user
US10740109B2 (en) 2017-03-22 2020-08-11 Vmware, Inc. Configuring a computing device using managed operating system images
US10445106B2 (en) 2017-03-22 2019-10-15 Vmware, Inc. Persistent enrollment of a computing device using a BIOS
US10620965B2 (en) 2017-03-22 2020-04-14 Vmware, Inc. Internet recovery of a windows configuration
US10802916B2 (en) * 2017-08-04 2020-10-13 Dell Products, L.P. System and method to enable rapid recovery of an operating system image of an information handling system after a malicious attack
JP7050503B2 (ja) * 2018-01-29 2022-04-08 Necプラットフォームズ株式会社 完全性検証装置、完全性検証システム、完全性検証方法、及び、完全性検証プログラム
EP3916600A1 (en) * 2020-05-27 2021-12-01 Mettler-Toledo (Albstadt) GmbH Method for operating an electronic data processing system and electronic data processing system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153214A (ja) * 1997-08-07 1999-02-26 Nec Yonezawa Ltd パーソナルコンピュータのブート不良検出システム
JP2005122410A (ja) * 2003-10-15 2005-05-12 Nec Soft Ltd コンピュータ起動方法
JP2007241616A (ja) * 2006-03-08 2007-09-20 Nec Corp チップセットのエミュレーション装置および方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6308264B1 (en) 1998-09-30 2001-10-23 Phoenix Technologies Ltd. Dual use master boot record
JP2001256066A (ja) * 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
US7127596B2 (en) * 2002-06-28 2006-10-24 Intel Corporation Method and system for improving computer system boot reliability by executing an application specific test during a boot prior loading an operating system
TW200721008A (en) * 2005-11-23 2007-06-01 Inventec Corp Method and system for switching between embedded operating systems of computer platform
US7574624B2 (en) * 2007-02-20 2009-08-11 Inventec Corporation Integrated test method on multi-operating system platform
US20130117006A1 (en) * 2011-11-07 2013-05-09 Microsoft Corporation Simulated boot process to detect introduction of unauthorized information

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153214A (ja) * 1997-08-07 1999-02-26 Nec Yonezawa Ltd パーソナルコンピュータのブート不良検出システム
JP2005122410A (ja) * 2003-10-15 2005-05-12 Nec Soft Ltd コンピュータ起動方法
JP2007241616A (ja) * 2006-03-08 2007-09-20 Nec Corp チップセットのエミュレーション装置および方法

Also Published As

Publication number Publication date
US9329959B2 (en) 2016-05-03
JPWO2012117556A1 (ja) 2014-07-07
WO2012117556A1 (ja) 2012-09-07
US20130339718A1 (en) 2013-12-19

Similar Documents

Publication Publication Date Title
JP5491675B2 (ja) 情報処理装置及び情報処理装置制御方法
TWI578233B (zh) 統一韌體管理系統、非揮發電腦可讀取媒體以及統一韌體管理方法
JP5575338B2 (ja) 情報処理装置、情報処理方法、およびコンピュータプログラム
TWI475402B (zh) 遠端備份系統及其遠端備份方法
JP6089064B2 (ja) ソフトウェア・コンポーネントを更新するための方法、コンピュータ・システムおよびメモリ装置
JP2009252194A (ja) データ処理装置、ハードウェアアクセス方法、及びハードウェアアクセスプログラム
US8316361B2 (en) Method of enabling a user to update one or more low-level resources of a computer system in a user-friendly manner
TW201716999A (zh) 開機檢查方法及電腦系統
JP6515462B2 (ja) 情報処理装置、情報処理装置の設定方法及び設定プログラム
TWI431530B (zh) 嵌入式系統及其程式更新方法
JP2011028500A (ja) システム制御サーバ、ストレージシステム、設定方法および設定プログラム
JP2008009799A (ja) 画像形成装置
JP5279981B2 (ja) 更新制御プログラム、更新制御方法および更新制御装置
JP2002297207A (ja) バックアップ処理装置
JP6331505B2 (ja) 起動制御装置、起動制御方法、及び起動制御プログラム
JP4891107B2 (ja) コンピュータシステムおよび該コンピュータシステムで用いられるファイルシステム自動設定os起動方法
JP6428047B2 (ja) 情報処理システム、管理制御方法および管理制御プログラム
KR102434126B1 (ko) Plc 프로그램 처리 장치
JP2006079155A (ja) 情報処理装置
JP6822203B2 (ja) ファームウェア実行装置、ドライバ実行装置、ドライバ管理装置、ファームウェア管理装置、コンピュータ装置、方法およびプログラム
JP6627366B2 (ja) 情報処理システム、情報処理方法およびプログラム
CN114879995B (zh) 固件更新的方法和装置
JP7411471B2 (ja) 情報処理装置及び通信システム
US11507385B1 (en) Embedded electronic device, boot method, and embedded electronic device readable recording medium with stored program
JP2018037052A (ja) 情報処理装置、情報処理システム、コンピュータプログラムおよび方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140227

R150 Certificate of patent or registration of utility model

Ref document number: 5491675

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees