説明

情報処理装置

【課題】起動時に非USBストレージデバイスからプログラムを読み込む構成を採用している情報処理装置において、予期しないUSBストレージデバイスから誤ってプログラムを読み込んでしまうのを防止すること。
【解決手段】情報処理装置1は、SCSIドライブ名“sda”からUSBポートを割り出す(S601)。ここで割り出しに失敗すれば、SCSIドライブ名“sda”が非USBストレージデバイスに割り当てられたものと判断し、ファイルシステム“sda1”を所定のマウントポイントにマウントする(S605)。一方、割り出しに成功した場合は、SCSIドライブ名“sda”がUSBストレージデバイスに割り当てられているので、緊急起動用USBポートからドライブ名を割り出し(S620)、緊急起動用USBストレージデバイス上のファイルシステムを所定のマウントポイントにマウントする(S625)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、USB(Universal Serial Bus)規格とは異なる規格のインターフェースを介して接続された非USBストレージデバイスと、USBポートに接続されたUSBストレージデバイスの双方を、ともにSCSIデバイスと認識する情報処理装置に関する。
【背景技術】
【0002】
従来、ストレージデバイスを備える情報処理装置においては、情報処理装置の起動時に、内蔵ハードディスク装置などのストレージデバイスからプログラムを読み込むことが一般的に行われている。
【0003】
また、情報処理装置の起動時に、外付記憶装置からプログラムを読み込む技術も提案されている(例えば、特許文献1参照)。この特許文献1に記載の技術においては、USBストレージデバイスを外付けし、そこからプログラムを読み込んで情報処理装置を起動している。
【特許文献1】特開2006−331380号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
ところで、USB規格において、USBストレージデバイスとの間でデータ伝送を行うための仕様は、内部的にはSCSI(Small Computer System Interface)規格を踏襲した仕様になっている。そのため、情報処理装置が備えるOS(Operating System)の中には、上記のようなUSBストレージデバイスをSCSIデバイスと認識し、SCSIデバイス相当のドライブ名を割り当てるものがある。
【0005】
また、上記USBストレージデバイスの他にも、ストレージデバイスの中には、SCSIデバイスと認識されるものがある。代表的な例を挙げると、例えば、シリアルATA(Advanced Technology Attachment)、IEEE(Institute of Electrical and Electronic Engineers)1394等の規格は、いずれも内部的にはSCSI規格を踏襲した仕様になっている。そのため、これらの規格に準拠したインターフェースを介して接続されたストレージデバイスはSCSIデバイスと認識され、SCSIデバイス相当のドライブ名が割り当てられる。
【0006】
さらに、SCSI−2やSCSI−3などのSCSI規格に準拠したストレージデバイスは、当然ながらSCSIデバイスと認識されるため、SCSIデバイス相当のドライブ名が割り当てられる。
【0007】
つまり、情報処理装置が備えるOSによっては、様々なストレージデバイスにSCSIデバイス相当のドライブ名が割り当てられることになる。なお、これらSCSIデバイスと認識されるストレージデバイスの内、上記のような「USB規格とは異なる規格のインターフェース」を介して接続されるストレージデバイスのことを、本明細書においては「非USBストレージデバイス」と総称する。
【0008】
しかしながら、上記のように様々なストレージデバイスにSCSIデバイス相当のドライブ名を割り当てる情報処理装置において、起動時に非USBストレージデバイスからプログラムを読み込む構成を採用している場合、次のような問題を招くおそれがある。
【0009】
すなわち、起動時に非USBストレージデバイスから読み込むべきプログラムや、そのプログラムが格納されているファイルシステムは、通常、非USBストレージデバイスに割り当てられるドライブ名を含むパス名などによって指定されている。
【0010】
ここで、情報処理装置が、単一の非USBストレージデバイスだけを備える構成を採用していれば、その非USBストレージデバイスに割り当てられるSCSIデバイス相当のドライブ名は、常に同じものになる。したがって、この場合は、そのドライブ名を含むパス名を利用して、所期のファイルシステムやプログラムにアクセスすることができる。
【0011】
しかし、上記のような情報処理装置が備えるUSBポートにUSBストレージデバイスが接続されていると、このUSBストレージデバイスにもSCSIデバイス相当のドライブ名が割り当てられる。
【0012】
そのため、上記のようなドライブ名を含むパス名でプログラムやファイルシステムを指定しておいても、そのドライブ名がUSBストレージデバイスに割り当てられてしまう可能性がある。
【0013】
例えば、非USBストレージデバイスが故障した場合には、非USBストレージデバイスが認識されないまま、USBストレージデバイスが認識されてしまう。この場合、非USBストレージデバイスに割り当てられるはずであったドライブ名が、USBストレージデバイスに割り当てられてしまうことがある。
【0014】
そして、この場合に、指定されたパス名と同一パス名となるプログラムやファイルシステムが、USBストレージデバイス上にも存在していれば、USBストレージデバイスからプログラムを読み込んでしまう。
【0015】
したがって、非USBストレージデバイスの故障時に、予期しないUSBストレージデバイスから想定外のプログラムを読み込んでしまい、そのことが原因となって情報処理装置が不要な処理を実行してしまうおそれがあった。また、例えば、USBストレージデバイス上に用意されたプログラムが悪意を持って用意された不正なプログラムであると、そのような不正なプログラムが実行されてしまうおそれがあった。
【0016】
本発明は、上記問題を解決するためになされたものであり、その目的は、非USBストレージデバイスおよびUSBポートに接続されたUSBストレージデバイスを、SCSIデバイスと認識する情報処理装置において、起動時に非USBストレージデバイスからプログラムを読み込む構成を採用している場合に、予期しないUSBストレージデバイスから誤ってプログラムを読み込んでしまうのを防止することにある。
【課題を解決するための手段】
【0017】
以下、本発明において採用した構成について説明する。
請求項1に記載の情報処理装置は、USB(Universal Serial Bus)規格とは異なる規格のインターフェースを介して接続された非USBストレージデバイスと、USBストレージデバイスを接続可能なUSBポートとを備え、前記非USBストレージデバイスおよび前記USBポートに接続されたUSBストレージデバイスを、SCSI(Small Computer System Interface)デバイスと認識する情報処理装置であって、前記非USBストレージデバイスないし前記USBポートに接続されたUSBストレージデバイスを検出すると、検出したデバイスとの間でSCSI規格に準拠した方式でデータ伝送を行うための論理的なデータ伝送用インターフェースを生成するデータ伝送用インターフェース生成手段と、前記データ伝送用インターフェース生成手段によって生成された前記データ伝送用インターフェースを検出する毎に、前記データ伝送用インターフェースを介してアクセス可能なデバイスに対して、ユニークなドライブ名を割り当てるドライブ名割り当て手段と、前記ドライブ名割り当て手段によって割り当てられたドライブ名が、あらかじめ取り決められたドライブ名となったデバイスを判定対象として、前記判定対象が前記非USBストレージデバイスか否かを判定するデバイス種別判定手段と、前記デバイス種別判定手段によって前記判定対象が前記非USBストレージデバイスであると判定された場合に、前記非USBストレージデバイス上にある第1ファイルシステムを所定のマウントポイントにマウントする第1マウント手段と、前記第1マウント手段が前記第1ファイルシステムのマウントに成功したか否かを判定するマウント結果判定手段と、前記マウント結果判定手段によって前記第1ファイルシステムのマウントに成功したと判定された場合に、前記マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく処理を実行する処理実行手段とを備えたことを特徴とする。
【0018】
この情報処理装置において、非USBストレージデバイスとは、既に説明した通り、情報処理装置からSCSIデバイスと認識され、且つ、USB規格とは異なる規格のインターフェースを介して情報処理装置に接続されるストレージデバイスのことである。そして、この「USB規格とは異なる規格」としては、例えば、シリアルATA、IEEE1394、SCSIなどの規格を挙げることができる。
【0019】
一方、この情報処理装置において、USBストレージデバイスとは、USBポートへ接続した際に、情報処理装置の制御部側からUSBマスストレージクラスのデバイスとして認識されるものである。
【0020】
以上のように構成された情報処理装置において、情報処理装置の起動時には、まず、データ伝送用インターフェース生成手段が、非USBストレージデバイスないしUSBポートに接続されたUSBストレージデバイスを検出すると、検出したデバイスとの間でSCSI規格に準拠した方式でデータ伝送を行うための論理的なデータ伝送用インターフェースを生成する。これにより、情報処理装置は、非USBストレージデバイスおよびUSBストレージデバイスの双方をSCSIデバイスとして認識したことになり、以降は、SCSI規格に準拠した方式でデータ伝送を行うことができるようになる。
【0021】
なお、ここで生成される論理的なデータ伝送用インターフェースは、情報処理装置上のソフトウェアのみによって仮想的に生成されるSCSIインターフェース、情報処理装置に実装されたハードウェアと情報処理装置上のソフトウェアが協働してSCSIインターフェースとしての機能が実現されるもの、いずれであってもよい。
【0022】
そして、このようなデータ伝送用インターフェース生成手段によってデータ伝送用インターフェースが生成されると、ドライブ名割り当て手段は、データ伝送用インターフェースを検出する毎に、データ伝送用インターフェースを介してアクセス可能なデバイスに対して、ユニークなドライブ名を割り当てる。
【0023】
具体例を交えて説明すると、例えば情報処理装置のOSがLinux(登録商標)の場合、情報処理装置は、装置の起動時に非USBストレージデバイスおよびUSBストレージデバイスに対して、“sda”,“sdb”,“sdc”,…といったドライブ名を割り当てる。これらのドライブ名割り当て処理は、情報処理装置が備えるCPU等を中心とする制御部によって実行されるものであり、これが本発明でいうドライブ名割り当て手段に相当する構成となる。
【0024】
ただし、ドライブ名割り当て手段は、非USBストレージデバイスおよびUSBストレージデバイスを区別することなく、SCSIデバイスとしてのドライブ名を割り当てる。そのため、USBストレージデバイスが接続されていない場合に、非USBストレージデバイスにあらかじめ取り決められたドライブ名が割り当てられるとしても、USBストレージデバイスが接続されている場合には、非USBストレージデバイスにあらかじめ取り決められたドライブ名が割り当てられるとは限らない。
【0025】
特に、非USBストレージデバイスが故障している場合等、情報処理装置が非USBストレージデバイスを認識できない状況になると、あらかじめ取り決められたドライブ名がUSBストレージデバイスに割り当てられる可能性がある。
【0026】
そこで、上記情報処理装置において、デバイス種別判定手段は、ドライブ名割り当て手段によって割り当てられたドライブ名があらかじめ取り決められたドライブ名となったデバイスを判定対象として、判定対象が非USBストレージデバイスか否かを判定する。このようなデバイス種別判定処理も、情報処理装置が備えるCPU等を中心とする制御部によって実行されるものであり、これが本発明でいうデバイス種別判定手段に相当する構成となる。
【0027】
そして、第1マウント手段は、デバイス種別判定手段によって前記判定対象が非USBストレージデバイスであると判定された場合に、非USBストレージデバイス上にある第1ファイルシステムを所定のマウントポイントにマウントする。
【0028】
これも具体例を交えて説明すると、例えば情報処理装置のOSがLinux(登録商標)の場合、ドライブ名“sda”が割り当てられた非USBストレージデバイス上にあるファイルシステム名は、“sda1”,“sda2”,“sda3”,…と決められている。
【0029】
そのため、情報処理装置において、非USBストレージデバイス上に存在するファイルシステムが、設計通りに用意されている場合、ドライブ名(例えば“sda”)を利用して第1ファイルシステムを(例えば“sda1”であると)特定できる。そして、第1ファイルシステムを特定できれば、その第1ファイルシステム(例えば“sda1”)を所定のマウントポイント(例えば“/main”)にマウントすることもできる。このようなマウント処理も、情報処理装置が備えるCPU等を中心とする制御部によって実行されるものであり、これが本発明でいう第1マウント手段に相当する構成となる。
【0030】
続いて、情報処理装置は、第1ファイルシステムのマウントに成功したか否かを判定する処理を実行する。このマウント結果判定処理も、情報処理装置が備えるCPU等を中心とする制御部によって実行されるものであり、これが本発明でいうマウント結果判定手段に相当する構成となる。
【0031】
この判定の結果、マウントに成功したと判定された場合、情報処理装置の制御部は、マウントポイント下にある第1ファイルシステム上のファイル群にアクセスできる状態となる。
【0032】
そこで、情報処理装置の制御部は、第1マウント手段によって第1ファイルシステムがマウントポイントにマウントされたら、マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく処理を実行する。この処理も、情報処理装置が備えるCPU等を中心とする制御部によって実行されるものであり、これが本発明でいう処理実行手段に相当する。
【0033】
以上説明したように作動する情報処理装置によれば、あらかじめ取り決められたドライブ名となったデバイスが、非USBストレージデバイスであった場合、第1マウント手段は、その非USBストレージデバイス上にある第1ファイルシステムをマウントし、第1ファイルシステムから各種処理が起動される。
【0034】
一方、あらかじめ取り決められたドライブ名がUSBストレージデバイスに付与されてしまった場合、第1マウント手段は、そのUSBストレージデバイス上にあるファイルシステムをマウントすることはない。
【0035】
したがって、あらかじめ取り決められたドライブ名が、想定外のUSBストレージデバイスに付与されたとしても、そのような想定外のUSBストレージデバイスから誤ってプログラムを読み込んでしまうといったトラブルを招くことがない。
【0036】
ところで、以上説明した情報処理装置において、あらかじめ取り決められたドライブ名が非USBストレージデバイスに割り当てられなかった場合、どのような対処を行うかは任意である。例えば、あらかじめ取り決められたドライブ名が非USBストレージデバイスに割り当てられなかった場合、情報処理装置に何らかの問題が生じている可能性があるので、そのまま情報処理装置の起動を中止するのも一案である。ただし、この場合、マウントポイント下にあるファイル群からプログラムを読み込むことができず、情報処理装置は、当該プログラムに基づく処理を実行することができなくなる。
【0037】
これに対し、非USBストレージデバイスからの起動(以下、通常起動と称する。)に失敗した場合に、USBストレージデバイスからの起動(以下、緊急起動と称する。)を行うように構成することで、情報処理装置の信頼性向上を図ることもできる。
【0038】
そこで、このような構成を採用したい場合は、請求項2に記載の情報処理装置のように、請求項1に記載の情報処理装置において、前記デバイス種別判定手段によって前記対象デバイスが前記非USBストレージデバイスではないと判定された場合、または、前記マウント結果判定手段によって前記第1ファイルシステムのマウントに失敗したと判定された場合に、前記USBポートに接続された前記USBストレージデバイス上にある第2ファイルシステムを、前記所定のマウントポイントにマウントする第2マウント手段を備え、前記処理実行手段は、前記第2マウント手段によって前記第2ファイルシステムが前記所定のマウントポイントにマウントされたら、前記マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく処理を実行するように構成してもよい。
【0039】
この情報処理装置においては、あらかじめ取り決められたドライブ名となったデバイスが、非USBストレージデバイスではない場合、または第1ファイルシステムのマウントに失敗した場合であっても、第2マウント手段は、USBストレージデバイス上にある第2ファイルシステムをマウントする。なお、このようなマウント処理も、情報処理装置が備えるCPU等を中心とする制御部によって実行されるものであり、これが本発明でいう第2マウント手段に相当する。
【0040】
このように構成された情報処理装置によれば、通常は、第1ファイルシステムから各種処理を起動することができる一方、何らかの原因(例えば故障等)により、第1ファイルシステムマウントに失敗した場合は、第2ファイルシステムから緊急時用の代替処理を起動することができる。
【0041】
さて、上記のように、緊急起動時にUSBストレージデバイス上の第2ファイルシステムから各種処理を起動できるように構成する場合、複数のUSBストレージデバイスが存在すると、それら複数のUSBストレージデバイスを認識する順序も、情報処理装置のOS任せになる。そのため、認識順によっては、ドライブ名が入れ替わってしまうこともある。特に、抜き差しが容易なUSBストレージデバイスの場合、情報処理装置への追加・削除が行われる可能性も高く、それに伴ってドライブ名が変動する可能性も高い。
【0042】
そのため、USBストレージデバイスに割り当てられるドライブ名を勝手に決めつけて、それを利用したパス名で、緊急起動時にアクセスしたいファイルシステムやファイルを指定しておいても、ドライブ名が変動してしまうと、ファイルシステムやファイルにアクセスできなくなってしまうおそれがある。
【0043】
そこで、このような問題に対処するには、次のような構成を採用するとよい。すなわち、請求項3に記載の情報処理装置は、請求項2に記載の情報処理装置において、前記USBポートが複数設けられており、前記複数のUSBポートの内、少なくとも1つのUSBポートは管理者だけが利用可能な管理者用USBポート、残りのUSBポートは管理者以外でも利用可能な一般用USBポートとされ、しかも、前記管理者用USBポートに接続された前記USBストレージデバイスに対して前記ドライブ名割り当て手段が割り当てた前記ドライブ名を取得するドライブ名取得手段を備え、前記第2マウント手段は、前記ドライブ名取得手段によって取得された前記ドライブ名を利用して、前記管理者用USBポートに接続された前記USBストレージデバイス上にある前記第2ファイルシステムを特定するとともに、当該特定した前記第2ファイルシステムを、前記所定のマウントポイントにマウントすることを特徴とする。
【0044】
この情報処理装置においては、ドライブ名取得手段が、管理者用USBポートに接続されたUSBストレージデバイスに対してドライブ名割り当て手段が割り当てたドライブ名を取得する。このようなドライブ名取得手段を採用しているのは、ドライブ名割り当て手段が、管理者用USBポートに接続されたUSBストレージデバイスに対してどのようなドライブ名を割り当てるのかが不定だからである。
【0045】
これも具体例を交えて説明すると、例えば情報処理装置のOSがLinux(登録商標)の場合、USBストレージデバイスには、上述の通り、ドライブ名割り当て手段により、“sda”,“sdb”,“sdc”,…といったドライブ名が割り当てられる。
【0046】
ここで、上記情報処理装置においては、管理者用USBポートにUSBストレージデバイスが接続され、そのUSBストレージデバイス上に第2ファイルシステムが用意してある。そのため、他にUSBストレージデバイスが存在しない場合に限れば、例えば、管理者用USBポートに接続されたUSBストレージデバイスのドライブ名は“sda”に決まる。また、それ故、第2ファイルシステムは、例えば1番目のファイルシステムがターゲットの場合、“sda1”となるはずであり、第2ファイルシステムを特定することもできる。
【0047】
しかし、一般用USBポートにもUSBストレージデバイスが接続されている場合には、上述の“sda”,“sdb”,“sdc”,…といったドライブ名の内、どれが管理者用USBポートに接続されたUSBストレージデバイスに割り当てられるかが不定となる。もちろん、どれが一般用USBポートに接続されたUSBストレージデバイスに割り当てられるかも不定である。
【0048】
そこで、請求項3に記載の情報処理装置では、デバイス種別判定手段によって前記対象デバイスが非USBストレージデバイスではないと判定された場合、または、マウント結果判定手段によって第1ファイルシステムのマウントに失敗したと判定された場合、まず、管理者用USBポートに接続されたUSBストレージデバイスに対してドライブ名割り当て手段が割り当てたドライブ名を取得する処理を実行するのである。この処理も、情報処理装置が備えるCPU等を中心とする制御部によって実行されるものであり、これが本発明でいうドライブ名取得手段に相当する。
【0049】
このようなドライブ名取得手段により、管理者用USBポートに接続されたUSBストレージデバイスのドライブ名“sda”が取得できれば、例えば1番目のファイルシステムがターゲットの場合、第2ファイルシステムは“sda1”であると特定できる。また、ドライブ名“sdb”が取得できれば、例えば1番目のファイルシステムがターゲットの場合、第2ファイルシステムは“sdb1”であると特定できることになる。
【0050】
したがって、情報処理装置は、上記のように特定された第2ファイルシステム(例えば“sda1”)を所定のマウントポイント(例えば“/main”)にマウントする処理を実行することができるようになる。
【0051】
そして、情報処理装置の制御部は、第2マウント手段によって第2ファイルシステムがマウントポイントにマウントされたら、マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく処理を実行する。この処理は、第1ファイルシステムをマウントした場合と同等な処理であり、既に説明した通り、本発明でいう処理実行手段に相当する。
【0052】
以上説明したような情報処理装置によれば、複数のUSBストレージデバイスが存在すると、それらのドライブ名は不定となっているものの、ドライブ名取得手段によって、管理者用USBポートに接続されたUSBストレージデバイスに割り当てられたドライブ名を取得できる。また、第2マウント手段は、ドライブ名取得手段によって取得されたドライブ名を利用して、管理者用USBポートに接続されたUSBストレージデバイス上にある第2ファイルシステムを適切に特定することができる。
【0053】
そのため、第2マウント手段は、適切な第2ファイルシステムを所定のマウントポイントにマウントすることができ、管理者用USBポート以外に接続されたUSBストレージデバイス上のファイルシステムを誤ってマウントしてしまうことはない。
【0054】
したがって、適切な第2ファイルシステムがマウントされた後、処理実行手段は、マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく処理を実行することができる。よって、必要なファイルが読み込めないとか、不適切なファイルを読み込んでしまうといったトラブルを、未然に防止することができる。
【0055】
次に、請求項4に記載の情報処理装置は、請求項3に記載の情報処理装置において、前記USBポートに接続されたUSBストレージデバイスを検出すると、前記データ伝送用インターフェースおよび前記USBストレージデバイスに関する情報にアクセスするための情報公開用インターフェースを生成する情報公開用インターフェース生成手段を備え、前記ドライブ名割り当て手段は、前記データ伝送用インターフェースを介して前記USBストレージデバイスにアクセスする際には、アクセス対象となる前記USBストレージデバイスに対して割り当てた前記ドライブ名を、前記データ伝送用インターフェースに伝達することにより、前記データ伝送用インターフェースが備える記憶領域に前記ドライブ名を保存し、前記ドライブ名取得手段は、前記情報公開用インターフェースを介して前記データ伝送用インターフェースが備える記憶領域に格納された情報を読み出し、その読み出した情報中から前記管理者用USBポートと前記ドライブ名との対応関係を示す情報を取得することを特徴とする。
【0056】
このように構成された情報処理装置によれば、データ伝送用インターフェースを介してUSBストレージデバイスにアクセスする際に、USBストレージデバイスに割り当てられたドライブ名が、データ伝送用インターフェースの備える記憶領域に保存される。
【0057】
そのため、ドライブ名取得手段が、情報公開用インターフェースを介して情報を取得すると、データ伝送用インターフェースおよびUSBストレージデバイスに関する情報に加え、ドライブ名の情報をも取得することができる。これにより、管理者用USBポートとドライブ名との対応関係を容易に把握することができる。
【0058】
より具体的な例を交えて説明すると、例えば情報処理装置のOSがLinux(登録商標)の場合、USBストレージデバイスを検出したときには、USBストレージデバイスへのアクセス時に利用する仮想的なデータ伝送用インターフェース(SCSIホストアダプタ)が生成される。
【0059】
また、データ伝送用インターフェースおよびUSBストレージデバイスに関する情報にアクセスするための情報公開用インターフェース(/procファイルシステム下にある擬似的なファイル)が生成される。これらを生成する処理は、USBストレージデバイス毎に実行される。
【0060】
そして、上述したドライブ名割り当て手段は、仮想的なデータ伝送用インターフェースを検出する毎に、そのデータ伝送用インターフェースを介してアクセス可能なUSBストレージデバイスに対して、ドライブ名を割り当てる処理を実行する。
【0061】
ただし、一般的なLinux(登録商標)の場合、データ伝送用インターフェースを介してUSBストレージデバイスにアクセスする際、アクセス対象となるUSBストレージデバイスに対して割り当てたドライブ名が、データ伝送用インターフェースに伝達されることはない。それ故、データ伝送用インターフェースが備える記憶領域にドライブ名が保存されることもない。
【0062】
そのため、一般的なLinux(登録商標)の場合、ドライブ名に基づいて、それに対応するデータ伝送用インターフェースは特定できるものの、データ伝送用インターフェースに基づいて、それに対応するドライブ名を特定することはできない仕様となっている。これは、一般的なLinux(登録商標)の場合、本発明でいう管理者用USBポートに対応するデータ伝送用インターフェースに基づいて、それに対応するUSBストレージデバイスのドライブ名(例えば“sda”)を特定できない仕様であることを意味する。
【0063】
この点、請求項4に記載の情報処理装置の場合は、上述の通り、データ伝送用インターフェースを介してUSBストレージデバイスにアクセスする際、アクセス対象となるUSBストレージデバイスに対して割り当てたドライブ名は、データ伝送用インターフェースが備える記憶領域に保存される。
【0064】
したがって、管理者用USBポートに対応するデータ伝送用インターフェースが備える記憶領域から、その記憶領域に保存されたドライブ名を読み取って、そのドライブ名に基づいて、所期のドライブ名ないしファイルシステム名を特定することができるのである。
【0065】
ちなみに、一般的なSCSIインターフェースの場合は、単一のSCSIインターフェースに対して複数のストレージデバイスが接続される可能性がある。そのため、上記のようにSCSIインターフェースが備える記憶領域にドライブ名を保存しても、データ伝送用インターフェースとストレージデバイスとの1対1の関係を特定するには至らない。
【0066】
しかし、USBストレージデバイスの接続に伴って生成される仮想的なデータ伝送用インターフェースは、データ伝送用インターフェースとUSBストレージデバイスとが1対1の関係になっている。そのため、上記のようにデータ伝送用インターフェースが備える記憶領域にドライブ名を保存すれば、そのドライブ名が「1対1の関係にあるUSBストレージデバイス」に割り当てられたものであると特定できる。
【0067】
次に、請求項5に記載の情報処理装置は、請求項4に記載の情報処理装置において、前記ドライブ名割り当て手段は、前記USBストレージデバイスに対して前記ドライブ名を割り当てた後、前記USBストレージデバイスの容量に関する情報を取得するため、SCSI規格で規定されたSCSIコマンドの1種であるリードキャパシティコマンドを発行しており、当該リードキャパシティコマンドに対応する処理の中で、前記ドライブ名が前記データ伝送用インターフェースに伝達されることを特徴とする。
【0068】
この情報処理装置において、USBストレージデバイスの容量に関する情報の取得は、デバイス認識後に必須の処理であり、内部的にSCSI規格に準拠した仕様となっているUSBストレージデバイスの場合、必ずリードキャパシティコマンドが発行される。
【0069】
したがって、リードキャパシティコマンドが発行された際に実行される処理の中で、ドライブ名がデータ伝送用インターフェースに伝達されれば、例えば、ドライブ名をデータ伝送用インターフェースに伝達するための専用コマンドを新設するといった対処をしなくても済む。また、リードキャパシティコマンドを発行していた既存の処理については、何ら改修しなくてもリードキャパシティコマンドを発行するだけで、新たな機能が付加されることになる。
【0070】
さらに、請求項6に記載の情報処理装置は、請求項4または請求項5に記載の情報処理装置において、前記ドライブ名取得手段は、前記情報公開用インターフェースを介して情報を取得可能なすべての前記USBストレージデバイスについて、順次情報の読み出しを繰り返すとともに、読み出した情報中に含まれるUSBポートに関する情報があらかじめ決められた前記管理者用USBポートに該当する情報か否かを判断し、前記管理者用USBポートに該当する情報であった場合に、読み出した情報中に含まれる前記ドライブ名を取得することを特徴とする。
【0071】
このように構成された情報処理装置によれば、複数のUSBストレージデバイスが存在していても、それらを順に処理対象として情報を読み出しながら、管理者用USBポートに対応するドライブ名を選び出すことができる。
【0072】
加えて、請求項7に記載の情報処理装置は、請求項3〜請求項6のいずれかに記載の情報処理装置において、前記管理者用USBポートは、情報処理装置の筐体内部に収容されていて、前記筐体が備えるパネルを開放したときにUSBデバイスを抜き挿し可能となるものであり、前記一般用USBポートは、前記筐体の外部に露出していて、前記パネルを開放しなくてもUSBデバイスを抜き挿し可能となっていることを特徴とする。
【0073】
このように構成された情報処理装置によれば、管理者用USBポートは、パネルを開放しないとUSBデバイスを抜き挿しできない場所にあるので、管理者以外の利用者が誤って管理者用USBポートにUSBデバイスを装着してしまうのを未然に防止することができる。
【0074】
さらに、請求項8に記載の情報処理装置は、請求項1〜請求項7のいずれかに記載の情報処理装置において、前記USBポートに接続されたUSBストレージデバイスを検出すると、前記データ伝送用インターフェースおよび前記USBストレージデバイスに関する情報にアクセスするための情報公開用インターフェースを生成する情報公開用インターフェース生成手段を備え、前記ドライブ名割り当て手段は、前記データ伝送用インターフェースを介して前記USBストレージデバイスにアクセスする際には、アクセス対象となる前記USBストレージデバイスに対して割り当てた前記ドライブ名を、前記データ伝送用インターフェースに伝達することにより、前記データ伝送用インターフェースが備える記憶領域に前記ドライブ名を保存し、前記デバイス種別判定手段は、前記情報公開用インターフェースを介して前記データ伝送用インターフェースが備える記憶領域に格納された情報を読み出し、その読み出した情報中から前記USBポートと前記ドライブ名との対応関係を示す情報を取得し、取得した情報中に前記判定対象についての情報が存在しない場合に、前記判定対象が前記非USBストレージデバイスであると判定することを特徴とする。
【0075】
このように構成された情報処理装置において、データ伝送用インターフェースを介してUSBストレージデバイスにアクセスする際には、USBストレージデバイスに割り当てられたドライブ名が、データ伝送用インターフェースの備える記憶領域に保存される。
【0076】
そのため、デバイス種別判定手段が、情報公開用インターフェースを介して情報を取得すると、データ伝送用インターフェースおよびUSBストレージデバイスに関する情報に加え、ドライブ名の情報をも取得することができ、USBストレージデバイスとドライブ名との対応関係がわかる。
【0077】
したがって、取得した情報中に判定対象についての情報が存在しない場合に、判定対象が非USBストレージデバイスであると判定することが可能となる。
また、請求項9に記載の情報処理装置は、請求項8に記載の情報処理装置において、前記ドライブ名割り当て手段は、前記USBストレージデバイスに対して前記ドライブ名を割り当てた後、前記USBストレージデバイスの容量に関する情報を取得するため、SCSI規格で規定されたSCSIコマンドの1種であるリードキャパシティコマンドを発行しており、当該リードキャパシティコマンドに対応する処理の中で、前記ドライブ名が前記データ伝送用インターフェースに伝達されることを特徴とする。
【0078】
この情報処理装置において、USBストレージデバイスの容量に関する情報の取得は、デバイス認識後に必須の処理であり、内部的にSCSI規格に準拠した仕様となっているUSBストレージデバイスの場合、必ずリードキャパシティコマンドが発行される。
【0079】
したがって、リードキャパシティコマンドが発行された際に実行される処理の中で、ドライブ名がデータ伝送用インターフェースに伝達されれば、例えば、ドライブ名をデータ伝送用インターフェースに伝達するための専用コマンドを新設するといった対処をしなくても済む。また、リードキャパシティコマンドを発行していた既存の処理については、何ら改修しなくてもリードキャパシティコマンドを発行するだけで、新たな機能が付加されることになる。
【発明を実施するための最良の形態】
【0080】
次に、本発明の実施形態について一例を挙げて説明する。
[情報処理装置の内部構造]
図1は、本発明の一実施形態として例示する情報処理装置1の内部構造を示すブロック図である。
【0081】
以下に説明する情報処理装置1は、電源投入後に自動的に所定のプログラム群を実行することで、この情報処理装置1が備える特定の機能が作動するように構成された特定機能専用の装置である。より具体的には、本実施形態の場合、情報処理装置1はカラオケコマンダーとして構成されたものであり、電源投入後に自動的に所定のプログラム群を実行することで、カラオケコマンダーとして各種機能が作動するように構成されている。この点で、実行対象となるプログラムが利用者の操作に応じて任意に変わり得るパーソナルコンピュータのような汎用的な装置とは異なるものである。
【0082】
この情報処理装置1は、CPU11、ROM13、RAM15、ハードディスク装置17、およびUSBインターフェース20などを備えている。USBインターフェース20は、1つの内部USBポート21と、2つの外部USBポート22,23とを備え、内部USBポート21には、USBストレージデバイス25が接続されている。すなわち、この情報処理装置1には、ハードディスク装置17およびUSBストレージデバイス25、これら2種類のストレージデバイスが内蔵されている。
【0083】
これらの内、ハードディスク装置17は、シリアルATA方式の内蔵インターフェースを介して接続され、情報処理装置1の起動時には、通常、ハードディスク装置17に格納されたプログラムが読み込まれる仕組みになっている。また、詳しくは後述するが、ハードディスク装置17からプログラムを読み込むことができない状況に陥った場合、代替手段として、USBストレージデバイス25に格納されたプログラムが読み込まれる仕組みになっている。すなわち、ハードディスク装置17は通常の起動時に利用され、USBストレージデバイス25は通常の起動ができない緊急時に利用される。
【0084】
また、この情報処理装置1は筐体31を備え、上記CPU11、ROM13、RAM15、およびハードディスク装置17等は筐体31の内部に収納されている。また、USBインターフェース20の内、内部USBポート21は筐体31の内部に収納される一方、外部USBポート22,23は筐体31の外部に露出する状態になっている。
【0085】
筐体31には、開口部33が設けられていて、この開口部33はパネル35によって塞がれている。このパネル35は、固定具37によって筐体31に固定され、この固定具37は、専用治具(図示略)を利用した場合にのみ取り外すことができる構造になっている。
【0086】
この固定具37を取り外してパネル35を開放できるのは、専用治具を所持する管理者だけであり、筐体31に内蔵された機器に直接触れることができるのは管理者のみである。したがって、内部USBポート21に接続されたUSBストレージデバイス25の抜き挿しなども、管理者しか実施することができない。一方、外部USBポート22,23は、上述の通り、筐体31の外部に露出しており、管理者以外の一般利用者であっても任意に各種USBデバイスを抜き挿しすることができる。
【0087】
つまり、内部USBポート21は、管理者だけが利用可能な管理者用USBポートとされており、外部USBポート22,23は、管理者以外でも利用可能な一般用USBポートとされているのである。
【0088】
さらに、これらのハードウェアを制御するため、情報処理装置1には、OSが搭載されている。本実施形態において、OSとしてはLinux(登録商標)が搭載されている。ただし、一般的なLinux(登録商標)が備える機能のみでは、本発明を実施する上で必要となる機能が十分に揃っていないため、一部独自の機能を追加してある。この追加機能の具体的な内容に関しては後から詳述するが、その他一般的なLinux(登録商標)と差異のない機能については、その説明を省略する。
【0089】
[情報処理装置の起動時に実行される処理]
次に、上記情報処理装置1の起動時に実行される処理について説明する。
図2は、情報処理装置1の電源ONに伴って実行される処理のフローチャートである。
【0090】
情報処理装置1の電源がONにされると、情報処理装置1では、まず、OSのカーネルがCPU11のメモリにロードされる(S105)。OSのカーネルはROM13内に格納されていて、S105では、CPU11がRAM15の一部をRAMディスクとして確保し、このRAMディスクにカーネルをロードする。これにより、このRAMディスクがルートボリュームとなってOSが起動し、OSの備える少なくとも一部の機能が作動を開始する。
【0091】
続いて、情報処理装置1では、SCSIドライブ接続監視が開始される(S115)。本実施形態の場合、このS115では、SCSIドライブ接続監視プロセスが起動され、以降、このプロセスが常駐することにより、情報処理装置1の電源がOFFにされるまで、概ね6秒周期でSCSIドライブの接続/切断が監視される。
【0092】
このSCSIドライブ接続監視の処理内容は、詳しくは図3に示すような処理となる。
すなわち、図3に示す「OS内SCSIドライブ接続監視」を開始すると、情報処理装置1は、まず、「SCSI−I/F接続テーブル(以下、SITBと称する。)」の初期化を行う(S205)。SITBは、情報処理装置1において現在接続中のSCSIインターフェース(以下、SCSI−I/Fと称する。)を登録するためのテーブルである。S205では、例えばハードウェアとして装着されているSCSI−I/Fが存在する場合に、データ伝送用インターフェースに相当するSCSI−I/Fの情報をSITBに登録する処理などが実行される。
【0093】
そして、S205で登録したI/Fに接続されているドライブが存在する場合は、そのドライブをシステムに登録する(S210)。このS210により、登録されたドライブには“sda”,“sdb”,…といったドライブ名が割り当てられる。
【0094】
続いて、情報処理装置1は、一定時間(例えば6秒)が経過したか否かを判断し(S215)、経過していなければ(S215:いいえ)、S215へと戻ることにより、時間経過を待つ。そして、一定時間が経過したら(S215:はい)、現在接続中のSCSI−I/Fを確認する(S220)。
【0095】
その後、情報処理装置1は、新しく接続されたSCSI−I/Fの有無を判断し(S225)、新しく接続されたSCSI−I/Fが無い場合は(S225:無い)、今回切断されたSCSI−I/Fの有無を判断する(S230)。そして、今回切断されたSCSI−I/Fが無い場合は(S230:無い)、S215へ戻る。これにより、S215〜S230は、概ね6秒ごとに繰り返し実行されることになる。
【0096】
そして、このようなS215〜S230の繰り返し処理が実行される中で、新しく接続されたSCSI−I/Fが有った場合(S225:有る)、情報処理装置1は、新規SCSI−I/Fを上述のSITBに登録し、そのI/Fに接続されているドライブをシステムに登録する(S235)。
【0097】
このS235により、登録されたドライブには“sda”,“sdb”,…といったドライブ名が割り当てられる。また、ドライブの登録時には、そのドライブの容量に関する情報も必要となるので、その情報を取得するため、SCSI規格で規定されたSCSIコマンドの1種であるリードキャパシティコマンドを発行する。
【0098】
このとき、この情報処理装置1では、リードキャパシティコマンドの発行対象となったドライブ名が、SCSI−I/F毎に用意された記憶領域に格納される。このような処理は、一般的なLinux(登録商標)では実施されていない特殊な処理であり、この情報処理装置1特有の処理である。
【0099】
ちなみに、一つのSCSI−I/Fに複数のSCSIドライブが接続されている場合、上述のリードキャパシティコマンドは、複数のSCSIドライブに対して順に発行されてゆく。そのため、リードキャパシティコマンドの発行対象となったドライブ名も、順に変わってゆくので、SCSI−I/F毎に用意された記憶領域には、最後にリードキャパシティコマンドの発行対象となったドライブ名が格納されることになる。
【0100】
ただし、一つのSCSI−I/Fに一つのSCSIドライブが接続されている場合であれば、上述のリードキャパシティコマンドは、一つのSCSIドライブに対してしか発行されない。そのため、リードキャパシティコマンドの発行対象となるドライブ名が変わることはなく、SCSI−I/F毎に用意された記憶領域には、そのSCSI−I/Fに接続されたドライブ名が格納されることになる。
【0101】
さて、S235を終えたら、情報処理装置1は、今回接続の全SCSI−I/Fの処理が終了したか否かを判断し(S240)、終了していなければ(S240:いいえ 次のI/Fへ)、S235へと戻ることにより、残りのSCSI−I/FについてもS235を繰り返す。そして、今回接続の全SCSI−I/Fの処理が終了したら(S240:はい)、S230へと進む。
【0102】
また、S215〜S230の繰り返し処理が実行される中で、今回切断されたSCSI−I/Fが有った場合(S230:有る)、情報処理装置1は、切断SCSI−I/FをSITBから削除し、そのI/Fに接続されているドライブをシステムから削除する(S245)。このS245により、削除されたドライブに対応するドライブ名はシステムから消滅する。
【0103】
そして、情報処理装置1は、今回切断の全SCSI−I/Fの処理が終了したか否かを判断し(S250)、終了していなければ(S250:いいえ 次のI/Fへ)、S245へと戻ることにより、残りのSCSI−I/FについてもS245を繰り返す。そして、今回切断の全SCSI−I/Fの処理が終了したら(S240:はい)、S215へと戻る。
【0104】
さて、以上説明したような処理がS115によって開始される処理となるが、ここで再び図2に戻り、S115を終えた時点からの説明を続ける。S115を終えると、情報処理装置1では、シリアルATA方式で接続されたハードディスク装置17が正常に機能していれば(S117:はい)、ハードディスク装置17がSCSIドライブと認識される(S118)。このS118の段階で、ハードディスク装置17にはドライブ名が割り当てられ、本実施形態の場合、ハードディスク装置17のドライブ名は“sda”となる。なお、ハードディスク装置17が正常に機能していない場合(S117:いいえ)、ハードディスク装置17がSCSIドライブと認識されないままとなる。
【0105】
また、情報処理装置1では、USB接続監視が開始される(S120)。本実施形態の場合、このS120では、USB接続監視プロセスが起動され、以降、このプロセスが常駐することにより、情報処理装置1の電源がOFFにされるまで、概ね100ミリ秒周期でUSBデバイスの接続/切断が監視される。
【0106】
このUSB接続監視の処理内容は、詳しくは図4に示すような処理となる。
すなわち、図3に示す「OS内USB接続監視」を開始すると、情報処理装置1は、まず、「USBデバイス接続テーブル(以下、UDTBと称する。)」の初期化を行う(S305)。UDTBは、情報処理装置1において現在接続中のUSBデバイスを登録するためのテーブルである。なお、S305では、USBデバイスは何も接続されていない状態として扱われる。
【0107】
続いて、情報処理装置1は、一定時間(例えば100ミリ秒)が経過したか否かを判断し(S315)、経過していなければ(S315:いいえ)、S315へと戻ることにより、時間経過を待つ。そして、一定時間が経過したら(S315:はい)、現在接続中のUSBデバイスを確認する(S320)。
【0108】
その後、情報処理装置1は、新しく接続されたUSBデバイスの有無を判断し(S325)、新しく接続されたUSBデバイスが無い場合は(S325:無い)、今回切断されたUSBデバイスの有無を判断する(S330)。そして、今回切断されたUSBデバイスが無い場合は(S330:無い)、S315へ戻る。これにより、S315〜S330は、概ね6秒ごとに繰り返し実行されることになる。
【0109】
そして、このようなS315〜S330の繰り返し処理が実行される中で、新しく接続されたUSBデバイスが有った場合(S325:有る)、情報処理装置1は、新規USBデバイスを上述のUDTBに登録し、デバイスドライバをシステムに登録する(S335)。このS335は、詳しくは図5に示すような処理となる。
【0110】
すなわち、情報処理装置1は、図5に示すように、まず、USBデバイスの種類を判断する(S405)。ここで、USBストレージクラスのデバイスであると判断されれば(S405:USBストレージクラス)、USBストレージデバイスへのデータ伝送用インターフェースに相当する仮想SCSI−I/F(仮想SCSIホストアダプタ)をシステムに登録し、“SCSIm”のシンボルをシステムから与えられる(S410)。なお、上記“SCSIm”中にある“m”は「0」からの通し番号で、切断後は再利用される番号である。
【0111】
また、情報処理装置1は、“/proc/scsi/usb−storage”に情報公開手段をシステム登録、“/proc/scsi/usb−storage/n”のシンボルをシステムから与えられる(S415)。なお、上記“/proc/scsi/usb−storage/n”中にある“n”は「0」からの通し番号で、こちらは切断後の再利用はされない番号である。
【0112】
一方、S405において、USBストレージクラス以外のデバイスであると判断されれば(S405:USBストレージクラス以外)、情報処理装置1は、各USBデバイス用の登録処理を行う(S420)。このS420の処理は、USBデバイスの種類によってさらに何通りかの処理にわかれるが、この処理の詳細は本発明の要部ではないので、これ以上の説明は省略する。
【0113】
以上説明したようなS405〜S420の処理(図5参照)を終えると、図4に示したS335を終えたことになり、その場合、情報処理装置1は、今回接続の全USBデバイスの処理が終了したか否かを判断する(S340)。
【0114】
ここで、今回接続の全USBデバイスの処理が終了していなければ(S340:いいえ 次のI/Fへ)、S335へと戻ることにより、残りのUSBデバイスについてもS335を繰り返す。そして、今回接続の全USBデバイスの処理が終了したら(S340:はい)、S330へと進む。
【0115】
また、S315〜S330の繰り返し処理が実行される中で、今回切断されたUSBデバイスが有った場合(S330:有る)、情報処理装置1は、切断USBデバイスをUDTBから削除し、そのI/Fに接続されているドライブをシステムから削除する(S345)。このS345は、詳しくは図6に示すような処理となる。
【0116】
すなわち、情報処理装置1は、図6に示すように、まず、USBデバイスの種類を判断する(S505)。ここで、USBストレージクラスのデバイスであると判断されれば(S505:USBストレージクラス)、“/proc/scsi/usb−storage/n”の情報公開手段をシステムから削除する(S510)。なお、既に説明した通り、この番号“n”が再利用されることはない。
【0117】
また、“SCSIm”の仮想SCSI−I/F(仮想SCSIホストアダプタ)をシステムから削除する(S515)。なお、既に説明した通り、この番号“m”は以降も必要に応じて再利用されることがある。
【0118】
一方、S505において、USBストレージクラス以外のデバイスであると判断されれば(S505:USBストレージクラス以外)、情報処理装置1は、各USBデバイス用の削除処理を行う(S520)。このS520の処理は、USBデバイスの種類によってさらに何通りかの処理にわかれるが、この処理の詳細は本発明の要部ではないので、これ以上の説明は省略する。
【0119】
以上説明したようなS505〜S520の処理(図6参照)を終えると、図4に示したS345を終えたことになり、その場合、情報処理装置1は、今回切断の全USBデバイスの処理が終了したか否かを判断する(S350)。ここで、今回切断の全USBデバイスの処理が終了していなければ(S350:いいえ 次のI/Fへ)、S345へと戻ることにより、残りのUSBデバイスについてもS345を繰り返す。そして、今回切断の全USBデバイスの処理が終了したら(S340:はい)、S315へと戻る。
【0120】
さて、以上説明したような処理が、S120によって開始される処理となるが、ここで再び図2に戻り、S120を終えた時点からの説明を続ける。S120を終えると、情報処理装置1では、電源ON時に接続されているUSBデバイスが一括で認識される(S125)。このような認識が行われるのは、上記S120により、USB接続監視の処理を開始しているからである。
【0121】
そして、認識されたUSBデバイスの中に、USBストレージデバイスが有る場合は、その中に存在するドライブがSCSIドライブと認識される(S130)。このような認識が行われるのは、上記S115により、SCSIドライブ接続監視の処理を開始しているからである。
【0122】
続いて、情報処理装置1では、カーネルの初期化を終了し、最初のスクリプトが実行される(S135)。そして、メインで使用するボリュームのマウント処理を実行する(S140)。
【0123】
このS140は、詳しくは図7に示すような処理となる。すなわち、図7に示す処理を開始すると、情報処理装置1は、まず、SCSIドライブ名“sda”からUSBポートを割り出す(S601)。このS601は、詳しくは図9に示すような処理となる。
【0124】
図9に示す処理を開始すると、情報処理装置1は、まず、“/proc/scsi/usb−storage”の下のファイルを検索する(S805)。
そして、ファイルが有るかどうかを判断する(S810)。ここで、ファイルが有る場合は(S810:はい)、見つかったファイルをリードする(S815)。ここでリード対象となるファイル“/proc/scsi/usb−storage/n”は、USBストレージデバイスおよびUSBポートに関する情報を提供する情報公開用インターフェースである。
【0125】
S815では、上記ファイルをリードすることにより、USBポートの情報やUSBストレージデバイスの情報などを取得することができる。また、こうしたUSBポートの情報やUSBストレージデバイスの情報などは、一般的なLinux(登録商標)でも取得可能な情報であるが、この情報処理装置1においては、一般的なLinux(登録商標)では取得できない情報をも取得する。具体的には、S815では、USBストレージデバイスに割り当てられたドライブ名を取得することができる。
【0126】
このドライブ名は、上記S235の処理により、SCSI−I/F毎に用意された記憶領域に格納されたドライブ名そのものである。一般的なLinux(登録商標)の場合、SCSI−I/Fを利用する際に、SCSI−I/Fにドライブ名が通知されることはないので、SCSI−I/Fに接続されたSCSIドライブに、どのようなドライブ名が割り当てられているのかを、SCSI−I/F側で知る術はない。
【0127】
しかし、この情報処理装置1では、上述の通り、リードキャパシティコマンドが発行される毎に、コマンドの発行対象となったドライブ名がSCSI−I/F側に伝達されて、そのドライブ名がSCSI−I/F側の記憶領域に残される。
【0128】
したがって、この記憶領域に残された情報を見れば、SCSI−I/Fに接続されたSCSIドライブに、どのようなドライブ名が割り当てられているのかを、SCSI−I/F側で知ることができる。
【0129】
また、SCSI−I/Fに複数のSCSIドライブが接続されている場合、上記SCSI−I/F側の記憶領域には、その内の一つのSCSIドライブに割り当てられた名前だけしか残されない。しかし、USBストレージデバイスの場合、一つのUSBストレージデバイスに対して一つの仮想SCSI−I/Fが生成される。そのため、このSCSI−I/Fに対応する記憶領域に残されるのは、必ず一つのドライブ名のみとなるので、USBストレージデバイスに割り当てられたドライブ名を問題なく特定できる。
【0130】
つまり、S815で取得した情報を見れば、一般的なLinux(登録商標)同様、その情報がどのUSBポートに対応する情報なのかを特定できる。しかも、一般的なLinux(登録商標)とは異なり、その情報がどのようなドライブ名に対応する情報なのかをも特定できるのである。
【0131】
そこで、S815を終えたら、情報処理装置1は、まず、SCSIドライブ名を判断して(S820)、SCSIドライブ名“sda”に対応する情報か否かを確認する。ここで、SCSIドライブ名“sda”に対応する情報でなければ(S820:SCSIドライブ名が違う)、S810へと戻る。ちなみに、このようにS810へと戻ることになるのは、SCSIドライブ名“sda”以外のSCSIドライブ(例えば、SCSIドライブ名“sdb”等)が認識されている場合である。
【0132】
一方、S820において、SCSIドライブ名“sda”に対応する情報であれば(S820:探していたSCSIドライブ名)、接続USBポートを取得する(S825)。すなわち、S815でリードした情報の中から接続USBポートを示す情報を抽出する。この場合、USBストレージデバイスの中に、SCSIドライブ名“sda”が割り当てられたものが存在することになり、その接続USBポートが特定されて、図9に示す処理を終了することになる。
【0133】
一方、S810で、SCSIドライブ名“sda”に対応する情報が見つかる前にリード対象となるファイルが無くなった場合は(S810:いいえ)、そのまま図9に示す処理を終了する。これは、USBストレージデバイスの中に、SCSIドライブ名“sda”が割り当てられたものが存在しない場合の処理に相当する。
【0134】
さて、以上説明したようなS805〜S825の処理を終えると、図7に示したS601の処理を終えたことになるので、その場合、情報処理装置1は、SCSIドライブ名“sda”が割り当てられたUSBストレージデバイスの割り出しに成功したか否かを判断する(S603)。
【0135】
ここで、割り出しに失敗した場合は(S603:失敗)、USBストレージデバイスの中に、SCSIドライブ名“sda”が割り当てられたものが存在しないことを意味するので、SCSIドライブ名“sda”が非USBストレージデバイスに割り当てられているものと期待できる。
【0136】
そこで、この場合は、“/dev/sda1”のファイルシステムを、所定のマウントポイント“/main”にマウントする(S605)。ここで、ドライブ名が“sda”になった場合に、ファイルシステム名が“sda1”になることは、情報処理装置1の構成上、事前に決まっている事項である。
【0137】
そして、S605を終えたら、マウント成功か否かを判断する(S610)。ここで、マウント成功であれば(S610:成功)、マウントしたボリューム内のスクリプト“/main/prog/startup.sh”を実行する(S615)。
【0138】
一方、S610において、マウント失敗であれば(S610:失敗)、このままではスクリプト“/main/prog/startup.sh”を実行できず、情報処理装置1は通常通りに起動できなくなる。また、S603において、割り出しに成功した場合は(S603:成功)、USBストレージデバイスの中に、SCSIドライブ名“sda”が割り当てられたものが存在することを意味する。したがって、本来であればSCSIドライブ名“sda”が割り当てられるはずの非USBストレージデバイスが、何らかの事情(例えば、故障等)によって正常に認識されていない可能性が高い。
【0139】
そこで、この場合は、バックアップ動作用USBポートからSCSIドライブ名を割り出す(S620)。このS620は、詳しくは図8に示すような処理となる。すなわち、図8に示す処理を開始すると、情報処理装置1は、まず、“/proc/scsi/usb−storage”の下のファイルを検索する(S705)。
【0140】
そして、ファイルが有るかどうかを判断する(S710)。ここで、ファイルが有る場合は(S710:はい)、見つかったファイルをリードする(S715)。ここでリード対象となるファイル“/proc/scsi/usb−storage/n”は、既に説明したS815でも利用した情報公開用インターフェースである。したがって、S715で取得した情報を見れば、一般的なLinux(登録商標)同様、その情報がどのUSBポートに対応する情報なのかを特定できる。しかも、一般的なLinux(登録商標)とは異なり、その情報がどのようなドライブ名に対応する情報なのかをも特定できる。
【0141】
そこで、S715を終えたら、情報処理装置1は、まず、接続ポートを判断して(S720)、内部USBポート21に対応する情報か否かを確認する。ここで、内部USBポート21に対応する情報でなければ(S720:USBポートが違う)、S710へと戻る。ちなみに、このようにS710へと戻ることになるのは、外部USBポート22,23のいずれかにもUSBストレージデバイスが接続されている場合である。
【0142】
一方、S720において、内部USBポート21に対応する情報であれば(S720:探していたUSBポート)、最後にリードキャパシティを実行したドライブ名を取得する(S725)。すなわち、S715でリードした情報の中からドライブ名を抽出する。
【0143】
このドライブ名は、“sda”,“sdb”,…といったドライブ名であるが、その末尾の文字“a”,“b”,…は、どのような文字になるのか保証がない。具体的には、内部USBポート21にUSBストレージデバイス25が接続され、さらに外部USBポート22,23にもUSBストレージデバイスが接続されている場合、先に認識されたデバイスにはドライブ名“sda”が付与される。また、その後に認識されたデバイスにはドライブ名“sdb”が付与される。しかし、どのデバイスが先に認識されるかは不定であるため、例えばドライブ名“sda”が付与されたデバイスがUSBストレージデバイス25なのかどうかは不定となる。
【0144】
この点、S710〜S720により、内部USBポート21に対応する情報を探し出し、S725により、ドライブ名を抽出すれば、内部USBポート21に接続されたUSBストレージデバイス25に割り当てられたドライブ名を確実に取得できるのである。
【0145】
なお、S710で、所期のUSBポートが見つかる前にリード対象となるファイルが無くなった場合は(S710:いいえ)、図8に示す処理を終了する。これは、内部USBポート21にUSBストレージデバイス25が接続されていない場合の処理に相当する。
【0146】
さて、以上説明したような処理を終えると、図7に示したS620の処理を終えたことになるので、その場合、情報処理装置1は、“/dev/sdx1”のファイルシステムを、所定のマウントポイント“/main”にマウントする(S625)。ここで、“sdx”は、S725で取得したドライブ名である。つまり、S725までの処理で割り出したSCSIドライブのドライブ名を利用して、SCSIドライブ上のパーティション(ファイルシステム)を指定し、そのパーティションを“/main”にマウントしているのである。
【0147】
そして、S625を終えたら、マウントに成功したか否かを判断し(S630)、成功していれば(S630:成功)、既に説明したS615へと進むことにより、マウントしたボリューム内のスクリプト“/main/prog/startup.sh”を実行する(S615)。また、マウントに失敗した場合は(S630:失敗)、図7に示す処理を終了する。
【0148】
さて、以上説明したような処理を終えると、図2に示すS140を終えたことになるので、続いて、情報処理装置1では、メインで使用するボリューム内のスタートアッププログラムが起動する(S145)。すなわち、“/main”に非USBストレージデバイスであるハードディスク装置17上の“sda1”またはUSBストレージデバイス25上の“sdx1”のいずれがマウントされるかは、状況によって分かれるものの、いずれにしても、いずれかのボリューム内のスタートアッププログラムが起動するのである。
【0149】
そして、情報処理装置1では、システムが専用装置として動作し(S150)、以降は、利用者からのシャットダウン指示が有るまで(S155:いいえ)、専用装置としての動作を継続する。一方、利用者からのシャットダウン指示があった場合は(S155:はい)、シャットダウン処理を実行し(S160)、電源OFFに至る。
【0150】
[効果]
以上説明した情報処理装置1によれば、あらかじめ取り決められたドライブ名“sda”となったデバイスが、非USBストレージデバイスであるハードディスク装置17であった場合、S601〜S603により、ドライブ名“sda”となったデバイスがUSBストレージデバイスではないことを確認した上で、S605を実行する手段(第1マウント手段)が、“/dev/sda1”のファイルシステム(第1ファイルシステム)を“/main”(所定のマウントポイント)にマウントし、マウントできたら、S615,S145を実行する手段(処理実行手段)は、マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく処理を実行する。
【0151】
一方、あらかじめ取り決められたドライブ名“sda”がUSBストレージデバイスに付与されてしまった場合は、単に“/dev/sda1”のファイルシステム(第1ファイルシステム)を“/main”(所定のマウントポイント)にマウントするようなことはしない。
【0152】
したがって、あらかじめ取り決められたドライブ名が、想定外のUSBストレージデバイスに付与されたとしても、そのような想定外のUSBストレージデバイスから誤ってプログラムを読み込んでしまうといったトラブルを招くことがない。
【0153】
また、あらかじめ取り決められたドライブ名“sda”がUSBストレージデバイスに付与されてしまった場合、あるいは、“/dev/sda1”のファイルシステムのマウントに失敗した場合は、S625を実行する手段(第2マウント手段)が、“/dev/sdx1”のファイルシステム(第2ファイルシステム)を“/main”(所定のマウントポイント)にマウントし、マウントできたら、S615,S145を実行する手段(処理実行手段)は、マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく処理を実行する。
【0154】
したがって、非USBストレージデバイスであるハードディスク装置17のドライブ名が“sda”となった場合は、“/dev/sda1”のファイルシステム(第1ファイルシステム)から各種処理を起動する一方、何らかの原因(例えば故障等)により、USBストレージデバイスのドライブ名が“sda”となった場合や“/dev/sda1”のマウントに失敗した場合は、“/dev/sdx1”のファイルシステム(第2ファイルシステム)から緊急時用の代替処理を起動することができる。
【0155】
また、複数あるUSBポートに2以上のUSBストレージデバイスが接続されていると、S235を実行する手段(ドライブ名割り当て手段)が、それら複数のUSBストレージデバイスに対してどのようなドライブ名を割り当てるのかは不定となる。そのため、内部USBポート21(管理者用USBポート)に接続されたUSBストレージデバイス25に対して割り当てられたドライブ名も不定となる。
【0156】
しかし、S620を実行する手段(ドライブ名取得手段)は、内部USBポート21に接続されたUSBストレージデバイス25に対して割り当てられたドライブ名を取得する。そのため、S625を実行する手段(第2マウント手段)は、S620で取得されたドライブ名を利用して、USBストレージデバイス25上にあるファイルシステムを適切に特定することができる。
【0157】
したがって、S625では、適切なファイルシステムを“/main”にマウントすることができ、外部USBポート22,23のいずれかに接続されたUSBストレージデバイス上のファイルシステムを誤ってマウントしてしまうことはない。
【0158】
よって、適切なファイルシステムがマウントされた後、S615,S145では、マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく適切な処理を実行することができる。
【0159】
さらに、上記情報処理装置1においては、S235で、SCSIインターフェースを介してUSBストレージデバイスにアクセスする際に、USBストレージデバイスに割り当てられたドライブ名が、SCSIインターフェースの備える記憶領域に保存される。
【0160】
そのため、S625では、“/proc/scsi/usb−storage/n”の情報公開手段(情報公開用インターフェース)を介して情報を取得すると、SCSIインターフェースおよびUSBストレージデバイスに関する情報に加え、ドライブ名の情報をも取得することができる。したがって、一般的なLinux(登録商標)とは異なり、きわめて容易にUSBポートに対応するドライブ名の情報を得ることができる。
【0161】
しかも、このようなドライブ名の情報をSCSIインターフェースの備える記憶領域に保存する処理は、リードキャパシティコマンドに対応する処理の中で実行するので、リードキャパシティコマンドを発行する上位プログラムには手を加えなくても、ドライブ名を記憶領域に残す仕組みを導入できる。したがって、ドライブ名をSCSIインターフェースに伝達するための専用コマンドを新設しなくてもよく、大がかりなプログラムの改修は不要となる。
【0162】
加えて、上記情報処理装置1においては、S710〜S720を繰り返すので、複数のUSBストレージデバイスが存在していても、それらを順に処理対象として情報を読み出しながら、管理者用USBポートに対応するドライブ名を選び出すことができる。
【0163】
また、内部USBポート21は、パネル35を開放しないとUSBストレージデバイス25を抜き挿しできない場所にあるので、管理者以外の利用者が誤って内部USBポート21にUSBデバイスを装着してしまうのを未然に防止することができる。
【0164】
つまり、内部USBポート21からはプログラムを起動できるものの、管理者以外が容易に利用できる状態にはなく、外部USBポート22,23は管理者以外でも容易に利用できるものの、ここからプログラムを起動することはできない仕組みになっている。
【0165】
したがって、緊急時にUSBストレージデバイス25からの起動を実施できる仕組みを実装しているにもかかわらず、外部USBポート22,23からの起動を防止でき、システムが正常に起動しなくなったり、予期しないプログラムが実行されてしまったりするのを、未然に防止することができる。
【0166】
また、上記情報処理装置1においては、S601を実行する手段(デバイス種別判定手段)が、情報公開用インターフェースを介して情報を取得すると、データ伝送用インターフェースおよびUSBストレージデバイスに関する情報に加え、ドライブ名の情報をも取得することができ、USBストレージデバイスとドライブ名との対応関係がわかる。
【0167】
したがって、一般的なLinux(登録商標)とは異なり、取得した情報中に判定対象についての情報が存在しない場合に、判定対象が非USBストレージデバイスであると判定することが可能となる。
【0168】
[変形例等]
以上、本発明の実施形態について説明したが、本発明は上記の具体的な一実施形態に限定されず、この他にも種々の形態で実施することができる。
【0169】
例えば、上記実施形態では、カラオケコマンダーとしての機能を備えた情報処理装置1を例示したが、自動起動される機能をどのような機能とするかは任意である。すなわち、カラオケコマンダー以外にも、各種特定用途での専用情報処理装置において、本発明の構成を採用することができる。
【0170】
また、上記実施形態では、非USBストレージデバイスの具体例として、シリアルATA方式のハードディスク装置を例示したが、本発明でいう「非USBストレージデバイス」としては、「情報処理装置からSCSIデバイスとして認識される接続方式を採用しており、且つ、USBストレージデバイスではないストレージデバイス」を任意に採用できる。
【0171】
さらに、上記実施形態では、通常は非USBストレージデバイスからの起動を行い、緊急時にUSBストレージデバイスからの起動を行う例を示したが、誤って予期しないUSBストレージデバイスからの起動を行うのを防止したいだけであれば、緊急時にUSBストレージデバイスからの起動を行う構成を採用するか否かは任意である。
【0172】
より具体的には、例えば、非USBストレージデバイスからの起動ができないと判断した場合に、起動を中断することで、誤って予期しないUSBストレージデバイスからの起動を行ってしまうのを防止してもよい。
【0173】
また、上記実施形態の場合は、管理者用USBポートおよび一般用USBポートの双方が設けてあったので、管理者用USBポートか否かを判定した上で、USBストレージデバイスからの起動を行っていたが、例えば、筐体内に隠された管理者用USBポートしか存在しない場合は、管理者用USBポートか否かの判定を省略してもよい。
【図面の簡単な説明】
【0174】
【図1】情報処理装置の内部構造を示すブロック図。
【図2】情報処理装置の電源ONに伴って実行される処理のフローチャート。
【図3】OS内SCSIドライブ接続監視のフローチャート。
【図4】OS内USBデバイス接続監視のフローチャート。
【図5】S335の詳細を示すフローチャート。
【図6】S345の詳細を示すフローチャート。
【図7】S140の詳細を示すフローチャート。
【図8】S620の詳細を示すフローチャート。
【図9】S601の詳細を示すフローチャート。
【符号の説明】
【0175】
1・・・情報処理装置、11・・・CPU、13・・・ROM、15・・・RAM、17・・・ハードディスク装置、20・・・USBインターフェース、21・・・内部USBポート、22,23・・・外部USBポート、25・・・USBストレージデバイス、31・・・筐体、33・・・開口部、35・・・パネル、37・・・固定具。

【特許請求の範囲】
【請求項1】
USB(Universal Serial Bus)規格とは異なる規格のインターフェースを介して接続された非USBストレージデバイスと、USBストレージデバイスを接続可能なUSBポートとを備え、前記非USBストレージデバイスおよび前記USBポートに接続されたUSBストレージデバイスを、SCSI(Small Computer System Interface)デバイスと認識する情報処理装置であって、
前記非USBストレージデバイスないし前記USBポートに接続されたUSBストレージデバイスを検出すると、検出したデバイスとの間でSCSI規格に準拠した方式でデータ伝送を行うための論理的なデータ伝送用インターフェースを生成するデータ伝送用インターフェース生成手段と、
前記データ伝送用インターフェース生成手段によって生成された前記データ伝送用インターフェースを検出する毎に、前記データ伝送用インターフェースを介してアクセス可能なデバイスに対して、ユニークなドライブ名を割り当てるドライブ名割り当て手段と、
前記ドライブ名割り当て手段によって割り当てられたドライブ名が、あらかじめ取り決められたドライブ名となったデバイスを判定対象として、前記判定対象が前記非USBストレージデバイスか否かを判定するデバイス種別判定手段と、
前記デバイス種別判定手段によって前記判定対象が前記非USBストレージデバイスであると判定された場合に、前記非USBストレージデバイス上にある第1ファイルシステムを所定のマウントポイントにマウントする第1マウント手段と、
前記第1マウント手段が前記第1ファイルシステムのマウントに成功したか否かを判定するマウント結果判定手段と、
前記マウント結果判定手段によって前記第1ファイルシステムのマウントに成功したと判定された場合に、前記マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく処理を実行する処理実行手段と
を備えたことを特徴とする情報処理装置。
【請求項2】
前記デバイス種別判定手段によって前記対象デバイスが前記非USBストレージデバイスではないと判定された場合、または、前記マウント結果判定手段によって前記第1ファイルシステムのマウントに失敗したと判定された場合に、前記USBポートに接続された前記USBストレージデバイス上にある第2ファイルシステムを、前記所定のマウントポイントにマウントする第2マウント手段
を備え、
前記処理実行手段は、前記第2マウント手段によって前記第2ファイルシステムが前記所定のマウントポイントにマウントされたら、前記マウントポイント下にあるファイル群からプログラムを読み込んで、当該プログラムに基づく処理を実行する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記USBポートが複数設けられており、前記複数のUSBポートの内、少なくとも1つのUSBポートは管理者だけが利用可能な管理者用USBポート、残りのUSBポートは管理者以外でも利用可能な一般用USBポートとされ、
しかも、
前記管理者用USBポートに接続された前記USBストレージデバイスに対して前記ドライブ名割り当て手段が割り当てた前記ドライブ名を取得するドライブ名取得手段
を備え、
前記第2マウント手段は、前記ドライブ名取得手段によって取得された前記ドライブ名を利用して、前記管理者用USBポートに接続された前記USBストレージデバイス上にある前記第2ファイルシステムを特定するとともに、当該特定した前記第2ファイルシステムを、前記所定のマウントポイントにマウントする
ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記USBポートに接続されたUSBストレージデバイスを検出すると、前記データ伝送用インターフェースおよび前記USBストレージデバイスに関する情報にアクセスするための情報公開用インターフェースを生成する情報公開用インターフェース生成手段
を備え、
前記ドライブ名割り当て手段は、前記データ伝送用インターフェースを介して前記USBストレージデバイスにアクセスする際には、アクセス対象となる前記USBストレージデバイスに対して割り当てた前記ドライブ名を、前記データ伝送用インターフェースに伝達することにより、前記データ伝送用インターフェースが備える記憶領域に前記ドライブ名を保存し、
前記ドライブ名取得手段は、前記情報公開用インターフェースを介して前記データ伝送用インターフェースが備える記憶領域に格納された情報を読み出し、その読み出した情報中から前記管理者用USBポートと前記ドライブ名との対応関係を示す情報を取得する
ことを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記ドライブ名割り当て手段は、前記USBストレージデバイスに対して前記ドライブ名を割り当てた後、前記USBストレージデバイスの容量に関する情報を取得するため、SCSI規格で規定されたSCSIコマンドの1種であるリードキャパシティコマンドを発行しており、当該リードキャパシティコマンドに対応する処理の中で、前記ドライブ名が前記データ伝送用インターフェースに伝達される
ことを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記ドライブ名取得手段は、前記情報公開用インターフェースを介して情報を取得可能なすべての前記USBストレージデバイスについて、順次情報の読み出しを繰り返すとともに、読み出した情報中に含まれるUSBポートに関する情報があらかじめ決められた前記管理者用USBポートに該当する情報か否かを判断し、前記管理者用USBポートに該当する情報であった場合に、読み出した情報中に含まれる前記ドライブ名を取得する
ことを特徴とする請求項4または請求項5に記載の情報処理装置。
【請求項7】
前記管理者用USBポートは、情報処理装置の筐体内部に収容されていて、前記筐体が備えるパネルを開放したときにUSBデバイスを抜き挿し可能となるものであり、
前記一般用USBポートは、前記筐体の外部に露出していて、前記パネルを開放しなくてもUSBデバイスを抜き挿し可能となっている
ことを特徴とする請求項3〜請求項6のいずれかに記載の情報処理装置。
【請求項8】
前記USBポートに接続されたUSBストレージデバイスを検出すると、前記データ伝送用インターフェースおよび前記USBストレージデバイスに関する情報にアクセスするための情報公開用インターフェースを生成する情報公開用インターフェース生成手段
を備え、
前記ドライブ名割り当て手段は、前記データ伝送用インターフェースを介して前記USBストレージデバイスにアクセスする際には、アクセス対象となる前記USBストレージデバイスに対して割り当てた前記ドライブ名を、前記データ伝送用インターフェースに伝達することにより、前記データ伝送用インターフェースが備える記憶領域に前記ドライブ名を保存し、
前記デバイス種別判定手段は、前記情報公開用インターフェースを介して前記データ伝送用インターフェースが備える記憶領域に格納された情報を読み出し、その読み出した情報中から前記USBポートと前記ドライブ名との対応関係を示す情報を取得し、取得した情報中に前記判定対象についての情報が存在しない場合に、前記判定対象が前記非USBストレージデバイスであると判定する
ことを特徴とする請求項1〜請求項7のいずれかに記載の情報処理装置。
【請求項9】
前記ドライブ名割り当て手段は、前記USBストレージデバイスに対して前記ドライブ名を割り当てた後、前記USBストレージデバイスの容量に関する情報を取得するため、SCSI規格で規定されたSCSIコマンドの1種であるリードキャパシティコマンドを発行しており、当該リードキャパシティコマンドに対応する処理の中で、前記ドライブ名が前記データ伝送用インターフェースに伝達される
ことを特徴とする請求項8に記載の情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate