IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アブソリュート ソフトウェア コーポレイションの特許一覧

特許7454011複数のバイナリイメージのファームウェア公開方法および電子デバイス
<>
  • 特許-複数のバイナリイメージのファームウェア公開方法および電子デバイス 図1
  • 特許-複数のバイナリイメージのファームウェア公開方法および電子デバイス 図2
  • 特許-複数のバイナリイメージのファームウェア公開方法および電子デバイス 図3
  • 特許-複数のバイナリイメージのファームウェア公開方法および電子デバイス 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-12
(45)【発行日】2024-03-21
(54)【発明の名称】複数のバイナリイメージのファームウェア公開方法および電子デバイス
(51)【国際特許分類】
   G06F 8/61 20180101AFI20240313BHJP
   G06F 9/4401 20180101ALI20240313BHJP
   G06F 9/445 20180101ALI20240313BHJP
【FI】
G06F8/61
G06F9/4401
G06F9/445
【請求項の数】 5
(21)【出願番号】P 2022082910
(22)【出願日】2022-05-20
(62)【分割の表示】P 2020531623の分割
【原出願日】2018-12-11
(65)【公開番号】P2022110133
(43)【公開日】2022-07-28
【審査請求日】2022-05-20
(31)【優先権主張番号】62/598,095
(32)【優先日】2017-12-13
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/598,319
(32)【優先日】2017-12-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】511015984
【氏名又は名称】アブソリュート ソフトウェア コーポレイション
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(74)【代理人】
【識別番号】100078880
【弁理士】
【氏名又は名称】松岡 修平
(72)【発明者】
【氏名】ホルジェンコ, ユージーン
(72)【発明者】
【氏名】ブッシュ, ジェフリー マイケル
(72)【発明者】
【氏名】ガードナー, フィリップ ビー
【審査官】北川 純次
(56)【参考文献】
【文献】特開2005-182790(JP,A)
【文献】特開2000-276359(JP,A)
【文献】米国特許出願公開第2010/0122077(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/61
G06F 9/4401
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
電子デバイスのファームウェアから、該電子デバイスのオペレーティングシステムに複数のバイナリイメージを公開する方法であって、
前記電子デバイスの起動中に実行される、
前記ファームウェアに記録されている第1バイナリイメージを、前記電子デバイスの構成テーブルにインストールするステップと、
前記ファームウェアに記録されている第2バイナリイメージを、前記構成テーブルにインストールするステップと、
前記第1バイナリイメージのコピーを、前記オペレーティングシステムのファイルシステムに保存するステップと、
前記オペレーティングシステムのロードが開始した後に実行される、
前記オペレーティングシステムのブート処理の一部として前記第2バイナリイメージのコピーが実行されるように、前記第2バイナリイメージのコピーを前記ファイルシステムに保存するステップと、
を有する方法。
【請求項2】
前記第1バイナリイメージのコピーは、実行されると、前記オペレーティングシステムがロードされた後に前記第2バイナリイメージのコピーが自動的に実行されるよう、前記オペレーティングシステム内のレジストリを変更する、
請求項1に記載の方法。
【請求項3】
複数のバイナリイメージを公開する電子デバイスであって、
プロセッサと、
オペレーティングシステムと、
コンピュータで読み取り可能な指示を記憶するファームウェアと、
を含み、
前記コンピュータで読み取り可能な指示は、前記プロセッサによって実行されると、
前記電子デバイスの起動中に、該電子デバイスに、
前記ファームウェアに記憶された第1バイナリイメージの、前記電子デバイスの構成テーブルへのインストールと、
前記ファームウェアに記憶された第2バイナリイメージの、前記構成テーブルへのインストールと、
前記第1バイナリイメージのコピーの、前記オペレーティングシステムのファイルシステムへの保存と、
を実行させ、
前記オペレーティングシステムのロードが開始した後に、前記オペレーティングシステムのブート処理の一部として前記第2バイナリイメージのコピーが実行されるように、前記第2バイナリイメージのコピーを前記ファイルシステムに保存するステップを実行させる、
電子デバイス。
【請求項4】
前記第1バイナリイメージのコピーは、実行されると、前記オペレーティングシステムがロードされた後に前記第2バイナリイメージのコピーが自動的に実行されるように、前記オペレーティングシステム内のレジストリを変更する、
請求項に記載の電子デバイス。
【請求項5】
前記第バイナリイメージが、サービス、アプリケーション、または、ドライバである、
請求項に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、ファームウェアからバイナリイメージを公開する分野に関連する。特に、ファームウェアからオペレーティングシステム環境への複数のバイナリイメージの公開に関連する。
【背景技術】
【0002】
現在のWindows(登録商標)Platform Binary Table(WPBT)の実装の形態では、実行のためにファームウェアからWindows(登録商標)に公開できるバイナリイメージは1つだけである。ファームウェアは、ブート中にシステム情報のテーブルを構築する。このテーブルは、オペレーティングシステムが、例えば、どのハードウェアがインストールされているかを判断するために使用される。テーブルの1つには、ファームウェアに組み込まれている実行ファイルに関する情報が含まれている。オペレーティングシステムは、ブート中にこのテーブルを探し、存在する場合は実行ファイルをファイルシステムにコピーして実行する。
【発明の概要】
【0003】
本発明は、一つの公開可能な実行ファイルに関する情報を保持するように構成されたバイナリテーブルが、オペレーティングシステムのブート中に、複数の公開されるバイナリを生成することを可能にする。特に、本明細書は、WPBTの拡張を開示し、それによってWindows(登録商標)および他のオペレーティングシステムにより実行される複数のバイナリイメージを、ファームウェアが公開するためのサポートを追加する。この拡張を使用することにより、OEM(Original Equipment Manufacturer)は独自のバイナリイメージを、Absolute(登録商標)Persistence(登録商標)Agentまたは任意の他のソフトウェアエージェントのイメージとともに含むことができる。エンドカスタマは、拡張内にリストされているエージェントまたはバイナリイメージの何れか又は全てを利用する、或いは、何れも利用しないクライアントソフトウェアを購入するオプションを有している。
【図面の簡単な説明】
【0004】
図1図1は、本発明の一実施形態による、複数のバイナリを公開するための処理の主なステップの概要である。
図2図2は、本発明の一実施形態による、複数のバイナリイメージを公開するための実行およびコードのフローを示すシステムの概略ブロック図である。
図3図3は、本発明の一実施形態による、XPBT及び他のACPIテーブルのデータ構造及びそれらの相互関係を示す概略図である。
図4図4は、本発明の一実施形態による、複数のバイナリを公開するための処理のステップのフローチャートである。
【発明を実施するための形態】
【0005】
A.用語
【0006】
ABT:Absolute Software(アブソリュートソフトウェア)
【0007】
ACPI:Advanced Configuration and Power Interfaceは、デスクトップおよびモバイルコンピュータの電力消費を効率的に制御するための業界仕様である。ACPIは、コンピュータの基本入出力システム(Basic Input/Output System)、オペレーティングシステム、および周辺装置が、電力使用量に関して互いにどのように通信するかを指定する。ACPIは、ACPI準拠のオペレーティングシステムとシステムファームウェアとの間のインタフェースを提供するテーブルを定義する。これらのテーブルは、プラットフォームに依存しない方法でシステムハードウェアの記述を可能にし、固定フォーマットのデータ構造またはAML(ACPIマシン言語)のいずれかとして表される。
【0008】
API:Application Programming Interface(アプリケーション・プログラミング・インターフェース)。
【0009】
BIOS:Basic Input/Output Systemは、電子デバイスのブートプロセス中のハードウェアの初期化、およびオペレーティングシステムとプログラムへのランタイムサービスの提供に使用されるファームウェアである。
【0010】
DXE:Driver Execution Environment(ドライバ実行環境)
【0011】
FAT:File Allocation Table(ファイル割り当てテーブル)
【0012】
NTFS:New Technology File System
【0013】
OEM:Original Equipment Manufacturer
【0014】
OS:Operating System(オペレーティングシステム)
【0015】
Platform Extension Manager:WBPTによって指定されるWindows(登録商標)ネイティブユーザーモードアプリケーション(例えば、PlatExtMgr.exe、wpbbin.exe)。このネイティブユーザモードアプリケーションは、PlatExtMgr.exeとしてSDKに組み込まれる。これはWPBTによって公開されるため、名前のないメモリ内のバイナリバッファになる。Windows(登録商標)がWPBTを検出し、次いで、このバイナリバッファを検出すると、Windows(登録商標)はこのバッファを、MicrosoftのWPBT仕様に従ってwpbbin.exeファイルとして保存する。これが実行されると、このアプリケーションはXPBTテーブルを検出し、それらのテーブルによって参照されるバイナリをインストールする。
【0016】
RSDT:Root System Description Table(ルートシステム記述テーブル)
【0017】
SDK:Software Development Kit(ソフトウェア開発キット)
【0018】
SHA:Secure Hash Algorithm(セキュアハッシュアルゴリズム)
【0019】
UEFI:Unified Extensible Firmware Interfaceは、オペレーティングシステムとプラットフォームファームウェアとの間のソフトウェアインタフェースを定義する仕様である。UEFIは、不揮発性メモリにファームウェアとして保存される。
【0020】
WPBT:Windows Platform Binary Table(Windowsプラットフォームバイナリテーブル)
【0021】
XPBT:Extended Platform Binary Table(拡張プラットフォームバイナリテーブル)。XPBTは複数のノードに対応できる。
【0022】
XSDT:Extended System Description Table(拡張システム記述テーブル)
【0023】
B.実施例
図1を参照すると、本プロセスにおける主なステップがフローチャートの形で示されている。ステップ2では、コンピュータのブート中に、複数のバイナリイメージがACPIテーブルにインストールされる。ここで、バイナリイメージの1つは、マネージャバイナリである。ステップ4では、まだブート中であり、マネージャバイナリがオペレーティングシステムのファイルシステムに保存される。ある時点の、OSのロード処理の早い段階におけるある時点で、OSはマネージャバイナリを実行する。これにより、ステップ6で他のバイナリイメージがOSファイルシステムに保存される。以下、より詳細なフローチャートについて説明する。
【0024】
図2には、UEFI BIOSのようなファームウェア12からコンピューティングデバイスのオペレーティングシステムに複数のバイナリを公開するためのシステム10が示されている。
【0025】
第1再生モジュール(例えば、ABT Persistence(登録商標))20が、ファームウェア12に格納されている。この再生モジュール20は、DXEドライバであるAbtDxe22を含み、これは、コンピューティングデバイスから遠隔にあるサーバにコンタクトすることができるセキュリティモジュールである。また、再生モジュール20には、インストーラ24(例えば、AbtAgentInstaller)が含まれており、インストーラ24には、プラットフォーム拡張マネージャバイナリイメージ26(例えば、PlatExtMgr.exe)およびエージェント28(例えば、AbtAgent)が含まれている。ドライバ22は、デバイスのブート時に実行され、インストーラ24の動作を開始させる。
【0026】
第2再生モジュールである、OEM再生モジュール40もファームウェア12に格納されている。OEM再生モジュール40は、第2インストーラ41、および、バイナリであるOem.exe42を含む。また、OEM再生モジュール40は、デバイスの起動時に自動的に動作する。
【0027】
マネージャバイナリイメージ26は、インストーラ24(例えば、AbtAgentInstaller)によってWPBT50にインストールされ、マネージャバイナリイメージ26のコピー26Aとして示される。
【0028】
XPBT(Extended Platform Binary Table)53は、WPBT50の作成とともに、OSエージェント28A用のXPBTノード54と共にインストーラ24によって作成される。その他のすべてのXPBTノードは、UEFI BIOS12で実行される、個別のOEMのまたはサードパーティのインストーラを使用して作成される。例えば、ABT再生モジュール20には1つのインストーラ24があり、OEM再生モジュール40には別のインストーラ41がある。ABT再生モジュール20は、OEM再生モジュール40がOem.exeエージェントをインストールできるようにするために必要である。したがって、異なるエンティティがXPBT53を更新および/または拡張して、それぞれの部分を挿入することが可能である。
【0029】
Windows(登録商標)の起動中、WPBTによって指定されるマネージャバイナリイメージ26Aは、プラットフォーム拡張マネージャバイナリイメージ26の追加コピー26B(wpbbin.exe)として保存され、通常どおりWindows(登録商標)によって実行される。この方法では、追加のバイナリイメージをWindows(登録商標)で実行することはできない。
【0030】
OSエージェント28AおよびOEMエージェントOem.exe42Aを含む、それぞれの有効なXPBTペイロードバイナリは、OSファイルシステム60に保存される。プラットフォーム拡張マネージャ26Bは、ペイロードバイナリ28A、42Aが特定のOS用であることを確認し、それを処理する前にXPBT53の完全性を検証する。XPBT53のXPBT SHA256ハッシュ57は、UEFI BIOS12内のインストーラ24によって計算され、読み取り専用UEFI変数59に保存される。プラットフォーム拡張マネージャ26BがXPBTの完全性を検証するためにUEFI変数59を読み出す。ハッシュ57の計算は、様々なエンティティがそれらの特定のXPBTノード54、56をXPBT53に挿入した後、AbtDxeドライバ22によって開始される。これにより、XPBTの完全性が、プラットフォーム拡張マネージャ26Bによって後から検証可能となる。
【0031】
APIは、さまざまなエンティティがXPBTノード54、56をXPBT53に挿入できるようにするAbtDxeドライバコードで提供される。したがって、OEMインストーラ41は、インストーラ24が起動した後に実行を開始するか、あるいは、もし事前に起動していたなら、インストーラ24によるXPBT53の作成完了を待たなければならない。エージェント28Aはエージェント28Bとして保存され、Oem.exe42AはOem.exe42Bとして保存される。XPBTインストールデータは、OSレジストリ62を更新するために使用され、その結果、XPBTバイナリ、すなわちエージェント28BおよびOem.exe42Bが実行される。
【0032】
図3は、WPBT、XPBTおよび他のACPIテーブルのデータ構造を示す。ACPIルートシステム記述ポインタ70は、標準ACPIヘッダ76およびポインタ78を含む、RSDT(ルートシステム記述テーブル)またはXSDT(拡張システム記述テーブル)72を指す。ポインタ78は、WBPT50と1つ以上の異なる名前のXBPT110、120とを含むACPIテーブルを指す。WBPT50は、プラットフォーム拡張マネージャバイナリイメージ26Bを実行するための、標準ACPIヘッダ84、ハンドオフサイズ86、ハンドオフアドレス88、コマンド長90、および、コマンドライン引数92を含む。ハンドオフアドレスは、プラットフォーム拡張マネージャバイナリイメージ26Aを指す。
【0033】
XPBT110、120の2つの例が示されている。一般に、複数のノードを有するため、XPBT120のみが使用されるが、実施形態に応じて、各タイプのテーブルが無くてもよく、あるいは、各タイプのテーブルが1またはそれ以上あってもよい。1つのバイナリを有するXPBT110は、標準ACPIヘッダ106、インストールデータ116、およびエージェント118のバイナリイメージを含む。インストールデータ116は、プラットフォーム拡張マネージャ26Bによって、対応するXPBTペイロードバイナリ118を起動するために使用される。複数のバイナリ用のXPBT120は、インストールデータ122、エージェント124のバイナリイメージ、さらにインストールデータ126、および別のエージェント128のさらなるバイナリイメージを含む。
【0034】
XPBTインストールデータ116は、バイナリ118が保存される位置と、バイナリ118が通常のOSブートプロセスの一部として実行されるようにレジストリに対して加えられる必要な変更とを含む。OSがバイナリ118を実行する前の署名の検証は、OSに依存している。ペイロードバッファ(例えば、バイナリイメージ118)は、XPBT110に直接続くように作成され、テーブルサイズは、ペイロードバッファを含むように調整される。このようにして、APIは、全体、すなわち、テーブル110およびそれに対応するバイナリイメージ118を返す。
【0035】
同様に、インストールデータ122は、バイナリ124が保存される位置と、バイナリ124が通常のOSブートプロセスの一部として実行されるようにレジストリに対して加えられる必要な変更とを含む。インストールデータ126とバイナリ128についても同様である。第1ペイロードバッファ(例えば、バイナリイメージ124)は、XPBT120に直接続くように作成され、第2インストールデータ126およびペイロードバッファ(例えば、バイナリイメージ128)は、第1ペイロードバッファ124に直接続くように作成される。テーブルサイズは、ペイロードバッファを含むように調整される。これにより、APIはテーブル120とそれに対応するバイナリイメージ124、128を返す。
【0036】
表1に、XPBT53の例を示す。ACPIテーブル52内のXPBTエントリ53は、WPBTのものと同様である。複数のXPBTノードエントリ54、56がACPIテーブル52に存在し得る。表1~5は、例示的なXPBTエントリの詳細な定義を提供する。表2に、XPBTに存在するイメージフラグの例を示す。表3に、CPU Typeとラベル付けされたイメージフラグの値の例を示す。表4に、OS Typeとラベル付けされたイメージフラグの値の例を示す。表5に、イメージタイプとラベル付けされたイメージフラグの値の例を示す。
【表1】
【表2】
【表3】
【表4】
【表5】
【0037】
表1~5は、複数のバイナリイメージがどのようにサポートされかを示す実装の一例にすぎず、他の実装の形態も可能である。
【0038】
図4を参照すると、電子デバイスにおいて複数のバイナリを公開するために行われるプロセスが示されている。このプロセスは、電子デバイス内のコンピュータで読み取り可能なメモリに記憶されたコンピュータで読み取り可能な命令を実行することにより、電子デバイス内の1つまたは複数のプロセッサによって実行される。まず、コンピュータまたは他の電子デバイスが起動され、ステップ140で、電子デバイスがブートを開始する。ステップ145において、この起動プロセスの間に、電子デバイスのファームウェアは、複数のバイナリイメージのセットの中の第1バイナリイメージをACPIテーブルにインストールする。第1バイナリイメージは、この場合、マネージャイメージ26であり、AbtDxeドライバ22によって起動されるインストーラ24により、WPBT ACPIテーブルにインストールされる。起動プロセス中のステップ150において、ファームウェアは、第2バイナリイメージ28をACPIテーブルにインストールする。まだ起動プロセス中のステップ155において、ファームウェアは、第3バイナリイメージ42をACPIテーブルにインストールする。
【0039】
ステップ160で、ファームウェアはバイナリイメージのハッシュ57をUEFI読み取り専用変数として保存する。ステップ162で、OSがロードを開始する。ステップ165では、OSのロード中に、ACPIテーブルにインストールされているマネージャイメージ26Aのコピーが、オペレーティングシステムのファイルシステムに保存される。OSブート処理の初期の段階のある時点で、ステップ170において、OSファイルシステムに保存されたマネージャ26Bが実行される。マネージャ26Bは、実行されると、ステップ175で第2バイナリ28BをOSファイルシステムに保存し、ステップ180で第3バイナリ42BをOSファイルシステムに保存する。ステップ185で、OSはドライバ、サービスおよびアプリケーションのロードを開始し、最終的にはデスクトップが表示可能な状態になる。
【0040】
その結果、バイナリ28Bと42Bの両方が実行され、ファームウェアからOSに公開される。
【0041】
以上説明したように、XPBTは既存のすべてのバージョンのWindows(登録商標)8/10で動作し、XPBT専用モデルへの移行を支援する。
【0042】
C.変形例
本発明は、ABTおよびOEM再生モジュールに関連して説明されているが、同様に機能するのであれば、別の供給元からの他のモジュールが使用されてもよい。
【0043】
XPBT署名とXPBT ACPIテーブルレイアウトは実装に依存する。XPBT署名は、プラットフォーム拡張マネージャが何を検索するかを知っている限り、どのようなものであってもよい。XPBTレイアウトは、プラットフォーム拡張マネージャが解析方法を認識している限り、どのようなものであってもよい。したがって、他の実施形態におけるACPI署名は、表1に関連して定義されたテーブルレイアウトを有するXPBTとは異なる。
【0044】
全体的な目標は、ACPIテーブルから複数のバイナリイメージをロードすることをサポートすることである。これは、XPBT内に複数のバイナリイメージを持つこと、または、各々が1つのイメージを持つ複数のXPBTテーブルを持つこと、あるいは、それら2つの組み合わせ(すなわち、各々が1つまたは複数のバイナリイメージを有する複数のXPBTテーブルを持つこと)、によって達成される。
【0045】
他の実施形態では、ACPIテーブルの代わりに他の構成テーブルを使用することができる。
【0046】
バイナリイメージペイロードは、サービス、アプリケーション、またはドライバでもよい。
【0047】
また、本発明は、他のオペレーティングシステムに関連して実施することができる。すなわち、XPBTの仕様を、OSに依存させず、Windows(登録商標)に加えて他の種類のOSをサポートさせることが可能である。

図1
図2
図3
図4