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

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

▶ 廣逹電腦股▲ふん▼有限公司の特許一覧

特許7581295APIを用いたBMCへのEFI変数の格納
<>
  • 特許-APIを用いたBMCへのEFI変数の格納 図1
  • 特許-APIを用いたBMCへのEFI変数の格納 図2
  • 特許-APIを用いたBMCへのEFI変数の格納 図3
  • 特許-APIを用いたBMCへのEFI変数の格納 図4
  • 特許-APIを用いたBMCへのEFI変数の格納 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-01
(45)【発行日】2024-11-12
(54)【発明の名称】APIを用いたBMCへのEFI変数の格納
(51)【国際特許分類】
   G06F 8/65 20180101AFI20241105BHJP
   G06F 9/4401 20180101ALI20241105BHJP
【FI】
G06F8/65
G06F9/4401
【請求項の数】 8
(21)【出願番号】P 2022157237
(22)【出願日】2022-09-30
(65)【公開番号】P2023116381
(43)【公開日】2023-08-22
【審査請求日】2022-09-30
(31)【優先権主張番号】17/668,253
(32)【優先日】2022-02-09
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】508018934
【氏名又は名称】廣達電腦股▲ふん▼有限公司
【氏名又は名称原語表記】Quanta Computer Inc.
【住所又は居所原語表記】No.188,Wenhua 2nd Rd.,Guishan Dist.,Taoyuan City 333,Taiwan
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】林 ▲イク▼廷
(72)【発明者】
【氏名】林 友涵
【審査官】坂庭 剛史
(56)【参考文献】
【文献】中国特許出願公開第113064625(CN,A)
【文献】中国特許出願公開第112003826(CN,A)
【文献】米国特許出願公開第2019/0050351(US,A1)
【文献】特開2013-156993(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/65
G06F 9/4401
(57)【特許請求の範囲】
【請求項1】
コンピューティングシステムであって、
1つ以上のデータプロセッサと、
前記1つ以上のデータプロセッサ上で実行されると、前記1つ以上のデータプロセッサに操作を実行させる命令を含むコンピュータ可読記憶媒体とを備え、
前記操作は、
アプリケーションプログラミングインターフェース(API)を用いて、変更された基本入出力システム(BIOS)設定を受信することであって、前記変更されたBIOS設定は、少なくとも1つのExtensible Firmware Interface(EFI)変数を記述する属性を含む、ことと、
前記変更されたBIOS設定を、ベースボード管理コントローラ(BMC)内の未来設定データ構造内に格納することと、
前記BMCに格納された現在設定データ構造を提供することと、
前記現在設定データ構造の少なくとも一部を前記変更されたBIOS設定に置き換えて、変更された現在設定データ構造を提供することと、
前記変更された現在設定データ構造を前記コンピューティングシステムに適用することと、
前記コンピューティングシステムのBIOSが、第1の起動を実行しているかどうかを判定することと、
前記BIOSが前記第1の起動を実行しているとの判定に少なくとも部分的に基づいて、前記BIOSが、属性レジストリを前記BMCに送信することと、を含む、
コンピューティングシステム。
【請求項2】
前記属性レジストリは、前記少なくとも1つのEFI変数を記述する前記属性の定義を含む、
請求項に記載のコンピューティングシステム。
【請求項3】
前記少なくとも1つのEFI変数を記述する前記属性のタイプキーは、文字列である、
請求項に記載のコンピューティングシステム。
【請求項4】
前記少なくとも1つのEFI変数を記述する前記属性の定義はデフォルト値を含まず、一般的なBIOS設定を記述する属性の定義はデフォルト値を含む、
請求項に記載のコンピューティングシステム。
【請求項5】
前記命令を実行することは、前記1つ以上のデータプロセッサに操作をさらに実行させ、
前記操作は、
前記EFI変数を前記現在設定データ構造に格納することをさらに含む、
請求項1に記載のコンピューティングシステム。
【請求項6】
前記EFI変数を前記現在設定データ構造に格納することは、
前記EFI変数をバイナリ構造としてパックすることと、
前記バイナリ構造を文字列にエンコードすることと、
前記文字列を前記属性の値として前記現在設定データ構造内に格納することと、を含む、
請求項に記載のコンピューティングシステム。
【請求項7】
前記現在設定データ構造の少なくとも一部を、前記変更されたBIOS設定に置き換えることは、
前記未来設定データ構造から前記属性の値である文字列を受信することと、
前記文字列をバイナリ構造にデコードすることと、
前記バイナリ構造がEFI変数としてBIOSに適用可能であることを確認することと、
前記バイナリ構造がEFI変数として前記BIOSに適用可能であることに基づいて、前記現在設定データ構造の少なくとも一部を前記未来設定データ構造内の前記文字列と置き換えることと、を含む、
請求項1に記載のコンピューティングシステム。
【請求項8】
コンピューティングシステムによって実行される方法であって、
アプリケーションプログラミングインターフェース(API)を用いて、少なくとも1つのExtensible Firmware Interface(EFI)変数を記述する属性を含む変更された基本入出力システム(BIOS)設定を受信するステップと、
前記変更されたBIOS設定を、ベースボード管理コントローラ(BMC)内の未来設定データ構造内に格納するステップと、
前記BMCに格納された現在設定データ構造を提供するステップと、
前記現在設定データ構造の少なくとも一部を前記変更されたBIOS設定に置き換えて、変更された現在設定データ構造を提供するステップと、
前記変更された現在設定データ構造を前記コンピューティングシステムに適用するステップと、
前記コンピューティングシステムのBIOSが第1の起動を実行しているかどうかを判定するステップと、
前記BIOSが前記第1の起動を実行しているとの判定に少なくとも部分的に基づいて、前記BIOSが、属性レジストリを前記BMCに送信するステップと、を含む、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ネットワークコンピューティングシステムに関し、特に、拡張可能ファームウェアインタフェース(EFI)変数を用いたネットワークコンピューティングシステムの構成に関する。
【背景技術】
【0002】
コンピューティングシステム(例えば、サーバー)は、ネットワークベースのシステム又はデータセンター等の需要の高いアプリケーションに大量に用いられている。クラウドコンピューティングアプリケーションの出現により、データセンターの需要が高まっている。データセンターには、データを格納し、リモート接続されたコンピューターデバイスのユーザーがアクセスするアプリケーションを実行する多数のサーバーがある。一般的なデータセンターは、付随する電源(attendant power)及び通信接続を備えた物理ラック構造を有する。各ラックは、複数のコンピューティングサーバーとストレージサーバーを収容することができる。一般的には、各サーバーは、プロセッサ、メモリデバイス、ネットワークインターフェースカード、電源装置及び他の専用ハードウェア等のハードウェアコンポーネントを含む。サーバーは、通常、ハードウェアコンポーネントと、電源やファン等のサポートコンポーネントとの動作を管理するベースボード管理コントローラー(BMC)を含む。BMCは、ネットワークを介して、運用データを、ラックのサーバーを管理する中央管理ステーションに送信する。BMCは、サーバーの中央処理装置(CPU)がサーバーの動作を監視する必要性を軽減する。データセンター又はデータセンター内のコンピューティングシステムのダウンタイムが懸念されている。BMCは、コンピューティングシステムを監視するだけでなく、コンピューティングシステムの起動を管理するようにさらに強化され得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
拡張可能ファームウェアインタフェース(EFI)変数を用いたネットワークコンピューティングシステムの構成を提供する。
【課題を解決するための手段】
【0004】
実施形態という用語及び同様の用語(例えば、実施、構成、態様、例及びオプション等)は、本開示及び以下の請求項の発明の全てを広く指すことを意図している。これらの用語を含む記載は、本明細書に記載された発明を限定するものではなく、以下の請求項の意味又は範囲を限定するものでもないことを理解されたい。本明細書でカバーされる本開示の実施形態は、本概要でなく、以下の請求項によって定義される。この概要は、本開示の様々な態様の高レベルの概要であり、以下の詳細な説明のセクションでさらに説明される概念のいくつかを紹介する。この概要は、請求された発明の重要な又は本質的な特徴を特定することを意図していない。また、この概要は、請求された発明の範囲を決定するために単独で用いられることを意図していない。この発明は、本開示の全明細書の適切な部分、一部又は全ての図面、及び、各請求項を参照することによって理解されるべきである。
【0005】
本開示の特定の態様によれば、システムは、1つ以上のデータプロセッサと、1つ以上のデータプロセッサ上で実行されると、1つ以上のデータプロセッサに操作を実行させる命令を含む非一時的なコンピュータ可読記憶媒体と、を含む。この操作は、アプリケーションプログラミングインターフェース(API)を用いて変更された基本入出力システム(BIOS)設定を受信することを含む。変更されたBIOS設定は、少なくとも1つのExtensible Firmware Interface(EFI)変数を記述する属性を含む。この操作は、変更されたBIOS設定を、ベースボード管理コントローラ(BMC)内の未来設定データ構造(future setting data structure)内に格納することをさらに含む。この操作は、BMCに格納された現在設定データ構造(current setting data structure)を提供することをさらに含む。この操作は、現在設定データ構造の少なくとも一部を、変更されたBIOS設定に置き換えて、変更された現在設定データ構造を提供することをさらに含む。次いで、変更された現在設定データ構造がシステムに適用される。
【0006】
一実施形態では、EFI変数は、Internet Small Computer System Interface(iSCSI)デバイス、ユニファイドEFI(unified EFI;UEFI)セキュアブート設定、ブータブルデバイスの起動順序、TLS認証、及び/又は、ネットワークVLAN設定の属性を記述する。一実施形態では、命令の実行は、1つ以上のデータプロセッサに操作をさらに実行させ、BIOSが第1の起動を実行しているかどうかを判定し、BIOSが第1の起動を実行しているとの判定に少なくとも部分的に基づいて、BIOSが、属性レジストリをBMCに送信することをさらに含む。実施形態では、属性レジストリは、少なくとも1つのEFI変数を記述する属性の定義を含む。実施形態では、少なくとも1つのEFI変数を記述する属性のタイプキーは、文字列である。実施形態では、少なくとも1つのEFI変数を記述する属性の定義は、デフォルト値を含まず、一般的なBIOS設定を記述する属性の定義は、デフォルト値を含む。
【0007】
一実施形態では、APIはRedfish APIである。一実施形態では、未来設定データ構造及び現在設定データ構造は、JavaScript(登録商標) Object Notation(JSON)フォーマットである。一実施形態では、命令の実行は、1つ以上のデータプロセッサに、EFI変数を現在設定データ構造に格納することを含む操作をさらに実行させる。一実施形態では、EFI変数を現在設定データ構造に格納することは、EFI変数をバイナリ構造としてパックし、バイナリ構造を文字列にエンコードし、現在設定データ構造内に、属性の値として文字列を格納することを含む。一実施形態では、EFI変数を現在設定データ構造に格納することは、バイナリ構造をエンコードする前にバイナリ構造を圧縮することをさらに含む。一実施形態では、バイナリ構造は、Base64を用いてエンコードされる。
【0008】
一実施形態では、BMCに格納された現在設定データ構造の少なくとも一部を、未来設定データ構造からの変更されたBIOS設定に置き換えることは、未来設定データ構造から属性の値である文字列を受信することを含む。次いで、文字列は、バイナリ構造にデコードされる。現在設定データ構造の少なくとも一部は、バイナリデータ構造がEFI変数としてBIOS内に適用可能であることに基づいて、未来設定データ構造内の文字列に置き換えられる。一実施形態では、BMCに格納された現在設定データ構造の少なくとも一部を、未来設定データ構造からの変更されたBIOS設定に置き換える操作は、文字列をデコードした後にバイナリ構造を解凍することをさらに含む。一実施形態では、バイナリ構造は、Base64を用いてデコードされる。
【0009】
一実施形態では、現在設定データ構造の少なくとも一部を、変更されたBIOS設定に置き換えることは、BIOSパワーオンセルフテスト(POST)中に実行される。一実施形態では、システムはサーバーである。一実施形態では、システムは、少なくとも1つのサーバーを含むデータセンターである。一実施形態では、現在設定データ構造、未来設定データ構造又は属性レジストリの何れか1つが、BIOSのユニファイド拡張可能ファームウェアインタフェース(Unified Extensible Firmware Interface;UEFI)ヒューマンインターフェイスインフラストラクチャ(human interface infrastructure;HII)データベースから生成される。一実施形態では、少なくとも1つのサーバーは、第1のサーバー及び第2のサーバーを含み、命令の実行は、1つ以上のデータプロセッサに、第1のサーバーの現在設定データ構造及び第1のサーバーの関連する属性レジストリを第2のサーバーに移植することを含む操作をさらに実行させる。
【0010】
本開示の特定の態様によれば、コンピューティングシステムによって実行される方法は、アプリケーションプログラミングインターフェース(API)を用いて、変更された基本入出力システム(BIOS)設定を受信することを含む。変更されたBIOS設定は、少なくとも1つのExtensible Firmware Interface(EFI)変数を記述する属性を含む。変更されたBIOS設定は、ベースボード管理コントローラ(BMC)内の未来設定データ構造内に格納される。BMCに格納された現在設定データ構造が提供される。現在設定データ構造の少なくとも一部が、変更されたBIOS設定に置き換えられ、変更された現在設定データ構造を提供する。変更された現在設定データ構造は、コンピューティングシステムに適用される。
【0011】
一実施形態では、未来設定データ構造及び現在設定データ構造は、JavaScript(登録商標) Object Notation(JSON)フォーマットである。一実装形態では、本方法は、システムのBIOSが第1の起動を実行しているかどうかを判定することをさらに含む。属性レジストリは、BIOSが第1の起動を実行しているとの判定に少なくとも部分的に基づいて、BIOSによってBMCに送信される。
【0012】
上述した概要は、本開示の各実施形態又は全ての態様を表すことを意図していない。むしろ、上述した概要は、本明細書に記載された新規な態様及び特徴のいくつかの例を提供するに過ぎない。本開示の上述した特徴及び利点、並びに、他の特徴及び利点は、添付の図面及び添付の特許請求の範囲と関連して、本発明を実施するための代表的な実施形態及び態様についての以下の詳細な説明から容易に明らかとなるであろう。本開示の追加の態様は、以下に簡単な説明が提供される図面を参照してなされる様々な実施形態の詳細な説明を考慮して、当業者には明らかであろう。
【0013】
本開示並びにその利点及び図面は、例示的な実施形態の以下の説明及び添付の図面からよりよく理解されるであろう。これらの図面は、例示的な実施形態のみを示しており、従って、様々な実施形態又は特許請求の範囲を限定するものと見なされるべきではない。
【図面の簡単な説明】
【0014】
図1】本開示のある態様による、コンピューティングシステムのブロック図である。
図2】本開示の特定の態様による、ブート設定を格納するステップを示すフロー図である。
図3】本開示の特定の態様による、コンピューティング環境においてブート設定を適用するステップを示すフロー図である。
図4】本開示の特定の態様による、BIOS POST中に実行されるステップを示す第1のフロー図である。
図5】本開示の特定の態様による、BIOS POST中に実行されるステップを示す第2のフロー図である。
【発明を実施するための形態】
【0015】
現在のサーバーでは、基本入出力システム(BIOS)設定の格納は、ブート設定の集中管理に有益であり得る。格納されたBIOS設定は、変更、保存(preserved)、又は、1つのコンピューティングデバイスから他のコンピューティングデバイスに移植されることができる。現在、一般的なBIOS設定のみが現在のサーバーに格納されることができる。一般的なBIOS設定は、通常、例えば有効又は無効の値等のバイナリ値を取ることができる変数である。これらの一般的なBIOS設定は、静的変数である。これらの一般的なBIOS設定は、サーバーに関連付けられたBMCに格納され得る。しかしながら、BIOS設定は、一般的なBIOS設定以外の変数の設定を含む。例えば、EFI変数は、設定、保存又は移植される必要があり得るが、EFI変数の動的な性質により、EFI変数はBMCに格納されない。本開示の実施形態は、一般的なBIOS設定と同様の方法でEFI変数を格納するシステム及び方法を提供する。本開示の実施形態は、より完全なBIOSファームウェアを移植する能力を可能にし、データセンター全体のBIOS設定の管理を向上させることによって、コンピューティングシステム及びコンピューティングインフラストラクチャを向上させる。
【0016】
添付の図面を参照しながら様々な実施形態を説明するが、同様の符号は全体を通して同様の又は同一の要素を示すのに用いられる。図面は、単に本開示の態様及び特徴を説明するためのものであり、縮尺通りに描かれるとは限らない。本開示の特定の態様及び特徴の十分な理解を提供するために、多数の特定の詳細、関係及び方法が示されているが、当業者には、これらの態様及び特徴が1つ以上の特定の詳細無しに、他の関係とともに、又は、他の方法を用いて行い得ることが理解できるであろう。いくつかの例では、周知の構造又は動作は、説明のために詳細に記述されていない。本明細書に開示された様々な実施形態は、必ずしも描かれた動作又は事象の順序に限定されるものではなく、いくつかの動作は、異なる順序及び/又は他の動作若しくは事象と同時に起こり得る。本開示の特定の態様及び特徴を実施するために、全ての描かれた動作又は事象が必ずしも必要とされるわけではない。
【0017】
詳細な説明の目的上、特に断りの無い限り、適切な場合には、単数形は複数形を含み、複数形は単数形を含む。「含む」という用語は、「制限無く含む」ことを意味する。また、例えば、「約(about)」、「ほとんど(almost)」、「実質的に(substantially)」、「おおよそ(approximately)」等の近似の用語は、ここでは、例えば「…で(at)」、「…近くで(near)」、「…に近接して(nearly at)」、「…の3~5%内で」、「製造誤差の許容範囲内で」、又は、これらの任意の論理的組み合わせの意味を含むことができる。同様に、「垂直」又は「水平」という用語は、それぞれ垂直又は水平方向の「3~5%以内」を追加的に含むことを意図している。また、「上」、「下」、「左」、「右」、「上方」及び「下方」等の方向の用語は、参照図に描かれているのと同等の方向、オブジェクト(複数可)又は要素(複数可)に一般的に用いられる位置等のように、参照されているオブジェクト又は要素から文脈的に理解される方向、又は、本明細書に別途記載される方向と関連付けられることを意図している。
【0018】
図1に示すように、コンピューティングシステム100の構成要素のブロック図が提供されている。コンピューティングシステム100は、サーバーであり得るが、任意の適切なコンピューターデバイスが、本明細書で開示される原理を組み込むことができる。コンピューティングシステム100は、回路基板102を含む。回路基板102は、1つのマザーボード、又は、1つ以上の通信ケーブルで相互接続された複数のマザーボードとすることができる。回路基板102には、CPU104、ランダムアクセスメモリ(RAM)モジュール106、BMC108、BIOS110、グラフィック処理ユニット(GPU)112、及び/又は、入出力(I/O)ポート114が搭載される。
【0019】
図1には、コンピューティングシステム100の各構成要素のうち1つが示されているが、コンピューティングシステム100は、これらの各構成要素のうち1つ以上をサポートすることができる。例えば、CPU104は、1つ以上のCPU(例えば、2つのCPU、3つのCPU、4つのCPU、6つのCPU等)を表すことができる。同様に、RAMモジュール106は、複数のRAMモジュール(例えば、複数のデュアルインラインメモリモジュール(DIMM)、例えば、2つのDIMM、4つのDIMM、8つのDIMM等)を表すことができる。GPU112は、専用プロセッサ機能に提供され得る。いくつかの実施形態では、専用機能は、フィールドプログラマブルゲートアレイ(FPGA)及び/若しくはコンプレックスプログラマブルロジックデバイス(CPLD)、又は、コンピューティングシステム100に設けられた拡張カードによって提供される。
【0020】
CPU104は、RAMモジュール106にアクセスすることができる。CPU104は、プラットフォームコントローラハブ又は回路基板102のチップセットに通信可能に結合することができる。回路基板102のチップセットは、例えば、シリアルアドバンストテクノロジーアタッチメント(SATA)デバイス、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)デバイス、ネットワークインターフェースカード(NIC)、リダンダントアレイオブインエクスペンシブディスクズ、(RAID)カード、小型コンピュータシステムインターフェース(SCSI)、FPGAカード、GPU112等の通信規格へのアクセスを提供することができる。
【0021】
いくつかの実施形態では、GPU112及び/又はビデオインターフェースは、モニタ又はスクリーンが回路基板102に接続することを可能にする。ビデオ処理及び二次メモリアクセス(例えば、RAMモジュール106)は、通常、高速動作及びCPU104へのアクセスを必要とし、従って、回路基板102のチップセットを介することなくCPU104に接続され得る。いくつかの実装では、GPU112は、PCIeカード又はアクセラレーテッドグラフィックスポート(AGP)カードである。高いレベルから見ると、I/Oポート114は、入力及び/又は出力デバイスがコンピューティングシステム100とインターフェースすることを可能にするこれらのインターフェースのうち任意の1つを表している。例えば、I/Oポート114は、例えば、USB4、USB3.2、USB3.1、USB3.0、USB2.0等をサポートするユニバーサルシリアルバス(USB)ポートを表すことができる。I/Oポート114は、イーサネット(登録商標)等の有線インターフェース、又は、例えばBluetooth(登録商標)、Wi-Fi(登録商標)等の無線インターフェースをサポートするネットワークインターフェースコントローラ(NIC)ポートを表すことができる。I/Oポート114は、HDMI(登録商標)ポート、ヘッドホンジャック、外部SATA(eSATA)等の他のポートを表すことができる。いくつかの実装では、I/Oポート114内のいくつかのポートは、GPU112を介してCPU104に結合される。即ち、GPU112は、ポート(例えば、USB-Cポート、HDMI(登録商標)ポート等)を含む。いくつかの実装では、I/Oポート114内のいくつかのポートは、回路基板102のチップセット(例えば、イーサネット(登録商標)ポート、ヘッドホンジャック、キーボードインターフェース、マウスインターフェース、パラレルポート、シリアルポート、USB3.0ポート等)を経由する。
【0022】
BIOS110は、コンピューティングシステム100へのアクセス及び基本設定を可能にする回路基板102上に設けられる読み取り専用メモリ(ROM)又はフラッシュチップを表している。コンピューティングシステム100の起動時に、BIOS110は、基本的なコンピュータハードウェア(例えば、GPU112、キーボードインターフェース、マウスインターフェース等のような上述したいくつかのコンポーネント)をどのようにロードするかに関する命令(又はコード)を含む。BIOS110は、コンピューティングシステム100がオンにされ、コンピューティングシステム100が適切に起動する要件を満たしていることを確保したときに実行するセルフテストを含む。セルフテストは、BIOSパワーオンセルフテスト(POST)と呼ばれる。コンピューティングシステム100がBIOS POSTに失敗した場合、通常、一連のビープ音が提供される。ビープ音のパターンは、何れのハードウェアコンポーネントが故障したかを示すことができる。BIOS POSTは、任意の基本的な問題を発見する。例えば、BIOS POSTは、(a)基本的なメモリチェック(例えば、項目(item)がメモリに書き込こまれ、メモリから読み出しされ得るかのチェック)、(b)基本的なストレージチェック(例えば、ハードドライブが起動してコマンドを受け入れるか、及び/又は、スピンアップしてアクセスを許可するかのチェック)、(c)入力及び出力デバイスの基本的なチェック(例えば、キーボード上にスタックしたキーがないか、又は、少なくとも1つのキーボード若しくはマウスが接続されているかのチェック)等を提供することができる。
【0023】
BIOS110は、コンピューティングシステム100のオペレーティングシステムのうち1つ以上のパーティションを見つけることを可能にするコードをさらに含む。BIOS110は、BIOS設定に基づいてオペレーティングシステムを順序付けることができる。BIOS110は、パーティションからブートローダを読み取り、オペレーティングシステムをロードすることを容易にする。オペレーティングシステムがロードされると、BIOS110は、オペレーティングシステムに制御を放棄する。フラッシュBIOSの場合、BIOS設定を更新することができ、これらの設定は、コンピューティングシステム100の起動時にデバイスの適切な構成を確保することができる。
【0024】
BIOS110のファームウェア更新中に、BIOS設定が失われる可能性がある。BIOS110内のコードは、様々な理由で更新され得る。一例では、BIOS110のファームウェア更新は、マウスやキーボード等の周辺機器をより良く制御するためのドライバ更新を含むことができる。BIOSのファームウェア更新は、テキストベースのBIOSをグラフィカルユーザーインターフェイス(GUI)ベースのBIOSにアップグレードする等の追加機能の追加を含むことができる。一般的に、ファームウェアの更新がBIOS110に対して行われると、BIOS設定が失われる可能性がある。従って、BMC108は、一般的なBIOS設定を格納するように使用することができる。
【0025】
図2に示すように、本開示の特定の態様による、BIOS設定を格納するプロセス200を示すフロー図が提供される。コンピューティングシステム100のユーザーは、アプリケーションユーザインターフェース(API)、例えば、Redfish API202を用いて、BMC108に格納されたBIOS設定を表示及び制御することができる。いくつかの実施形態では、BIOS設定は、JavaScript(登録商標) Object Notation(JSON)フォーマットで格納され、Redfish API202が、コンピューティングシステム100のユーザーがBIOS設定を制御できるように用いられ、又は、BIOS設定をコンピューティングシステム100から他のコンピューティングシステム(図示せず)に移植するために用いられるのを可能にする。ここでは、例としてBMC108が用いられているが、起動時に使用可能な他の場所を使用してBIOS設定を格納することができる。ここでのBMC108は、BMC108がRedfish API202をサポートしているため有益である。いくつかの実装では、Redfishをサポートするリモートサーバーを含む他の格納場所は、BIOS設定を格納することができ、ネットワークを介してアクセスされ得る。即ち、リモートサーバーは、BMC108の機能と同様の1つ以上の機能を実行することができる(例えば、コンピューティングシステム100のBIOS設定を格納し、ユーザーにRedfish APIを提供し、格納されたBIOS設定を変更する)。
【0026】
一般的なBIOS設定は、BMC108に格納されることで利益が得られるBIOS設定のタイプだけではない。本開示の実施形態は、可変の値の長さを有し得るか、又は、1つのブートセッションから他のブートセッションに変更し得る、他のタイプのBIOS設定を格納することを可能にする。これらのBIOS設定のタイプは、それらの値の長さが、通常、起動時に動的に決定されるため、現在のサーバーのBMCに現在格納されない。例えば、UEFIセキュアブート設定は、証明書/署名を格納する複数のデータベースを含み、格納された証明書/署名の総数が変わる可能性がある。従って、UEFIセキュアブート設定を格納するための値の長さは静的ではない。他の例では、ブータブルデバイス(例えば、ソリッドステートディスク、DVDROM、PXE等)の起動順序の設定は、コンピューティングシステム100にインストールされた実際のデバイスに応じてブータブルデバイスの数が変わる可能性があるため、静的ではない。他の例では、HTTPsの起動に用いられるTLS証明書は、HTTPsの起動サーバーを検証するBIOS110に登録されたCA証明書の数が変わる可能性があるため、静的ではない。他の例では、ネットワークiSCSI及びVLAN設定は、各ネットワークポートがその独自の設定を有することができるため、静的ではなく、ポートの総数に対応する値の長さがコンピューティングシステム100内のネットワークポートの数によって決まることになる。
【0027】
従って、BMC110内でこれらの動的なBIOS設定を処理するために、固定した値の長さを有する一般的なBIOS設定を記述するように用いられる元のスキーマが使用できず、動的なBIOS設定のタイプごとに特定のスキーマが設計される必要がある。例えば、特定のスキーマが、UEFIセキュアブートで用いられる証明書/署名を格納するデータベースを記述するのに必要であり、他の特定のスキーマが、各ネットワークポートのiSCSI及びVLAN設定を記述するのに必要である。このプロセスは非効率的である可能性があるため、本開示のいくつかの実施形態は、一般的なBIOS設定を記述するように用いられる元のスキーマを用いて、複雑な動的なBIOS設定を処理するシステム及び方法を提供する。これらのシステム及び方法は、異なるタイプの動的変数用に複数のタイプの特定のスキーマを設計する必要なく、EFI変数を用いることを含む。
【0028】
プロセス200は、一般的なBIOS設定だけでなく、動的なBIOS設定も格納するように適合され得る。動的なBIOS設定は、一般的に、EFI変数で表され、一般的なBIOS設定とは異なるフォーマットを有する。データセンターでは、現在のサーバーは、現在、UEFIヒューマンインターフェースインフラストラクチャ(HII)データベースから一般的なBIOS設定を抽出し、一般的なBIOS設定をJSONフォーマット204として転送し、BMC108内に格納する。UEFI HIIデータベースは、一般的に、コンピューティングシステム100のRAMモジュール106(例えば、DRAM)内に配置される。UEFI HIIは、RAMモジュール106内に作成され、各BIOS起動中にBIOS110によって用いられ、BIOSセットアップメニューをユーザーに表示する。HIIデータベースは、BIOS設定からのデータを含んでいるため、HIIは、BIOS110によって用いられ、Redfish API202で用いられるJSONフォーマットのBIOS設定を作成する。EFI変数に格納された値又はコンテンツは、HIIデータベースに直接格納されない。さらに、EFI変数のコンテンツは、通常、JSONフォーマットで直接用いることができないバイナリコンテンツである。本開示の実施形態は、EFI変数を処理するシステム及び方法を提供する。プロセス200は、EFI変数のコンテンツをJSONフォーマットの一般的なBIOS設定と組み合わせることができる文字列として転送し、BMC108に格納されるように用いることができる。EFI変数をBMC108内に格納できることにより、コンピューティングシステム100のユーザーは、一般的なBIOS設定と同様の方法で、Redfish API202を用いてEFI変数を保存、変更又は移植することができる。
【0029】
一般的なBIOS設定は、BMC108によって3つのタイプのJSONフォーマットのデータ構造で格納され、Redfish API202で用いることができる。これらの3つのタイプのJSONフォーマットのデータ構造は、属性レジストリデータ構造、現在設定データ構造及び未来設定データ構造である。
【0030】
属性レジストリデータ構造は、キーが保持できる各オプション又は値を格納する。例えば、属性レジストリの例が以下に提供される。
属性レジストリの例
【表1】
【0031】
上述した属性レジストリの例は、キーと値のペアを含む。属性名キー「属性名(AttributeName)」は、設定されている属性を識別し、この例では、設定されている属性はSELS015である。この属性は、デフォルト値(即ち、「デフォルト値(DefaultValue)」キー)を「有効(Enable)」に設定することができる。属性は、「AttributeName」キーによって提供される単なる変数名だけでなく、人間が識別できる名前を属性に提供する表示名(即ち、「表示名(DisplayName)」)を有することができる。属性は、属性に関するより多くの情報を提供する人間が読める説明(即ち、「ヘルプテキスト(HelpText)」)を有することができる。いくつかの実施形態では、「読み出し専用(ReadOnly)」キー及び/又は「リセット要求(ResetRequired)」キーは、真(true)又は偽(false)のブール値で設定され、属性をさらにカスタマイズすることができる。属性は、関連付けられた「タイプ(Type)」及び/又は「UEFI名前空間(UefiNamespaceId)」キーを有することができる。デフォルト値が設定されているが、属性が取り得る異なる値は、「値(Value)」キーにおいて定義され得る。この例では、「値(Value)」キーは、「有効(Enable)」又は「無効(Disable)」とすることができる。
【0032】
現在設定データ構造は、コンピューティングシステム100によって現在用いられている現在のBIOS設定値を格納する。例えば、属性SELS015が「有効」に設定され得る。現在設定データ構造の例を以下に示す。
現在の設定の例
【表2】
【0033】
現在設定データ構造は、属性名と値をペアにしたリストを有する。上述した例では、「属性名」SELS015で識別された属性の「値」は「有効」となり、「属性名」SELS016で識別された属性の「値」は10となり、「属性名」SETUP003で識別された属性の「値」は5となり、「属性名」SETUP005で識別された属性の「値」は偽となる。現在設定データ構造内で識別された各属性は、属性レジストリデータ構造内で対応する定義を有する。上述した属性レジストリデータ構造の例は、SELS015の定義の例に過ぎない。
【0034】
未来設定データ構造は、現在設定データ構造と同様に、属性名と1つ以上の値のペアを含む。未来設定データ構造と現在設定データ構造の違いは、両者の使用方法にある。現在設定は、システムで用いられている現在の値を記述し、未来設定は、コンピューティングシステム100がリセットされた場合、又は、コンピューティングシステム100がオンになった場合に適用される未来の値を記述する。さらに、コンピューティングシステム100のユーザーは、現在の設定を変更することができず、未来の設定のみを変更することができる。
【0035】
図3に示すように、本開示の特定の態様による、コンピューティングシステム(例えば、コンピューティングシステム100)に起動設定を適用するためのプロセス300を示すフロー図が提供される。ステップ302では、コンピューティングシステム100(図2)のユーザーがBIOS設定に変更を加え、変更されたBIOS設定が、Redfish API202(図2)を用いてBMC108(図2)に格納される。ステップ304では、変更されたBIOS設定は、BMC108上の未来設定データ構造内に格納され、ホスト(例えば、コンピューティングシステム100)を再起動するための信号が提供される。ステップ302はBMC108によって実行され、ステップ304は、コンピューティングシステム100(即ち、ホストシステム)を再起動できる任意のコンポーネントによって実行され得る。コンピューティングシステムを再起動できるコンポーネントは、BMC108、BIOS110、CPU104上で動作するオペレーティングシステム等を含む。
【0036】
ステップ306では、コンピューティングシステム100の起動中に、BIOS110は、コンピューティングシステム100を起動するための現在の信号(ステップ304)が、前回のBIOS更新以降のBIOS110(図2)の最初の起動であるかどうかを判定する。これがBIOS110の最初の起動である場合、BIOS110は、ステップ308で、その属性レジストリをBMC108に送信する。これがBIOS110の最初の起動でない場合には、ステップ308がスキップされ、ステップ310が実行される。属性レジストリが大きなファイルであり、毎回レジストリを送信すると起動プロセスが遅くなる可能性があるため、属性レジストリは、必要な場合にのみ送信される。
【0037】
ステップ310では、BIOS110は、BMC108に格納された未来設定データ構造を検索し、未来設定データ構造内に含まれる変更されたBIOS設定があるかどうかを判定する。未来設定データ構造内に変更されたBIOS設定がある場合、ステップ314で、BIOS110は、変更されたBIOS設定を、BIOS110(即ち、フラッシュチップ又はBIOSを含む他の物理メモリ)に格納されたBIOS設定に適用する。次いで、BIOS110は、BMC108から未来設定データ構造をクリアする。ステップ310において変更されたBIOS設定がない場合、ステップ312で、BIOS110は、現在設定データ構造をBMC108に送信する。
【0038】
ステップ316では、BIOS110は、ステップ312の現在設定データ構造内に格納された設定を有効にするために再起動が必要かどうかを判定する。再起動が必要でない場合、ステップ318で、BIOS110は、コンピューティングシステム100がオペレーティングシステムで起動できるようにする。再起動が必要である場合、ステップ304で、BIOS110によって再起動が実行される。
【0039】
図4に示すように、本開示の特定の態様による、BIOS POST中にEFI変数を現在設定データ構造に格納するためのプロセス400を示すフロー図が提供される。いくつかの実施形態では、図4の全てのステップがBIOS110によって実行される。ステップ402では、BIOS POSTが開始される。ステップ404では、BIOS110は、任意のEFI変数が現在設定データ構造内に格納される必要があるかどうかを判定する。EFI変数が格納される必要がない場合、ステップ406でBIOS POSTが終了する。
【0040】
EFI変数が格納される必要がある場合、ステップ408で、BIOS110は、バイナリ構造として格納される必要があるEFI変数をパック(pack)する。バイナリ構造は、EFI変数名(又は属性名)、グローバル一意識別子(GUID)、EFI変数に関連付けられた値、データサイズ等を含むことができる。EFI変数の属性レジストリエントリの例が以下に示される。
EFI変数の属性レジストリエントリの例
【表3】
【0041】
EFI変数の属性レジストリエントリは、属性名、表示名、タイプ、値パラメーターの最小長、及び、値パラメーターの最大長を含む。EFI変数の値は動的であるため、EFI変数にはデフォルトの値パラメーターが提供されない。タイプ(type)パラメーターは、EFI変数のバイナリ構造から転送される文字列(string)を格納する「文字列(String)」として示されている。
【0042】
ステップ410では、オプションとして、ステップ408のバイナリ構造が圧縮される。バイナリデータを圧縮する任意のアルゴリズムを用いることができる。いくつかの実施形態では、UEFI仕様に記載されている提案方法、即ち、LZ77アルゴリズムとハフマンコーディングの組み合わせが用いられる。UEFI仕様に記載されているため、通常、UEFI BIOSには、圧縮と解凍に使用できるライブラリが既に含まれている。
【0043】
ステップ412では、バイナリ構造は、American Standard Code for Information Interchange(ASCII)文字列にエンコードされる。いくつかの実施形態では、Base64アルゴリズムを用いて、バイナリ構造をASCII文字列にエンコードする。ステップ414では、ASCII文字列は、EFI変数に対応する属性の値として現在設定データ構造内に格納される。現在設定データ構造内の「OEMVAR_ISCSI00」属性のエントリの例が以下に示される。
EFI変数の現在設定の例
【表4】
【0044】
図5に示すように、本開示の特定の態様による、BIOS POST中に未来設定データ構造からEFI変数を抽出するためのプロセス500を示すフロー図が提供されている。いくつかの実施形態では、図5の全てのステップがBIOS110によって実行される。ステップ502では、BIOS POSTが開始される。ステップ504では、BIOS110は、未来設定データ構造から任意のEFI変数が現在設定データ構造内に設定される必要があるかどうかを判定する。EFI変数を設定する必要がない場合、BIOS POSTがステップ506で終了する。
【0045】
EFI変数を設定する必要がある場合、ステップ508で、BIOS110は、未来設定データ構造からEFI変数に対応するASCII文字列を取得する。ステップ510では、BIOS110は、ASCII文字列をデコードしてバイナリ構造を取得する。デコードアルゴリズムは、Base64デコードアルゴリズムとすることができる。
【0046】
オプションとして、ステップ512で、BIOS110は、バイナリ構造を解凍してEFI可変構造に戻す。
【0047】
ステップ514では、解凍されたASCII文字列に基づいて、BIOS110は、SetVariable UEFI BIOSサービス関数を用いてEFI変数を変更する。ステップ510で得られたバイナリ構造は、バイナリ構造がEFI変数としてBIOSフラッシュに適用可能かどうかを確認するように用いられる。この確認プロセスが成功した場合、EFI変数は、SetVariable関数を用いて変更される。
【0048】
EFI変数の値又はコンテンツを3つのタイプのJSONデータフォーマットで表示できることにより、コンピューティングシステム100のユーザー、コンピューティングシステム100のユーザー管理ソフトウェア、又は、BMC108は、Redfish API202を介してEFI変数を変更、保存又は移植することができる。EFI変数のコンテンツは、ユーザー、管理ソフトウェア又はBMC108がRedfish API202を用いて未来設定データ構造内の値を変更した場合に、変更され得る。BMC108は、BIOS110のファームウェアを更新した場合に、BMC108内の現在設定データ構造内に格納されたEFI変数の値を保存することができる。次いで、EFI変数の値は、更新されたBIOS110にEFI変数の元の値を提供するために、未来設定データ構造内に配置され得る。これらの操作を実行しない場合、EFI変数のコンテンツは、BIOS110のファームウェア更新中にBIOS110の消去によりクリアされ、失われることになる。
【0049】
いくつかの実施形態では、ユーザー又は管理ソフトウェアは、EFI変数のコンテンツを1つのコンピューティングシステムから他のコンピューティングシステムにコピー(又は移植)することができる。現在設定データ構造をソースシステムからコピーし、それをRedfish API202を介してターゲットシステムの未来設定データ構造にコピーすることで、EFI変数のコンテンツを移植することができる。
【0050】
本開示の実施形態を1つ以上の実施形態に関して詳細に述べてきたが、本明細書及び図面を読み、理解すれば、同等の変更及び修正が当業者に生じ得る。また、本発明の特定の特徴は、複数の実施形態のうち1つに関連して述べられているが、このような特徴は、所与の又は特定の用途に対して所望され有利になるように、他の実施形態の1つ以上の他の特徴と組み合わせられてもよい。
【0051】
本開示の様々な実施形態について上述したが、それらは限定ではなく例として提示されたものであることを理解されたい。本開示の趣旨又は範囲から逸脱することなく、開示された実施形態に対する多数の変更を、本明細書の開示に従って行うことができる。従って、本開示の幅及び範囲は、上記の実施形態の何れかによって限定されるべきではない。むしろ、本開示の範囲は、添付の特許請求の範囲及びその均等物に従って定義されるべきである。
【符号の説明】
【0052】
100…コンピューティングシステム
102…回路基板
104…CPU
106…ランダムアクセスメモリ(RAM)モジュール
108…BMC
110…BIOS
112…グラフィック処理ユニット(GPU)
114…入出力(I/O)ポート
200、300、400、500…フロー図
202…Redfish アプリケーションユーザインターフェース(API)
204…JSONフォーマット
302、304、306、308、310、312、314、316、318、402、404、406、408、410、412、414、502、504、506、508、510、512、514…ステップ
図1
図2
図3
図4
図5