(57)【要約】      （修正有）【課題】サーバシステムのベースボード管理コントローラ（ＢＭＣ）におけるファームウェア設定を保持するための方法を提供する。【解決手段】方法は、サーバシステムの電源を入れる段階と、サーバシステムのベースボード管理コントローラ（ＢＭＣ）から複数の将来のファームウェア設定を取得する段階と、複数の将来のファームウェア設定をサーバシステムに適用する段階と、固有の文字列マッピング方式で複数の現在のファームウェア設定をＢＭＣに送信する段階と、ファームウェアフラッシュ全体のアップデートを実行する段階と、ＢＭＣに記憶された複数の現在のファームウェア設定をＢＭＣの複数の将来のファームウェア設定にコピーする段階と、ＢＭＣに記憶された複数の将来のファームウェア設定を適用することにより、サーバシステムを再起動する段階とを含む。【選択図】図２Ａ
2019061644.tif 000002
【特許請求の範囲】
【請求項１】
データセンタにおけるサーバシステムのファームウェア設定を保持するためのコンピュータ実装方法であって、
前記サーバシステムの電源を入れる段階と、
前記サーバシステムのコンポーネントから複数の将来のファームウェア設定を取得する段階と、
前記複数の将来のファームウェア設定を前記サーバシステムに適用する段階と、
固有の文字列マッピング方式で前記コンポーネントに複数の現在のファームウェア設定を送信する段階と、
ファームウェアフラッシュ全体のアップデートを実行する段階と、
前記コンポーネントに記憶された前記複数の現在のファームウェア設定を前記コンポーネントの前記複数の将来のファームウェア設定にコピーする段階と、
前記コンポーネントに記憶された前記複数の将来のファームウェア設定を適用することにより、前記サーバシステムを再起動する段階と
を備える方法。
【請求項２】
前記コンポーネントは、前記サーバシステムの管理コントローラである、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記管理コントローラは、ネットワークに接続されており、かつ、帯域外でアクセス可能である、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記複数の将来のファームウェア設定は、前記サーバシステムが動作していないときに、または、前記サーバシステムの電源が切れているときでも、前記管理コントローラを介して変更可能である、請求項３に記載のコンピュータ実装方法。
【請求項５】
前記管理コントローラは、ベースボード管理コントローラ（ＢＭＣ）またはラック管理コントローラ（ＲＭＣ）である、請求項２から４の何れか一項に記載のコンピュータ実装方法。
【請求項６】
前記固有の文字列マッピング方式は、固有の文字列に前記複数の現在のファームウェア設定のそれぞれをマッピングする段階を含む、請求項１から５の何れか一項に記載のコンピュータ実装方法。
【請求項７】
前記固有の文字列マッピング方式は更に、前記複数の現在のファームウェア設定のうちの変更した現在のファームウェア設定を固有の文字列マッピングタイプと共に記録する段階を含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
前記コンポーネントは、前記サーバシステムのフラッシュチップである、請求項１から７の何れか一項に記載のコンピュータ実装方法。
【請求項９】
プロセッサと、
命令を記憶するコンピュータ可読媒体と
を備えるシステムであって、
前記命令は、前記プロセッサにより実行されると、前記システムに、
前記システムの電源を入れる動作と、
前記システムのコンポーネントから複数の将来のファームウェア設定を取得する動作と、
前記複数の将来のファームウェア設定を前記システムに適用する動作と、
固有の文字列マッピング方式で前記コンポーネントへ複数の現在のファームウェア設定を送信する動作と、
ファームウェアフラッシュ全体のアップデートを実行する動作と、
前記コンポーネントに記憶された前記複数の現在のファームウェア設定を前記コンポーネントの前記複数の将来のファームウェア設定にコピーする動作と、
前記コンポーネントに記憶された前記複数の将来のファームウェア設定を適用することにより、前記システムを再起動する動作と
を含む動作を実行させる、システム。
【請求項１０】
システムの少なくとも１つのプロセッサにより実行されると、前記システムに、
サーバシステムの電源を入れる動作と、
前記サーバシステムのコンポーネントから複数の将来のファームウェア設定を取得する動作と、
前記複数の将来のファームウェア設定を前記サーバシステムに適用する動作と、
固有の文字列マッピング方式で前記コンポーネントへ複数の現在のファームウェア設定を送信する動作と、
ファームウェアフラッシュ全体のアップデートを実行する動作と、
前記コンポーネントに記憶された前記複数の現在のファームウェア設定を前記コンポーネントの前記複数の将来のファームウェア設定にコピーする動作と、
前記コンポーネントに記憶された前記複数の将来のファームウェア設定を適用することにより、前記サーバシステムを再起動する動作と
を含む動作を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、コンピューティングシステムにおけるファームウェアのアップデートに関する。
【背景技術】
【０００２】
一般的に、最近のサーバファームまたはデータセンタは、様々なアプリケーションサービスにおける処理およびストレージの必要性に対処する幾つかのサーバシステムを採用している。サーバシステムは、様々なコンポーネントデバイスを採用している。これらコンポーネントデバイスの正常な機能を確保するには、デバイスのそれぞれをサポートするファームウェアを定期的にアップデートする必要がある。
【０００３】
ＵＳ２０１７０１６８８５１では、ＢＩＯＳ設定構成を管理するためのシステムおよび方法を開示する。ＵＳ２０１７０１６８８５１では、コンピュータシステムのＢＩＯＳにＢＩＯＳ設定構成を記憶できるということを開示する。デフォルトＢＩＯＳ状態は、ロック状態に設定してあってよい。ＢＩＯＳ状態は、認証依頼を受信したとき、および、受信した認証情報がＢＩＯＳ内の記憶された認証情報と一致するとき、ロック状態からロック解除状態へと変更することができる。幾つかの実施形態では、ＢＩＯＳ設定の変更依頼を受信することができる。ＢＩＯＳ設定は、ＢＩＯＳ設定の変更依頼に基づいて修正することができる。ＢＩＯＳ状態は、ＢＩＯＳ設定の修正を行った後、ロック状態に戻すことができる。
【０００４】
しかしながら、ファームウェア設定を過去に予め変更した場合は、サーバシステム上でファームウェアをアップデートしている間にそれらのファームウェア設定を保持する必要がある。さもなければ、ユーザまたは管理者がファームウェア設定を再カスタマイズしなければならないことになる。ファームウェアのアップデート中にファームウェア設定（例えば、ＢＩＯＳ設定）を保持することはいまだ課題である。
【発明の概要】
【０００５】
本開示の様々な例に係るシステムおよび方法では、ベースボード管理コントローラ（ＢＭＣ）、またはサーバシステムのフラッシュメモリコンポーネントにファームウェア設定を保持することにより、上記の問題に対する解決策を提供する。ＢＭＣは、「将来のファームウェア設定」および「現在のファームウェア設定」をどちらも記憶することができる。「将来のファームウェア設定」とは、次のシステム再起動時に変更する必要があるファームウェア設定を指す。「現在のファームウェア設定」とは、現在サーバシステムにあるファームウェア設定を指す。
【０００６】
本開示の１つの態様によれば、サーバシステムのファームウェア設定を自動的に保持するためのコンピュータ実装方法は、（１）サーバシステムの電源を入れる段階と（２）サーバシステムのベースボード管理コントローラ（ＢＭＣ）から複数の将来のファームウェア設定を取得する段階と（３）複数の将来のファームウェア設定をサーバシステムに適用する段階と（４）固有の文字列マッピング方式で複数の現在のファームウェア設定をＢＭＣに送信する段階と（５）ファームウェアフラッシュ全体のアップデートを実行する段階と（６）ＢＭＣに記憶された複数の現在のファームウェア設定をＢＭＣの複数の将来のファームウェア設定にコピーする段階と（７）ＢＭＣに記憶された複数の将来のファームウェア設定を適用することにより、サーバシステムを再起動する段階とを含む。幾つかの例において、コンピュータ実装方法は、サーバシステムのＢＭＣまたは追加のプロセッサのうちの少なくとも一方で実行することができる。
【０００７】
幾つかの実装方式において、ＢＭＣはネットワークに接続しており、帯域外でアクセス可能であってよい。ＢＭＣに記憶された複数の将来のファームウェア設定は、サーバシステムが動作していないときに、または、サーバシステムの電源が切れているときでも、アップデートすることができる。
【０００８】
幾つかの例において、固有の文字列マッピング方式には、複数の現在のファームウェア設定のそれぞれを固有の文字列にマッピングする段階が含まれる。幾つかの実装方式において、固有の文字列マッピング方式には、変更した現在のファームウェア設定を固有の文字列マッピングタイプと共に記録する段階が更に含まれる。
【０００９】
本開示の１つの態様によれば、サーバシステムのファームウェア設定を自動的に保持するためのコンピュータ実装方法は、（１）サーバシステムのユーザから複数の将来のファームウェア設定を受信する段階と（２）サーバシステムに適用すべき複数の将来のファームウェア設定をＢＩＯＳに送信する段階と（３）固有の文字列マッピング方式を用いてＢＩＯＳが取得した複数の現在のファームウェア設定をＢＩＯＳから受信する段階と（４）ファームウェアフラッシュ全体のアップデートをＢＩＯＳに実行させる段階と（５）ＢＭＣに記憶された複数の現在のファームウェア設定をＢＭＣの複数の将来のファームウェア設定にコピーする段階と（６）ＢＭＣに記憶された複数の将来のファームウェア設定からサーバシステムを再起動させる段階とを含む。
【００１０】
本開示の１つの態様によれば、サーバシステムのファームウェア設定を自動的に保持するためのコンピュータ実装方法は、（１）サーバシステムの電源を入れる段階と（２）サーバシステムの第１フラッシュチップに複数のファームウェア設定を保存する段階と（３）サーバシステムの第２フラッシュチップに複数のファームウェア設定を保存する段階と（４）第１フラッシュチップをアップデートすることによりファームウェアのアップデートを実行する段階と（５）第２フラッシュチップに記憶された複数のファームウェア設定を取得する段階と（６）第２フラッシュチップから取得した複数のファームウェア設定をサーバシステムに適用することにより、サーバシステムを再起動する段階とを含む。
【００１１】
本開示の別の態様によれば、命令を記憶する非一時的コンピュータ可読ストレージ媒体が提供される。命令はプロセッサにより実行されると、プロセッサに（１）サーバシステムの電源を入れる動作と（２）サーバシステムのＢＭＣから複数の将来のファームウェア設定を取得する動作と（３）複数の将来のファームウェア設定をサーバシステムに適用する動作と（４）固有の文字列マッピング方式で複数の現在のファームウェア設定をＢＭＣに送信する動作と（５）ファームウェアフラッシュ全体のアップデートを実行する動作と（６）ＢＭＣに記憶された複数の現在のファームウェア設定をＢＭＣの複数の将来のファームウェア設定にコピーする動作と（７）ＢＭＣに記憶された複数の将来のファームウェア設定を適用することにより、サーバシステムを再起動する動作とを含む、動作を実行させる。
【００１２】
本開示の別の態様によれば、命令を記憶する非一時的コンピュータ可読ストレージ媒体が提供される。命令はプロセッサにより実行されると、プロセッサに（１）サーバシステムのユーザから複数の将来のファームウェア設定を受信する動作と（２）サーバシステムに適用すべき複数の将来のファームウェア設定をＢＩＯＳに送信する動作と（３）固有の文字列マッピング方式を用いてＢＩＯＳが取得した複数の現在のファームウェア設定をＢＩＯＳから受信する動作と（４）ファームウェアフラッシュ全体のアップデートをＢＩＯＳに実行させる動作と（５）ＢＭＣに記憶された複数の現在のファームウェア設定をＢＭＣの複数の将来のファームウェア設定にコピーする動作と（６）ＢＭＣに記憶された複数の将来のファームウェア設定からサーバシステムを再起動させる動作とを含む、動作を実行させる。
【００１３】
本開示の別の態様によれば、命令を記憶する非一時的コンピュータ可読ストレージ媒体が提供される。命令はプロセッサにより実行されると、プロセッサに（１）サーバシステムの電源を入れる動作と（２）サーバシステムの第１フラッシュチップに複数のファームウェア設定を保存する動作と（３）サーバシステムの第２フラッシュチップに複数のファームウェア設定を保存する動作と（４）第１フラッシュチップをアップデートすることによりファームウェアのアップデートを実行する動作と（５）第２フラッシュチップに記憶された複数のファームウェア設定を取得する動作と（６）第２フラッシュチップから取得した複数のファームウェア設定をサーバシステムに適用することにより、サーバシステムを再起動する動作とを含む、動作を実行させる。
【００１４】
幾つかの構成によると、サーバシステムのファームウェア設定を保持するには、ＢＭＣまたはフラッシュメモリデバイスを使用することができる。サーバシステム上のフラッシュメモリデバイスは、サーバシステム上のＢＭＣおよび中央演算処理装置（ＣＰＵ）からアクセスするように構成することができる。フラッシュメモリデバイスは、プログラム命令またはデータを一定期間にわたって記憶するように構成された任意のストレージ媒体であってよい。幾つかの例によると、フラッシュストレージデバイスは、フラッシュドライブ、ランダムアクセスメモリ（ＲＡＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）、電気的消去可能プログラマブル・リードオンリメモリ（ＥＥＰＲＯＭ）またはメールボックスレジスタであってよい。
【００１５】
以下の説明では、本開示の更なる特徴および利点について記載する。これらの特徴および利点の一部は、本説明から明白になるか、本明細書で開示する原理を実施することにより習得することができる。本開示の特徴および利点は、添付の特許請求の範囲で具体的に挙げる器具および組み合わせを用いて実現および取得することができる。本開示のこれらおよび他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかになるか、本明細書に記載する原理を実施することにより習得することができる。
【図面の簡単な説明】
【００１６】
本開示の上述および他の利点ならびに特徴を取得できる手法について説明すべく、添付図面に示すこれらの具体的な例を参照することにより、先に簡単に説明した原理についてより具体的な説明を行う。これらの図面は、本開示の例示的な態様のみを描写しているため、その範囲を限定するものと見なすべきではない。本明細書では、添付図面を用いることにより、更なる具体性および詳細をもって、これらの原理について説明および解説する。
【００１７】
【図１】本開示の実装方式に係る、ファームウェア設定を自動的に保持するための、データセンタにおける例示的なシステムを示す、概略ブロック図である。
【００１８】
【図２Ａ】本開示の実装方式に係る、ファームウェア設定を自動的に保持するための例示的な方法である。
【図２Ｂ】本開示の実装方式に係る、ファームウェア設定を自動的に保持するための例示的な方法である。
【図２Ｃ】本開示の実装方式に係る、ファームウェア設定を自動的に保持するための例示的な方法である。
【００１９】
【図３】本開示の様々な実装方式に係る例示的なコンピューティングデバイスを示す。
【００２０】
【図４】本開示の様々な例に係る例示的なシステムを示す。
【図５】本開示の様々な例に係る例示的なシステムを示す。
【発明を実施するための形態】
【００２１】
本開示は、多くの異なる形で具現化することができる。図面には代表的な実施形態を示す。本明細書では、本開示が本開示の原理の例または実例であり、ここで示す実施形態に本開示の幅広い態様を限定することを意図するものではないという理解の下、これらの実施形態について詳細に説明する。この点で、例えば、要約書、概要、発明を実施するための形態の章では開示しているが、特許請求の範囲では明記していない要素および限定事項を、示唆、推測または別の方法によって、特許請求の範囲に個々にまたはまとめて組み込むべきではない。この詳細な説明においては、具体的に請求対象から除外されない限り、単数形は複数形を含み（その逆もまたしかり）、「〜を含む」という単語は「〜を含むが、これらに限定はされない」ことを意味する。更に、本明細書では、例えば「〜で、〜の近くで、または、ほとんど〜で」または「〜の３−５％以内で」または「製造誤差の許容範囲内で」またはこれらの任意の論理的な組み合わせを意味するために、「約」、「ほとんど」、「ほぼ」および「およそ」などといった近似単語を使用することがある。
【００２２】
本開示の様々な例では、ベースボード管理コントローラ（ＢＭＣ）、またはサーバシステムのフラッシュメモリコンポーネントにおけるファームウェア設定を保持するためのシステムおよび方法を提供する。ＢＭＣは、ファームウェアのアップデート中に「将来のファームウェア設定」および「現在のファームウェア設定」をどちらも記憶することができる。本出願を通じて、ＢＩＯＳという用語およびファームウェアという用語は、ハードウェアデバイスと、そのハードウェアデバイスに存在する、基本入出力システム（ＢＩＯＳ）、またはコンピュータマザーボード上のユニファイド・エクステンシブル・ファームウェアインタフェース（ＵＥＦＩ）などのコンピュータ命令との組み合わせを指すために、区別なく使用されている。
【００２３】
図１は、本開示の実装方式に係る、ファームウェア設定を自動的に保持するように構成された例示的なサーバシステム１００を示す、概略ブロック図である。この例において、サーバシステム１００は、少なくとも１つのマイクロプロセッサまたはプロセッサ１０４と、１または複数の冷却コンポーネント１１０と、メインメモリ（ＭＥＭ）１１１と、交流電源１０１から交流電力を受信して、プロセッサ１０４などの、サーバシステム１００の様々なコンポーネントに電力を提供する少なくとも１つの電源装置（ＰＳＵ）１０２と、ノースブリッジ（ＮＢ）ロジック１０６と、ＰＣＩｅスロット１６０と、サウスブリッジ（ＳＢ）ロジック１０８と、ストレージデバイス１０９と、ＩＳＡスロット１５０と、ＰＣＩスロット１７０と、管理コントローラ１０３とを含む。サーバシステム１００は、電源が入った後にメモリ、コンピュータストレージデバイスまたは外部ストレージデバイスからソフトウェアアプリケーションをロードして様々な動作を実行するように構成されている。ストレージデバイス１０９は、構造化されてサーバシステム１００のオペレーティングシステムおよびアプリケーションが利用できる論理ブロックとなる。ストレージデバイス１０９は、サーバシステム１００の電源が切れているときでもサーバデータを保管するように構成されている。
【００２４】
図１において、メモリ１１１は、ＮＢロジック１０６を介してプロセッサ１０４と連結している。メモリ１１１には、限定はされないが、ダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲ  ＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）または他のタイプの適切なメモリが含まれてよい。メモリ１１１は、サーバシステム１００のファームウェアデータを記憶するように構成することができる。幾つかの構成において、ファームウェアデータは、ストレージデバイス１０９に記憶することができる。
【００２５】
幾つかの実装方式において、サーバシステム１００は更に、フラッシュストレージデバイスを含むことができる。フラッシュストレージデバイスは、フラッシュドライブ、ランダムアクセスメモリ（ＲＡＭ）、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）または電気的消去可能プログラマブル・リードオンリメモリ（ＥＥＰＲＯＭ）であってよい。フラッシュストレージデバイスは、ファームウェアデータなどのシステム構成を記憶するように構成することができる。
【００２６】
プロセッサ１０４は、特定の機能に関するプログラム命令を実行するように構成された中央演算処理装置（ＣＰＵ）であってよい。例えば、起動プロセスの間、プロセッサ１０４は、管理デバイス１０３またはフラッシュストレージデバイスに記憶されたファームウェアデータにアクセスすること、および、ＢＩＯＳ１０５を実行してサーバシステム１００を初期化することができる。起動プロセスの後、プロセッサ１０４は、オペレーティングシステムを実行して、サーバシステム１００に対する特定のタスクを実行および管理することができる。
【００２７】
幾つかの構成において、プロセッサ１０４は、それぞれがＮＢロジック１０６に接続されたＣＰＵバスを介して共に結合している、マルチコアプロセッサであってよい。幾つかの構成において、ＮＢロジック１０６は、プロセッサ１０４に統合することができる。ＮＢロジック１０６は、複数のペリフェラル・コンポーネント・インターコネクト・エクスプレス（ＰＣＩｅ）スロット１６０、およびＳＢロジック１０８（任意）にも接続することができる。複数のＰＣＩｅスロット１６０は、ＰＣＩエクスプレスｘ１、ＵＳＢ  ２．０、ＳＭバス、ＳＩＭカード、別のＰＣＩｅレーンの将来の拡張機能、１．５Ｖおよび３．３Ｖの電源、ならびに、サーバシステム１００のシャーシ上にある診断ＬＥＤへの配線など、接続部およびバスのために使用することができる。
【００２８】
システム１００において、ＮＢロジック１０６およびＳＢロジック１０８は、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）バス１０７で接続されている。ＰＣＩバス１０７はプロセッサ１０４上の機能をサポートできるが、定型フォーマットでは、プロセッサ１０４のネイティブバスの何れとも無関係である。ＰＣＩバス１０７は更に、複数のＰＣＩスロット１７０（例えば、ＰＣＩスロット１７１）に接続することができる。ＰＣＩバス１０７に接続されたデバイスは、ＣＰＵバスに直接接続され、プロセッサ１０４のアドレス空間内のアドレスを割り当てられ、かつ、単一のバスクロックに同期されるべき、バスコントローラ（図示せず）として現れてよい。複数のＰＣＩスロット１７０で使用できるＰＣＩカードには、限定はされないが、ネットワークインタフェースカード（ＮＩＣｓ）、サウンドカード、モデム、テレビチューナーカード、ディスクコントローラ、ビデオカード、スモール・コンピュータシステム・インタフェース（ＳＣＳＩ）アダプタおよびパーソナルコンピュータ・メモリカード国際協会（ＰＣＭＣＩＡ）カードが含まれる。
【００２９】
ＳＢロジック１０８は、拡張バスを介して、ＰＣＩバス１０７を、複数の拡張カードまたはＩＳＡスロット１５０（例えば、ＩＳＡスロット１５１）と連結することができる。拡張バスは、ＳＢロジック１０８と周辺デバイスとの通信に使用するバスであってよい。拡張バスは、限定はされないが、業界標準アーキテクチャ（ＩＳＡ）バス、ＰＣ／１０４バス、ローピンカウントバス、拡張ＩＳＡ（ＥＩＳＡ）バス、ユニバーサルシリアルバス（ＵＳＢ）、統合ドライブエレクトロニクス（ＩＤＥ）バス、または、周辺デバイスのデータ通信に使用できる任意の他の適切なバスを含んでよい。
【００３０】
システム１００において、ＳＢロジック１０８は更に、少なくとも１つのＰＳＵ１０２に接続された管理デバイス１０３と連結している。幾つかの実装方式において、管理デバイス１０３は、ベースボード管理コントローラ（ＢＭＣ）、ラック管理コントローラ（ＲＭＣ）または任意の他の適切なタイプのシステムコントローラであってよい。管理デバイス１０３は、ネットワークを介してコンピューティングデバイスまたはユーザデバイスと通信することにより、ファームウェアのアップデートを受信するように構成することができる。
【００３１】
この例において、ＢＩＯＳ１０５は、サーバシステム１００の様々なコンポーネントを開始および識別するように構成された任意のプログラム命令またはファームウェアであってよい。ＢＩＯＳは、対応するサーバシステムのハードウェアコンポーネントの初期化およびテストを担う重要なシステムコンポーネントである。ＢＩＯＳは、ハードウェアコンポーネントに抽象化層を提供することにより、キーボード、ディスプレイ、および他の入出力デバイスなどの周辺デバイスとインタラクトするアプリケーションおよびオペレーティングシステムに対して一貫性のある手段を提供することができる。
【００３２】
幾つかの構成において、ＢＩＯＳ１０５は、オペレーティングシステム（ＯＳ）、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ＯＳ、Ｌｉｎｕｘ（登録商標）ＯＳまたは任意のオペレーティングシステムをサーバシステム１００上で起動する前に、システムチェックを実行することができる。システムチェックは、サーバシステム１００の初期化中に実行する診断システム検査である。システムチェックの１つの例には、パワーオンセルフテスト（ＰＯＳＴ）が含まれる。ＢＩＯＳは、ＰＯＳＴの主要な機能を処理することができ、特定の周辺デバイスを初期化（例えば、ビデオおよびスモール・コンピュータシステム・インタフェース（ＳＣＳＩ）を初期化）するように設計された他のプログラムに対する幾つかの任務をオフロードしてよい。ＰＯＳＴの主要な機能には、ＣＰＵレジスタおよびファームウェアコードの完全性を検証する機能と、基本的なコンポーネントを確認する機能と、システムメインメモリを検査する機能と、他の特殊ファームウェア拡張機能に制御を渡す機能とを含めてよい。幾つかの構成において、ＢＩＯＳは、全てのシステムバスおよびシステムデバイスを検出、初期化および分類する機能と、システムの構成をアップデートするためのユーザインタフェースを提供する機能と、オペレーティングシステムに必要なシステム環境を構築する機能とを含む、ＰＯＳＴの更なる機能も処理してよい。
【００３３】
管理デバイス１０３（例えば、ＢＭＣ）は、プロセッサ１０４およびストレージデバイス１１１と通信することができる。この通信は、システムバス（例えば、インテリジェント・プラットフォーム管理バス／ブリッジ（ＩＰＭＢ）を用いたインテリジェント・プラットフォーム管理インタフェース（ＩＰＭＩ）メッセージを介して行うことができる。ＩＰＭＢは、集積回路間通信（Ｉ２Ｃ）バスの改良された実装方式であり、かつ、メッセージに基づくハードウェアレベルの基本的なインタフェース仕様である。しかしながら、限定はされないが、管理デバイス１０３と通信するための任意の他の方法も使用することができる。
【００３４】
管理デバイス１０３は、ネットワークを介してコンピューティングデバイスまたはユーザデバイスと通信することができる。幾つかの構成において、管理デバイス１０３は、サーバシステム１００の電源が切れているときでも、コンピューティングデバイスまたはユーザデバイスと通信することができる。例えば、管理デバイス１０３は、ＩＰＭＩ用の遠隔管理制御プロトコル（ＲＭＣＰ）またはＲＭＣＰ＋を用いて、ローカルエリアネットワーク（ＬＡＮ）上の帯域外でコンピューティングデバイスまたはユーザデバイスと通信することができる。
【００３５】
幾つかの実装方式において、管理デバイス１０３は、ファームウェアのアップデートがベンダから入手可能かどうかを判断すること、および、ファームウェアのアップデートをベンダから自動的にダウンロードすることができる。管理デバイス１０３は更に、ファームウェアのアップデートを保存することができる。幾つかの例において、管理コントローラは、中央管理サーバと通信することによりファームウェアのアップデートが入手可能かどうかを監視すること、および、アップデートが入手可能になったときはいつでも最新のファームウェアのアップデートをダウンロードすることができる。幾つかの例において、管理コントローラは、サーバシステムが動作していないときに、または、サーバシステムの電源が切れているときでも、将来のＢＩＯＳ設定を帯域外で受信することができる。
【００３６】
幾つかの構成において、管理デバイス１０３は、ＰＳＵ１０２の動作および／または他の適用可能な動作を制御するように構成されている。幾つかの実装方式において、管理デバイス１０３は、処理要求、ならびにサーバシステム１００のコンポーネントおよび／または接続状態を監視するように構成してよい。
【００３７】
この例において、ユーザは管理デバイス１０３上で将来のファームウェア設定を訂正および記憶することができる。次いで、管理デバイス１０３は、サーバシステム１００に適用すべき将来のファームウェア設定をＢＩＯＳ１０５に送信する。ＢＩＯＳ１０５は、ファームウェアフラッシュ全体のアップデートを実行する前に、固有の文字列マッピング方式を用いて、管理デバイス１０３に現在のファームウェア設定を送信することができる。管理デバイス１０３は、受信した現在のファームウェア設定を将来のファームウェア設定にコピーすること、および、管理デバイス１０３に記憶された将来のファームウェア設定を適用することにより、サーバシステム１００を再起動させることができる。このプロセスについては、図２Ａ〜図２Ｃとの関連で以下により詳細に説明する。
【００３８】
表１は、本開示の実装方式に係る例示的な固有の文字列マッピング方式を示す。この例では、それぞれのＢＩＯＳオプション名を固有の文字列にマッピングしている。例えば、表１の「オプションＡ１」を固有の文字列「ＯＰＴＡ００１」にマッピングしている。
表１：固有の文字列に実際のオプション名をマッピングした例
【表１】
2019061644.tif 000003
【００３９】
幾つかの実装方式では、ＢＩＯＳオプションを変更すること、および、固有の文字列マッピングタイプと共に特定のＢＩＯＳ領域に記録することができる。例えば、ＢＩＯＳファームウェアがバージョン１（Ｖ１）からバージョン２（Ｖ２）にアップデートされると、特定のＢＩＯＳ領域は、ＢＩＯＳフラッシュのアップデート中に保持されることになる。しかしながら、ＢＩＯＳ領域のレイアウト情報がほとんどないため、特定のＢＩＯＳ領域を保持することは困難なことがある。
【００４０】
表２は、変更したＢＩＯＳオプションを固有の文字列マッピングタイプと共に記録した例示的な表を示す。この例では、オプションＡ３およびオプションＢ２をデフォルト設定の「無効」から現在設定の「有効」に変更してある。表２には、固有のマッピングタイプを「有効」にして、オプションＡ３およびオプションＢ２を記録してある。表２は、特定のＢＩＯＳ領域に記憶することができる。特定のＢＩＯＳ領域は、ＢＩＯＳフラッシュのアップデート中に保持される。
表２：変更したＢＩＯＳオプションを固有の文字列マッピングタイプと共に記録した例
【表２】
2019061644.tif 000004
【００４１】
図１の例示的なシステム１００には幾つかのコンポーネントしか示していないが、データを処理もしくは記憶すること、信号を受信もしくは伝送すること、または、下流のコンポーネントに新たな通信（ｆｒｅｓｈ  ａｉｒ）を提供することができる様々なタイプの電子コンポーネントまたはコンピューティング・コンポーネントも、例示的なシステム１００には含めることができる。更に、例示的なシステム１００における電子コンポーネントまたはコンピューティング・コンポーネントは、様々なタイプのアプリケーションを実行するように構成されてよく、かつ／または、様々なタイプのオペレーティングシステムを使用することができる。これらのオペレーティングシステムには、限定はされないが、Ａｎｄｒｏｉｄ（登録商標）、Ｂｅｒｋｅｌｅｙ  Ｓｏｆｔｗａｒｅ  Ｄｉｓｔｒｉｂｕｔｉｏｎ（ＢＳＤ）、ｉＰｈｏｎｅ（登録商標）ＯＳ（ｉＯＳ）、Ｌｉｎｕｘ、ＯＳ  Ｘ、Ｕｎｉｘ（登録商標）系リアルタイム・オペレーティングシステム（例えば、ＱＮＸ）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ、Ｗｉｎｄｏｗ  ＰｈｏｎｅおよびＩＢＭ  ｚ／ＯＳを含めることができる。
【００４２】
例示的なシステム１００にとって好ましい実装方式に応じて、限定はされないが、ＴＣＰ／ＩＰ、開放型システム間相互接続（ＯＳＩ）、ファイル転送プロトコル（ＦＴＰ）、ユニバーサルプラグアンドプレイ（ＵｐｎＰ）、ネットワークファイルシステム（ＮＦＳ）、共通インターネットファイルシステム（ＣＩＦＳ）、ＡｐｐｌｅＴａｌｋなどを含む様々なネットワーキングプロトコルおよびメッセージングプロトコルを使用することができる。当業者であれば解るように、図１に示す例示的なシステム１００は、説明目的で使用している。従って、ネットワークシステムは多くの変更形態で適宜実施され得るが、それでもなお、本開示の様々な例に係るネットワークプラットフォームの構成を提供することができる。
【００４３】
図１の例示的な構成において、例示的なシステム１００には、特定の無線チャネルのコンピューティング範囲内にある１または複数の電子デバイスと通信するように動作できる１または複数の無線コンポーネントも含めることができる。無線チャネルは、デバイスによる無線通信を可能とするために使用される、Ｂｌｕｅｔｏｏｔｈ（登録商標）、セルラ、ＮＦＣまたはＷｉ−Ｆｉチャネルなどの任意の適切なチャネルであってよい。デバイスは、当技術分野で知られているような、１または複数の従来の有線通信接続を有し得るものと理解すべきである。様々な他の要素および／または組み合わせも様々な例の範囲内で考えられる。
【００４４】
上記の説明は、本開示の原理および様々な例を示すものであることを想定している。ひとたび上記の開示を十分に理解すれば、多数の変更形態および修正形態が明らかになるであろう。
【００４５】
図２Ａには、本開示の実装方式に係る、サーバシステムのＢＩＯＳおよび管理コントローラ（例えば、ＢＭＣ）を用いてファームウェア設定を自動的に保持するための、例示的な方法２００Ａを示す。例示的な方法２００Ａは、単に例示目的で示したものであり、本開示に係る他の方法には、同様の順序もしくは代替的な順序で、または並行して実行する、更なるステップ、これより少ないステップ、または代替的なステップを含めることができるものと理解すべきである。例示的な方法２００Ａは、サーバシステムの電源を入れるステップ２０２から始まる。
【００４６】
ステップ２０４において、サーバシステムのＢＩＯＳは、サーバシステムの管理コントローラ（例えば、ＢＭＣ）から「将来のＢＩＯＳ設定」を取得することができる。幾つかの例において、管理コントローラは、ユーザが「将来のＢＩＯＳ設定」を入力またはアップデートするためのインタフェースを提供することができる。幾つかの例において、管理コントローラは、中央管理サーバと通信してファームウェアのアップデートが入手可能かどうかを監視すること、および、アップデートが入手可能になったときはいつでも最新のファームウェアのアップデートをダウンロードすることができる。
【００４７】
ステップ２０６において、ＢＩＯＳは、図１に示すようなサーバシステムに「将来のＢＩＯＳ設定」を適用することができる。ステップ２０８において、ＢＩＯＳは更に、表１に示すような固有の文字列マッピング方式を用いて、管理コントローラに「現在のＢＩＯＳ設定」を送信する。幾つかの例において、固有の文字列マッピング方式には、固有の文字列に複数のＢＩＯＳ設定のそれぞれをマッピングする方式が含まれる。幾つかの実装方式において、固有の文字列マッピング方式には更に、変更したＢＩＯＳ設定を、表２に示すような固有の文字列マッピングタイプと共に記録する方式が含まれる。
【００４８】
ステップ２１０において、ＢＩＯＳは、ＢＩＯＳフラッシュ全体のアップデートを実行することができる。更に、ステップ２１２において、ＢＩＯＳは、管理コントローラ上の現在のＢＩＯＳ設定を、管理コントローラの将来のＢＩＯＳ設定にコピーさせることができる。ステップ２１４において、ＢＩＯＳは更に、サーバシステムを再起動すること、および、管理コントローラに記憶された将来のＢＩＯＳ設定を取得することができる。幾つかの実装方式において、ステップ２１０−２１４は、ＢＭＣで実行することができる。
【００４９】
図２Ｂには、本開示の実装方式に係る、サーバシステムの管理コントローラ（例えば、ＢＭＣ）を用いてファームウェア設定を自動的に保持するための例示的な方法２００Ｂを示す。例示的な方法２００Ｂは、ステップ２２２から始まる。このステップにおいて、管理コントローラは、ローカルデバイスまたは遠隔リソースから将来のＢＩＯＳ設定を受信することができる。幾つかの例において、管理コントローラは、中央管理サーバと通信することによりファームウェアのアップデートが入手可能かどうかを監視すること、および、アップデートが入手可能になったときはいつでも最新のファームウェアのアップデートをダウンロードすることができる。幾つかの例において、管理コントローラは、サーバシステムが動作していないときに、または、サーバシステムの電源が切れているときでも、将来のＢＩＯＳ設定を帯域外で受信することができる。
【００５０】
ステップ２２４において、管理コントローラは、サーバシステムに適用すべき将来のＢＩＯＳ設定をサーバシステムのＢＩＯＳに送信することができる。ステップ２２６において、管理コントローラは、現在のＢＩＯＳ設定をＢＩＯＳから受信し、次いで、管理コントローラに記憶することができる。幾つかの例において、現在のＢＩＯＳ設定は、ＢＩＯＳから固有の文字列マッピング方式で受信する。固有の文字列マッピング方式には、表に示すような固有の文字列に現在のＢＩＯＳ設定のそれぞれをマッピングする方式が含まれる。
【００５１】
ステップ２２８において、管理コントローラは、ＢＩＯＳフラッシュ全体のアップデートをＢＩＯＳに実行させることができる。ステップ２３０において、管理コントローラは更に、記憶された現在のＢＩＯＳ設定を管理コントローラの将来のＢＩＯＳ設定にコピーすることができる。ステップ２３２において、サーバシステムは、管理コントローラの将来のＢＩＯＳ設定から再起動する。
【００５２】
図２Ｃには、本開示の実装方式に係る、サーバシステムのＢＩＯＳおよびフラッシュチップを用いてファームウェア設定を自動的に保持するための例示的な方法２００Ｃを示す。例示的な方法２００Ｃは、サーバシステムの電源を入れるステップ２４２から始まる。ステップ２４４において、サーバシステムのＢＩＯＳは、サーバシステムの第１フラッシュチップにサーバシステムのファームウェア設定を記憶することができる。ステップ２４６において、サーバシステムのＢＩＯＳは、サーバシステムの第２フラッシュチップにサーバシステムのファームウェア設定を記憶することができる。幾つかの例において、ファームウェア設定は、全ての事前変更を組み込んだ現在のファームウェア設定である。
【００５３】
ステップ２４８において、ＢＩＯＳは、ファームウェア設定を記憶する第１フラッシュチップをアップデートすることによりファームウェアのアップデートを実行することができる。幾つかの例において、ファームウェアのアップデートでは更に、第２フラッシュチップに記憶されたファームウェア設定に「将来のファームウェア設定」を組み込むことを含んでよい。「将来のファームウェア設定」は、次のシステム再起動時に変更する必要があるファームウェア設定である。
【００５４】
ステップ２５０において、ＢＩＯＳは、第２フラッシュチップからファームウェア設定を取得することができる。ステップ２５２において、ＢＩＯＳは更に、第２フラッシュチップから取得したファームウェア設定をサーバシステムに適用することにより、サーバシステムを再起動することができる。
【００５５】
ここで開示する技術は、当技術分野での、コンピューティングシステムにおけるファームウェア設定を自動的に保持する必要性に対処する。本明細書では、図３から図５に示すような、例示的なシステムおよびネットワークの簡単な導入的説明を開示する。本明細書では、様々な例を記載しながらこれらの変更形態について説明するものとする。
【００５６】
図３には、本開示の実装に適した例示的なコンピューティングデバイス３００を示す。コンピューティングデバイス３００は、マスター中央演算処理装置（ＣＰＵ）３６２、インタフェース３６８、およびバス３１５（例えば、ＰＣＩバス）を含む。ＣＰＵ３６２は、適切なソフトウェアまたはファームウェアの制御下で動作するとき、例えば、誤配線検出機能などの、パケット管理機能、エラー検出機能、および／または経路設定機能の実行を担う。ＣＰＵ３６２は、オペレーティングシステムおよび任意の適切なアプリケーションソフトウェアを含むソフトウェアの制御下でこれらの機能を全て実現するのが好ましい。ＣＰＵ３６２には、モトローラ系マイクロプロセッサまたはＭＩＰＳ系マイクロプロセッサのプロセッサなどの、１または複数のプロセッサ３６３を含めることができる。代替的な例において、プロセッサ３６３は、コンピューティングデバイス３００の動作を制御する特別設計のハードウェアである。具体的な例では、（不揮発性ＲＡＭおよび／またはＲＯＭなどの）メモリ３６１もＣＰＵ３６２の一部を成す。しかしながら、メモリをシステムと連結するための手段は多種多様である。
【００５７】
一般的に、インタフェース３６８は、インタフェースカード（別名「ラインカード」）として提供されている。これらは概して、ネットワーク上でのデータパケットの送信および受信を制御しており、場合によっては、コンピューティングデバイス３００と併用される他の周辺機器をサポートする。提供できるインタフェースには、イーサネット（登録商標）インタフェース、フレームリレーインタフェース、ケーブルインタフェース、ＤＳＬインタフェース、およびトークンリングインタフェースなどがある。これに加えて、ファスト・トークンリング・インタフェース、無線インタフェース、イーサネット（登録商標）インタフェース、ギガビットイーサネット（登録商標）インタフェース、ＡＴＭインタフェース、ＨＳＳＩインタフェース、ＰＯＳインタフェース、およびＦＤＤＩインタフェースなどといった様々な超高速インタフェースも提供することができる。これらのインタフェースには概して、適切な媒体との通信に適したポートを含めることができる。場合によっては独立したプロセッサ、事例によっては揮発性ＲＡＭも含めることができる。独立したプロセッサは、パケット交換、媒体制御、および管理などの通信集約的タスクを制御することができる。通信集約的タスク用の別個のプロセッサを提供することにより、これらのインタフェースでは、マスターマイクロプロセッサ３６２が経路設定計算、ネットワーク診断、セキュリティ機能などを効率的に実行できるようになる。
【００５８】
図３に示すシステムは、本開示の１つの特定のコンピューティングデバイスではあるが、本特許出願を実施できる唯一のネットワークデバイス・アーキテクチャでは決してない。例えば、通信および経路設定計算などを処理する単一のプロセッサを備えたアーキテクチャが頻繁に使用される。更に、他のタイプのインタフェースおよび媒体もルータと併用することができる。
【００５９】
ネットワークデバイスの構成に関わらず、このシステムは、本明細書で説明するローミング機能、経路最適化機能、および経路設定機能のための汎用ネットワークの動作および機構に関するプログラム命令を記憶するように構成された、１もしくは複数のメモリまたはメモリモジュール（メモリ３６１を含む）を採用することができる。プログラム命令は、例えば、オペレーティングシステムおよび／または１もしくは複数のアプリケーションの動作を制御することができる。１または複数のメモリは、モビリティバインディング表、登録表、および関連表などといった表も記憶するように構成することができる。
【００６０】
図４および図５には、例示的なシステムの実施形態を示す。本開示を実施するときに、より適切な実施形態が当業者にとって明らかになるであろう。他のシステムの実施形態が考えられることも、当業者であれば容易に解るであろう。
【００６１】
図４には、システムバス・コンピューティングシステム・アーキテクチャ４００を示す。ここで、システムのコンポーネントは、バス４０２を用いて互いに電気的に通信している。例示的なシステム４００は、処理装置（ＣＰＵまたはプロセッサ）４３０と、リードオンリメモリ（ＲＯＭ）４０６およびランダムアクセスメモリ（ＲＡＭ）４０８などのシステムメモリ４０４を含む様々なシステムコンポーネントをプロセッサ４３０と連結する、システムバス４０２とを備える。システム４００は、プロセッサ４３０と直接接続された、プロセッサ４３０に近接した、またはプロセッサ４３０の一部として統合された高速メモリのキャッシュを含むことができる。システム４００は、プロセッサ４３０が迅速にアクセスできるように、メモリ４０４および／またはストレージデバイス４１２からキャッシュ４２８にデータをコピーすることができる。このようにして、キャッシュは性能を強化することができる。性能が強化されると、データを待っている間のプロセッサ４３０の遅延が回避される。これらおよび他のモジュールは、プロセッサ４３０を制御して様々な動作を実行してもよいし、プロセッサ４３０を制御して様々な動作を実行するように構成されてもよい。他のシステムメモリ４０４も利用できることがある。メモリ４０４には、異なる性能特性を有する、複数の異なるタイプのメモリを含めることができる。プロセッサ４３０には、任意の汎用プロセッサ、および、プロセッサ４３０を制御するように構成された、ストレージデバイス４１２に記憶されたモジュール１  ４１４、モジュール２  ４１６、およびモジュール３  ４１８などの、ハードウェアモジュールまたはソフトウェアモジュール、ならびに、実際のプロセッサの設計にソフトウェア命令を組み込んだ、特定用途向けプロセッサを含めることができる。プロセッサ４３０は本質的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、完全に自己完結型のコンピューティングシステムであってよい。マルチコアプロセッサは、対称型であっても非対称型であってもよい。
【００６２】
ユーザがコンピューティングデバイス４００とインタラクトできるよう、入力デバイス４２０を、会話用のマイク、ジェスチャー入力または図形入力用のタッチセンサ式画面、キーボード、マウス、モーション入力などといった、任意の数の入力機構として表すことができる。出力デバイス４２２も、当業者であれば知っている幾つかの出力機構のうちの１または複数とすることができる。幾つかの事例では、多様なシステムにより、ユーザが複数のタイプの入力を行ってシステム４００と通信することが可能となり得る。通信インタフェース４２４は概して、ユーザ入力およびシステム出力を統制および管理することができる。いかなる特定のハードウェア構成における動作に対しても制約がないため、ここでの基本的な特徴は、改良されたハードウェアまたはファームウェア構成へと、それらの進化に伴って容易に置き換えることができる。
【００６３】
ストレージデバイス４１２は、不揮発性メモリであり、コンピュータからアクセス可能なデータを記憶できる、磁気カセット、フラッシュメモリカード、ソリッドステート・メモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ（ＲＡＭ）４０８、リードオンリメモリ（ＲＯＭ）４０６およびこれらのハイブリッドなどの、ハードディスクまたは他のタイプのコンピュータ可読媒体であってよい。
【００６４】
ストレージデバイス４１２は、プロセッサ４３０を制御するためのソフトウェアモジュール４１４、４１６、４１８を含むことができる。他のハードウェアモジュールまたはソフトウェアモジュールも考えられる。ストレージデバイス４１２は、システムバス４０２に接続することができる。１つの態様において、特定の機能を実行するハードウェアモジュールは、その機能を実行するための、プロセッサ４３０、バス４０２、ディスプレイ４３６などといった必要なハードウェアコンポーネントと接続しているコンピュータ可読媒体に記憶されたソフトウェアコンポーネントを含むことができる。
【００６５】
コントローラ４１０は、ＢＭＣ（ベースボード管理コントローラ）などの、システム４００上の特殊なマイクロコントローラまたはプロセッサであってよい。場合によっては、コントローラ４１０は、インテリジェント・プラットフォーム管理インタフェース（ＩＰＭＩ）の一部であってよい。更に、場合によっては、コントローラ４１０は、システム４００のマザーボードまたはメイン回路基板に埋め込むことができる。コントローラ４１０は、システム管理ソフトウェアとプラットフォームハードウェアとのインタフェースを管理することができる。コントローラ４１０は、以下に更に説明するように、コントローラまたは周辺コンポーネントなどの、様々なシステムデバイスおよびシステムコンポーネント（内部および／または外部）と通信することもできる。
【００６６】
コントローラ４１０は、通知、アラート、および／またはイベントに対する特定の応答を生成すること、ならびに、遠隔のデバイスまたはコンポーネント（例えば、電子メールメッセージ、ネットワークメッセージなど）と通信して自動ハードウェアリカバリ手順などに関する命令またはコマンドを生成することができる。以下に更に説明するように、管理者がコントローラ４１０と遠隔的に通信して、特定のハードウェアリカバリ手順または動作を開始または実行することもできる。
【００６７】
システム４００の様々なタイプのセンサ（例えば、センサ４２６）が、冷却ファンの速度、電力の状態、オペレーティングシステム（ＯＳ）の状態、ハードウェアの状態などといったパラメータについてコントローラ４１０に報告することができる。コントローラ４１０は、コントローラ４１０が受信したイベント、アラート、および通知を管理および維持するためのシステムイベントログ・コントローラならびに／またはストレージ装置を含むこともできる。例えば、コントローラ４１０またはシステムイベントログ・コントローラは、１または複数のデバイスおよびコンポーネントからアラートまたは通知を受信すること、および、そのアラートまたは通知をシステムイベントログ・ストレージコンポーネントに維持することができる。
【００６８】
フラッシュメモリ４３２は、システム４００がストレージおよび／またはデータ転送のために使用できる、電子的不揮発性コンピュータストレージ媒体またはチップであってよい。フラッシュメモリ４３２は、電気的に消去および／または再プログラムすることができる。フラッシュメモリ４３２には、例えば、消去可能プログラマブル・リードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル・リードオンリメモリ（ＥＥＰＲＯＭ）、ＲＯＭ、ＮＶＲＡＭまたは相補型金属酸化膜半導体（ＣＭＯＳ）を含めることができる。フラッシュメモリ４３２は、システム４００の電源が最初に入ったときにシステム４００が実行するファームウェア４３４を、ファームウェア４３４のために指定された一組の構成と共に記憶することができる。フラッシュメモリ４３２は、ファームウェア４３４が使用する構成も記憶することができる。
【００６９】
ファームウェア４３４は、基本入出力システム、またはエクステンシブル・ファームウェアインタフェース（ＥＦＩ）もしくはユニファイド・エクステンシブル・ファームウェアインタフェース（ＵＥＦＩ）などの、その後継物もしくは同等物を含むことができる。ファームウェア４３４は、システム４００を起動するたびに、シーケンスプログラムとしてロードおよび実行することができる。ファームウェア４３４は、一組の構成に基づいて、システム４００に存在するハードウェアを認識、初期化およびテストすることができる。ファームウェア４３４は、システム４００上でパワーオンセルフテスト（ＰＯＳＴ）などのセルフテストを実行することができる。このセルフテストでは、ハードディスクドライブ、光学式読み取りデバイス、冷却デバイス、メモリモジュールおよび拡張カードなどといった様々なハードウェアコンポーネントの機能をテストすることができる。ファームウェア４３４は、オペレーティングシステム（ＯＳ）を記憶するために、メモリ４０４、ＲＯＭ４０６、ＲＡＭ４０８、および／またはストレージデバイス４１２内の領域をアドレス指定すること、および割り当てることができる。ファームウェア４３４は、ブートローダおよび／またはＯＳをロードすること、ならびに、そのＯＳにシステム４００の制御を渡すことができる。
【００７０】
システム４００のファームウェア４３４は、システム４００内の様々なハードウェアコンポーネントをファームウェア４３４がどのように制御するかを定義する、ファームウェア構成を含むことができる。このファームウェア構成は、システム４００内の様々なハードウェアコンポーネントを起動する順序を決定することができる。ファームウェア４３４は、ファームウェアのデフォルト構成におけるパラメータとは異なり得る、様々な異なるパラメータの設定を可能にする、ＵＥＦＩなどのインタフェースを提供することができる。例えば、ユーザ（例えば、管理者）は、ファームウェア４３４を使用してクロック速度およびバス速度を指定すること、システム４００に取り付ける周辺機器を定義すること、ヘルスモニタリング（例えば、ファンの速度、およびＣＰＵの耐熱温度）を設定すること、ならびに／または、システム４００の全体的な性能および電力使用量に影響を及ぼす様々な他のパラメータを提供することができる。
【００７１】
ファームウェア４３４は、フラッシュメモリ４３２に記憶されているように示してあるが、例えば、メモリ４０４またはＲＯＭ４０６などの他のメモリコンポーネントにも記憶できることが、当業者であれば容易に解るであろう。しかしながら、ファームウェア４３４は、説明を目的とした非限定的な例として、フラッシュメモリ４３２に記憶されているように示してある。
【００７２】
システム４００は、１または複数のセンサ４２６を含むことができる。１または複数のセンサ４２６には、例えば、１または複数の温度センサ、サーマルセンサ、酸素センサ、化学センサ、ノイズセンサ、熱センサ、電流センサ、電圧検出器、空気流量センサ、流量センサ、赤外線温度計、熱流束センサ、温度計、パイロメータなどを含めることができる。１または複数のセンサ４２６は、例えば、バス４０２を介して、プロセッサ、キャッシュ４２８、フラッシュメモリ４３２、通信インタフェース４２４、メモリ４０４、ＲＯＭ４０６、ＲＡＭ４０８、コントローラ４１０、およびストレージデバイス４１２と通信することができる。１または複数のセンサ４２６は、集積回路間通信（Ｉ２Ｃ）および汎用出力（ＧＰＯ）などといった１または複数の異なる手段で、システム内の他のコンポーネントとも通信することができる。
【００７３】
図５には、ここで説明する方法または動作を実行する際、ならびにグラフィカル・ユーザインタフェース（ＧＵＩ）を生成および表示する際に使用できるチップセットアーキテクチャを有する、例示的なコンピュータシステム５００を示す。コンピュータシステム５００は、ここで開示する技術を実装するために使用できるコンピュータハードウェア、ソフトウェアおよびファームウェアを含むことができる。システム５００は、特定の計算を実行するように構成されたソフトウェア、ファームウェアおよびハードウェアを実行できる物理的および／または論理的に異なる任意の数のリソースを表す、プロセッサ５１０を含むことができる。プロセッサ５１０は、プロセッサ５１０への入力およびプロセッサ５１０からの出力を制御できるチップセット５０２と通信することができる。この例において、チップセット５０２は、ディスプレイなどの出力デバイス５１４に情報を出力し、例えば、磁気媒体およびソリッドステート媒体を含み得るストレージデバイス５１６に対する情報を、読み取ること、および書き込むことができる。チップセット５０２は、ＲＡＭ５１８からデータを読み取ること、および、ＲＡＭ５１８にデータを書き込むこともできる。様々なユーザインタフェース・コンポーネント５０６とインタフェース接続するためのブリッジ５０４を設けることにより、チップセット５０２とインタフェース接続することができる。このようなユーザインタフェース・コンポーネント５０６には、キーボード、マイク、タッチ検出回路およびタッチ処理回路、マウスのようなポインティングデバイスなどを含めることができる。一般に、システム５００への入力は、機械および／または人間が生成した様々なソースのうちの何れかに由来してよい。
【００７４】
チップセット５０２は、様々な物理インタフェースを有し得る、１または複数の通信インタフェース５０８とインタフェース接続することもできる。このような通信インタフェースには、有線および無線ローカルエリアネットワーク、ブロードバンド無線ネットワークおよびパーソナルエリアネットワークのためのインタフェースを含めることができる。本明細書で開示する、ＧＵＩを生成、表示、および使用するための方法の幾つかのアプリケーションは、物理インタフェース上での順序付けられたデータセットを受信する段階を含んでもよいし、ストレージ装置５１６または５１８に記憶されたデータを分析するプロセッサ５１０によりこの機械自体で生成されてもよい。更に、この機械は、ユーザインタフェース・コンポーネント５０６を介してユーザからの入力を受信することができ、かつ、プロセッサ５１０を用いてこれらの入力を解釈することによりブラウジング機能などの適切な機能を実行することができる。
【００７５】
更に、チップセット５０２は、電源を入れたときにコンピュータシステム５００が実行できるファームウェア５１２と通信することもできる。ファームウェア５１２は、一組のファームウェア構成に基づいて、コンピュータシステム５００に存在するハードウェアを認識、初期化およびテストすることができる。ファームウェア５１２は、システム５００上でＰＯＳＴなどのセルフテストを実行することができる。セルフテストでは、様々なハードウェアコンポーネント５０２−５１８の機能をテストすることができる。ファームウェア５１２は、ＯＳを記憶するために、メモリ５１８内の領域をアドレス指定すること、および割り当てることができる。ファームウェア５１２は、ブートローダおよび／またはＯＳをロードすること、ならびにそのＯＳにシステム５００の制御を渡すことができる。場合によっては、ファームウェア５１２は、ハードウェアコンポーネント５０２−５１０および５１４−５１８と通信することができる。ここで、ファームウェア５１２は、チップセット５０２および／または１もしくは複数の他のコンポーネントを介して、ハードウェアコンポーネント５０２−５１０および５１４−５１８と通信することができる。場合によっては、ファームウェア５１２は、ハードウェアコンポーネント５０２−５１０および５１４−５１８と直接通信することができる。
【００７６】
例示的なシステム３００、４００および５００は、１つより多くのプロセッサ（例えば、３６３、４３０、５１０）を有してよいこと、または、より大きな処理能力を提供するために共にネットワーク接続された一群または一団のコンピューティングデバイスの一部であってよいことが解る。
【００７７】
説明を明確にするために、事例によっては、ソフトウェアで具現化した方法におけるデバイス、デバイスコンポーネント、ステップもしくはルーチンを含む機能ブロック、またはハードウェアとソフトウェアとの組み合わせを備えるものとして、本開示を提示することができる。
【００７８】
幾つかの実施形態において、コンピュータ可読ストレージデバイス、媒体、およびメモリは、ビットストリームなどを含む有線または無線信号を備えることができる。しかしながら、非一時的コンピュータ可読ストレージ媒体について述べる場合は、エネルギー、キャリア信号、電磁波、および信号そのものなどの媒体を明示的に除外する。
【００７９】
上記の例に係る方法は、コンピュータ可読媒体に記憶された、またはそうでなければ、コンピュータ可読媒体から得られるコンピュータ実行可能命令を用いて実施することができる。そのような命令には、例えば、汎用コンピュータ、特定用途向けコンピュータ、もしくは特定用途向け処理デバイスに一定の機能もしくは一群の機能を実行させる、またはそうでなければ、汎用コンピュータ、特定用途向けコンピュータ、もしくは特定用途向け処理デバイスが一定の機能もしくは一群の機能を実行するように構成する、命令およびデータを含めることができる。ここで使用するコンピュータリソースの一部分は、ネットワーク上でアクセス可能な部分であってよい。コンピュータ実行可能命令は、例えば、アセンブリ言語のファームウェアコードまたはソースコードなどの、バイナリおよび中間フォーマット命令であってよい。命令、ここで使用する情報、および／または、ここで説明する例に係る方法の間に作成された情報を記憶するために使用できるコンピュータ可読媒体の例には、磁気ディスクまたは光ディスク、フラッシュメモリ、不揮発性メモリを備えたＵＳＢデバイス、ネットワーク接続されたストレージデバイスなどが含まれる。
【００８０】
これらの開示に係る方法を実装するデバイスには、ハードウェア、ファームウェア、および／またはソフトウェアを含めること、ならびに、様々なフォームファクタのうちの何れかを採用することができる。このようなフォームファクタの典型的な例には、ラップトップ、スマートフォン、スモールフォームファクタ・パーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどがある。本明細書で説明する機能は、周辺機器またはアドインカードでも具現化することができる。このような機能は、更なる例として、回路基板上の異なるチップ間で、または単一のデバイスで実行する異なるプロセス間で実施することもできる。
【００８１】
命令、そのような命令を伝達するための媒体、これらの命令を実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造体は、本明細書で説明する機能を提供するための手段である。
【００８２】
様々な例は更に、多種多様な動作環境で実施することができ、これらの動作環境には、場合によっては、幾つかのアプリケーションのうちの何れかを動作させるために使用できる、１または複数のサーバコンピュータ、ユーザコンピュータまたはコンピューティングデバイスを含めることができる。ユーザデバイスまたはクライアントデバイスには、標準オペレーティングシステムを実行するデスクトップまたはラップトップコンピュータなどの、幾つかの汎用パーソナルコンピュータのうちの何れか、ならびに、幾つかのネットワーキングプロトコルおよびメッセージングプロトコルをサポートできる、携帯電話向けソフトウェアを実行するセルラデバイス、無線デバイスおよびハンドヘルドデバイスを含めることができる。このようなシステムは、様々な市販のオペレーティングシステムのうちの何れかを実行する幾つかのワークステーション、ならびに、開発およびデータベース管理などを目的とした他の公知のアプリケーションも含むことができる。これらのデバイスには、ダミーターミナル、シンクライアント、ゲームシステム、およびネットワークを介して通信できる他のデバイスなどの、他の電子デバイスも含めることができる。
【００８３】
複数の例またはこれらの一部分をハードウェアに実装する限り、本開示は、データ信号上でロジック機能を実施するためのロジックゲートを有するディスクリートロジック回路、適切な組み合わせのロジックゲートを有する特定用途向け集積回路（ＡＳＩＣ）、プログラマブルゲートアレイ（ＰＧＡ）などのプログラマブルハードウェア、フィールド・プログラマブルゲートアレー（ＦＰＧＡ）などの技術のうちの何れか、または、これらの技術の組み合わせで実施することができる。
【００８４】
ほとんどの例では、ＴＣＰ／ＩＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳ、ＡｐｐｌｅＴａｌｋなどといった、様々な市販のプロトコルのうちの何れかを用いた通信をサポートするための、当業者であればよく知っている少なくとも１つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話ネットワーク、赤外線ネットワーク、無線ネットワークおよびこれらの任意の組み合わせであってよい。
【００８５】
上記の例に係る方法は、コンピュータ可読媒体に記憶された、またはそうでなければ、コンピュータ可読媒体から得られるコンピュータ実行可能命令を用いて実施することができる。そのような命令には、例えば、汎用コンピュータ、特定用途向けコンピュータ、もしくは特定用途向け処理デバイスに一定の機能もしくは一群の機能を実行させる、またはそうでなければ、汎用コンピュータ、特定用途向けコンピュータ、もしくは特定用途向け処理デバイスが一定の機能もしくは一群の機能を実行するように構成する、命令およびデータを含めることができる。ここで使用するコンピュータリソースの一部分は、ネットワーク上でアクセス可能な部分であってよい。コンピュータ実行可能命令は、例えば、バイナリ、アセンブリ言語のファームウェアコードまたはソースコードなどの中間フォーマット命令であってよい。命令、ここで使用する情報、および／または、ここで説明する例に係る方法の間に作成された情報を記憶するために使用できるコンピュータ可読媒体の例には、磁気ディスクまたは光ディスク、フラッシュメモリ、不揮発性メモリを備えたＵＳＢデバイス、ネットワーク接続されたストレージデバイスなどが含まれる。
【００８６】
これらの技術に係る方法を実装するデバイスには、ハードウェア、ファームウェア、および／またはソフトウェアを含めること、ならびに、様々なフォームファクタのうちの何れかを採用することができる。このようなフォームファクタの典型的な例には、サーバコンピュータ、ラップトップ、スマートフォン、スモールフォームファクタ・パーソナルコンピュータ、携帯情報端末などがある。本明細書で説明する機能は、周辺機器またはアドインカードでも具現化することができる。このような機能は、更なる例として、回路基板上の異なるチップ間で、または単一のデバイスで実行する異なるプロセス間で実施することもできる。
【００８７】
ウェブサーバを利用する例において、ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データサーバ、Ｊａｖａ（登録商標）サーバおよびビジネスアプリケーションサーバを含む、任意の種類のサーバアプリケーションまたはミッドティアアプリケーションを実行することができる。ユーザデバイスからの依頼に応じて、ウェブサーバは、プログラムまたはスクリプトも実行可能なものであってよい。例えば、ウェブサーバは、Ｊａｖａ（登録商標）、Ｃ、Ｃ＃もしくはＣ＋＋などの任意のプログラム言語、またはＰｅｒｌ、ＰｙｔｈｏｎもしくはＴＣＬなどの任意のスクリプト言語、およびこれらの組み合わせで書き込まれた１または複数のスクリプトまたはプログラムとして実施できる、１または複数のウェブアプリケーションを実行することができる。ウェブサーバには、一般市場で市販されているデータベースサーバを含む、データベースサーバを含めることもできる。
【００８８】
サーバシステムは、上記のような様々なデータストレージ装置ならびに他のメモリおよびストレージ媒体を含むことができる。これらは、コンピュータのうちの１もしくは複数のローカルの（および／または、コンピュータのうちの１または複数に存在する）ストレージ媒体上、または、ネットワーク全域のコンピュータのうちの何れかもしくは全てから離れた所にあるストレージ媒体上など、様々な位置に存在してよい。特定の一組の例において、情報は、当業者であればよく知っているストレージエリアネットワーク（ＳＡＮ）に存在してよい。同様に、コンピュータ、サーバまたは他のネットワークデバイスに帰属する機能を実行するのに必要な任意のファイルを、ローカルにおよび／または遠隔的に適宜記憶することができる。コンピュータ化されたデバイスをシステムが含む場合、このようなデバイスはそれぞれ、バスを介して電気的に結合できる、例えば、少なくとも１つの中央演算処理装置（ＣＰＵ）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチセンサ式ディスプレイ要素またはキーパッド）および少なくとも１つの出力デバイス（例えば、ディスプレイデバイス、プリンタまたはスピーカ）を含む、ハードウェア要素を含むことができる。このようなシステムは、ディスクドライブ、光学式ストレージデバイス、およびランダムアクセスメモリ（ＲＡＭ）またはリードオンリメモリ（ＲＯＭ）などのソリッドステート・ストレージデバイス、ならびに、リムーバブル媒体デバイス、メモリカード、フラッシュカードなどといった、１または複数のストレージデバイスも含むことができる。
【００８９】
このようなデバイスは、コンピュータ可読ストレージ媒体リーダ、通信デバイス（例えば、モデム、無線または有線ネットワークカード、赤外線コンピューティングデバイス）および先に説明したようなワーキングメモリも含むことができる。コンピュータ可読ストレージ媒体リーダは、遠隔ストレージデバイス、ローカルストレージデバイス、固定ストレージデバイスおよび／もしくはリムーバブルストレージデバイスを表すコンピュータ可読ストレージ媒体、ならびに、コンピュータ可読情報を一時的および／もしくはより永久的に含有、記憶、伝送および取得するためのストレージ媒体と接続すること、または、これらのストレージ媒体を収容するように構成することができる。一般的に、システムおよび様々なデバイスは、幾つかのソフトウェアアプリケーション、モジュール、少なくとも１つのワーキングメモリデバイス内に位置する、オペレーティングシステムを含む、サービスまたは他の要素、およびクライアントアプリケーションまたはウェブブラウザなどのアプリケーションプログラムも含むであろう。代替的な例には先に説明したものからの変更形態が多数あってよいことを理解すべきである。例えば、カスタマイズされたハードウェアを使用してもよく、かつ／または、ハードウェア、ソフトウェア（アプレットなどの高移植性ソフトウェアを含む）もしくはこれらの両方で特定の要素を実施してよい。更に、ネットワーク入出力デバイスなどの他のコンピューティングデバイスへの接続を採用することができる。
【００９０】
コードまたはコードの一部分を含むストレージ媒体およびコンピュータ可読媒体には、ストレージ媒体およびコンピューティング媒体を含む、当技術分野で知られている、または使用されている、任意の適切な媒体を含めることができる。ストレージ媒体およびコンピューティング媒体には、限定はされないが、データまたは情報のストレージおよび／または伝送のための揮発性および不揮発性のリムーバブル媒体およびノンリムーバブル媒体を含めることができる。リムーバブル媒体およびノンリムーバブル媒体には、ＲＡＭ、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ストレージ装置、磁気カセット、磁気テープ、磁気ディスクストレージ装置もしくは他の磁気ストレージデバイス、または、所望の情報を記憶するために使用すること、および、システムデバイスからアクセスすることができる任意の他の媒体が含まれる。データまたは情報には、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを含めることができる。本明細書で提供する技術および教示に基づき、当業者であれば、本開示の様々な態様を実装する他の手段および／または方法が解るであろう。
【００９１】
これに応じて、本明細書および図面は、限定的な意味ではなく例示的な意味のものと見なすべきである。しかしながら、これらに対する様々な修正および変更が、特許請求の範囲に記載するような、本特許出願のより広い思想および範囲から逸脱することなく行えることは明らかであろう。
【図１】
2019061644.tif 000005
【図２Ａ】
2019061644.tif 000006
【図２Ｂ】
2019061644.tif 000007
【図２Ｃ】
2019061644.tif 000008
【図３】
2019061644.tif 000009
【図４】
2019061644.tif 000010
【図５】
2019061644.tif 000011
【手続補正書】
【提出日】平成31年2月6日(2019.2.6)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データセンタにおけるサーバシステムのファームウェア設定を保持するためのコンピュータ実装方法であって、
前記サーバシステムの電源を入れる段階と、
前記サーバシステムのコンポーネントから複数の将来のファームウェア設定を取得する段階であって、前記複数の将来のファームウェア設定は、次のシステム再起動時に変更する必要があるファームウェア設定である、段階と、
前記複数の将来のファームウェア設定を前記サーバシステムに適用する段階と、
固有の文字列マッピング方式で前記コンポーネントに複数の現在のファームウェア設定を送信する段階であって、前記複数の現在のファームウェア設定は、現在前記サーバシステムにあるファームウェア設定である、段階と、
ファームウェアフラッシュ全体のアップデートを実行する段階と、
前記固有の文字列マッピング方式に基づいて、前記コンポーネントに記憶された前記複数の現在のファームウェア設定を前記コンポーネントの前記複数の将来のファームウェア設定にコピーする段階と、
前記コンポーネントに記憶された前記複数の将来のファームウェア設定を適用することにより、前記サーバシステムを再起動する段階と
を備える方法。
【請求項２】
前記コンポーネントは、前記サーバシステムの管理コントローラである、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記管理コントローラは、ネットワークに接続されており、かつ、帯域外でアクセス可能である、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記複数の将来のファームウェア設定は、前記サーバシステムが動作していないときに、または、前記サーバシステムの電源が切れているときでも、前記管理コントローラを介して変更可能である、請求項３に記載のコンピュータ実装方法。
【請求項５】
前記管理コントローラは、ベースボード管理コントローラ（ＢＭＣ）またはラック管理コントローラ（ＲＭＣ）である、請求項２から４の何れか一項に記載のコンピュータ実装方法。
【請求項６】
前記固有の文字列マッピング方式は、固有の文字列に前記複数の現在のファームウェア設定のそれぞれをマッピングする段階を含む、請求項１から５の何れか一項に記載のコンピュータ実装方法。
【請求項７】
前記固有の文字列マッピング方式は更に、前記複数の現在のファームウェア設定のうちの変更した現在のファームウェア設定を固有の文字列マッピングタイプと共に記録する段階を含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
前記コンポーネントは、前記サーバシステムのフラッシュチップである、請求項１から７の何れか一項に記載のコンピュータ実装方法。
【請求項９】
プロセッサと、
命令を記憶するコンピュータ可読媒体と
を備えるシステムであって、
前記命令は、前記プロセッサにより実行されると、前記システムに、
前記システムの電源を入れる動作と、
前記システムのコンポーネントから複数の将来のファームウェア設定を取得する動作であって、前記複数の将来のファームウェア設定は、次のシステム再起動時に変更する必要があるファームウェア設定である、動作と、
前記複数の将来のファームウェア設定を前記システムに適用する動作と、
固有の文字列マッピング方式で前記コンポーネントへ複数の現在のファームウェア設定を送信する動作であって、前記複数の現在のファームウェア設定は、現在前記システムにあるファームウェア設定である、動作と、
ファームウェアフラッシュ全体のアップデートを実行する動作と、
前記固有の文字列マッピング方式に基づいて、前記コンポーネントに記憶された前記複数の現在のファームウェア設定を前記コンポーネントの前記複数の将来のファームウェア設定にコピーする動作と、
前記コンポーネントに記憶された前記複数の将来のファームウェア設定を適用することにより、前記システムを再起動する動作と
を含む動作を実行させる、システム。
【請求項１０】
システムの少なくとも１つのプロセッサにより実行されると、前記システムに、
サーバシステムの電源を入れる動作と、
前記サーバシステムのコンポーネントから複数の将来のファームウェア設定を取得する動作であって、前記複数の将来のファームウェア設定は、次のシステム再起動時に変更する必要があるファームウェア設定である、動作と、
前記複数の将来のファームウェア設定を前記サーバシステムに適用する動作と、
固有の文字列マッピング方式で前記コンポーネントへ複数の現在のファームウェア設定を送信する動作であって、前記複数の現在のファームウェア設定は、現在前記サーバシステムにあるファームウェア設定である、動作と、
ファームウェアフラッシュ全体のアップデートを実行する動作と、
前記固有の文字列マッピング方式に基づいて、前記コンポーネントに記憶された前記複数の現在のファームウェア設定を前記コンポーネントの前記複数の将来のファームウェア設定にコピーする動作と、
前記コンポーネントに記憶された前記複数の将来のファームウェア設定を適用することにより、前記サーバシステムを再起動する動作と
を含む動作を実行させるためのプログラム。