(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-21
(45)【発行日】2023-11-30
(54)【発明の名称】ネットワークの最適なブートパスの方法及びシステム
(51)【国際特許分類】
G06F 9/4401 20180101AFI20231122BHJP
G06F 11/22 20060101ALI20231122BHJP
【FI】
G06F9/4401
G06F11/22 675E
(21)【出願番号】P 2022164030
(22)【出願日】2022-10-12
【審査請求日】2022-10-12
(32)【優先日】2021-12-23
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-02-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508018934
【氏名又は名称】廣達電腦股▲ふん▼有限公司
【氏名又は名称原語表記】Quanta Computer Inc.
【住所又は居所原語表記】No.188,Wenhua 2nd Rd.,Guishan Dist.,Taoyuan City 333,Taiwan
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】錢 威宇
【審査官】大塚 俊範
(56)【参考文献】
【文献】特開2014-021577(JP,A)
【文献】特開2013-206046(JP,A)
【文献】特開2021-077263(JP,A)
【文献】特開2021-157489(JP,A)
【文献】米国特許出願公開第2021/0286692(US,A1)
【文献】米国特許第10977367(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/4401
G06F 11/22
(57)【特許請求の範囲】
【請求項1】
起動とオペレーティングシステムへの移行との間に実行される複数のフェーズを有するパワーオンセルフテスト(POST)ルーチンを含む基本入出力システム(BIOS)と、
前記BIOSと通信するコントローラと、
前記コントローラ及び前記BIOSに結合されたメモリであって、前記メモリは、ゴールデンイメージのPOSTコードシーケンスを保存する、メモリと、を備え、
前記コントローラ及び前記BIOSは、
前記POSTルーチンからPOSTコードシーケンスを受信することであって、前記POSTコードシーケンスは、前記複数のフェーズの実行により生成される、ことと、
前記POSTコードシーケンスを前記ゴールデンイメージのPOSTコードシーケンスと比較することと、
前記POSTコードシーケンス内の少なくとも1つのPOSTコードが前記ゴールデンイメージのPOSTコードシーケンスと一致しないことに基づいて、前記POSTルーチン内の偏差を識別することと、
を行うように動作可能である、
POSTルーチンの偏差を検出するコンピュータシステム。
【請求項2】
前記偏差は、
セキュリティ関数フェーズの無効と、
セキュリティ関数フェーズの障害と、
前記POSTルーチンの信頼されない状態の検出と、のうち何れかである、請求項1に記載のコンピュータシステム。
【請求項3】
前記偏差は、
前記POSTルーチン内の発見手順から複数のハードウェアデバイスのうち何れかのハードウェアデバイスが見つからないことと、
非アクティブなハードウェアインターフェースと、
前記POSTルーチンによる初期化後のハードウェアデバイスのハードウェア速度が低下することと、のうち何れかである、請求項1に記載のコンピュータシステム。
【請求項4】
前記偏差は、
ソフトウェアサービスが無効であることと、
ソフトウェアサービスが利用できないことと、
ソフトウェアサービスがサポートされていないことと、のうち何れかである、請求項1に記載のコンピュータシステム。
【請求項5】
前記コントローラ及び前記BIOSは、
前記識別された偏差に基づいて偏差分析を行うことと、
前記偏差分析の結果を含むメッセージを保存することと、
前記偏差分析を行った後に、前記コンピュータシステムの電源を入れ直すことと、
を行うようにさらに動作可能であり、
前記偏差分析は、前記偏差を修復する回復方法を含み、前記BIOS及び前記コントローラは、電源を入れ直した後に、前記回復方法を自動的に行うようにさらに動作可能である、請求項1に記載のシステム。
【請求項6】
コンピュータシステムの起動時に実行されるパワーオンセルフテスト(POST)ルーチンの偏差を識別する方法であって、
前記コンピュータシステムは、基本入出力システム(BIOS)と、コントローラと、メモリと、を含み、前記BIOSは、前記POSTルーチンを含み、前記POSTルーチンは、起動とオペレーティングシステムへの移行との間に実行される複数のフェーズを有し、前記コントローラは、前記BIOSと通信し、前記メモリは、前記コントローラ及び前記BIOSに結合されており、
前記方法は、
ゴールデンイメージのPOSTコードシーケンスを前記メモリに保存するステップと、
前記BIOSの前記POSTルーチンを実行するステップと、
前記POSTルーチンの複数のフェーズの実行時に生成されたPOSTコードシーケンスを前記POSTルーチンから受信するステップと、
前記コントローラを介して、前記POSTコードシーケンスを前記ゴールデンイメージのPOSTコードシーケンスと比較するステップと、
前記POSTコードシーケンスの少なくとも1つのPOSTコードが前記ゴールデンイメージのPOSTコードシーケンスと一致しないことに基づいて、前記POSTルーチンの偏差を識別するステップと、を含む、方法。
【請求項7】
前記偏差は、
セキュリティ関数フェーズの無効と、
セキュリティ関数フェーズの障害と、
前記POSTルーチンの信頼されない状態の検出と、のうち何れかである、請求項6に記載の方法。
【請求項8】
前記偏差は、
前記POSTルーチン内の発見手順から何れかのハードウェアデバイスが見つからないことと、
非アクティブなハードウェアインターフェースと、
前記POSTルーチンによる初期化後のハードウェアデバイスのハードウェア速度が低下することと、のうち何れかである、請求項6に記載の方法。
【請求項9】
前記偏差は、
ソフトウェアサービスが無効であることと、
ソフトウェアサービスが利用できないことと、
ソフトウェアサービスがサポートされていないことと、のうち何れかである、請求項6に記載の方法。
【請求項10】
ソフトウェア命令が保存されているコンピュータ可読記憶媒体であって、
前記ソフトウェア命令は、コンピュータシステム内のプロセッサによって実行されると、
前記コンピュータシステムのパワーオンセルフテスト(POST)ルーチンの複数のフェーズを実行することと、
前記POSTルーチンの実行中にPOSTコードシーケンスを出力することと、
前記POSTコードシーケンスをゴールデンイメージのPOSTコードシーケンスと比較することと、
前記POSTコードシーケンスの少なくとも1つのPOSTコードが前記ゴールデンイメージのPOSTコードシーケンスと一致しないことに基づいて、前記POSTルーチンの偏差を識別することと、
を前記プロセッサに実行させる、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピューティングデバイスのブートルーチンに関し、特に、ブートアッププロセスのパワーオンセルフテスト(POST)ルーチン中に遭遇する偏差(deviation)を識別、診断及び修復するシステムに関する。
【背景技術】
【0002】
サーバーは、ネットワークベースのシステムやデータセンター等の需要の高いアプリケーションに多用されている。コンピューティングアプリケーション用のクラウドの出現により、データセンターの需要が高まっている。データセンターは、データを保存し、リモート接続されたコンピューターデバイスのユーザーがアクセスしたアプリケーションを実行(run)する多数のサーバーを有する。一般的なデータセンターは、電力と通信の接続を備えた物理的なラック(rack)構造を有する。各ラックは、複数のコンピューティングサーバーとストレージサーバーを搭載することができる。
【0003】
データセンター内のサーバーは、アプリケーションの実行(execute)、仮想化サービスの提供、及び、インターネットコマースの促進を含む多くのビジネスのサービスを提供している。データセンターサーバーから提供されるサービスに対する企業の依存度が大きくなるにつれて、稼働時間(uptime)がより重要となり、より価値が高まる。サーバーがダウンすると、生産性が低下するか、完全に停止し、ビジネスの収益性が損なわれる。データセンターの管理者は、サーバー内の障害による中断に対して予防策を講じることができるが、サーバーのダウンタイムの問題を完全になくすことが困難である。サーバーのダウンタイムの主な原因は、サーバーのハードウェア障害、ハードウェアのアップグレードの実行、ソフトウェアのアップグレードの実行、及び、サーバーメンテナンス時の不具合を含み得る。通常、データセンターの管理者は、大量のダウンタイムの潜在的な(potentially)高さと高額な損失を想定して、ダウンタイムの原因となり得る様々な要因に対処するための計画を立てている。しかしながら、サーバーの回復には、各サーバーの再起動が必要である。
【0004】
個々のサーバーは、通常、パワーオンセルフテスト(POST)ルーチンで起動されて操作を開始する。サーバーのプロセッサコア等のコンピュータシステムのPOSTルーチン中に、基本入出力システム(BIOS)がプロセッサコアによって実行され、サーバーのハードウェアを初期化する。POSTルーチンが正常に完了した後に、制御がサーバーのオペレーティングシステムに引き継がれる。
【0005】
サーバーの起動は複雑なプロセスである。ユニファイド拡張可能ファームウェアインタフェース(Unified Extensible Firmware Interface;UEFI)BIOSファームウェアは、サーバープラットフォームのオペレーティングシステムの準備が整うまで、POSTルーチンで様々な手順を実行して、全てのハードウェアコンポーネントを初期化及びアクティブ化する必要がある。これらの手順は、個々のプロセスを順に実行して、ハードウェアコンポーネントを初期化し、ソフトウェア機能(feature)を有効にし、サーバーセキュリティアクティビティを実行し、プラットフォームの耐障害性のルーチンを実行することを含む。一般に、POSTルーチン内の各ソフトウェアプログラムは、通常、ソフトウェアプログラムの目的、動作、結果及び状態を記述した重要なチェックポイントを保有する。チェックポイントは、可視メッセージで出力され、端末画面、特定のLCDパネル、LEDインジケータ及び/又はコンソールリダイレクションに表示される。管理者は、帯域内(in-band)(サーバーの不揮発性メモリ)及び帯域外(out-of-band)(ベースボード管理コントローラー(BMC)によって保存されたシステムエラーログ)の両方の場所にあるシステムイベントログファイルを検査(review)することで、チェックポイントを検証(examine)することもできる。
【0006】
サーバーが信頼できる環境(安定した電源、低温、適切な湿度等)で動作している場合、シーケンシャル(sequential)チェックポイントの記録は、ユーザーが新しいファームウェアを設定したり、ハードウェア構成を調整したりしない限り、サーバーが起動する毎に同じになる。シーケンシャルチェックポイント内の記録変更の大部分は、ソフトウェアプログラムが環境変数や論理操作を参照して異なるルーチンを実行する等のように、通常の操作や予期される動作である。しかしながら、場合によっては、シーケンシャルチェックポイントの記録変更がサーバーの操作に悪影響を及ぼすことがある。このような場合、中断がいつ、どのように、なぜ発生するかを予測することが困難である。従って、このようなことは最終的にサーバーのダウンタイムを延長し、データセンターが提供するサービスに影響を与える。
【0007】
従って、シーケンシャルPOSTコードの検査に基づいて特定の偏差を識別するPOSTルーチンを含むシステムが必要である。また、POSTルーチン内の偏差を診断できるシステムも必要である。POSTルーチン内の偏差からの回復動作を推奨するシステムも必要である。
【発明の概要】
【発明が解決しようとする課題】
【0008】
ブートアッププロセスのパワーオンセルフテスト(POST)ルーチン中に遭遇する偏差を識別、診断及び修復するシステムを提供する。
【課題を解決するための手段】
【0009】
開示された一例は、パワーオンセルフテストルーチン(POST)内の偏差を検出するコンピュータシステムである。コンピュータシステムは、起動とオペレーティングシステムへの移行(hand off)との間に実行される複数のフェーズを有するパワーオンセルフテスト(POST)ルーチンを有する基本入出力システム(BIOS)を含む。コントローラは、BIOSと通信している。メモリは、コントローラ及びBIOSに結合される。メモリは、ゴールデンイメージのPOSTコードシーケンスを保存する。コントローラ及びBIOSは、複数のフェーズの実行時に生成されたPOSTルーチンからPOSTコードシーケンスを受信するように動作可能である。POSTコードシーケンスは、ゴールデンイメージのPOSTコードシーケンスと比較される。POSTルーチンの偏差は、POSTコードシーケンスの少なくとも1つのPOSTコードがゴールデンイメージのPOSTコードシーケンスと一致しないことに基づいて識別される。
【0010】
例示的なシステムのさらなる実装は、コントローラがベースボード管理コントローラである実施形態である。別の実装は、コンピュータシステムがサーバーであることである。別の実装は、コンピュータシステムがネットワークインターフェースを含み、その比較がリモート管理サーバーに送信されることである。別の実装は、偏差が、セキュリティ関数フェーズの無効、セキュリティ関数フェーズの障害、又は、POSTルーチンの信頼されない状態の検出のうち何れかである。別の実装は、偏差が、POSTルーチンの発見手順から複数のハードウェアデバイスのうち何れかのハードウェアデバイスが見つからない、非アクティブなハードウェアインターフェース、又は、POSTルーチンによる初期化後のハードウェアデバイスのハードウェア速度が低下することである。別の実装は、偏差が、無効、利用できない、又は、サポートされていないソフトウェアサービスの何れかであることである。別の実装は、メモリが、POSTコードシーケンスを保存するフラッシュメモリであることである。別の実装は、ゴールデンイメージのPOSTコードシーケンスが、サーバー管理ソフトウェアを通じて、ネットワークインターフェースを介して更新されたゴールデンイメージのPOSTイメージをコントローラに送信することによってアップグレード可能である。別の実装は、コントローラ及びBIOSが、識別された偏差に基づいて偏差分析を行い、偏差分析の結果を含むメッセージを保存し、偏差分析を行った後に、コンピュータシステムの電源を入れ直すようにさらに動作可能である。別の実装は、偏差分析が偏差を修復する回復方法を含み、BIOS及びコントローラが電源を入れ直した後に、回復方法を自動的に行うようにさらに動作可能である。
【0011】
別の開示された例は、基本入出力システム(BIOS)を含むコンピュータシステムの起動時に実行されるPOSTルーチンの偏差を識別する方法である。BIOSは、起動とオペレーティングシステムへの移行との間に実行される複数のフェーズを有するパワーオンセルフテスト(POST)ルーチンを含む。コンピュータは、BIOSと通信するコントローラと、コントローラ及びBIOSに結合されたメモリと、を含む。ゴールデンイメージのPOSTコードシーケンスは、メモリに保存される。BIOSのPOSTルーチンが実行される。POSTコードシーケンスは、POSTルーチンの複数のフェーズの実行時に生成されたPOSTルーチンから受信される。POSTコードシーケンスは、コントローラを介してゴールデンイメージのPOSTコードシーケンスと比較される。POSTルーチンの偏差は、POSTコードシーケンスの少なくとも1つのPOSTコードがゴールデンイメージのPOSTコードシーケンスと一致しないことに基づいて識別される。
【0012】
例示的な方法の別の実装は、コントローラがベースボード管理コントローラであり、コンピューティングデバイスがサーバーであることである。別の実装は、この方法が、ネットワークインターフェースを介してリモート管理サーバーに上述した比較を送信することをさらに含む。別の実装は、偏差が、セキュリティ関数フェーズの無効、セキュリティ関数フェーズの障害、又は、POSTルーチンの信頼されない状態の検出の何れかである。別の実装は、偏差が、POSTルーチンの発見手順から複数のハードウェアデバイスのうち何れかのハードウェアデバイスが見つからない、非アクティブなハードウェアインターフェース、又は、POSTルーチンによる初期化後のハードウェアデバイスのハードウェア速度が低下することである。別の実装は、偏差が、無効、利用できない、又は、サポートされていないソフトウェアサービスの何れかであることである。別の実装は、この方法が、識別された偏差に基づいて偏差分析を行い、偏差分析の結果を含むメッセージを保存し、偏差分析を行った後に、コンピュータシステムの電源を入れ直すことをさらに含む。別の実装は、この方法が、メッセージ内のデータを介して偏差を修復することを含む。
【0013】
別の開示された例は、ソフトウェア命令が保存されている非一時的なコンピュータ可読記憶媒体であり、コンピュータシステム内のプロセッサによって実行された場合に、プロセッサにコンピュータシステムのパワーオンセルフテスト(POST)ルーチンの複数のフェーズを実行させる。これらの命令は、プロセッサに、POSTルーチンの実行中にPOSTコードシーケンスをさらに出力させる。命令は、プロセッサに、POSTコードシーケンスをゴールデンイメージのPOSTコードシーケンスとさらに比較させる。命令はさらに、プロセッサに、POSTコードシーケンスの少なくとも1つのPOSTコードがゴールデンイメージのPOSTコードシーケンスと一致しないことに基づいて、POSTルーチンの偏差を識別させる。
【0014】
別の開示された例は、パワーオンセルフテストルーチン(POST)の偏差を分析するためのコンピュータシステムである。コンピュータシステムは、起動とオペレーティングシステムへの移行との間に実行される複数のフェーズを有するパワーオンセルフテスト(POST)ルーチンを有する基本入出力システム(BIOS)を含む。コンピュータシステムは、BIOSと通信しているコントローラを含む。コントローラ及びBIOSは、POSTコードの形式で、POSTルーチンで識別された偏差を受信するように動作可能である。コントローラ及びBIOSは、識別された偏差に基づいて偏差分析を行う。コントローラ及びBIOSは、偏差分析の結果を含むメッセージを宛先デバイスに保存し、偏差分析を行った後にコンピュータシステムの電源を入れ直す。
【0015】
例示的なシステムのさらなる実装は、コントローラがベースボード管理コントローラである実施形態であることである。別の実装は、コンピュータシステムがサーバーであることである。別の実装は、偏差分析がBIOS内のUEFI変数を設定することにより、アクティブになることである。別の実装は、メッセージが偏差からPOSTルーチンを回復するための自動回復を含むことである。別の実装は、コントローラが管理者に警告し、コンピュータシステムをシャットダウンする手動回復であることである。別の実装は、メッセージが、人間が読み取り可能なスキーマと技術スキーマを含むことである。別の実装は、人間が読み取り可能なスキーマが、定義、偏差の原因、回復方法及びリスク評価を含むことである。別の実装は、技術スキーマが、特定のサービスルーチンの偏差を記述する様々な長さと内容を有するメタデータを含むことである。別の実装は、メッセージで指定された回復ルーチンが、コントローラ又はBIOSファームウェアの何れかによって実行されことである。別の実装は、回復ルーチンが、ハードウェアコンポーネントの初期化の最適化、疑いのあるデータ構造の消去(clearing)、及び、カスタムゴールデン設定のリロードの何れかを含むことである。別の実装は、偏差分析ルーチンが、ハードウェア又はソフトウェア開発者により提供された文書(documentation)に基づいて、識別されたハードウェア又はソフトウェアコンポーネント用に特別に記述されることである。別の実装は、宛先デバイスが、システムメモリ、ストレージデバイス、又は、コントローラによりアクセス可能なフラッシュメモリの何れかであることである。
【0016】
上述した概要は、本開示の各実施形態又は全ての態様を表すことを意図するものではない。むしろ、上述した概要は、本明細書に記載された新規な態様及び特徴のいくつかの例を提供するに過ぎない。本開示の上述した特徴及び利点、並びに、他の特徴及び利点は、添付の図面及び添付の特許請求の範囲と関連して、本発明を実施するための代表的な実施形態及び態様についての以下の詳細な説明から容易に明らかとなるであろう。
【0017】
本開示は、例示的な実施形態の以下の説明及び添付の図面からよりよく理解されるであろう。
【図面の簡単な説明】
【0018】
【
図1】本開示の特定の態様による、POSTルーチン内の偏差の識別、診断及び修復のためのモジュールを含む例示的なPOSTルーチンを実行するコンポーネントを有するコンピュータシステムのブロック図である。
【
図2】本開示の特定の態様による、例示的なPOSTルーチン内の異なるステップ及び対応するPOSTコードを示すプロセス図である。
【
図3】本開示の特定の態様による、POSTルーチンの例示的なモジュールからの診断を示すプロセス図である。
【
図4A】本開示の特定の態様による、POSTルーチンの例示的なモジュールを識別、診断及び修復する関数のフロー図である。
【
図4B】本開示の特定の態様による、POSTルーチンの例示的なモジュールを識別、診断及び修復する関数のフロー図である。
【
図4C】本開示の特定の態様による、POSTルーチンの例示的なモジュールを識別、診断及び修復する関数のフロー図である。
【
図5】本開示の特定の態様による、例示的なモジュールの診断関数の送信状態サービス(deliver status service)ルーチンを含む、POSTルーチン内のセキュアブートサービスのコードのシーケンスである。
【
図6】本開示の特定の態様による、
図5の関数呼び出しルーチンの関数サービスルーチンの収集状態のフロー図である。
【
図7】本開示の特定の態様による、
図5の関数呼び出しルーチンの関数呼び出しサービスルーチンの開示メッセージ(expose message)のフロー図である。
【
図8】本開示の特定の態様による、例示的なモジュールの回復関数により出力され得る障害の診断に基づいた潜在的な(potential)回復メカニズムの表である。
【発明を実施するための形態】
【0019】
本開示の局面は、様々な修正形式及び代替形式が可能であるが、具体的な実施の形態が、例示的に図面に示され、ここにおいて詳細に記載されることになる。しかしながら、この発明は、開示される特定の形式に限定されるように意図されていないことが理解されるべきである。この発明は、特許請求の範囲に定義されるこの発明の趣旨及び範囲内に入る全ての修正物、均等物及び代替物を包含する。
【0020】
本発明は、多くの異なる形態で具現化することができる。本発明は、本発明の原理の例示として考慮されるべきであり、本発明の広範な態様を限定することを意図するものではなく、図面に示され、本明細書において詳細に説明される。その範囲において、例えば、概要、要約及び詳細な説明で開示されているが、特許請求の範囲に明記されていない要素及び制限は、含意、推論若しくは他の方式によって単独又は集合的に特許請求の範囲に組み込まれるべきではない。詳細な説明の目的のために、具体的にそうではないと主張されない限り、単数形は複数形を含み、複数形は単数形を含む。「含む」という用語は、「制限なしに含む」ことを意味する。また、例えば、「約(about)」、「ほとんど(almost)」、「実質的に(substantially)」、「おおよそ(approximately)」等の近似の用語は、ここでは、例えば「…で(at)、…近くで(near)、…に近接して(nearly at)」、「…の3~5%内で」、「製造誤差の許容範囲内で」、又は、これらの任意の論理的組み合わせの意味を含むことができる。
【0021】
本明細書で開示される例は、UEFI BIOSファームウェア及びBMCファームウェアの両方において実行され、コンピューターデバイス内で識別を促進し、POSTルーチン内の偏差に対処することができるファームウェアモジュールを含む。例示的なモジュールは、サーバーが起動される毎に、出力POSTコードとゴールデンレコード(golden record)POSTルーチンのPOSTコードとを比較することにより、POSTルーチンより出力されたシーケンシャルチェックポイントの不同(disparity)を識別する。このルーチンは、サーバー上のパフォーマンスを低下させ、ダウンタイムを延長し、安全でない関数(function)を行う可能性のある潜在的な(potential)異常及び悪影響を及ぼすブートシーケンスを判定することができる。POSTルーチンからのシーケンシャルチェックポイントの不同の検証は、POSTルーチンの実行パスをトレースし、必須のデータ構造をオペレーティングシステム(OS)に提供することを含む。このルーチンは、シーケンシャルPOSTコードを介して安全な関数の状態、及び、マザーボードハードウェアの初期化の結果を出力する。このルーチンは、POSTルーチンのシーケンシャルチェックポイントの偏差を判定し、それぞれの相違(divergence)の原因を判定し、相違のリスクを推定し、次いで、適切な手動又は自動の回復メカニズムを提案する新しいモジュールを含む。
【0022】
図1は、データセンター内のサーバー等のリモートデバイスの管理を可能にするリモートシステム100を示している。リモートシステム100は、データセンターオペレータによってアクセスされ得るリモートサーバー管理及びサービスステーション102、ネットワーク104及びサーバー106等のリモートコンピュータシステムを含む。リモートサーバー管理及びサービスステーション102は、データセンターオペレータが、オペレータがサーバー106のリモート診断を実行できるようにする管理インターフェースにアクセスすることを可能にする。後述するように、サービスステーション102は、サーバー106からも操作データを受信する。技術者108等の他の人員は、サービスステーション102により提供されたスケジュールに基づいて、サーバー106上の障害のあるハードウェアコンポーネントを置き換える等のように、手動の介入を行うことができる。
【0023】
サーバー106は、ベースボード管理コントローラ(BMC)110を含む。BMC110は、ネットワーク104に結合されたネットワークインターフェースカード又はネットワークインターフェースコントローラ112を含む。BMC110は、ユニファイド拡張可能ファームウェアインタフェース(Unified Extensible Firmware Interface;UEFI)基本入出力システム(Basic Input Output;BIOS)ファームウェア120等のブートファームウェアに結合される。フラッシュメモリ122は、BMC110に用いられ、サーバー106に関連する関連操作データ及びBMC110により実行される他のファームウェアを保存する。この例では、フラッシュメモリ122は、ゴールデンファイル124及びシステムエラーログ(SEL)126を保存する。この例では、ゴールデンファイル124は、BMC110によりサービスステーション102からダウンロードされ得る。後述するように、ゴールデンファイル124は、POSTルーチンの実行から予期されるPOSTコードシーケンスを含む。サーバー106は、ストレージ、コンピューティング及びスイッチング等の機能を行うことができるハードウェアコンポーネント130及び132を含む。例えば、ハードウェアコンポーネント130はCPUであることができる。他のハードウェアコンポーネント132は、他のプロセッサ、メモリデバイス(例えば、デュアルインラインメモリモジュール、SATAデバイス等)、PCIeデバイス等であり得る。一般的なサーバーには、多くのハードウェアコンポーネントがあってもよいことを理解されたい。
【0024】
UEFI BIOSファームウェア120は、POSTルーチンを介して、ハードウェアコンポーネント130及び132等のサーバー106のハードウェアコンポーネントのハードウェアの初期化を最適化する。BMC110は、ハードウェアコンポーネント130及び132等のサーバー106のハードウェアコンポーネントのハードウェア診断を行うこともできる。BMC110は、ハードウェアコンポーネント130及び132等のサーバー106のハードウェアコンポーネントの健全性(health)も監視する。POSTルーチンは、POSTソフトウェアプロセス134と相互作用して、デバッグメッセージを有効にし、そのプロセスから全ての状態及びデータ構造情報も収集する。UEFI BIOSファームウェア120のPOSTルーチンが完了すると、オペレーティングシステム(OS)140がサーバー106の操作を開始する。
【0025】
この例では、UEFI BIOSファームウェア120は、POSTルーチンにより出力されたシーケンシャルチェックポイントの不同を報告するPOSTルーチン内の例示的なモジュールを含む。POSTルーチン内の例示的なモジュールは、保存されたゴールデンレコードからのチェックポイントから、POSTルーチンのシーケンシャルチェックポイントからの偏差を識別する。識別、分析及び偏差からの回復は、サーバー106をより強じん性且つより効率性のあるものにする。従って、例示的なモジュールは、人間が読み取り可能なメタデータフォーマット(例えば、JSONのRedfish REST APIフォーマット)でBMC110に転送された不同の分析を提供し、次いで、サービスステーション102により実行されるサーバー管理ソフトウェアによって収集されることができる。管理者/ITエンジニアは、偏差に対処するためのポリシー定義を提供することができる。例えば、ポリシーは、サーバー106に、自動回復プロセスを直ちに実行するか、又は、技術者108によるスケジュールによる手動の介入を待つように指示することができる。
【0026】
一般に、サーバー106の起動からOS140への移行までの間にUEFI BIOSファームウェア120から出力されたPOSTコードを記録することは、非常に有用なソフトウェア軌跡追跡の方法である。ソフトウェア開発者は、様々な実行目的で提供されるPOSTコードに独自のASCIIエンコーディングを用いている。ASCIIエンコードされたPOSTコードは、UEFI BIOSファームウェア120等のソフトウェアの開始、終了又は分岐等の重要な実行ポイントに埋め込まれている。UEFI BIOSファームウェア120は、生成されたPOSTコードをアクセス可能な宛先にリダイレクトする。POSTコードは、サーバー106のUEFI BIOSファームウェアブートシーケンスの履歴として、最初の出力コードから最後の出力コードまで順次記録される。
【0027】
図2は、最初の起動から制御をオペレーティングシステム140に移行するまでのPOSTルーチンの異なるシーケンシャルフェーズ(sequential phase)を示すプロセス
図200である。従って、第1の欄210はセキュリティフェーズを表し、第2の欄212は、事前拡張可能ファームウェアインタフェース(pre-extensible framework interface;EFI)初期化環境(PEI)フェーズを表し、第3の欄214は、ドライバ実行環境(driver execution environment;DXE)フェーズを表し、第4の欄216は、ブートデバイス選択(boot device selection;BDS)フェーズを表し、第5の欄218は、過渡システム負荷(transient system load;TSL)フェーズを表す。
【0028】
セキュリティフェーズ210は、Ucodeパッチ222を適用し、シリコンベースのセキュリティルーチン224を開始する事前検証(pre-verifier)220によって開始される。PEIフェーズ212は、UPI/XGMIトポロジ発見プロセス230、開始メモリ参照コードプロセス232、及び、初期プラットフォームポート(initial platform porting)プロセス234を含む。
【0029】
デバイスドライバ、バスドライバ又はサービスドライバ等の1セットのドライバ240は、DXEフェーズ214を実装している。各ドライバは、DXEフェーズ214の終了まで順次実行される。このフェーズは、PCIスキャン及びリソース割り当てプロセス242、起動及びランタイムサービスの確立プロセス244、並びに、ACPI及びSMBIOSテーブルのパブリッシュプロセス246を含む。
【0030】
ブートデバイス選択フェーズ216は、ブートディスパッチャプロセス250、イネーブルセキュアブートプロセス252及びロードブートローダプロセス254を含む。過渡システムロード(transient system load;TSL)フェーズ218は、過渡オペレーティングシステムブートローダプロセス260及びオペレーティングシステム移行プロセス262を含む。過渡システムロードフェーズ218の終了時に、制御がLinux(登録商標) GRUB等のOSブートローダーに移行され、オペレーティングシステム140が起動して開始する。
【0031】
フェーズ210、212、214、216及び218の各プロセスが開始され、完了すると、1セットのシーケンシャルPOSTコード270がPOSTルーチンにより出力される。この例では、UEFI BIOSファームウェアイメージ120は、各コードの機能定義を記述する完全なPOSTコードテーブルを有する。従って、各POSTコードのコード定義は、管理者又は開発者がPOSTルーチンの各ステップの実行を理解するのに役立つことができる。セキュリティフェーズ210のPOSTコードの通常のシーケンスは0x00~03であり、PEIフェーズ212のPOSTコードの通常のシーケンスは0x10~13であり、DXEフェーズ214のPOSTコードの通常のシーケンスは0x20~23であり、ブートデバイス選択フェーズ216のPOSTコードの通常のシーケンスは0xA0~A3であり、TSLフェーズ218のPOSTコードの通常のシーケンスは0xB0~B3である。
【0032】
何れかのプロセスが偏差に遭遇した場合、代替のPOSTコードが出力され、POSTコードシーケンス内にある。この例では、第1の偏差272は、初期プラットフォームポートプロセス234のPOSTコード0x12をPOSTコード0xFIに置き換え、プラットフォームポートにエラーを示す。従って、POSTコード0x12は、出力ポート設定の構成及び書き込みと読み取りテストが成功したかどうか等の特定のハードウェアの初期化を行うサービスルーチン「初期プラットフォームポート」の一部である。読み取りテストが不正確な場合、通常のPOSTコード0x12ではなく、POSTコード0xF1が送出される。第2の偏差274は、イネーブルセキュアブートプロセス252の通常のPOSTコードA1をPOSTコードFFに置き換え、そのプロセスのエラーを示す。POSTコード0xA1は、トラステッドプラットフォームモジュール(Trusted Platform Module;TPM)コントローラのハードウェア初期化が、イネーブルセキュア関数を行い、コントローラのプログラミング及び読み取り状態が成功したことを示す。読み取り状態が不正確な場合、通常のPOSTコード0xA1ではなく、POSTコード0xFFが送出される。この例では、これらの偏差の両方は、特定のポート又はコントローラの障害によりオペレーティングシステム140が動作できない可能性があるため、制御をオペレーティングシステム140に移行する能力に影響を与える。
【0033】
例示的なPOSTルーチンの例示的なモジュールは、POSTルーチンの偏差にかかわらず、3つの主な関数があり、効率的なPOSTルーチンを確保するのに役立つ。この3つの関数は、偏差識別、偏差分析及び偏差回復を含む。偏差分析関数は、シーケンシャルPOSTコードから悪影響を及ぼす偏差が特定された後、自動的に呼び出される。悪影響を及ぼす偏差は、サーバー関連のセキュリティ関数が無効(disable)又は減少される、ハードウェア通信インターフェースの誤動作又は劣化、ソフトウェアプロトコル又はサービスが無効(invalid)又はサポートされていない等の状態を含み得る。
【0034】
従って、偏差識別関数は、POSTルーチン中にUEFI BIOSファームウェア120により出力されたPOSTシーケンスコードを有する記録を、ゴールデンファイルイメージ124のPOSTシーケンスコードと比較する。偏差分析関数は、理解できる(comprehensive)メッセージをシーケンシャルチェックポイント内の任意の不同から出力させることができる。メッセージ出力は、偏差に関連する、人間が読み取り可能なスキーマ及び技術スキーマの両方を含む。偏差分析関数は、疑いのあるハードウェアコンポーネントに対して診断を行い、サーバー106から追加情報も収集する。偏差回復関数は、ハードウェアコンポーネントの初期化の最適化、不揮発性メモリ内の疑いのあるデータ構造の消去、及び、BIOSファームウェア120のカスタムゴールデン設定のリロード等の様々な回復ステップを行い、偏差を軽減する。
【0035】
図3は、POSTルーチン内の例示的なモジュールにより提供された情報を示すプロセス
図300である。モジュールは、出力POSTコードシーケンス270を、
図1のゴールデンファイルイメージ124のPOSTシーケンスと比較する。上述したように、偏差識別関数は、初期プラットフォームポート234及びイネーブルセキュアブートプロセス252により出力されたコードが、ゴールデンイメージの通常のPOSTシーケンスと異なることを判定する。
【0036】
例示的なモジュールは、一連のメッセージ310を出力する不同分析を行う。この例では、偏差分析関数は、人間が読み取り可能なスキーマ及び技術スキーマを含むメッセージを出力する。人間が読み取り可能なスキーマは、POSTコードの偏差の定義、偏差の原因、偏差が回復可能かどうか、対応する回復方法、及び、リスク評価を含む。例えば、リスク評価は、偏差分析に基づく1~5の間の数値スコア(numerical score)であってもよい。この例では、リスク評価スコアは、表から決定される。この例では、1のリスクスコアは、ハードウェア機能が誤動作している場合、又は、ソフトウェア機能が非アクティブで、直ちに機能を再アクティブ化することができない場合に、割り当てられる。2のリスクスコアは、セキュア関数が許可なく非アクティブであるが、再アクティブ化が可能である場合に、割り当てられる。3のリスクスコアは、ハードウェアの機能が低下し、再試行メカニズム(速度低下又はリンク幅の減少等)が利用可能な場合に、割り当てられる。4のリスクスコアは、ソフトウェア機能が許可なく無効にされ、機能の再有効が可能な場合に、割り当てられる。5のリスクスコアは、ソフトウェアのデータ構造又はレイアウトが不正確で、データバッファオーバーフロー等の再試行メカニズムが利用可能な場合に、割り当てられる。
【0037】
図3に示されるように、例示的なモジュールにより出力された第1のメッセージ312は、初期プラットフォームポート234内の偏差に関連する、人間が読み取り可能なフォームの情報を含む。第2のメッセージ314は、イネーブルセキュアブートプロセス252内の偏差に関連する、人間が読み取り可能なフォームの情報を含む。
【0038】
この例では、偏差識別関数は、UEFI BIOSファームウェア120に対応するゴールデンイメージのPOSTコードと実際のPOSTコードとを比較して行なわれる。UEFI BIOSファームウェア120のPOSTコードの偏差を識別するために、サーバー106の利用可能な構成を表す
図1のゴールデンファイル124等のシーケンシャルPOSTコードのゴールデンファイルが、BMC110のフラッシュメモリ122等の不揮発性メモリに保存される。ゴールデンファイル124の内容は、初期化シーケンスの非常に重要な部分の期間に実行される重要なシーケンシャルPOSTコードのみを表す。例えば、0xA0、0xA1、0xA2は、ブートデバイス選択フェーズ216のプロセスにより出力される必要なシーケンシャルPOSTコードである。
【0039】
管理者が有効にした「ラックサーバーの正確なPOSTコードメンテナンス(Rack Server Correct POST Code Maintenance)」の機能は、起動中にUEFI BIOSファームウェア120により出力された全てのPOSTコードがアクセス可能な宛先(フラッシュメモリ122又はその他のBMCメモリ等)に保存されるようにリダイレクトする。従って、管理局102等のリモートサーバーは、POSTコード出力にアクセスすることができる。この例では、POSTルーチンのモジュールがBMC110によって実行され、サーバー106のPOSTルーチンがPOSTコードのゴールデンファイル124の内容に従って同一のPOSTコードシーケンスを出力するかどうかを比較する。予期されるPOSTコードと異なるPOSTコードを示すPOSTコードの比較から悪影響を及ぼす偏差が検出された場合、BMC110は、UEFI BIOSファームウェア120とBMC110の両方で「偏差分析」及び「偏差回復」の介入サービスルーチンを有効にする。
【0040】
図4A~
図4Cは、偏差識別、偏差分析及び偏差回復関数を含む例示的なモジュールによって行われたルーチンの3つのフェーズを示すフロー図である。
図4Aは、
図1のUEFI BIOS120及びBMC110で行なわれるプロセス全体の偏差識別関数のプロセスを示している。この例では、UEFI BIOS120は、POSTルーチンをBMC110のシステムエラーログ(SEL)126に記録し始める(402)。従って、初期POSTコード(0xE0)が記録される。次いで、UEFI BIOS120は、プロセッサ、メモリ及びマザーボード上のその他のコンポーネントを初期化する(404)。次いで、UEFI BIOS120は、入出力ハードウェアを初期化する(406)。次いで、UEFI BIOS120は、ブートサービスをインストールする(408)。次いで、UEFI BIOS120は、ランタイムサービスをインストールする(410)。POSTステップ402、404、406、408及び410のそれぞれは、様々なステップの開始及び完了を示すPOSTコード270をBMC110に送信することになる。
【0041】
次いで、UEFI BIOS120は、セキュアブートを有効にする(412)。この例では、
図2のPOSTコードシーケンス270内のPOSTコード274等のPOSTコード内に反映される偏差が発生する。セキュアブートの後、UEFI BIOS120は、POSTコード(0xE1)を介してBMC110のSELにPOST終了を記録する(414)。次いで、UEFI BIOS120は、POSTコード及び偏差分析の結果がBMC110から有効にされるべきかどうかを判定する(416)。偏差が見つからなかった場合、POSTルーチンは、OS140に移行して終了する(418)。セキュアブートプロセスによって生成されたPOSTコード274等の偏差が見つかった場合、BIOSの偏差分析が開始される(420)。
【0042】
例えば、特定のハードウェアの偏差が発生し、特定のPOSTコードがPOSTコードシーケンスで出力されることになる可能性がある。このようなハードウェアの偏差は、ハードウェアデバイスがPOSTルーチンの検出手順から見つからない、ハードウェアインターフェースが初期化後に非アクティブである、又は、ハードウェアデバイスのハードウェアの速度が初期化後に低下したために発生する可能性がある。このような場合、偏差は、POSTコードシーケンスで出力される障害又は警告(caution)コードとなる。POSTルーチンの偏差の別の例は、例えば、信頼の基点(Root of Trust)デバイスが存在しないために非アクティブなセキュリティ機能等のセキュリティタイプの偏差に基づく場合がある。このような場合、偏差は、POSTコードシーケンスで出力される障害又は警告コードとなる。別のセキュリティ偏差は、署名されていないUEFIドライバが読み込まれた場合等のように、信頼されない状態で検出される可能性がある。このような偏差は、未署名のドライバにはPOSTコードが出力されないため、不完全なPOSTシーケンスによって示されることができる。別の例示的な偏差は、ソフトウェアプロトコルがインストール手順によりサポートされていない、又は、データ構造が初期化手順により利用できない等のソフトウェアによるものである。このような場合、偏差は、POSTコードシーケンスで出力される障害又は警告コードとなる。
【0043】
図4Aの偏差関数の実行中、BMC110は、サービスルーチンの実行を可能にするPOSTコードメンテナンスが管理者により有効化されているかどうかを判定する(422)。POSTコードのメンテナンスが有効でない場合、BMC110は、それ以上の動作を行わない。POSTコードメンテナンスが有効である場合、BMC110は、UEFI BIOS120のPOSTルーチンにより出力されたPOSTコード270を受信し、それらをシステムメモリ又はフラッシュメモリ122等のメモリ内のPOSTコードログファイルに保存する(424)。各POSTコードを受信した後、BMC110は、受信したPOSTコードがPOSTルーチンの終了を示しているかどうかを判断する(426)。受信したPOSTコードがPOSTルーチンの終了を示していない場合、BMC110は、続けてPOSTコードを受信し保存する(424)。POSTルーチンの終了を示すPOSTコードが受信された場合、BMC110は、フラッシュメモリ122からPOSTコードゴールデンファイル124をロードする(428)。次いで、BMC110は、POSTコードログファイルを、POSTコードゴールデンファイル124からのPOSTコードシーケンスと比較する(430)。BMC110は、悪影響を及ぼす偏差が見つかったかどうかを判定する(432)。悪影響を及ぼす偏差が見つからなかった場合、BMCは、ルーチンを終了する。悪影響を及ぼす偏差が見つかった場合、BMC110は、BMCの偏差分析及びBMCの偏差回復ルーチンを開始する(434)。BMC110は、悪影響を及ぼす偏差を見つけたことについてUEFI BIOS120にも警告する(416)。
【0044】
POSTルーチン内の初期化プロセスのソフトウェアアルゴリズムは、新しいPOSTコードで手順を追加、削除又は修正することができるため、ゴールデンイメージのPOSTコードシーケンスの定義は、サービスステーション102上で動作されるサーバー管理ソフトウェアを介してアップグレード可能である。このような管理ソフトウェアは、サーバー106に新しいUEFI BIOSファームウェアのリリースが提供されると、新しいゴールデンイメージをBMC110に送信する。ゴールデンPOSTコードシーケンスの定義のアップグレードは、古いゴールデンPOSTコードファイルからの偏差の不正確な識別を回避する。サーバー管理ソフトウェアは、サーバーBMCのデータベース内のゴールデンPOSTコードファイルの特定の古いバージョンを無効にすることもできる。この例では、データベースは、BIOSイメージとゴールデンファイルのペアを有し、サービスステーション102によって管理されてもよい。管理者がサーバー106のファームウェアバージョンをアップグレードすることを決定した場合、管理者は対応するゴールデンファイルをアップグレードする。このプロセスは、Redfishファームウェアアップグレードプロトコル等のアップグレードプロトコルを介して、ファームウェアイメージ、ゴールデンファイル及びスクリプトファイルを含む新しいファームウェアパッケージを送信することによって実現されてもよい。
【0045】
代替として、偏差は、受け入れられた妥協案である既知の偏差であってもよい。例えば、POSTコードの偏差は、ゴールデンファイルのPOSTコードと比較してPOSTコードの偏差を引き起こす、周波数の低下を有する低コストのデュアルインラインメモリモジュールの使用等のように、管理者が受け入れた既知の問題により、発生する可能性がある。管理者は、モジュールをそのままに保持することを選択し、その結果、継続的なPOSTコードの偏差となる可能性がある。
【0046】
悪影響を及ぼす偏差が検出されると、BMC110は、UEFI BIOSファームウェア120とBMC110の両方で例示的なモジュールの「偏差分析(Deviation Analysis)」セクションの実行を開始する。この例では、BMC110は、UEFI BIOSファームウェア120がUEFI変数(「Deviation_Analysis」)を有効にすることを要求し、これにより、POSTルーチンの疑いのあるソフトウェアプロセスが偏差に関連するメッセージをアクセス可能なメモリの宛先に送信できるようにする。このようなメッセージは、UEFI BIOSファームウェア120のコンパイラ及びリンカにより組み込まれており、特定のUEFI偏差分析変数が有効になっている場合にのみアクティブになるため、メッセージ出力は、将来の起動のシーケンシャルPOSTコードの偏差の状態に基づいて変化することがない。UEFI BIOSファームウェア120は、オペレーティングシステム140に移行する前に、「偏差分析」ルーチンを行うかどうかの問い合わせをBMC110に送信する。BIOSファームウェア120とBMC110との間で偏差分析から特定の状況が確認されると、別のUEFI変数が有効になる。次いで、BMC110は、オペレーティングシステム140に移行するのではなく、サーバーの電源を入れ直して、偏差分析を行う。
【0047】
図4Bは、例示的なモジュールの偏差分析関数を示している。BMC110は、偏差の識別に基づいて偏差分析を開始する(434)。BMC110は、UEFI BIOS120がUEFI変数「Deviation Analysis」を設定するように要求する(436)。次いで、BMC110は、UEFI BIOS120から許可が与えられているかどうかをチェックする(438)。許可が与えられていない場合、BMC110は、UEFI BIOS120が許可を与えるかどうかをチェックし続ける(438)。許可が与えられた場合、BMC110は、サーバーの電源を入れ直す(440)。
【0048】
UEFI BIOS120は、BMC110からの要求に応じて偏差分析を開始するように、UEFI変数「偏差分析」を設定する(442)。次いで、UEFI BIOS120は、BMC110に偏差分析関数を開始する許可を与える(444)。次いで、UEFI BIOS120は、BMCがサーバーの電源を入れ直すのを待つ(446)。サーバー106がBMC110により開始された電源の入れ直しを開始すると(440)、POSTルーチンが開始し、UEFI BIOS120は、偏差分析の発生をフラッシュメモリ122内のSEL126に記録する(448)。次いで、UEFI BIOS120は、BMC110から受信した偏差分析から追加のメッセージを開示する(450)。UEFI BIOS120は、UEFI BIOS初期化シーケンス全体が再度動作されるため、電源の入れ直し後に追加のメッセージを開示する。UEFI変数「Deviation Analysis」が有効になっているため、UEFI BIOS POSTルーチンは、より有用なハードウェアコンポーネントの健全性状態(health status)、ソフトウェアデータ構造、ソフトウェア再試行カウンタ及び回復メカニズムデータを収集するようになる。POSTルーチンは、データを、人間が読み取り可能なデータ及び機械データを含む追加メッセージとして変換し、BMC110によってアクセス可能なフラッシュメモリ122等の物理的な宛先に転送される。
【0049】
次いで、UEFI BIOS120は、UEFI変数「偏差分析」を消去する(452)。次いで、UEFI BIOS120は、自動回復の場合には、BMC110が偏差回復を開始するのを待ち、手動介入の場合には、サーバー106の電源がオフになるのを待つ(454)。
【0050】
BMC110は、サーバー106を監視し、電源サイクルが開始された後にPOSTルーチンが開始されたかどうかを判断する(456)。POSTルーチンが開始されていない場合、BMC110は、POSTルーチンが開始されたかどうかを監視し続ける(456)。POSTルーチンが開始された場合、BMC110は、サーバーから偏差分析に関連するデータを収集する(458)。偏差分析のためのデータを収集するルーチンは、識別された潜在的な偏差のハードウェア及びソフトウェアを特定するものである。偏差分析ルーチンは、サーバー106のコンポーネントのハードウェア又はソフトウェアプロバイダーからの仕様及び推奨に基づいて、UEFI BIOSファームウェアの開発者によってプログラムされ得る。
【0051】
偏差分析は、BMC110によって検査され、POSTシーケンスが回復されて、POSTルーチンを任意の又は全ての識別された偏差に修復するようにできるかどうかを判定する(460)。この例では、管理者は、各偏差を個別に回復させるか、全ての偏差を同時に回復させるかを選択することができる。POSTシーケンスが偏差から回復できない場合、BMC110は、ネットワーク104を介してサービスステーション102上の管理ソフトウェアにアラーム又は警告を送信する(462)。次いで、BMC110は、手動介入が必要であるため、サーバーの電源をオフにする(464)。上述したように、サービスステーション102のソフトウェアは、サーバー106の技術的な検査及び修理をスケジュールし、並びに/又は、管理者に他の修復動作を決定する能力を提供することができる。偏差分析に基づいて偏差が対処され、したがってPOSTシーケンスが自動的に回復され得る場合、BMC110は、偏差回復プロセスを開始する(466)。
【0052】
サービスサブルーチン(この例では「送信状態(DeliverStatus)」と呼ばれる)は、組み込み分析を行い、親層のUEFI BIOSファームウェア120の任意の必須の初期化サービスルーチンに含まれ得る。この例では、送信状態サブルーチンが、UEFI BIOSファームウェア120のセキュアブートサービスルーチンのハードウェアデバイス検出サービスルーチンに追加される。送信状態サービスルーチンは、
図4BでUEFI「Deviation_Analysis」変数が真(true)(442)として設定されている場合にのみ機能する。従って、より多くのメッセージを開示するステップ(450)がUEFI BIOSファームウェア120によって実行された場合、送信状態サービスルーチンが実行される。送信状態サービスルーチンは、2つの目的を有する。第1に、送信状態サービスルーチンは、診断ルーチンを実行することにより、サーバーのハードウェアデバイスの健全性状態を収集する。第2に、送信状態ルーチンは、使用可能なソフトウェアメッセージの開示を判定し、次いでメッセージをホストメモリ領域又はBMC110によってアクセス可能なストレージデバイスのパーティション(例えば、フラッシュメモリ122)等のアクセス可能なメモリ宛先に保存する。
【0053】
偏差分析情報は、送信状態ルーチンにより出力されたソフトウェアメッセージに保存される。各メッセージは、人間が読み取り可能なスキーマを含む汎用ヘッダー、及び、偏差に関連する技術スキーマを含む複雑なペイロード(complex payload)を含む。この例示的なモジュールでは、汎用ヘッダーは、人間が読み取り可能なデータを有し、例示的なモジュールの偏差回復関数で容易に採用され得る共通スキーマを用いる。技術スキーマは、様々な長さと内容を有するカスタムメタデータを用いて作成され、特定のサービスルーチンの正確な状況を実行順に記述する。従って、技術スキーマは、偏差の根本的な原因の詳細な分析を実行するためのサービスエンジニアデータを提供する。
【0054】
図5は、
図4Bの開示メッセージステップ(450)内の偏差分析において、UEFI BIOSファームウェア120によって実行されたPOSTルーチンのソフトウェアサービスルーチン「SecureBoot_Start()」で実行された「DeliverStatus()」サービスルーチンの例のコードセグメント500である。この例では、セキュアブートは、POSTコード0xA0の受信によってトリガーされる。セキュアブートコードセグメント500は、送信状態サービスルーチンの2つの必須サービスルーチン、収集状態ルーチン510及び開示メッセージルーチン512にアクセスする。サービスルーチン510及び512は、シーケンシャルPOSTコードの偏差分析のための例示的な「DeliverStatus」ルーチン530内に組み込まれる。この例では、UEFI変数「偏差分析」が真の場合、ルーチンは、「Collect_Status_Of_Function_Call」(510)と呼ばれるサブルーチンに従って、特定の関数呼び出しに基づいてデバイスの健全性状態を収集する。関数呼び出しは、ゴールデンファイル124からのPOSTコードシーケンスによってサポートされたPOSTコード偏差識別を有する特定のサービスルーチンに基づいて書き込まれる。例えば、特定のハードウェアコンポーネントの関数呼び出しは、POSTコードに関連したハードウェアコンポーネントの健全性状態のレジスタの読み取りをサポートすることができる。収集された健全性状態は、特定のメモリ位置に保存される。この例では、特定の関数呼び出しサブルーチンは、サービスルーチン「Expose_Message_of_Function_Call」の実行を介して、JSONフォーマット等の読み取り可能なフォーマットで収集された健全性状態データが保存されることになる(512)。
【0055】
セキュアブート開始の開始点は、POSTルーチンがPOSTコード0xA0を出力することによって示される。送信状態ルーチン530は、ハードウェア検出ルーチンが、POSTルーチンにより出力されたPOSTコードとゴールデンファイルPOSTコードシーケンス内の対応するPOSTコードとの間に任意の偏差を判定した場合にのみアクティブである。送信状態ルーチン530は、UEFI変数Deviation_Analysis及びハードウェアデバイス検出のアドレスをロードする。これは、ルーチンをループバックし、偏差POSTコードに特定の関数呼び出しを行い、状態データを送信する。UEFI変数Deviation_Analysisが真として設定されると、送信状態ルーチン530は、関数呼び出しを再実行し、次いで偏差メッセージのデータ構造を作成する。
【0056】
例えば、メッセージ520が生成され、ホストメモリ、記憶装置又はBMCフラッシュ等の物理的な宛先に保存され得る。メッセージ520は、人間が読み取り可能なスキーマ522及び技術スキーマ524を含む。この例では、人間が読み取り可能なスキーマ522は、JSONフォーマットであり、偏差の定義、偏差の原因、回復が可能かどうか、提案された修復方法、及び、偏差の重大性を反映するリスク要因を含む。人間が読み取り可能なスキーマの情報は、特定のハードウェア又はソフトウェアコンポーネントに依存する特定の関数呼び出しにより出力される。この例の技術スキーマ524は、デバイスからの特定のメモリ割り当ての範囲からのレジスタダンプ、リソース割り当てデータ、追加のシーケンシャルメッセージ、機能設定、構成設定、及び、サービスルーチンによって確立されたデータ構造を含む。
【0057】
上述したように、サービスルーチン510及び512は、ハードウェアデバイスの健全性状態を収集し、ソフトウェア関数呼び出しのメッセージを開示する。サービスルーチンは、POST実行順序の本来の動作に干渉、又は、任意のUEFI変数を変更することがない。ハードウェアデバイスの健全性状態の収集(「Collect_Status_Of_FunctionCall」)510は、ハードウェアデバイスの健全性状態、ハードウェアデバイスのシステムリソース割り当て、及び、ソフトウェアデータ構造に関する関連技術情報を収集するように用いられる。他のサービスルーチン(「Expose_Message_Of_FunctionCall」)512は、収集状態サービスルーチン510により収集されたデータを含むメッセージをアクセス可能な宛先に開示又は保存するように用いられる。例えば、
図5のハードウェアデバイス検出サービスルーチンは、必須のサービスルーチンであるため、POSTルーチン中に偏差分析が確実に行なわれるように、送信状態ルーチンが追加される。
【0058】
送信状態サブルーチンは、
図5のセキュアブートサービスルーチンのハードウェアデバイス検出サービス等の任意の必須のUEFI BIOSファームウェアサービスルーチンに追加され、全ての異なる実行パスで実行され得る。または、送信状態サブルーチンは、DIMMデバイス検出サブルーチンを呼び出すプラットフォームメモリ初期化サービスルーチンに追加され得る。DIMM検出の状態は、代替のPOSTパスをトリガーし得る。検出サブルーチンからDIMMデバイスが検出されない場合、プラットフォームのメモリサイズが少ないと報告されることになる。その結果、大きなメモリを必要とする初期化ルーチンが変更され、代替のPOSTパスとなる。送信状態ルーチンは、デバイスの健康状態をPOSTコードからの偏差の結果として、送信することができる。
【0059】
図6は、
図5のセキュアブートサービスルーチンの一部である送信状態ルーチンに関連する関数呼び出しサービスの収集状態ルーチン510のフロー図である。SecureBoot_Startルーチンは、通常のPOST実行パス中に1回、ハードウェアデバイス検出サービスルーチンを行う。偏差分析サイクルでは、関数呼び出しサービスの収集状態ルーチン510は、POST診断実行パス内のハードウェアデバイス検出サービスルーチンを再実行する。アドレスがパスされ、デバイス検出サービスルーチンが関数呼び出しルーチンにアクセスできるようになる。従って、関数呼び出しサービスの収集状態ルーチン510は、まず、その親層の送信状態ルーチン(Deliver Status routine)の入力パラメータから関数呼び出しルーチンのアドレスを取得する(610)。次いで、ルーチンは、データバッファを初期化する(612)。次いで、ルーチンは、関数呼び出しを再実行する(614)。
【0060】
収集状態ルーチンは、偏差が発生したかどうかのパラメータを検証する関数呼び出しルーチンに退出する(620)。パラメータに基づいて、ルーチンは、診断分析のために関数呼び出しを再実行する必要があるかどうかを判定し、従って、追加の診断データを収集する(622)。再実行の必要がない場合、ルーチンは、通常のPOST実行パスに従う(624)。次いで、関数呼び出しルーチンは、関数呼び出しの状態を通常に戻し(626)、POSTパスを続ける(628)。
【0061】
関数呼び出しルーチンの再実行が必要な場合、ルーチンは、診断実行パスを開始する(630)。ルーチンは、入力パラメータからデータバッファのアドレスを取得する(632)。次いで、ルーチンは、ハードウェア診断を実行し、偏差を発生させる特定のハードウェア又はソフトウェアに従ってヘルスレジスタの状態を検証する(634)。ルーチンは、分析に基づいて偏差が回復可能である場合、回復可能フラグを設定する(636)。次いで、ルーチンは、ハードウェアレジスタを読み取り、ハードウェアに関連したリソース割り当てデータを取り込む(638)。次いで、ルーチンは、偏差の原因、リスク要因、偏差が回復可能かどうか、推奨される回復方法、及び、レジスタと他のデータソースからの収集の他の内容をデータバッファに書き込む(640)。次いで、ルーチンは、偏差の原因、リスク要因、偏差が回復可能かどうか、推奨される回復データ方法を、人間が読み取り可能なスキーマとして、人間が読み取り可能なフォーマットで転送する(642)。次いで、ルーチンは、他の選択されたデータを技術スキーマとして転送する(644)。
【0062】
図7は、関数呼び出しサービスの開示メッセージルーチン512のフロー図である。開示メッセージルーチン512は、まず、収集状態ルーチン510によって設定された入力パラメータからデータバッファのアドレスを取得する(710)。次いで、ルーチンは、メッセージ出力の宛先を識別する(712)。メッセージは、宛先を決定することによりハードウェアの診断ルーチンを再実行するように保存される(714)。次いで、ルーチンは、宛先を物理ストレージ(720)、フラッシュメモリ122(722)、又は、システムメモリ等の物理メモリ(724)の何れかに設定する。次いで、ルーチンは、Redfish又はIPMI等のデータ転送プロトコルを初期化する(726)。次いで、ルーチンは、データ転送プロトコルを介してデータバッファを指定された宛先に転送する(728)。
【0063】
図4Bの診断ルーチンでは、BMC110は、開示メッセージサービスルーチン512を実行しているUEFI BIOSファームウェア120から受信した
図5に示すメッセージ520内で人間が読み取り可能なスキーマ522のコンテンツを検索する。BMC110は、悪影響を及ぼす分析が、人間が読み取り可能なスキーマ内のデータから回復可能であるかどうかを識別することができる(460)。次いで、このデータに基づいて、BMC110は、BMC110が例示的なモジュールの「偏差回復」関数を開始すべきか、アラームメッセージをサーバー管理ソフトウェアに送信してサーバーをフリーズさせるべきかを決定する。
【0064】
偏差回復機構は、
図5のUEFI BIOSファームウェア特定の関数呼び出しサービスルーチン510及びサポートされているハードウェアデバイスの完全性方法(integrity method)である。この例では、UEFI BIOSファームウェア120の開発者は、適切な回復方法を組み合わせて関数呼び出しを指定する。指定された関数呼び出しは、「DeliverStatus」サービスルーチン500が既にインストールされている。回復方法が実行を終了すると、管理者/ITエンジニアは、回復機構が偏差を元に戻し(reverse)、POSTルーチンを通常の操作に戻し、これにより正確なPOSTコードをPOSTコードシーケンスに出力するかどうかを観察する。この例では、回復方法は、ファームウェア開発者によって開発された各タイプのハードウェアコンポーネント用にカスタマイズされた設計である。同様の関数呼び出しは、POSTルーチンにより初期化された異なるソフトウェアの回復方法が組み合わせられている可能性がある。
【0065】
図8は、異なる関数呼び出しにより回復され得る、異なるハードウェア及びソフトウェアコンポーネントのいくつかの例示的な回復方法の表800である。
図8は、サーバー106の発見可能なハードウェア又はソフトウェアの異なる障害を表にした一覧表810を含む。別の一覧表820は、サーバー106により実行されたサーバー管理ソフトウェアによって実行され得る回復機構を表にしている。
【0066】
偏差回復を行うには、まず、
図4Bの偏差分析プロセスで決定された自動回復又は手動回復のポリシー設定を参照する。自動ポリシー設定は、サーバー106上のUEFI BIOSファームウェア120及びBMC110が、POSTルーチン上で識別された偏差の影響を自動的に元に戻すことができる。これは、ファームウェア開発者により設定され得る
図8の表に示された設定の動作を含み得る。手動ポリシー設定は、ハードウェアコンポーネントの交換若しくは更新、又は、ソフトウェアの再起動を技術者に警告する等の所定のスケジュールによって手動で介入できるようにする。ポリシー設定は、
図1のサービスステーション102等のリモート管理ステーション上のサーバー管理ソフトウェアを介して設定可能である。ポリシー設定は、POSTルーチンの例示的なモジュール用にBMC110に送信される。
【0067】
自動偏差回復関数は、UEFI BIOSファームウェア120に組み込まれた回復機構、又は、BMC110により行なわれた回復機構を用いることによって偏差回復プロセスを開始するBMC110を含む。自動回復機構は、サーバー106がPOSTシーケンスを修正することを可能にするが、偏差を完全になくすには有効でない可能性がある。従って、メッセージ内の技術スキーマの手動検査をさせ、よって、全てのサーバー診断への手動介入をスケジュールすることが、技術者に求められる可能性がある。
【0068】
図4Cに示されるように、偏差回復は、BMC110により開始される(466)。BMC110は、まず、送信状態ルーチン500により出力されたメッセージから、回復が手動であるか又は自動であるかを判定する(470)。回復が手動である場合、BMC110は、管理者により手配されたサーバーメンテナンススケジュールに基づいて選択された時間に回復プロセスをスケジューリングするようにする(472)。回復が自動である場合、BMC110は、回復プロセスがBMC110により行なわれるかどうかを判定する(474)。回復がBMC110により行なわれる場合、BMC110は、ソフトウェアの特定のハードウェアに従って回復プロセスを実行する(476)。例えば、BMC110は、物理ハードウェアインターフェースをリセットし、有効又は無効にすることができる。BMC110は、ハードウェア論理を安定した状態に強制的に戻すために、電源をオン及びオフにすることができる。BMC110は、NVMe管理インターフェースを用いてNVMeデバイスをリセットすることができる。
【0069】
回復がBMCにより行なわれない場合、又は、BMCが回復プロセスを完了すると、ルーチンは、回復がUEFI BIOSファームウェア120により行なわれるかどうかを判定する(478)。回復がUEFI BIOSファームウェアにより行なわれない場合、ルーチンは、サーバーの電源を入れ直す(480)。回復がUEFI BIOSファームウェア120により行なわれる場合、BMC110は、UEFI BIOSがUEFI変数「Deviation_Recovery」を設定するように要求する(482)。BMC110は、UEFI BIOS120から許可を受信したかどうかを監視する(484)。許可が受信されない場合、BMC110は、UEFI BIOS120がUEFI偏差回復変数を設定するように要求し続ける(482)。BMC110がUEFI BIOS120から許可を受信した場合、BMC110は、サーバーの電源を入れ直す(480)。
【0070】
UEFI BIOS120がBMC110から要求を受信すると(482)、UEFI BIOS120は、UEFI変数「Deviation_Recovery」を設定する(486)。次いで、UEFI BIOS120は、BMC110に偏差回復を開始する許可を与える(488)。次いで、UEFI BIOS120は停止し、BMCがサーバーの電源を入れ直すのを待つ(490)。
【0071】
電源の入れ直しが始まると、UEFI BIOSファームウェア120は、フラッシュメモリ122に保存されたSEL126に偏差回復を記録する(492)。次いで、UEFI BIOSファームウェア120は、回復機構を実行する(494)。例えば、BIOSファームウェアは、I2Cホストコントローラにデータ/クロック信号をLowに強制的に引き下げさせ、スレーブデバイスがスレーブデバイス自体を元のアイドル状態に強制的にリセットすることができる。別の例は、BIOSファームウェアがホットプラグ対応デバイスの電源をオン及びオフにすることである。回復機構の完了後、UEFI BIOS120は、UEFI変数「Deviation_Recovery」を消去する(496)。次いで、UEFI BIOSファームウェア120は、サーバーを再起動する(498)。
【0072】
図6~
図7は、
図5の送信状態ルーチンにより実行される異なるサービスルーチンの例示的な機械可読命令を表している。この例では、機械可読命令は、(a)プロセッサ、(b)コントローラ、及び/又は、(c)1つ以上の他の適切な処理デバイスによって実行されるアルゴリズムを含む。アルゴリズムは、フラッシュメモリ、CD-ROM、フロッピー(登録商標)ディスク、ハードドライブ、デジタルビデオ(バーサタイル)ディスク(DVD)、又は、その他のメモリデバイス等の有形媒体に保存されたソフトウェアで実施され得る。しかしながら、当業者は、アルゴリズム全体及び/又はその一部が、代替的に、プロセッサ以外の装置により実行される、及び/又は、周知の方法(例えば、特定用途向け集積回路[ASIC]、プログラマブルロジックデバイス[PLD]、フィールドプログラマブルロジックデバイス[FPLD]、フィールドプログラマブルゲートアレイ[FPGA]、ディスクリートロジック等によって実装され得る)でファームウェア又は専用ハードウェアで実施され得ることを容易に理解するであろう。例えば、インターフェースのコンポーネントの一部又は全てが、ソフトウェア、ハードウェア及び/又はファームウェアによって実装され得る。また、フローチャートによって表された機械可読命令の一部又は全ては、手動で実装され得る。さらに、例示的なアルゴリズムは、
図6~
図7に示されたフローチャートを参照して説明されているが、当業者は、例示的な機械可読命令を実装する多くの他の方法が代替的に用いられ得ることを容易に理解するであろう。例えば、ブロックの実行順序が変更されてもよく、及び/又は、記述されたブロックの一部が変更、削除若しくは組み合わせられてもよい。
【0073】
本願で使用されているように、「コンポーネント」、「モジュール」、「システム」、「インターフェース」等の用語は、一般に、コンピュータ関連のエンティティ、ハードウェア(例えば、回路)、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、又は、1つ以上の特定の機能を有する動作機械に関連するエンティティを指している。例えば、コンポーネントは、プロセッサ(例えば、デジタル信号プロセッサ)上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び/又は、コンピュータであってもよいが、これらに限定されない。例として、コントローラ上で実行されるアプリケーションと、コントローラとの両方は、コンポーネントであってもよい。1つ以上のコンポーネントは、プロセス及び/又は実行スレッド内に存在してもよく、コンポーネントは、1つのコンピュータ上にローカライズされ、及び/又は、2つ以上のコンピュータ間に分散されてもよい。また、「デバイス」は、特別に設計されたハードウェアの形態、ハードウェアが特定の機能を実行可能なソフトウェアの実行によって特化された汎用ハードウェアの形態、コンピュータ可読媒体に記憶されたソフトウェアの形態、又は、これらの組み合わせの形態で提供され得る。
【0074】
本明細書で使用する用語は、特定の実施形態のみを説明するものであって、本発明を限定するものではない。本明細書では、単数形の「一つの(a)」、「一つの(an)」及び「その(the)」は、文脈によって他の明確な指示がされない限り、複数形も含む。さらに、「含む」、「有する」又はこれらの変形は、詳細な説明及び/又は特許請求の範囲で使用される限りにおいて、「備える」という用語と同様に包括的であることが意図される。
【0075】
特に定義されない限り、本明細書で使用される全ての用語(技術的及び科学的用語を含む)は、当業者によって一般的に理解されるのと同じ意味を有する。さらに、一般的に使用される辞書に定義されている用語は、関連技術の文脈における意味と一致する意味を有するものと解釈されるべきであり、本明細書で明示的に定義されていない限り、理想化された又は過度に形式的な意味で解釈されない。
【0076】
本発明の様々な実施形態について上述したが、それらは限定ではなく例として提示されたものであることを理解されたい。本発明を1つ以上の実施形態に関して詳細に述べてきたが、本明細書及び図面を読み、理解することにより、他の当業者により同等の修正及び変更が生じ得る。また、本発明の特定の特徴は、複数の実施形態のうち何れかのみに関連して述べられているが、このような特徴は、所定の又は特定の用途に必要で利点がある1つ以上の他の実施形態の他の特徴と組み合わせられてもよい。従って、本発明の幅及び範囲は、上記の実施形態の何れかによって限定されるべきではない。むしろ、本発明の範囲は、添付の特許請求の範囲及びその均等物に従って定義されるべきである。
【符号の説明】
【0077】
100…リモートシステム
102…サービスステーション
104…ネットワーク
106…サーバー
108…技術者
110…ベースボード管理コントローラ(BMC)
112…ネットワークインターフェースコントローラ
120…基本入出力システム(Basic Input Output;BIOS)ファームウェア
122…フラッシュメモリ
124…ゴールデンファイルイメージ
126…システムエラーログ(SEL)
130…ハードウェアコンポーネント(CPU)
132…ハードウェアコンポーネント
134…ソフトウェアプロセス
140…オペレーティングシステム(OS)
200…プロセス図
210…セキュリティフェーズ212…事前拡張可能ファームウェアインタフェース(pre-extensible framework interface;EFI)初期化環境(PEI)フェーズ
214…ドライバ実行環境(driver execution environment;DXE)フェーズ
216…ブートデバイス選択(boot device selection;BDS)フェーズ
218…過渡システム負荷(transient system load;TSL)フェーズ
220…事前検証(pre-verifier)
222…Ucodeパッチ
224…セキュリティルーチン
230…UPI/XGMIトポロジ発見プロセス
232…開始メモリ参照コードプロセス
234…初期プラットフォームポート(initial platform porting)プロセス
240…デバイスドライバ、バスドライバ又はサービスドライバ等の1セットのドライバ
242…PCIスキャン及びリソース割り当てプロセス
244…起動及びランタイムサービスの確立プロセス
246…ACPI及びSMBIOSテーブルのパブリッシュプロセス
250…ブートディスパッチャプロセス
252…イネーブルセキュアブートプロセス
254…ロードブートローダプロセス
260…過渡オペレーティングシステムブートローダプロセス
262…オペレーティングシステム移行プロセス
270…POSTコード
272…第1の偏差
274…第2の偏差
300…プロセス図
310…一連のメッセージ
312…第1のメッセージ
314…第2のメッセージ
402~434…ステップ
436~466…ステップ
470~498…ステップ
500…コードセグメント
510…収集状態ルーチン
512…開示メッセージルーチン
520…メッセージ
522…人間が読み取り可能なスキーマ
524…技術スキーマ
530…「DeliverStatus」ルーチン
610~614…ステップ
620~644…ステップ
710~714…ステップ
720~728…ステップ
800…表
810、820…一覧表