以下、実施形態について、図面を用いて説明する。
図1は、半導体装置および記憶媒体の制御方法の一実施形態を示す。図1の破線の矢印は、信号等の情報の流れを示す。図1に示す半導体装置10は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。
半導体装置10は、USB(Universal Serial Bus)メモリ、SDメモリカード、ハードディスク等の記憶媒体30と不揮発性メモリ等の記憶部20とに接続される。例えば、半導体装置10は、記憶媒体30が着脱可能に接続されるコンピュータおよび携帯機器等の情報処理装置に搭載される。
記憶媒体30は、記憶媒体30の起動時に半導体装置10に最初にアクセスされるマスターブートレコード(以下、MBRとも称する)32と、記憶媒体30が半導体装置10に認識された後にアクセス可能になるデータ領域34とを有する。MBR32は、複数のセクタのうちの先頭セクタであり、記憶媒体30の起動時に参照されるブート領域の一例である。例えば、記憶媒体30の起動時に参照されるパーティションテーブル等を含むブート情報BINF1は、記憶媒体30の先頭セクタであるMBR32に格納される。パーティションテーブルは、記憶媒体30のデータ領域34を複数の領域(パーティション)に分割した際の各パーティションに関する情報を有する。なお、記憶媒体30は、データ領域34を1つのパーティションとして使用してもよい。また、例えば、記憶媒体30を識別するシリアル番号等の識別情報IDINFは、記憶媒体30の規格等により決められた領域に格納される。
半導体装置10は、記憶媒体30が接続された場合、記憶媒体30のMBR32に最初にアクセスし、MBR32に格納されたブート情報BINF1を読み出す。そして、半導体装置10は、MBR32から読み出したブート情報BINF1が正常である場合、ブート情報BINF1に基づいて、記憶媒体30のデータ領域34にアクセスする。なお、半導体装置10は、MBR32から読み出したブート情報BINF1が正常でない場合、記憶媒体30のMBR32に格納されたブート情報BINF1を、記憶部20に記憶されたブート情報BINF2を用いて修復する。例えば、半導体装置10は、MBR32から読み出したブート情報BINF1を用いても記憶媒体30を認識できない場合、ブート情報BINF1が正常でないと判定する。半導体装置10によるMBR32の修復は、例えば、記憶媒体の制御方法に基づいて実行される。
半導体装置10は、アクセス部12、バックアップ部14および修復部16を有する。アクセス部12は、アクセス対象の記憶媒体30が半導体装置10に接続された場合、記憶媒体30のMBR32に格納されたブート情報BINF1と、記憶媒体30を識別する識別情報IDINFとを、記憶媒体30から読み出す。そして、アクセス部12は、記憶媒体30から読み出したブート情報BINF1および識別情報IDINFを、バックアップ部14および修復部16に転送する。
バックアップ部14は、アクセス部12から受けたブート情報BINF1が正常である場合、アクセス部12から受けたブート情報BINF1をブート情報BINF2とし、ブート情報BINF2と識別情報IDINFとを互いに対応付けて記憶部20に格納する。すなわち、バックアップ部14は、記憶媒体30から読み出されたブート情報BINF1が正常である場合、記憶媒体30から読み出されたブート情報BINF1をブート情報BINF2として記憶媒体30の識別情報IDINFに対応付けて記憶部20に格納する。例えば、互いに異なる複数の記憶媒体30が半導体装置10に同時または異なる時刻に接続された場合、記憶部20は、複数の記憶媒体30のブート情報BINF2および識別情報IDINFを記憶する。
修復部16は、記憶媒体30から読み出されたブート情報BINF1が正常でなく、かつ、記憶媒体30の識別情報IDINFが記憶部20に記憶されている場合、記憶媒体30の識別情報IDINFに対応するブート情報BINF2を記憶部20から読み出す。そして、修復部16は、記憶媒体30のMBR32に格納されたブート情報BINF1を、記憶部20から読み出したブート情報BINF2を用いて修復する。
例えば、修復部16は、アクセス部12から受けたブート情報BINF1が正常でない場合、アクセス部12から受けた識別情報IDINFが記憶部20に記憶されているか否かを判定する。アクセス部12から受けた識別情報IDINFが記憶部20に記憶されている場合、修復部16は、アクセス部12から受けた識別情報IDINFに対応するブート情報BINF2を記憶部20から読み出す。そして、修復部16は、記憶部20から読み出したブート情報BINF2をブート情報BINF1として、アクセス部12を介して記憶媒体30のMBR32に格納する。これにより、記憶媒体30のMBR32に格納されるブート情報BINF1は、修復される。
このように、複数の記憶媒体30のブート情報BINF2が識別情報IDINFに対応付けて記憶部20に記憶されているため、半導体装置10は、複数の記憶媒体30が使用される場合でも、MBR32の修復に使用するブート情報BINF2を選択できる。したがって、半導体装置10は、複数の記憶媒体30が使用される場合でも、MBR32に格納されたブート情報BINF1が破壊された記憶媒体30のMBR32を修復できる。
なお、半導体装置10の構成は、図1に示す例に限定されない。例えば、記憶部20は、半導体装置10に含まれてもよい。また、記憶部20は、USBメモリ等のリムーバルディスクでもよい。あるいは、記憶部20に電源が常に供給される場合、記憶部20は、揮発性メモリでもよい。
以上、図1に示す実施形態では、記憶媒体30の信頼度を向上できる。例えば、ブート情報BINF1のバックアップであるブート情報BINF2は、記憶媒体30とは別の記憶部20に記憶される。これにより、記憶媒体30のMBR32に格納されたブート情報BINF1と、ブート情報BINF1のバックアップであるブート情報BINF2とが同時に破壊されることを抑制することができる。
ここで、ブート情報BINF1のバックアップであるブート情報BINF2とブート情報BINF1とを同じ記憶媒体に記憶する従来方法では、記憶媒体のMBRに格納されたブート情報BINF1とブート情報BINF2とが同時に破壊されるおそれがある。例えば、記憶媒体が半導体装置と非接続の場合でも、記憶媒体のMBRに格納されたブート情報BINF1を破壊した要因により、記憶媒体のMBRと別の領域に格納されたブート情報BINF2(ブート情報BINF1のバックアップ)も破壊されるおそれがある。
これに対し、図1に示す実施形態では、記憶媒体30が半導体装置10と非接続の場合、記憶媒体30は記憶部20に接続されない。このため、記憶媒体30が半導体装置10と非接続の場合では、記憶媒体30のMBR32に格納されたブート情報BINF1を破壊した要因は、ブート情報BINF2を記憶した記憶部20に影響を与えない。したがって、図1に示す実施形態では、記憶媒体30のMBR32に格納されたブート情報BINF1とブート情報BINF2(ブート情報BINF1のバックアップ)とが同時に破壊されることを抑制できる。これにより、図1に示す実施形態では、記憶媒体30のMBR32を修復することができなくなることを抑制でき、記憶媒体30のデータ領域34にアクセスできなくなることを抑制できる。この結果、記憶媒体30の信頼度を向上することができる。
なお、識別情報IDINFを用いずに、ブート情報BINF2を記憶部20に格納する方法では、複数の記憶媒体30が半導体装置10に接続される場合、記憶媒体30のMBR2が誤ったブート情報BINF2で修復されるおそれがある。
これに対し、図1に示す実施形態では、ブート情報BINF2を識別情報IDINFに対応付けて記憶部20に格納するため、複数の記憶媒体30が半導体装置10に接続される場合でも記憶媒体10のMBR32を修復できる。例えば、バックアップ部14は、互いに異なる複数の記憶媒体30が半導体装置10に同時または異なる時刻に接続された場合、複数の記憶媒体30の各ブート情報BINF2を複数の記憶媒体30の各識別情報IDINFに対応付けて記憶部20に格納する。また、修復部16は、修復対象の記憶媒体30の識別情報IDINFに対応するブート情報BINF2を、記憶部20に記憶された複数のブート情報BINF2のうちから選択して読み出す。そして、修復部16は、記憶部20から読み出したブート情報BINF2をブート情報BINF1として、アクセス部12を介して記憶媒体30のMBR32に格納する。このように、図1に示す実施形態では、半導体装置10に接続された複数の記憶媒体30のうち、MBR32に格納されたブート情報BINF1が破壊された記憶媒体30のMBR32を修復できる。
図2は、半導体装置および記憶媒体の制御方法の別の実施形態を示す。図1で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図2の破線の矢印は、信号等の情報の流れを示す。図2に示す半導体装置100は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。半導体装置100は、USBメモリ、SDメモリカード、ハードディスク等の記憶媒体300に接続される。例えば、半導体装置100は、記憶媒体300が着脱可能に接続されるコンピュータおよび携帯機器等の情報処理装置に搭載される。
記憶媒体300は、MBR320およびデータ領域340を有する。記憶媒体300、MBR320およびデータ領域340は、図1に示した記憶媒体30、MBR32およびデータ領域34と同一または同様である。例えば、MBR320は、複数のセクタのうちの先頭セクタであり、記憶媒体300の起動時に参照されるブート領域の一例である。したがって、記憶媒体300の起動時に参照されるパーティションテーブル等を含むブート情報BINF1は、記憶媒体300の先頭セクタであるMBR320に格納される。また、例えば、記憶媒体300を識別するシリアル番号等の識別情報IDINFは、記憶媒体300の規格等により決められた領域に格納される。
半導体装置100は、複数のインターフェース部120(120A、120B、120C)と、半導体装置100の動作を制御する制御部110と、不揮発性メモリ等の記憶部200とを有する。なお、半導体装置100は、記憶部200を除いて定義されてもよい。
半導体装置100は、記憶媒体300のMBR320から読み出したブート情報BINF1が正常である場合、ブート情報BINF1に基づいて、記憶媒体300のデータ領域340にアクセスする。また、半導体装置100は、記憶媒体300のMBR320から読み出したブート情報BINF1が正常でない場合、記憶媒体300のMBR320に格納されたブート情報BINF1を、記憶部200に記憶されたブート情報BINF2を用いて修復する。半導体装置100によるMBR320の修復は、例えば、記憶媒体の制御方法に基づいて実行される。
インターフェース部120は、USBメモリ、SDメモリカード、ハードディスク等の記憶媒体300のインタフェースであり、半導体装置100で使用される記憶媒体300が接続される。なお、複数のインターフェース部120は、互いに同じ種類の記憶媒体300(例えば、USBメモリ)のインタフェースでもよいし、異なる種類の記憶媒体300(例えば、USBメモリおよびSDメモリカード等)のインタフェースでもよい。
例えば、記憶媒体300が接続されたインターフェース部120は、制御部110から供給される制御信号およびデータ等の情報を記憶媒体300に出力し、記憶媒体300から供給される制御信号およびデータ等の情報を制御部110に出力する。
制御部110は、アクセス制御部122と、バックアップ部140と、修復部160とを有する。アクセス制御部122は、アクセス対象の記憶媒体300がインターフェース部120に接続された場合、MBR320に格納されたブート情報BINF1と、識別情報IDINFとを、記憶媒体300からインターフェース部120を介して読み出す。そして、アクセス制御部122は、記憶媒体300から読み出したブート情報BINF1および識別情報IDINFを、バックアップ部140および修復部160に転送する。
すなわち、インターフェース部120およびアクセス制御部122は、記憶媒体300のMBR320に格納されたブート情報BINF1と、記憶媒体300を識別する識別情報IDINFとを、アクセス対象の記憶媒体300から読み出すアクセス部の一例である。
バックアップ部140は、ブート情報BINF2のハッシュ値HASH2(以下、第2のハッシュ値HASH2とも称する)を識別情報IDINFに対応付けて記憶部200に格納することを除いて、図1に示したバックアップ部14と同一または同様である。
例えば、バックアップ部140は、アクセス制御部122から受けたブート情報BINF1が正常である場合、アクセス制御部122から受けたブート情報BINF1を用いて第1のハッシュ値を算出する。
また、バックアップ部140は、アクセス制御部122から受けたブート情報BINF1をブート情報BINF2として、記憶媒体300の識別情報IDINFに対応付けて記憶部200に格納する。その後、バックアップ部140は、記憶媒体300の識別情報IDINFに対応するブート情報BINF2を記憶部200から読み出す。
そして、バックアップ部140は、記憶部200から読み出したブート情報BINF2を用いて第2のハッシュ値HASH2を算出する。第1のハッシュ値が第2のハッシュ値HASH2と等しい場合、バックアップ部140は、第2のハッシュ値HASH2を記憶媒体300の識別情報IDINFに対応付けて記憶部200に格納する。
なお、第1のハッシュ値が第2のハッシュ値HASH2と異なる場合は、ブート情報BINF2の記憶部200への書き込みが失敗しているおそれがある。このため、バックアップ部140は、第1のハッシュ値が第2のハッシュ値HASH2と異なる場合、記憶媒体300から読み出されたブート情報BINF1をブート情報BINF2として、記憶部200に再度書き込みをしてもよい。これにより、正常でないブート情報BINF2が記憶部200に格納されることを抑制することができる。
このように、バックアップ部140は、記憶媒体300から読み出されたブート情報BINF1が正常である場合、ブート情報BINF2と、ブート情報BINF2から算出したハッシュ値HASH2とを、識別情報IDINFに対応付けて記憶部200に格納する。例えば、互いに異なる複数の記憶媒体300が半導体装置100に同時または異なる時刻に接続された場合、記憶部200は、複数の記憶媒体300のブート情報BINF2と、ブート情報BINF2のハッシュ値HASH2と、識別情報IDINFとを記憶する。
修復部160は、記憶部200から読み出したブート情報BINF2が正常であるかをブート情報BINF2のハッシュ値HASH2を用いて判定することを除いて、図1に示した修復部16と同一または同様である。
例えば、修復部160は、アクセス制御部122から受けたブート情報BINF1が正常でない場合、アクセス制御部122から受けた識別情報IDINFが記憶部200に記憶されているか否かを判定する。アクセス制御部122から受けた識別情報IDINFが記憶部200に記憶されている場合、修復部160は、アクセス制御部122から受けた識別情報IDINFに対応するブート情報BINF2および第2のハッシュ値HASH2を記憶部200から読み出す。
そして、修復部160は、記憶部200から読み出したブート情報BINF2を用いて第3のハッシュ値を算出する。ハッシュ値HASH2が第3のハッシュ値と等しい場合、修復部160は、記憶部200から読み出したブート情報BINF2をブート情報BINF1として、アクセス制御部122およびインタフェース部120を介して記憶媒体300のMBR320に格納する。これにより、記憶媒体300のMBR320に格納されるブート情報BINF1は、修復される。
なお、ハッシュ値HASH2が第3のハッシュ値と異なる場合、修復部160は、記憶媒体300のMBR320に格納されたブート情報BINF1の修復を中止する。このように、修復部160は、記憶媒体300から読み出されたブート情報BINF1が正常でなく、かつ、記憶媒体300の識別情報IDINFが記憶部200に記憶されている場合、MBR320の修復を中止するかを、ハッシュ値HASH2を用いて判定する。
例えば、記憶部200からのブート情報BINF2の読み出しが失敗した場合、あるいは、記憶部200に記憶されているブート情報BINF2が破壊されていた場合等では、第2のハッシュ値HASH2が第3のハッシュ値と異なる。したがって、修復部160は、第2のハッシュ値HASH2が第3のハッシュ値と異なる場合にMBR320の修復を中止することにより、正常でないブート情報BINF2でMBR320を修復することを防止できる。
なお、半導体装置100の構成は、図2に示す例に限定されない。例えば、記憶部200は、半導体装置100の外部に設けられてもよい。また、記憶部200は、USBメモリ等のリムーバルディスクでもよい。あるいは、記憶部200に電源が常に供給される場合、記憶部200は、揮発性メモリでもよい。
図3は、図2に示した記憶部200の一例を示す。記憶部200は、ブート情報BINF2、ハッシュ値HASH2、識別情報IDINFを記憶する複数の領域210を有する。各領域210は、識別情報IDINFと、識別情報IDINFに対応付けされたブート情報BINF2およびハッシュ値HASH2とを記憶する。例えば、複数の領域210のそれぞれのサイズは、互いに同じサイズに固定される。なお、複数の領域210のうちの所定数の領域210のサイズは、互いに異なるサイズでもよい。また、記憶部200は、記憶する識別情報IDINF等のデータ量に応じて、複数の領域210のそれぞれのサイズを識別情報IDINF毎に変更してもよい。
図4は、図2に示した半導体装置100の動作の一例を示す。図4に示す動作は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。図4に示す動作は、例えば、記憶媒体300が半導体装置100に接続される度に実行される。なお、図4では、記憶媒体300がインタフェース部120Aに接続された場合を例にして半導体装置100の動作を説明する。
ステップS100では、制御部110は、インタフェース部120Aに接続された記憶媒体300のMBR320に格納されたブート情報BINF1と、記憶媒体300を識別する識別情報IDINFとを、記憶媒体300から取得する。例えば、アクセス制御部122は、ブート情報BINF1と識別情報IDINFとを記憶媒体300からインタフェース部120Aを介して読み出す。
ステップS200では、制御部110は、ステップS100で取得したブート情報BINF1に基づいて初期処理を実行する。初期処理は、例えば、記憶媒体300を認識する処理等である。記憶媒体300の認識に成功した場合、記憶媒体300のデータ領域340は、アクセス可能になる。
ステップS220では、制御部110は、ステップS100で取得したブート情報BINF1が正常か否かを判定する。例えば、制御部110は、ステップS200の初期処理が成功した場合、ブート情報BINF1が正常であると判定する。すなわち、制御部110は、記憶媒体300の認識に失敗した場合、ブート情報BINF1が正常でないと判定する。
なお、ステップS220の処理は、制御部110内のブロックのうち、図2に示したブロック(アクセス制御部122、バックアップ部140および修復部160)以外のブロックで実行されてもよいし、図2に示したブロックのいずれかで実行されてもよい。例えば、ステップS220の処理は、制御部110のアクセス制御部122で実行されてもよい。あるいは、ステップS220の処理は、バックアップ部140および修復部160の一方で実行されてもよいし、バックアップ部140および修復部160の両方で実行されてもよい。
ステップS100で取得したブート情報BINF1が正常である場合、半導体装置100の動作は、ステップS300に移る。一方、ステップS100で取得したブート情報BINF1が正常でない場合、半導体装置100の動作は、ステップS700に移る。
ステップS300では、バックアップ部140は、インタフェース部120Aに接続された記憶媒体300のMBR320のバックアップが記憶部200に格納されているか否かを判定する。例えば、バックアップ部140は、ステップS100で取得した識別情報IDINFが記憶部200に記憶されている場合、記憶媒体300のMBR320のバックアップが記憶部200に格納されていると判定する。
記憶媒体300のMBR320のバックアップが記憶部200に格納されている場合、半導体装置100の動作は、ステップS400に移る。一方、記憶媒体300のMBR320のバックアップが記憶部200に格納されていない場合、半導体装置100の動作は、ステップS600に移る。
ステップS400では、バックアップ部140は、ステップS100で取得したブート情報BINF1のバックアップであるブート情報BINF2を、記憶部200から取得する。例えば、バックアップ部140は、ステップS100で取得した識別情報IDINFに対応するブート情報BINF2を記憶部200から読み出す。
ステップS500では、バックアップ部140は、ステップS400で取得したブート情報BINF2(ブート情報BINF1のバックアップ)が正常か否かを判定する。例えば、バックアップ部140は、ブート情報BINF2の内容が記憶媒体300の規格等で決められた内容に適合しているか否かを判定する。なお、バックアップ部140は、ブート情報BINF2に基づく初期処理を実行した場合に、記憶媒体300の認識が成功するか否かを判定してもよい。
ステップS400で取得したブート情報BINF2が正常である場合、半導体装置100の動作は、ステップS520に移る。一方、ステップS400で取得したブート情報BINF2が正常でない場合、半導体装置100の動作は、ステップS600に移る。
ステップS520では、バックアップ部140は、ステップS400で取得したブート情報BINF2(ブート情報BINF1のバックアップ)と、ステップS100で取得したブート情報BINF1とに差が有るか否かを判定する。例えば、バックアップ部140は、ブート情報BINF2の内容とブート情報BINF1の内容とを直接比較して、ブート情報BINF2とブート情報BINF1とに差が有るか否かを判定する。
なお、バックアップ部140は、ハッシュ値を用いて、ブート情報BINF2とブート情報BINF1とに差が有るか否かを判定してもよい。例えば、バックアップ部140は、ステップS100で取得した識別情報IDINFに対応するハッシュ値HASH2(第2のハッシュ値HASH2)を記憶部200から読み出す。また、ステップS100で取得したブート情報BINF1のハッシュ値(第1のハッシュ値)を算出する。そして、バックアップ部140は、第1のハッシュ値と第2のハッシュ値HASH2とを比較して、ブート情報BINF2とブート情報BINF1とに差が有るか否かを判定する。なお、ステップS520の処理にハッシュ値が用いられる場合、ステップS400の処理およびステップS500の処理は、省かれてもよい。
ブート情報BINF2とブート情報BINF1とに差がない場合、記憶媒体300が半導体装置100に接続されたときの半導体装置100の処理は、終了する。一方、ブート情報BINF2とブート情報BINF1とに差が有る場合、半導体装置100の動作は、ステップS600に移る。
ステップS600では、バックアップ部140は、ステップS100で取得したブート情報BINF1のバックアップを記憶部200に格納するバックアップ処理を実行する。バックアップ処理の詳細は、図5で説明する。
ステップS700では、修復部160は、インタフェース部120Aに接続された記憶媒体300のMBR320のバックアップが記憶部200に格納されているか否かを判定する。例えば、修復部160は、ステップS100で取得した識別情報IDINFが記憶部200に記憶されている場合、記憶媒体300のMBR320のバックアップが記憶部200に格納されていると判定する。
記憶媒体300のMBR320のバックアップが記憶部200に格納されている場合、半導体装置100の動作は、ステップS800に移る。一方、記憶媒体300のMBR320のバックアップが記憶部200に格納されていない場合、半導体装置100の動作は、ステップS920に移る。
ステップS800では、修復部160は、記憶媒体300のMBR320に格納されたブート情報BINF1を修復する修復処理を実行する。修復処理の詳細は、図6で説明する。
ステップS900では、制御部110は、ステップS800で修復したブート情報BINF1に基づいて初期処理を実行する。例えば、ステップS800でのブート情報BINF1の修復が成功した場合では、半導体装置100は、記憶媒体300を認識して、記憶媒体300が接続されたときの処理を終了する。一方、ステップS800でのブート情報BINF1の修復が失敗した場合では、半導体装置100は、記憶媒体300の認識に失敗した状態で、記憶媒体300が接続されたときの処理を終了する。
ステップS920では、修復部160は、記憶媒体300のMBR320のバックアップが存在しない等のエラーを半導体装置100の外部(例えば、半導体装置100に接続された表示装置)に通知する。なお、ステップS920の処理は、省かれてもよい。
このように、半導体装置100は、記憶媒体300が接続された場合、記憶媒体300のMBR320のバックアップを記憶部200に格納する。また、半導体装置100は、半導体装置100に接続された記憶媒体300のMBR320が破壊されていた場合、記憶部200に格納したバックアップを用いて、記憶媒体300のMBR320を修復する。これにより、記憶媒体300の信頼度を向上させることができる。
なお、半導体装置100の動作は、図4に示す例に限定されない。例えば、半導体装置100は、ステップS220において、ステップS520の処理と同様の判定方法により、ブート情報BINF1が正常か否かを判定してもよい。この場合、ステップS200の処理は、ステップS600の処理の後に実行されてもよい。例えば、半導体装置100は、ステップS200の処理が省かれた場合、ステップS600の処理を実行した後に、ステップS900の処理を実行してもよい。
また、ステップS500の処理は、省かれてもよい。例えば、ブート情報BINF2が正常でない場合、ステップS520の処理において、ブート情報BINF2と正常なブート情報BINF1とで差が有ると判定されるため、ステップS600のバックアップ処理は実行される。
図5は、図4に示したバックアップ処理(ステップS600)の一例を示す。すなわち、図5は、図2に示したバックアップ部140の動作の一例を示す。なお、図5では、記憶媒体300がインタフェース部120Aに接続された場合を例にしてバックアップ部140の動作を説明する。
ステップS610では、バックアップ部140は、記憶媒体300のブート情報BINF2と識別情報IDINFとを記憶部200に格納する。例えば、バックアップ部140は、図4のステップS100で取得したブート情報BINF1を記憶媒体300のブート情報BINF2として、図4のステップS100で取得した識別情報IDINFに対応付けて記憶部200に格納する。
ステップS620では、バックアップ部140は、ステップS610で記憶部200に格納したブート情報BINF2を読み出す。
ステップS630では、バックアップ部140は、記憶部200から読み出したブート情報BINF2のハッシュ値HASH2を算出する。すなわち、バックアップ部140は、ステップS620で読み出したブート情報BINF2からハッシュ値HASH2を算出する。
ステップS640では、バックアップ部140は、記憶媒体300から読み出したブート情報BINF1のハッシュ値HASH1(第1のハッシュ値)を算出する。すなわち、バックアップ部140は、図4のステップS100で取得したブート情報BINF1からハッシュ値HASH1を算出する。
ステップS650では、バックアップ部140は、ステップS630で算出したハッシュ値HASH2が、ステップS640で算出したハッシュ値HASH1と等しいか否かを判定する。ハッシュ値HASH2がハッシュ値HASH1と等しい場合、バックアップ部140の動作は、ステップS660に移る。一方、ハッシュ値HASH2がハッシュ値HASH1と異なる場合、バックアップ部140の動作は、ステップS670に移る。
ステップS660では、バックアップ部140は、ステップS630で算出したハッシュ値HASH2を、図4のステップS100で取得した識別情報IDINFに対応付けて記憶部200に格納する。これにより、バックアップ処理は、正常に終了する。
ステップS670では、バックアップ部140は、ブート情報BINF2(図4のステップS100で取得したブート情報BINF1)の書き込みを再実行するか否かを判定する。例えば、ハッシュ値HASH2がハッシュ値HASH1と異なる場合、ブート情報BINF2の記憶部200への書き込みが失敗しているおそれがある。このため、例えば、バックアップ部140は、書き込みを再実行するか否かを選択させるメッセージ等を半導体装置100に接続された表示装置等に表示させ、書き込みを再実行するか否かを示す制御情報を受けるまで待機する。
ブート情報BINF2の書き込みを再実行する場合、バックアップ部140の動作は、ステップS680に移る。一方、ブート情報BINF2の書き込みを再実行しない場合、バックアップ部140の動作は、ステップS690に移る。
ステップS680では、バックアップ部140は、アクセス制御部122およびインタフェース部120Aを介して、記憶媒体300のMBR320からブート情報BINF1を読み出す。ステップS680の処理が実行された後、バックアップ部140の動作は、ステップS610に戻る。これにより、ステップS680で記憶媒体300から読み出されたブート情報BINF1は、ブート情報BINF2として記憶部200に記憶される。
ステップS690では、バックアップ部140は、図4のステップS100で取得した識別情報IDINFに対応するバックアップ(ステップS610で記憶部200に格納したブート情報BINF2、識別情報IDINF等)を、記憶部200から削除する。この場合、バックアップ処理は、ブート情報BINF1をバックアップせずに、終了する。
このように、バックアップ部140は、ブート情報BINF1のバックアップであるブート情報BINF2が記憶部200に正常に書き込めたか否かを、ブート情報BINF1のハッシュ値HSAH1およびブート情報BINF2のHASH2を用いて判定する。これにより、正常でないブート情報BINF2が記憶部200に格納されることを抑制することができる。
なお、バックアップ部140の動作は、図5に示す例に限定されない。例えば、バックアップ部140は、ブート情報BINF2の書き込みの再実行を予め決められたリトライ回数に到達するまで試みてもよい。この場合、バックアップ部140は、ステップS670において、ブート情報BINF2の書き込みの再実行の回数がリトライ回数未満か否かを判定する。そして、ブート情報BINF2の書き込みの再実行の回数がリトライ回数未満の場合、バックアップ部140の動作は、ステップS680に移る。一方、ブート情報BINF2の書き込みの再実行の回数がリトライ回数以上の場合、バックアップ部140の動作は、ステップS690に移る。
また、ステップS680の処理は、省かれてもよい。この場合、バックアップ部140は、図4のステップS100で取得したブート情報BINF1を再利用して、ブート情報BINF2の書き込みを再実行する。
図6は、図4に示した修復処理(ステップS800)の一例を示す。すなわち、図6は、図2に示した修復部160の動作の一例を示す。なお、図6では、記憶媒体300がインタフェース部120Aに接続された場合を例にして修復部160の動作を説明する。
ステップS810では、修復部160は、図4のステップS100で取得した識別情報IDINFに対応するブート情報BINF2およびハッシュ値HASH2を、記憶部200から読み出す。
ステップS820では、修復部160は、記憶部200から読み出したブート情報BINF2のハッシュ値HASH3(第3のハッシュ値)を算出する。すなわち、修復部160は、ステップS810で読み出したブート情報BINF2からハッシュ値HASH3を算出する。
ステップS830では、修復部160は、ステップS810で読み出したハッシュ値HASH2が、ステップS820で算出したハッシュ値HASH3と等しいか否かを判定する。ハッシュ値HASH2がハッシュ値HASH3と等しい場合、修復部160の動作は、ステップS850に移る。一方、ハッシュ値HASH2がハッシュ値HASH3と異なる場合、修復部160の動作は、ステップS840に移る。
ステップS840では、修復部160は、MBR320の修復を中止するか否かを判定する。例えば、ハッシュ値HASH2がハッシュ値HASH3と異なる場合、記憶部200に記憶されているブート情報BINF2が破壊されているおそれがある。このため、例えば、修復部160は、MBR320の修復を中止するか否かを選択させるメッセージ等を半導体装置100に接続された表示装置等に表示させ、MBR320の修復を中止するか否かを示す制御情報を受けるまで待機する。
MBR320の修復を中止する場合、修復部160は、MBR320に格納されたブート情報BINF1を修復せずに、修復処理を終了する。この場合、正常でないブート情報BINF2でMBR320が修復されることを防止することができる。一方、MBR320の修復を中止しない場合、修復部160の動作は、ステップS850に移る。
ステップS850では、修復部160は、記憶部200から読み出したブート情報BINF2をブート情報BINF1として、アクセス制御部122およびインタフェース部120Aを介して記憶媒体300のMBR320に格納する。これにより、修復処理は終了する。例えば、ハッシュ値HASH2がハッシュ値HASH3と等しい場合、ステップS850の処理により、記憶媒体300のMBR320に格納されるブート情報BINF1は正常に修復され、修復処理は正常に終了する。
なお、修復部160の動作は、図6に示す例に限定されない。例えば、修復部160は、ハッシュ値HASH2がハッシュ値HASH3と異なる場合、ステップS840の処理を実行せずに、修復処理を終了してもよい。すなわち、ステップS840の処理は、省かれてもよい。
あるいは、修復部160は、ブート情報BINF2の読み出しを予め決められた所定回数に到達するまで繰り返し実行してもよい。この場合、修復部160は、ステップS840において、ブート情報BINF2の読み出しの再実行の回数が所定回数未満か否かを判定する。そして、ブート情報BINF2の読み出しの再実行の回数が所定回数未満の場合、修復部160の動作は、ステップS810に戻る。これにより、ブート情報BINF2の読み出しの失敗に起因する修復処理の失敗を抑制することができる。一方、ブート情報BINF2の読み出しの再実行の回数が所定回数以上の場合、修復部160は、MBR320に格納されたブート情報BINF1を修復せずに、修復処理を終了する。
図7は、図2に示した半導体装置100の動作の別の例を示す。図7に示す動作は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。図7に示す動作は、例えば、記憶媒体300と半導体装置100とを非接続にする処理(記憶媒体の取り出し処理)が実行される度に実行される。なお、図7に示す動作は、記憶媒体300のMBR320に格納されたブート情報BINF1が更新された場合に実行されてもよい。
図7に示す動作では、図4に示した動作からステップS200の処理およびステップS900の処理が省かれ、ステップS910の処理が図4に示した動作に追加される。図4で説明したステップと同一または同様のステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図7では、記憶媒体300とインタフェース部120Aとを非接続にする場合を例にして半導体装置100の動作を説明する。
ステップS100では、制御部110は、インタフェース部120Aに接続された記憶媒体300のMBR320に格納されたブート情報BINF1と、記憶媒体300を識別する識別情報IDINFとを、記憶媒体300から取得する。制御部110がステップS100の処理を実行した後、半導体装置100の動作は、ステップS220に移る。
ステップS220では、制御部110は、ステップS100で取得したブート情報BINF1が正常か否かを、図4で説明したステップS520の処理と同様の判定方法により判定する。
ステップS300では、バックアップ部140は、インタフェース部120Aに接続された記憶媒体300のMBR320のバックアップが記憶部200に格納されているか否かを判定する。
ステップS400では、バックアップ部140は、ステップS100で取得したブート情報BINF1のバックアップであるブート情報BINF2を、記憶部200から取得する。
ステップS500では、バックアップ部140は、ステップS400で取得したブート情報BINF2(ブート情報BINF1のバックアップ)が正常か否かを判定する。
ステップS520では、バックアップ部140は、ステップS400で取得したブート情報BINF2(ブート情報BINF1のバックアップ)と、ステップS100で取得したブート情報BINF1とに差が有るか否かを判定する。
ブート情報BINF2とブート情報BINF1とに差がない場合、半導体装置100の動作は、ステップS910に移る。一方、ブート情報BINF2とブート情報BINF1とに差が有る場合、半導体装置100の動作は、ステップS600に移る。
ステップS600では、バックアップ部140は、図5で説明したバックアップ処理を実行する。
ステップS700では、修復部160は、インタフェース部120Aに接続された記憶媒体300のMBR320のバックアップが記憶部200に格納されているか否かを判定する。
ステップS800では、修復部160は、図6で説明した修復処理を実行する。修復部160がステップS800の処理を実行した後、半導体装置100の動作は、ステップS910に移る。
ステップS910では、制御部110は、記憶媒体300の取り出し許可を半導体装置100の外部に通知する。例えば、制御部110は、半導体装置100から記憶媒体300を取り出してよいことを示すメッセージ等を半導体装置100に接続された表示装置に表示させる。
ステップS920では、修復部160は、記憶媒体300のMBR320のバックアップが存在しない等のエラーを半導体装置100の外部(例えば、半導体装置100に接続された表示装置)に通知する。なお、ステップS920の処理は、省かれてもよい。
このように、半導体装置100は、記憶媒体300が半導体装置100から取り出される際に、記憶媒体300のMBR320のバックアップを記憶部200に格納する。これにより、記憶媒体300が半導体装置100に接続された後に、記憶媒体300のMBR320に格納されたブート情報BINF1が更新された場合でも、記憶媒体300のMBR320のバックアップを記憶部200に格納することができる。また、半導体装置100は、半導体装置100に接続された記憶媒体300のMBR320が破壊されていた場合、記憶部200に格納したバックアップを用いて、記憶媒体300のMBR320を修復する。これにより、記憶媒体300の信頼度を向上させることができる。
なお、半導体装置100の動作は、図7に示す例に限定されない。例えば、ステップS500の処理は、省かれてもよい。また、ステップS220の処理、ステップS700の処理、ステップS800の処理およびステップS920の処理は、省かれてもよい。
以上、図2から図7に示す実施形態においても、図1に示した実施形態と同様の効果を得ることができる。例えば、半導体装置100は、記憶媒体300のMBR320に格納されたブート情報BINF1のバックアップであるブート情報BINF2を、記憶媒体300の識別情報IDINFに対応付けて、記憶媒体300とは別の記憶部200に格納する。これにより、記憶媒体300の信頼度を向上させることができる。
さらに、半導体装置100は、記憶部200に書き込む前のブート情報BINF1から算出したハッシュ値HASH1と、記憶部200に書き込んだ後のブート情報BINF2から算出したハッシュ値HASH2とを比較する。そして、半導体装置100は、ハッシュ値HASH1とハッシュ値HASH2との比較結果に基づいて、ブート情報BINF2が記憶部200に正常に書き込めたか否かを判定する。これにより、正常でないブート情報BINF2が記憶部200に格納されることを抑制することができる。
また、半導体装置100は、記憶媒体300のMBR320を修復する際に、記憶部200から読み出したブート情報BINF2から算出したハッシュ値HASH3と、記憶部200から読み出したハッシュ値HASH2とを比較する。そして、半導体装置100は、ハッシュ値HASH2とハッシュ値HASH3との比較結果に基づいて、記憶部200から読み出したブート情報BINF2が破壊されているか否かを判定する。これにより、正常でないブート情報BINF2でMBR320を修復することを防止できる。
図8は、半導体装置および記憶媒体の制御方法の別の実施形態を示す。図1から図7で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図8の破線の矢印は、信号等の情報の流れを示す。図8に示す半導体装置102は、ハードウェアのみで実現されてもよく、記憶媒体の制御プログラム等のソフトウェアによりハードウェアを制御することにより実現されてもよい。
半導体装置102では、図2に示した記憶部200が半導体装置100から省かれ、記憶部202がインターフェース部120に接続される。また、半導体装置102は、図2に示した制御部110の代わりに制御部112を有する。半導体装置102のその他の構成は、図2に示した半導体装置100と同一または同様である。
また、半導体装置102の動作は、図2に示した半導体装置100と同様である。例えば、半導体装置102は、記憶媒体300が着脱可能に接続されるコンピュータおよび携帯機器等の情報処理装置に搭載され、図2から図7で説明した実施形態と同様の記憶媒体の制御方法に基づいて、記憶媒体300のMBR320を修復する。
半導体装置102は、複数のインターフェース部120(120A、120B、120C)と、半導体装置102の動作を制御する制御部112とを有する。また、半導体装置102には、不揮発性メモリ等の記憶部202と記憶媒体300とが接続される。図8に示す例では、インターフェース部120Aに記憶媒体300が接続され、インターフェース部120Bに記憶部202が接続される。なお、半導体装置102は、記憶部202を含めて定義されてもよい。
記憶部202は、USBメモリ等のリムーバルディスクであり、MBR220およびデータ領域240を有する。なお、記憶部202のMBR220およびデータ領域240は、図1に示したMBR32およびデータ領域34と同一または同様である。また、記憶部202は、インターフェース部120(図8に示した例では、インターフェース部120B)を介して制御部112に接続されることを除いて、図2に示した記憶部200と同様である。例えば、記憶部202は、複数の記憶媒体300のブート情報BINF2と、ブート情報BINF2のハッシュ値HASH2と、識別情報IDINFとを、データ領域240に記憶する。
例えば、記憶部202が接続されたインターフェース部120Bは、制御部112から供給されるブート情報BINF2、ハッシュ値HASH2および識別情報IDINF等の情報を記憶部202に出力する。また、インターフェース部120Bは、記憶部202から供給されるブート情報BINF2、ハッシュ値HASH2および識別情報IDINF等の情報を制御部112に出力する。
制御部112は、アクセス制御部122と、バックアップ部142と、修復部162とを有する。図8では、インタフェース部120Aに記憶媒体300が接続され、インターフェース部120Bに記憶部202が接続された場合を例にしてアクセス制御部122等の動作の動作を説明する。
アクセス制御部122は、アクセス対象の記憶媒体300がインターフェース部120Aに接続された場合、MBR320に格納されたブート情報BINF1と、識別情報IDINFとを、記憶媒体300からインターフェース部120Aを介して読み出す。そして、アクセス制御部122は、記憶媒体300から読み出したブート情報BINF1および識別情報IDINFを、バックアップ部142および修復部162に転送する。また、アクセス制御部122は、記憶部202がインターフェース部120Bに接続された状態で、記憶媒体300がインターフェース部120Aに接続された場合、インターフェース部120Bを介して記憶部202にアクセスする。
バックアップ部142は、図2に示したバックアップ部140と同様である。なお、バックアップ部142と記憶部202との間のデータ転送は、アクセス制御部122およびインターフェース部120Bを介して実行される。
例えば、バックアップ部142は、記憶媒体300から読み出されたブート情報BINF1をブート情報BINF2として、アクセス制御部122およびインタフェース部120Bを介して記憶部202のデータ領域240に格納する。また、バックアップ部142は、ブート情報BINF2を、アクセス制御部122およびインタフェース部120Bを介して記憶部202のデータ領域240から読み出す。
修復部162は、図2に示した修復部160と同様である。なお、修復部162と記憶部202との間のデータ転送は、アクセス制御部122およびインターフェース部120Bを介して実行される。例えば、修復部162は、ブート情報BINF2およびハッシュ値HASH2を、アクセス制御部122およびインタフェース部120Bを介して記憶部202のデータ領域240から読み出す。
なお、半導体装置102の構成は、図8に示す例に限定されない。例えば、記憶部202は、複数設けられてもよい。この場合、複数の記憶部202の1つは、他の記憶部202のMBR220に格納されたブート情報BINF1を記憶してもよい。
以上、図8に示す実施形態においても、図1から図7に示した実施形態と同様の効果を得ることができる。例えば、半導体装置102は、記憶媒体300のMBR320に格納されたブート情報BINF1のバックアップであるブート情報BINF2を、記憶媒体300の識別情報IDINFに対応付けて、記憶媒体300とは別の記憶部202に格納する。これにより、記憶媒体300の信頼度を向上させることができる。
また、半導体装置102は、記憶部202に書き込む前のブート情報BINF1から算出したハッシュ値HASH1と、記憶部202に書き込んだ後のブート情報BINF2から算出したハッシュ値HASH2とを比較する。そして、半導体装置102は、ハッシュ値HASH1とハッシュ値HASH2との比較結果に基づいて、ブート情報BINF2が記憶部202に正常に書き込めたか否かを判定する。これにより、正常でないブート情報BINF2が記憶部202に格納されることを抑制することができる。
また、半導体装置102は、記憶媒体300のMBR320を修復する際に、記憶部202から読み出したブート情報BINF2から算出したハッシュ値HASH3と、記憶部202から読み出したハッシュ値HASH2とを比較する。そして、半導体装置102は、ハッシュ値HASH2とハッシュ値HASH3との比較結果に基づいて、記憶部202から読み出したブート情報BINF2が破壊されているか否かを判定する。これにより、正常でないブート情報BINF2でMBR320を修復することを防止できる。
図9は、図2に示した半導体装置100のハードウェア構成の一例を示している。なお、図2から図7で説明した要素と同様の要素については、同様の符号を付し、これ等については、詳細な説明を省略する。
コンピュータ500は、例えば、LSI(Large Scale Integration)510、不揮発性メモリ560および光学ドライブ570を有する。LSI510および不揮発性メモリ560は、例えば、LSIボードに搭載される。
LSI510は、CPU(Central Processing Unit)520、USBインターフェース回路530、532、SDインターフェース回路534、メモリ540およびハードディスク550を有する。CPU520、メモリ540、ハードディスク550、USBインターフェース回路530、532、SDインターフェース回路534、不揮発性メモリ560および光学ドライブ570は、バスBUSに接続される。
CPU520は、例えば、メモリ540に格納された記憶媒体の制御プログラム等のアプリケーションプログラムを実行することで、図2に示した制御部110として機能する。したがって、図2に示した制御部110の機能は、CPU520により実現される。
USBインターフェース回路530、532は、USBメモリ600(600A、600B)のインタフェースであり、SDインターフェース回路534は、SDメモリカード602のインタフェースである。また、USBメモリ600およびSDメモリカード602は、図2に示した記憶媒体300に対応する。すなわち、USBインターフェース回路530、532、SDインターフェース回路534は、図2に示したインターフェース部120に対応する。
メモリ540は、例えば、コンピュータ500のオペレーティングシステムを格納する。また、メモリ540は、例えば、半導体装置100の動作をCPU520が実行するための記憶媒体の制御プログラム等のアプリケーションプログラムを格納する。なお、記憶媒体の制御プログラム等のアプリケーションプログラムは、ハードディスク550に格納されてもよい。
不揮発性メモリ560は、USBメモリ600、SDメモリカード602等の記憶媒体のブート情報BINF2と、ブート情報BINF2のハッシュ値HASH2と、識別情報IDINFとを記憶する。すなわち、不揮発性メモリ560は、図2に示した記憶部200に対応する。
したがって、図2に示した半導体装置100の機能は、例えば、LSI510と不揮発性メモリ560とにより実現される。なお、図1に示した半導体装置10の機能および図8に示した半導体装置102の機能は、LSI510により実現される。例えば、図8に示した制御部112の機能は、CPU520により実現される。
光学ドライブ570は、光ディスク等のリムーバブルディスク580を装着可能であり、装着したリムーバブルディスク580に記録された情報の読み出しおよび記録を行う。
記憶媒体の制御プログラム等のアプリケーションプログラムは、例えば、光ディスク等のリムーバブルディスク580に記録して頒布することができる。例えば、コンピュータ500は、記憶媒体の制御プログラム等のアプリケーションプログラムを、リムーバブルディスク580から光学ドライブ570を介して読み出し、メモリ540やハードディスク550に格納してもよい。また、コンピュータ500は、記憶媒体の制御プログラム等のアプリケーションプログラムを、インターネット等のネットワークに接続する通信装置を介してダウンロードし、メモリ540やハードディスク550に格納してもよい。
半導体装置100のハードウェア構成は、図9に示す例に限定されない。例えば、コンピュータ500は、光学ドライブ570が省かれてもよい。
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
記憶媒体の起動時に参照されるブート領域に格納されたブート情報と、前記記憶媒体を識別する識別情報とを、アクセス対象の前記記憶媒体である第1記憶媒体から読み出すアクセス部と、
前記第1記憶媒体から読み出された第1ブート情報が正常である場合、複数の記憶媒体のそれぞれのブート情報および識別情報を記憶する記憶部に、前記第1記憶媒体から読み出された前記第1ブート情報を前記第1記憶媒体の第1識別情報に対応付けて格納するバックアップ部と、
前記第1記憶媒体から読み出された前記第1ブート情報が正常でなく、かつ、前記第1記憶媒体の前記第1識別情報が前記記憶部に記憶されている場合、前記第1記憶媒体の前記第1識別情報に対応する第2ブート情報を前記記憶部から読み出し、前記第1記憶媒体の前記ブート領域に格納された前記第1ブート情報を前記記憶部から読み出した前記第2ブート情報を用いて修復する修復部と
を有することを特徴とする半導体装置。
(付記2)
付記1に記載の半導体装置において、
前記第1記憶媒体から読み出された前記第1ブート情報が正常である場合、前記バックアップ部は、
前記第1記憶媒体から読み出された前記第1ブート情報を用いて第1のハッシュ値を算出し、
前記第1記憶媒体から読み出された前記第1ブート情報を前記第1記憶媒体の前記第1識別情報に対応付けて前記記憶部に格納した後に、前記第1記憶媒体の前記第1識別情報に対応する前記第2ブート情報を前記記憶部から読み出し、前記記憶部から読み出した前記第2ブート情報を用いて第2のハッシュ値を算出し、
前記第1のハッシュ値が前記第2のハッシュ値と等しい場合、前記第2のハッシュ値を前記第1記憶媒体の前記第1識別情報に対応付けて前記記憶部に格納する
ことを特徴とする半導体装置。
(付記3)
付記2に記載の半導体装置において、
前記第1記憶媒体から読み出された前記第1ブート情報が正常でなく、かつ、前記第1記憶媒体の前記第1識別情報が前記記憶部に記憶されている場合、前記修復部は、
前記記憶部から読み出した前記第2ブート情報を用いて第3のハッシュ値を算出し、
前記第1記憶媒体の前記第1識別情報に対応する前記第2のハッシュ値を前記記憶部から読み出し、
前記記憶部から読み出した前記第2のハッシュ値が前記第3のハッシュ値と等しい場合、前記記憶部から読み出した前記第2ブート情報を前記第1記憶媒体の前記ブート領域に格納し、前記第2のハッシュ値が前記第3のハッシュ値と異なる場合、前記第1記憶媒体の前記ブート領域に格納された前記第1ブート情報の修復を中止する
ことを特徴とする半導体装置。
(付記4)
付記2または付記3に記載の半導体装置において、
前記バックアップ部は、前記第1のハッシュ値が前記第2のハッシュ値と異なる場合、前記第1記憶媒体の前記第1識別情報および前記第1記憶媒体の前記第1識別情報に対応する前記第2ブート情報を、前記記憶部から削除する
ことを特徴とする半導体装置。
(付記5)
付記1ないし付記4のいずれか1項に記載の半導体装置において、
前記ブート領域は、記憶媒体の先頭セクタである
ことを特徴とする半導体装置。
(付記6)
記憶媒体の制御方法において、
記憶媒体の起動時に参照されるブート領域に格納されたブート情報と、前記記憶媒体を識別する識別情報とを、アクセス対象の前記記憶媒体である第1記憶媒体から読み出し、
前記第1記憶媒体から読み出された第1ブート情報が正常である場合、複数の記憶媒体のそれぞれのブート情報および識別情報を記憶する記憶部に、前記第1記憶媒体から読み出された前記第1ブート情報を前記第1記憶媒体の第1識別情報に対応付けて格納し、
前記第1記憶媒体から読み出された前記第1ブート情報が正常でなく、かつ、前記第1記憶媒体の前記第1識別情報が前記記憶部に記憶されている場合、前記第1記憶媒体の前記第1識別情報に対応する第2ブート情報を前記記憶部から読み出し、前記第1記憶媒体の前記ブート領域に格納された前記第1ブート情報を前記記憶部から読み出した前記第2ブート情報を用いて修復する
ことを特徴とする記憶媒体の制御方法。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。