JP6701398B2 - リモートユーティリティによるファームウェアの更新 - Google Patents

リモートユーティリティによるファームウェアの更新 Download PDF

Info

Publication number
JP6701398B2
JP6701398B2 JP2019022680A JP2019022680A JP6701398B2 JP 6701398 B2 JP6701398 B2 JP 6701398B2 JP 2019022680 A JP2019022680 A JP 2019022680A JP 2019022680 A JP2019022680 A JP 2019022680A JP 6701398 B2 JP6701398 B2 JP 6701398B2
Authority
JP
Japan
Prior art keywords
image
firmware
existing
storage device
computing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019022680A
Other languages
English (en)
Other versions
JP2019204488A (ja
Inventor
友涵 林
友涵 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Quanta Computer Inc
Original Assignee
Quanta Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Quanta Computer Inc filed Critical Quanta Computer Inc
Publication of JP2019204488A publication Critical patent/JP2019204488A/ja
Application granted granted Critical
Publication of JP6701398B2 publication Critical patent/JP6701398B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/442Shutdown
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、コンピュータデバイスのファームウェアの更新に関し、特に、リモートユーティリティを用いてファームウェアを更新するシステム及び方法に関する。
ファームウェアは、コンピュータデバイスのハードウェアに対する低レベルの制御を提供する一部のソフトウェアである。ファームウェアは、コンピュータデバイスのファームウェアストレージデバイス内(例えば、コンピュータデバイスの不揮発性メモリコンポーネント内)に恒久的にインストールされ得る。コンピュータデバイスの起動時に、コンピュータデバイスの中央処理装置はファームウェアを実行する。コンピュータデバイスは、自身のメモリに記憶されたオペレーティングシステムを有することができ、オペレーティングシステムは、ファームウェアにアクセスすることができる。
時折、コンピュータデバイスのファームウェアを更新する必要がある。しかしながら、ファームウェアの更新中及び更新後の両方でコンピュータデバイスの動作機能性を維持する必要があるので、ファームウェアの更新は困難なプロセスとなり得る。その結果、ファームウェアベンダは、更新中及び更新後にコンピュータデバイスの動作を維持することが困難であるため、ファームウェアの更新を避けようとすることが多い。それにもかかわらず、特定の状況においては、コンピュータデバイスのファームウェアの更新の必要性が避けられない場合がある。例えば、ファームウェアの更新は、コンピュータデバイスが出荷された後に検出された機能上の問題を解決するために必要とされる場合がある。ファームウェアの更新は、コンピュータデバイスに既にプログラムされているが、コンピュータデバイス上で動作している別のソフトウェアから未だアクセスされていない機能を有効にするために必要とされる場合がある。また、ファームウェアの更新は、コンピュータデバイスによりアクセスされ得るファイルフォーマットのタイプを更新するために、又は、コンピュータデバイス用のバッテリ管理機能を更新するために、必要とされ得る。
ファームウェアを更新する現在の方法の1つは、すでに、コンピュータデバイスに既に存在する動作環境での起動に依存している。その動作環境を通じて、ファームウェアの更新をファームウェアストレージデバイスに実装するためのプロセスを実行することができる。しかしながら、このプロセスでは、故障した動作環境を有するコンピュータデバイスを回復することができない。例えば、このプロセスは、ファームウェアがクラッシュした場合、又は、コンピュータデバイスの動作環境が動作不能である場合、ファームウェアを更新することができない。
ファームウェアを更新する他の現在の方法は、ファームウェアストレージデバイスに接続する外部管理デバイスの使用に依存している。この外部管理デバイスは、コンピュータデバイスの動作環境が動作不能であるときでも、ファームウェアストレージデバイスをパワーオンすることができる。しかし、このような外部管理デバイスは、典型的に、ファームウェアストレージデバイスへのデータの選択的な読み出し、編集及び書き込み等のより複雑な機能を実行することができない。その結果、外部管理デバイスを使用すると、通常、ファームウェア全体を書き直すかイメージを変更する必要がある。よって、ファームウェアが書き換えられると、ファームウェアストレージデバイス上に以前から存在していたデータが失われる可能性がある。このようなデータの損失は、コンピュータデバイスの所有者又はオペレータにとって容認できない可能性がある。
よって、ファームウェアストレージデバイスに記憶されているファームウェア全体を再イメージングすることを要しない、ファームウェアを更新するシステム及び方法が必要とされている。このようなシステム及び方法は、コンピュータデバイスの動作環境にアクセスできない場合であっても更新を提供することができるべきである。このようなシステム及び方法は、複雑な計算機能を実行し、カスタマイズされた更新手順をファームウェアストレージデバイス上で実行する機能を提供すべきである。最後に、このようなシステム及び方法は、操作性を容易にするために、各種コンピュータデバイス内の様々なファームウェアストレージデバイスの更新をホストできるべきである。
本発明は、リモートユーティリティによるファームウェアの更新を提供することを目的とする。
本発明の各種実施形態は、コンピュータデバイスのファームウェアを更新するコンピュータ実行方法を提供する。本発明の一実施形態による例示的な方法は、最初に、ファームウェアの既存のイメージを取り出す。ファームウェアは、コンピュータデバイス内のファームウェアストレージデバイスに位置することができる。方法は、次に、更新されたファームウェアの新たなイメージを取り出す。方法は、既存のイメージと、新たなイメージと、を分析することができる。方法は、既存のイメージ及び新たなイメージに基づいて、既存のイメージ及び新たなイメージから処理済みイメージを生成することができる。方法は、次に、処理済みイメージを、コンピュータデバイスのファームウェアストレージデバイスに書き込むことを提供し得る。
いくつかの実施形態において、方法は、コンピュータデバイスがパワーオフの場合の全てのステップを実行することを提供する。
いくつかの実施形態において、既存のイメージを分析することは、新たなイメージ内の複数の更新と、既存のイメージ内の既存のデータとを比較することをさらに含むことができる。この比較により、新たなイメージと競合しない既存のデータを識別することができる。
他の実施形態において、処理済みイメージを生成することは、新たなイメージを、競合しない既存のデータと組み合わせて、処理済みイメージを形成することをさらに含むことができる。
他の実施形態において、方法は、ファームウェアストレージデバイスを再起動することと、ファームウェアストレージデバイス上で処理済みイメージを実行することと、をさらに含むことができる。
本発明の別の例示的な実施形態は、コンピュータデバイスの既存のイメージを更新するように構成されたコンピュータシステムを提供する。コンピュータシステムは、メモリと、処理ユニットと、を備えることができる。処理ユニットは、メモリと通信することができる。処理ユニットは、実行されるとコンピュータシステムに一連の動作を実行させる命令を記憶することができる。先ず、コンピュータシステムは、ファームウェアの既存のイメージを取り出すことができる。ファームウェアは、コンピュータデバイス内のファームウェアストレージデバイスに位置することができる。次に、命令は、既存のイメージと、新たなイメージとの分析を提供することができる。命令は、既存のイメージ及び新たなイメージの分析に基づいて、既存のイメージ及び新たなイメージから処理済みイメージを生成することができる。命令は、処理済みイメージをコンピュータデバイスのファームウェアストレージデバイスに書き込むことによって、完了することができる。
いくつかの実施形態において、コンピュータデバイスをパワーオフすることができる。
他の実施形態において、既存のイメージを分析することは、更新手順における複数の更新と、既存のイメージ内の既存のデータとを比較することをさらに含むことができる。これにより、新たなイメージと競合しない既存のデータを識別することができる。
他の実施形態において、処理済みイメージを生成することは、新たなイメージを、競合しない既存のデータと組み合わせて、処理済みイメージを形成することをさらに含むことができる。
他の実施形態において、命令は、ファームウェアストレージデバイスを再起動することと、ファームウェアストレージデバイス上で処理済みイメージを実行することと、をさらに含むことができる。
第3実施形態において、本発明は、命令を記憶する非一時的なコンピュータ可読記憶媒体を提供する。命令は、コンピュータシステムによって実行されると、一連の動作をコンピュータシステムに実行させる。一連の動作は、ファームウェアの既存のイメージを取り出すことから開始する。ファームウェアは、コンピュータデバイスのファームウェアストレージデバイスに位置することができる。命令は、次に、既存のイメージと、新たなイメージとの分析を提供することができる。次いで、命令は、既存のイメージ及び新たなイメージの分析に基づいて、既存のイメージ及び新たなイメージから処理済みイメージを生成する。最後に、命令は、処理済みイメージを、コンピュータデバイスのファームウェアストレージデバイスに書き込むことを提供することができる。
いくつかの実施形態において、コンピュータデバイスをパワーオフすることができる。
他の実施形態において、既存のイメージを分析することは、更新手順における複数の更新と、既存のイメージ内の既存のデータとを比較することをさらに含むことができる。これにより、新たなイメージと競合しない既存のデータを識別することができる。
他の実施形態において、処理済みイメージを生成することは、新たなイメージを、競合しない既存のデータと組み合わせて、処理済みイメージを形成することをさらに含むことができる。
他の実施形態において、命令は、ファームウェアストレージデバイスを再起動することと、ファームウェアストレージデバイス上で処理済みイメージを実行することと、をさらに含むことができる。
リモートユーティリティを用いたファームウェアストレージデバイスの更新によって、複雑な動作手順を実行することができる。
本発明の上述した利点及び特徴と、他の利点及び特徴とを得る方法を説明するために、上記で簡単に示した原理は、図面に示された具体的な実施形態によってさらに具体的に説明される。これらの図面は、本発明の一例を示すものであって、本発明を限定するものではないことを理解されたい。本発明の原理は、図面の記載及び付加された特徴と詳細の解釈とによって説明される。
ファームウェアストレージデバイスの動作環境に基づく従来の方法による、ユーザによるファームウェアストレージデバイスの更新を示す図である。 ファームウェアストレージデバイスの動作環境に基づいてファームウェアを更新する方法のフローチャートである。 外部管理デバイスに基づく従来の方法による、ユーザによるファームウェアストレージデバイスの更新を示す図である。 外部管理デバイスに基づいてファームウェアを更新する方法のフローチャートである。 本発明の例示的な実施形態による、ユーザによるファームウェアストレージデバイスの更新を示す図である。 本発明の一実施形態による、ファームウェアを更新する方法のフローチャートである。 本発明の各種態様を実行するのに用いられるコンピュータシステムを示す図である。 本発明の各種態様を実行するのに用いられるコンピュータシステムを示す図である。
本発明に関し、「コンピュータデバイス」という用語は、ハードウェア及びソフトウェアコンポーネントを有する任意の電動式又は電池式の機器を意味することができ、ソフトウェアコンポーネントは、当該デバイスの機能を動作させるように構成することができる。
本発明に関し、「動作環境」という用語は、ソフトウェアがコンピュータデバイス上で実行するのを可能にするように機能する任意のオペレーティングシステム又は環境を意味することができる。
添付の図面を参照しながら本発明を説明する。図面全体を通して、類似又は同等の要素を示すために、同様の参照番号が使用されている。図面は縮尺通りに記載されておらず、単に本発明を提供するために提供されている。本発明のいくつかの態様は、例示のための例示的な用途を参照して以下に説明される。本発明を十分に理解するために、多くの具体的な詳細、関係及び方法が説明されていることを理解されたい。しかしながら、当業者であれば、本発明が1つ以上の具体的な詳細なしに又は他の方法を用いて実施され得ることを容易に認識するであろう。他の例では、本発明を曖昧にすることを避けるために、周知の構造又は動作については詳細に示されていない。いくつかの工程は、異なる順序及び/又は他の工程若しくは事象と同時に起こり得るので、本発明は、例示された工程又は事象の順序付けによって限定されない。さらに、本発明による方法を実施するために、例示された全ての工程又は事象が必要とされるわけではない。
既存のシステムの制限を考慮して、本発明は、ファームウェアを保存するファームウェアストレージデバイスから全ての既存のデータを削除することなく、コンピュータデバイスのファームウェアを更新する方法に関する。例示的な方法は、先ず、コンピュータデバイスをパワーオフし、次に、リモートユーティリティからファームウェアを更新するための更新手順を開始する工程を含むことができる。リモートユーティリティは、ファームウェアの既存のイメージを取得する。リモートユーティリティは、更新されたファームウェアの新たなイメージを取得することもできる。リモートユーティリティは、既存のイメージと、新たなイメージとを分析することができる。リモートユーティリティは、既存のイメージ及び新たなイメージの分析に基づいて、既存のイメージ及び新たなイメージから処理済みイメージを生成することができる。そして、リモートユーティリティは、処理済みイメージをコンピュータデバイスのファームウェアストレージデバイスに書き込むことを提供することができる。
よって、本発明の一実施形態による例示的な方法は、リモートユーティリティを使用することによって、ファームウェアストレージデバイスの更新を提供することができる。本発明の一実施形態による例示的な方法は、コンピュータデバイスの動作環境が動作可能であること、又は、動作環境によってファームウェアがアクセス可能であることを必要としない。例えば、この方法は、コンピュータデバイスがパワーオフの間に全ての工程を実行することができる。
従来のシステムと異なり、本発明の工程は、リモートユーティリティをさらに用いて、ファームウェアを更新する。リモートユーティリティは、複雑な動作手順を実行することができるので、利点を提供する。例えば、リモートユーティリティは、ファームウェアストレージデバイスからのイメージを分析して、どのデータを新たなイメージと共に保持することができ、どのデータを置き換える必要があるかを決定することができる。リモートユーティリティは、保存する必要がある古いファームウェアデータをコピーすることができ、古いファームウェアデータと、ファームウェアの更新に関連する新たなファームウェアデータとをマージすることができ、これら両方を含む処理済みイメージを生成することができる。次に、リモートユーティリティは、処理済みイメージをファームウェアストレージデバイスに書き込むように、管理デバイスに指示することができる。よって、更新されたファームウェアストレージデバイスは、更新手順の前に、当該デバイスのデータを保持することができる。
図1Aは、従来の方法によるシステム100を示す図であり、システム100は、コンピュータデバイスで実行されるオペレーティングシステムに基づいて、ファームウェアストレージデバイスを更新することができる。システム100は、ユーザ110によってアクセス可能なコンピュータデバイスである。システム100は、ローカルユーティリティ120と、ファームウェアストレージデバイス130と、を有する。ファームウェアストレージデバイス130は、ファームウェアの更新を必要とするシステム100の一部である。ユーザ110は、ファームウェアストレージデバイス130の更新手順を開始することができる個人である。ローカルユーティリティ120は、システム100上で実行する動作環境である。ローカルユーティリティ120は、ファームウェアストレージデバイス130上で複雑なタスクを実行することができる。しかし、ユーザ110がローカルユーティリティ120及びファームウェアストレージデバイス130の両方にアクセスするためには、システム100をパワーオンにしてローカルユーティリティ120から起動する必要がある。さらに、ローカルユーティリティ120が何らかの理由でファームウェアストレージデバイス130にアクセスできない場合、ユーザ110は、システム100内のファームウェアストレージデバイス130を更新することができない。
図1Bは、ファームウェアストレージデバイスのオペレーティングシステムに依存し、図1のシステム100内で動作するファームウェアストレージデバイスを更新するための従来の方法200のフローチャートである。図1Bを参照すると、方法200は、システム100及びファームウェアストレージデバイス130をパワーオンすることによって開始する。特に、この方法200は、ファームウェアストレージデバイス130の更新を進めるために、ファームウェアストレージデバイス130及びシステム100の両方をパワーオンにする必要がある。
工程220において、方法200は、システム100を動作環境でブートして、ファームウェアストレージデバイス130のファームウェアを更新する。動作環境は、図1Aに関して説明したローカルユーティリティ120とすることができる。特に、方法200は、システム100を動作環境でうまく起動することができない場合、ファームウェアストレージデバイス130の更新を進めることができない。例えばシステム100等のコンピュータデバイスが動作環境で起動することができない多くの状況が存在する。例えば、ファームウェアストレージデバイス130は、ローカルユーティリティ120がシステム100によりロードされること又は適切に動作することを妨げる、破損したソフトウェアを有する場合がある。
工程230において、方法200は、システム100の動作環境で更新手順を実行して、ファームウェアストレージデバイス130のファームウェアを更新することができる。方法200がシステム100のパワーオンに成功し、ファームウェアストレージデバイス130のファームウェアを更新するための動作環境での起動に成功した場合、工程230は、方法200が更新手順を完了する間、ファームウェアストレージデバイス130上の既存のデータを保持する能力を方法200に提供する。
工程240において、方法200は、更新手順を完了し、システム100を再起動する。システム100を再起動すると、方法200によって提供され、ファームウェアストレージデバイス130に記憶された新たな更新を使用して、システムを起動することができる。
しかし、上述したように、方法200は、方法200に基づく更新手順の柔軟性に影響を与える厳しい制限を有する。最も重要なことは、ユーザ110が、(1)システム100をオンにする、(2)ローカルユーティリティ120でブートする、の両方を行うことができない場合、方法200を進めることができない。これらの要件は、方法200の工程210及び工程220の各々に取り込まれる。
図2Aは、管理デバイスの使用に基づいてファームウェアを更新するシステム300を示す図である。システム300は、ユーザ310によってアクセス可能であり、管理デバイス340と、ファームウェアストレージデバイス330と、を有する。管理デバイス340は、システム300のマザーボード上に設計することができ、システム300の内部に存在し得る。管理デバイス340は、待機電力で動作する自身のマイクロプロセッサを備えることができるので、システムがパワーオフである場合であっても動作することができる。ファームウェアストレージデバイス330は、更新手順を必要とするデバイスである。ユーザ310は、ファームウェアストレージデバイス330の更新手順を開始することができる個人である。管理デバイス340は、ファームウェアストレージデバイス330の外部にあってもよい。管理デバイス340は、ユーザ310からの命令に従って、基本的なタスクを完了することができる。例えば、管理デバイス340は、ファームウェアストレージデバイス330から全てのデータを読み出すことができ、ファームウェアストレージデバイス330から全てのデータを削除することができ、及び/又は、ファームウェアストレージデバイス330にデータを書き込むことができる。ファームウェアストレージデバイス330にデータを書き込むことは、新たに書き込まれたデータをコンピュータデバイスが読み出すだけなので、ファームウェアストレージデバイス330上の既存のデータにアクセスできない状態にする。管理デバイス340は、システム300がパワーオンにならない場合、ファームウェアストレージデバイス330の更新手順を完了するために使用することができる。よって、管理デバイス340は、ファームウェアストレージデバイス330を更新するための動作環境を提供することができる。
図2Bは、管理デバイスの使用に基づいて、図2Aのシステム300内で動作するファームウェアを更新する従来の方法のフローチャートである。図2Bを参照すると、方法400は、工程410において、コンピュータデバイスをパワーオフにすることから開始する。コンピュータデバイスをパワーオフすることは、管理デバイスがファームウェアストレージデバイスにアクセスするのと同時に、コンピュータデバイスがファームウェアストレージデバイスにアクセスするのを防止する。コンピュータデバイス及び管理デバイスの両方が同時にファームウェアストレージデバイスにアクセスした場合、コマンドが競合して、更新処理が完了するのを妨げる可能性がある。
工程420において、ユーザ310は、管理デバイス340を介して更新手順を開始することができる。ユーザ310は、更新されたファームウェアイメージを管理デバイス340にアップロードすることができる。更新されたファームウェアイメージは、ファームウェアの更新バージョンをファームウェアストレージデバイス330に提供する。
工程430において、管理デバイス340は、ファームウェアストレージデバイス330に記憶されたファームウェアを再イメージする。つまり、管理デバイス340は、先ず、ファームウェアストレージデバイス330上の既存のイメージを削除した後に、更新されたファームウェアイメージをファームウェアストレージデバイス330に書き込む。或いは、管理デバイス340は、更新されたファームウェアイメージをファームウェアストレージデバイス330に単に上書きすることができる。この段階では、コンピュータデバイスは、新たに書き込まれたデータを読み出すだけなので、ファームウェアストレージデバイス330上の既存のデータへのアクセスがなくなる。
工程440において、ファームウェアストレージデバイス330のイメージ更新が完了する。よって、工程440は、システム300の再起動を提供する。システム300を再起動すると、システム300は、方法400によって提供された新たな更新されたファームウェアを用いて起動することができる。
方法400は、更新手順がファームウェアストレージデバイス330内のファームウェアを完全に再イメージするという厳しい制限がある。よって、方法400は、ファームウェアの如何なる選択的な編集を許可しない。方法400は、ファームウェアストレージデバイス330内のファームウェアに以前適用された修正又は設定の保持を許可しない。方法400による更新手順では、ユーザ310は、システム300の選好に応じて、ファームウェアストレージデバイス330に記憶されているファームウェアを新たに設定するという冗長なタスクを実行しなければならない。
方法200及び方法400の制限を考慮して、本発明は、コンピュータデバイス又はシステムのファームウェアストレージデバイス内の既存のデータの削除を必要としない新たな方法を提供する。さらに、この方法は、コンピュータデバイス又はシステムがパワーオフの場合であっても使用することができる。よって、本発明は、従来技術を改善する柔軟な更新方法を提供する。
図3Aは、リモートユーティリティ520及び管理デバイス540を用いてファームウェアストレージデバイス530を更新することができるシステム500を示す図である。システム500は、ユーザ510によってアクセス可能であり、コンピュータデバイス505と、リモートユーティリティ520と、を有する。コンピュータデバイス505は、管理デバイス540と、ファームウェアストレージデバイス530と、を有する。ファームウェアストレージデバイス530は、更新が必要なデバイスである。ユーザ510は、ファームウェアストレージデバイス530の更新手順を開始することができる個人である。
本開示により提供されるように、管理デバイス540は、コンピュータデバイス505の内部にあってもよい。管理デバイス540は、ユーザ510からの命令に従って、基本的なタスクを完了することができる。たとえば、管理デバイス540は、ファームウェアストレージデバイス530から全てのデータを読み出すことができ、ファームウェアストレージデバイス530から全てのデータを削除することができ、又は、データをファームウェアストレージデバイス530に書き込むことができる。データをファームウェアストレージデバイス530に書き込むことは、新たに書き込まれたデータをコンピュータデバイスが読み出すだけなので、ファームウェアストレージデバイス530の既存のデータにアクセスできないようにする。管理デバイス540は、コンピュータデバイス505がパワーオンできない場合、ファームウェアストレージデバイス530の更新手順を完了するために使用することができる。管理デバイス540は、ファームウェアストレージデバイス530のファームウェアを更新するための動作環境として機能することができる。管理デバイスは、コンピュータデバイスによって実行されるメインオペレーティングシステムとは別に動作するように、自身のマイクロプロセッサ及びメモリを用いて構成することができる。管理デバイスは、コンピュータデバイスがパワーオフ又は起動不能の場合であっても、待機電力により動作して、ファームウェアストレージデバイスの読み書きを実行することができる。
リモートユーティリティ520は、コンピュータデバイス505から独立したコンピュータシステムである。リモートユーティリティ520は、コンピュータデバイス505と通信可能に接続することができる。さらに、リモートユーティリティは、ファームウェア及びコンピュータデバイス505を用いて複雑なタスク(例えば、ファームウェアイメージの検証、ファームウェアストレージデバイス530に記憶されたファームウェアの設定の取得及び保存、及び/又は、ファームウェアストレージデバイス530から読み出した古いイメージの分析等)を完了するように構成されてもよい。例えば、リモートユーティリティ520は、スマートフォン、デスクトップコンピュータ、ラップトップコンピュータ、タブレット、又は、ソフトウェア編集及び分析機能を実行するためにユーザ510と対話可能な他のコンピュータシステムであってもよい。
図3Bは、本発明の一実施形態による、ファームウェアストレージデバイスを更新する例示的な方法のフローチャートである。この方法は、図3Aのシステム500で動作することができる。図3Bに戻ると、方法は、工程610において、コンピュータデバイス505をパワーオフにすることによって開始することができる。コンピュータデバイス505をパワーオフにすることによって、管理デバイス540がファームウェアストレージデバイス530にアクセスするのと同時に、コンピュータデバイス505がファームウェアストレージデバイス530にアクセスするのを防止することができる。コンピュータデバイス505及び管理デバイス540の両方が同時にファームウェアストレージデバイス530にアクセスした場合、命令が競合して、更新処理が完了するのを妨げる可能性がある。
工程620において、ユーザ510は、リモートユーティリティ520を介して、ファームウェアストレージデバイス530に記憶されているファームウェアを更新するための更新手順を開始することができる。特に、ユーザ510は、先ず、更新されたファームウェアイメージをリモートユーティリティ520にアップロードすることができる。管理デバイス540だけでなくリモートユーティリティ520を使用することによって、方法が管理デバイス540だけを使用した場合よりも、更新処理の更なるカスタマイズが可能になる。管理デバイス540の機能は、管理デバイス540がどのタイプのファームウェアを更新する必要があるのかについて十分に理解していない管理デバイスの設計者によって決定される。対照的に、リモートユーティリティ520は、どのファームウェアを更新する必要があるのかについて精通しているファームウェアストレージデバイス530の設計者によって設計することができる。よって、リモートユーティリティ520を使用することによって、更新プロセスのより容易な実施及びメンテナンスが可能になる。
工程630において、リモートユーティリティ520は、ファームウェアストレージデバイス530内のファームウェアの既存のイメージを管理デバイス540から受信する。この工程は、管理デバイス540が、ファームウェアストレージデバイス530上に現在存在する全てのデータを読み出すことを含む。管理デバイス540は、このデータを既存のイメージとしてリモートユーティリティ520に提供することができる。
工程640において、リモートユーティリティ520は、既存のイメージを分析することができる。この分析は、リモートユーティリティ520が、新たなファームウェアと既存のイメージとを比較する工程を含む。リモートユーティリティ520は、既存のデータ内のどの部分のデータが、新たなファームウェア内の更新と衝突しないかを識別することができる。リモートユーティリティ520は、更新手順によって提供された全ての更新を保持し、ファームウェアストレージデバイス530からの競合しない全ての既存のデータを保持する処理済みイメージを生成することができる。
例えば、リモートユーティリティ520は、ファームウェアイメージセキュリティチェックを実行し、既存のイメージに記憶されている元のファームウェア設定を保持することによって、既存のイメージを分析することができる。リモートユーティリティ520は、先ず、既存のイメージから公開鍵を取り出すことができる。リモートユーティリティ520は、次に、公開鍵を用いて、ユーザによって更新された新たなファームウェアイメージが、正しい秘密鍵によって適切に署名されていることを確認することができる。リモートユーティリティ520が、適切な署名を検証できない場合、リモートユーティリティ520は、更新要求を拒否することができる。リモートユーティリティ520が適切な署名を検証することができる場合、リモートユーティリティ520は、既存のイメージに記憶されている元のファームウェア設定を取り出すことができる。そして、リモートユーティリティ520は、設定と新たなファームウェアイメージとを組み合わせて、処理済みイメージを生成することができる。
他の実施形態において、リモートユーティリティ520の設計者は、管理デバイス540にとっては困難であるがリモートユーティリティ520にとっては容易な他の複雑な分析を追加することができる。
工程650において、リモートユーティリティ520は、ファームウェアストレージデバイス530内の処理済イメージを用いて既存のイメージを上書きするように、管理デバイス540に命令することができる。例えば、管理デバイス540は、ファームウェアストレージデバイス530から既存のイメージを消去することができる。いくつかのファームウェアストレージデバイスはSPIフラッシュを使用するので、既存のイメージを消去する必要がある。SPIフラッシュに書き込む場合、消去命令は、新たなデータがファームウェアストレージデバイスに書き込まれる前に全てのビットが適切に元に戻るのを保証することができる。
工程660において、ファームウェアストレージデバイス530のファームウェア更新プロセスは完了している。よって、工程660はシステム500の再起動を提供する。システム500を再起動することは、方法600によって提供された新たな更新を用いてファームウェアストレージデバイス530が起動するのを可能にする。
よって、方法600は、ファームウェアストレージデバイス530の既存のデータの全てを失うことなく、ファームウェアストレージデバイスを更新する技術を提供する。方法600によって、ファームウェアストレージデバイス530上の競合していない既存のデータを更新手順で保存することができる。この更新は、ファームウェアストレージデバイス530がパワーオンであるかパワーオフであるかにかかわらず、完了することができる。さらに、この更新は、ファームウェアストレージデバイス530を更新する動作環境が利用可能であるか否かにかかわらず、完了することができる。
図4は、コンピュータシステムのコンポーネントがバス702を用いて互いに電気的に通信する例示的なコンピュータシステム700を示す図である。システム700は、処理ユニット(CPU又はプロセッサ)730と、システムバス702と、を有する。システムバス702は、メモリ704(例えば、読み出し専用メモリ(ROM)706及びランダムアクセスメモリ(RAM)708)を含む各種システムコンポーネントをプロセッサ730に接続する。システム700は、高速メモリのキャッシュを有し、キャッシュは、プロセッサ730に直接接続され、プロセッサ730に隣接して接続され、又は、プロセッサ730の一部として統合されてもよい。システム700は、プロセッサ730による高速アクセスのために、メモリ704及び/又はストレージデバイス712からキャッシュ728にデータをコピーしてもよい。この方法において、キャッシュは、プロセッサ730がデータを待つ間に遅延が生じるのを防止する性能向上を提供する。これら及び他のモジュールは、様々な動作を提供するためにプロセッサ730を制御するように構成されている。別のシステムメモリ704も同様に使用可能である。メモリ704は、異なるパフォーマンス特性を有する複数の異なるタイプのメモリを有することができる。プロセッサ730は、任意の汎用目的プロセッサと、例えばストレージデバイス712に記憶された第1モジュール714、第2モジュール716及び第3モジュール718等のハードウェアモジュール又はソフトウェアモジュールを含むことができる。ハードウェアモジュール又はソフトウェアモジュールは、プロセッサ730、及び、ソフトウェア命令が実際のプロセッサ設計に組み込まれる汎用目的プロセッサを制御するように構成されている。プロセッサ730は、実質的に、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュ等を含む完全に独立したコンピュータシステムであってもよい。マルチコアプロセッサは、対称又は非対称であってもよい。
ユーザがコンピュータシステム700と対話するのを可能にするために、入力デバイス720が入力メカニズムとして設けられている。入力デバイス720は、例えば、スピーチ用のマイクロフォン、ジェスチャ又はグラフィカル入力用のタッチスクリーン、キーボード、マウス、モーション入力等を含んでもよい。場合によっては、マルチモーダルシステムは、ユーザが、システム700と通信するために複数のタイプの入力を提供できるようにする。この例では、出力デバイス722も設けられている。通信インタフェース724は、ユーザ入力及びシステム出力を統治及び管理することができる。
ストレージデバイス712は、コンピュータによってアクセス可能なデータを記憶する不揮発性メモリであってもよい。ストレージデバイス712は、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)708、読み出し専用メモリ(ROM)706、及び、これらの組み合わせ等であってもよい。
コントローラ710は、システム700上の特殊なマイクロコントローラ又はプロセッサ(例えば、BMC(ベースボード管理コントローラ))であってもよい。場合によっては、コントローラ710は、インテリジェントプラットフォーム管理インタフェイス(IPMI)の一部であってもよい。さらに、場合によっては、コントローラ710は、システム700のマザーボード又はメイン回路基板に組み込まれてもよい。コントローラ710は、システム管理ソフトウェアとプラットフォームハードウェアとの間のインタフェースを管理することができる。また、コントローラ710は、以下に説明するように、例えばコントローラ又は周辺機器等の各種システムデバイス及びコンポーネント(内部、及び/又は、外部)と通信することができる。
コントローラ710は、通知、警告及び/又はイベントに対する特定の対応を生成し、遠隔デバイス又はコンポーネントと通信(例えば、電子メールメッセージ、ネットワークメッセージ等)し、自動ハードウェア障害回復工程等の指令や命令を生成する。システム管理者は、以下に更に説明するように、コントローラ710と遠隔通信して、特定のハードウェア障害回復工程又は操作を開始又は実行することができる。
コントローラ710は、コントローラ710によって受信されたイベント、警告、通知を管理及び記憶するシステムイベントログコントローラ及び/又はストレージを有してもよい。例えば、コントローラ710又はシステムイベントログコントローラは、1つ以上のデバイス及びコンポーネントからの警告や通知を受信し、当該警告や通知をシステムイベントログストレージコンポーネント内に維持することができる。
フラッシュメモリ732は、ストレージ及び/又はデータ転送に用いられるシステム700によって使用される電子不揮発性コンピュータストレージ媒体又はチップであってもよい。フラッシュメモリ732は、電気的に消去及び/又は再プログラムされ得る。フラッシュメモリ732は、例えば、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、ROM、NVRAM、又は、相補型MOS(CMOS)を有する。フラッシュメモリ732は、システム700が起動するときに、システム700により実行されるファームウェア734を、ファームウェア734に指定されたセットとともに記憶することができる。さらに、フラッシュメモリ732は、ファームウェア734により用いられる構成を記憶することができる。
ファームウェア734は、基本入力/出力システム(BIOS)又はその後継品、等価物(例えば、エクステンシブルファームウェアインタフェース(EFI)又はユニファイドエクステンシブルファームウェアインタフェース(UEFI))を有する。システム700が起動される毎に、ファームウェア734は、シーケンスプログラムとしてロードされ、実行される。ファームウェア734は、構成のセットに基づいて、システム700に存在するハードウェアを識別、初期化、テストする。ファームウェア734は、システム700上でのセルフテスト(例えば、パワーオンセルフテスト(POST))を実行する。このセルフテストは、各種ハードウェアコンポーネント(例えば、ハードディスクドライブ、光学読み取りデバイス、冷却デバイス、メモリモジュール、拡張カード等)の機能性をテストする。ファームウェア734は、オペレーティングシステム(OS)を記憶するために、メモリ704、ROM706、RAM708及び/又はストレージデバイス712内の領域をアドレス指定及び割り当てることができる。ファームウェア734は、ブートローダ及び/又はOSをロードし、システム700の制御をOSに渡すことができる。
システム700のファームウェア734は、ファームウェア734がシステム700内の各種ハードウェアコンポーネントをどのように制御するかを定義するファームウェア構成を有することができる。ファームウェア構成は、システム700内の各種ハードウェアコンポーネントが起動される順序を判断する。ファームウェア734は、各種異なるパラメータの設定を許可するインタフェース(例えば、UEFI)を提供することができ、このパラメータは、ファームウェアのデフォルト設定のパラメータとは異なる。例えば、ユーザ(例えば、管理者)は、ファームウェア734を用いて、クロック及びバス速度を指定し、どの周辺機器をシステム700に取り付けるか指定し、監視の状態(例えば、ファン速度及びCPU温度制限)を指定し、及び/又は、システム700のパフォーマンス全体及び電力使用量に影響する各種の他のパラメータを提供する。ファームウェア734は、フラッシュメモリ732に記憶されているものとして説明されているが、当業者であれば、ファームウェア734を他のメモリコンポーネント(例えば、メモリ704又はROM706等)に記憶することができるのを容易に認識するであろう。
システム700は1つ以上のセンサ726を有する。1つ以上のセンサ726は、例えば、1つ以上の温度センサ、熱センサ、酸素センサ、化学センサ、ノイズセンサ、ヒートセンサ、電流センサ、電圧検出器、気流センサ、流量センサ、赤外線放射温度計、熱流束センサ、温度計、高温計等を有する。1つ以上のセンサ726は、例えば、バス702を介して、プロセッサ、キャッシュ728、フラッシュメモリ732、通信インタフェース724、メモリ704、ROM706、RAM708、コントローラ710及びストレージデバイス712と通信する。また、1つ以上のセンサ726は、1つ以上の異なる手段(例えば、集積回路(I2C)、汎用出力(GPO)等)を介して、システム内の他のコンポーネントと通信することができる。システム700上の異なるタイプのセンサ(例えば、センサ726)は、パラメータ(例えば、冷却ファン速度、電力状態、オペレーティングシステム(OS)状態、ハードウェア状態等)をコントローラ710に報告することもできる。
図5は、説明した方法又は動作の実行、並びに、グラフィカルユーザインタフェース(GUI)の生成及び表示に用いることができるチップセット機構を有する例示的なコンピュータシステム800を示す図である。コンピュータシステム800は、本発明の技術を実行するのに用いられるコンピュータハードウェア、ソフトウェア及びファームウェアを含むことができる。システム800は、識別された計算を実行するように構成されたソフトウェア、ファームウェア及びハードウェアを実行することができる任意の数の物理的及び/又は論理的に異なるリソースを表すプロセッサ810を含むことができる。プロセッサ810は、プロセッサ810への入出力を制御することができるチップセット802と通信する。この例において、チップセット802は、情報を出力デバイス814(例えば、ディスプレイ)に出力し、ストレージデバイス816(磁気媒体、固体媒体を含む)に対して情報を読み書きする。また、チップセット802は、RAM818に対してデータをやり取りする。各種ユーザインタフェースコンポーネント806と相互作用するブリッジ804は、チップセット802と相互作用するために提供され得る。このようなユーザインタフェースコンポーネント806は、キーボード、マイクロフォン、タッチ検出及び処理回路、ポインティングデバイス(マウス等)を有する。一般に、システム800への入力は、機器及び/又は人間が生成した各種ソースの何れかから生じる。
また、チップセット802は、異なる物理インタフェースを有する1つ以上の通信インタフェース808と相互作用する。このような通信インタフェースは、有線及び無線のローカルエリアネットワーク、ブロードバンドワイヤレスネットワーク及びパーソナルエリアネットワークのためのインタフェースを有する。さらに、機器は、ユーザインタフェースコンポーネント806を介して、ユーザからの入力を受信し、適当な機能(例えば、プロセッサ810を用いて、これらの入力を解釈することによりブラウズ機能を実行する)を実行する。
さらに、チップセット802は、電源が投入されると、コンピュータシステム800によって実行され得るファームウェア812と通信することができる。ファームウェア812は、ファームウェア構成のセットに基づいて、コンピュータシステム800内に存在するハードウェアを認識、初期化及びテストすることができる。ファームウェア812は、システム800上でセルフテスト(例えば、POST)を実行する。セルフテストでは、各種ハードウェアコンポーネント802〜818の機能をテストすることができる。ファームウェア812は、OSを記憶するために、メモリ818内の領域をアドレス指定及び割り当てることができる。ファームウェア812は、ブートローダ及び/又はOSをロードし、システム800の制御をOSに渡す。場合によっては、ファームウェア812は、ハードウェアコンポーネント802〜810,814〜818と通信する。ここで、ファームウェア812は、チップセット802及び/又は1つ以上の他のコンポーネントを介して、ハードウェアコンポーネント802〜810,814〜818と通信する。場合によっては、ファームウェア812は、ハードウェアコンポーネント802〜810,814〜818と直接通信することができる。
例示的なシステム700,800は、より高い処理能力を提供するために、2つ以上のプロセッサ(例えば、730,810)を有することができ、又は、ネットワーク接続されたコンピュータデバイスのグループ又はクラスタの一部であり得ることが理解されるであろう。
説明をわかりやすくするために、ある実施形態において、デバイス、デバイスコンポーネント、ソフトウェアで実施される方法における工程やルーティン、又は、ハードウェアとソフトウェアの組み合わせを含む個々の機能ブロックを有するものとして提示することができる。
いくつかの実施形態において、コンピュータ可読ストレージデバイス、媒体及びメモリは、ビットストリーム等を含むケーブル又は無線信号を有する。しかし、言及されるとき、非一時的なコンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波及び信号そのもの等の媒体を明確に排除する。
上記の例における方法は、コンピュータ可読媒体に記憶されるか利用可能なコンピュータ実行可能命令を用いて実施される。このような命令は、例えば特定の機能又は機能グループを実行する汎用コンピュータ、専用コンピュータ又は特殊用途処理デバイスをもたらすか構成する命令及びデータを含むことができる。用いられるコンピュータリソースの一部は、ネットワークを介してアクセス可能である。コンピュータ実行可能命令は、例えば、バイナリ、中間フォーマット命令(例えば、アセンブリ言語)、ファームウェア又はソースコードである。
これらの開示における方法を実行するデバイスは、ハードウェア、ファームウェア及び/又はソフトウェアを有し、各種フォームファクタの何れかを利用する。このようなフォームファクタの一般的な例は、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、PDA、ラックマウント型デバイス、スタンドアロンデバイス等を有する。ここで説明される機能は、周辺デバイス又はアドインカードにも実装することができる。さらなる例として、このような機能は、単一のデバイスで実行される異なるチップ間又は異なるプロセス間の回路基板上で実行することができる。
各種実施形態は、場合によっては、いくつかのアプリケーションの何れかを動作させるために用いられる1つ以上のサーバコンピュータ、ユーザコンピュータ又はコンピュータデバイスを有する多種多様な動作環境で実行することができる。ユーザ又はクライアントデバイスは、標準のオペレーティングシステムを実行するデスクトップ又はラップトップコンピュータ等の多数の汎用パーソナルコンピュータ、並びに、モバイルソフトウェアを実行し、いくつかのネットワーク及びメッセージプロトコルをサポートすることができるセルラー、ワイヤレス及びハンドヘルドデバイスを含むことができる。このようなシステムは、さらに、開発及びデータベース管理等の目的のために様々な市販のオペレーティングシステム及び他の既知のアプリケーションを実行するいくつかのワークステーションを有する。これらのデバイスは、他の電子デバイス(例えば、ダミー端末、シンクライアント、ゲームシステム、及び、ネットワークを介して通信可能な他のデバイス等)を有する。
本発明のいくつかの実施態様又はその一部がハードウェアで実現される限り、本発明は、以下の技術の何れか又は組み合わせにより実現される。例えば、データ信号に基づきロジック機能を実行するロジックゲートを有する離散ロジック回路、適切な組み合わせのロジックゲートを有する特定用途向け集積回路(ASIC)、プログラマブルゲートアレイ(PGA)等のプログラマブルハードウェア、及び/又は、フィールドプログラマブルゲートアレイ(FPGA)等が含まれる。
ほとんどの実施形態は、例えばTCP/IP、OSI、FTP、UPnP、NFS、CIFS、AppleTalk(登録商標)等の商用のプロトコルの何れかを用いて通信をサポートするために、当業者によく知られている少なくとも1つのネットワークを使用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及び、これらの任意の組み合わせである。
これらの開示における方法を実行するデバイスは、ハードウェア、ファームウェア及び/又はソフトウェアを有し、各種フォームファクタの何れかを利用する。このようなフォームファクタの一般的な例は、サーバコンピュータ、ラップトップ、スマートフォン、スモールフォームファクタパーソナルコンピュータ、PDA等を有する。ここで説明される機能は、周辺デバイス又はアドインカードにも実装することができる。さらなる例として、このような機能は、単一のデバイスで実行される異なるチップ間又は異なるプロセス間の回路基板上で実行することができる。
ウェブサーバを用いた実施形態において、ウェブサーバは、HTTPサーバ、FTPサーバ、CGIサーバ、データサーバ、Java(登録商標)サーバ、及び、ビジネスアプリケーションサーバを有する任意の種類のサーバ又は中間層アプリケーションを実行することができる。ウェブサーバは、ユーザデバイスからの要求に応じて、プログラム又はスクリプトを実行することもできる。例えば、ウェブサーバは、任意のプログラミング言語(例えば、Java(登録商標)、C,C#、C++)、任意のスクリプト言語(例えば、Perl、Python、TCL)、及びこれらの組み合わせで書き込まれる1つ以上のスクリプト又はプログラムとして実行される1つ以上のウェブアプリケーションを実行することができる。サーバは、公開市場で市販されているものを含むがこれに限定されないデータベースサーバを含むことができる。
サーバシステムは、前述の様々なデータ記憶、他のメモリ、及び、ストレージ媒体を有する。これらは、例えば、ストレージ媒体が1つ以上のコンピュータにローカル接続され(及び/又は存在する)、又は、ネットワークにより、任意の若しくは全てのコンピュータから遠隔で連結される等のように、様々な場所に存在し得る。一組の特定の実施形態において、情報は、当業者によく知られているストレージエリアネットワーク(SAN)中に存在することができる。同様に、コンピュータ、サーバ又は他のネットワークデバイスに起因する機能を実行するのに必要とされる任意のファイルは、必要に応じてローカル及び/又はリモートに記憶することができる。システムがコンピュータ化されたデバイスを含む場合、このようなデバイスは、バスを介して電気的に接続されるハードウェアコンポーネントを有し、コンポーネントは、例えば、少なくとも1つの中央処理ユニット(CPU)と、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチセンサディスプレイコンポーネント、又は、キーパッド)と、少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、又は、スピーカ)と、を有する。このようなシステムは、さらに、1つ以上のストレージデバイス(例えば、ディスクドライブ、光学ストレージデバイス、及び、ソリッドステートストレージデバイス(例えば、ランダムアクセスメモリ(RAM)又は読み出し専用メモリ(ROM))、及び、除去可能な媒体デバイス、メモリカード、フラッシュカード等)を有する。
コード又はコードの一部を含むストレージ媒体及びコンピュータ可読媒体は、従来技術で用いられる任意の適切な媒体(例えば、ストレージ媒体及びコンピューティング媒体)を含む。ストレージ媒体及びコンピューティング媒体は、データ若しくは情報の記憶及び/又は伝送のためのリムーバブル及び非リムーバブル媒体を含むことができるが、これらに限定されない。リムーバブル及び非リムーバブル媒体は、RAM、ROM、EPROM、EEPROM、フラッシュメモリ、他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、他の磁気ストレージデバイス、又は、他の任意の媒体を含み、必要な情報を記憶するのに用いられたり、システムデバイスによりアクセスされる。データ又は情報は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータを含むことができる。本明細書で提供される技術及び教示に基づいて、当業者であれば、本発明の各種態様を実施する他のやり方及び/又は方法を理解するであろう。
本発明の各種実施形態を上述したが、これらは例としてのみ示されており、これに限定されないことを理解されたい。本発明の趣旨及び範囲から逸脱することなく、開示された実施形態に対して各種の変形を加えることができる。よって、本発明の幅及び範囲は、上述した実施形態によって限定されるべきではない。むしろ、本発明の範囲は、添付の特許請求の範囲及びその均等物に従って定義されるべきである。
本発明を1つ以上の実施形態に関して例示及び説明したが、当業者であれば、本明細書及び添付の図面を読んで理解すれば、同等の変更及び修正を考え付くであろう。また、本発明の特定の特徴は、いくつかの実施形態のうち1つのみに関して開示されているが、このような特徴は、所定の又は特定の用途について望まれ有利となるように、他の実施形態の1つ以上の他の特徴と組み合わせることができる。
本明細書で使用される用語は、特定の実施形態を説明することのみを目的としており、本発明を限定することを意図するものではない。本明細書で使用される単数形(例えば「1つの」、「その」等)は、文脈が明らかにそうでないことを示さない限り、複数形も含むことを意図している。さらに、「含む」、「有する」等の用語及びその変形は、詳細な説明及び/又は特許請求の範囲で用いられる限りにおいて、「備える」という用語と同様の方法で包括的であることを意図している。
他に定義されない限り、本明細書で用いられる全ての用語(技術用語及び科学用語を含む)は、当業者によって通常理解されるのと同じ意味を有する。さらに、一般的に用いられる辞典で定義されている用語等の用語は、関連する技術の文脈においてこれらの意味と一致する意味を有していると解釈されるべきであり、本明細書で明示的に定義されない限り、理想的又は過度に形式的な意味で解釈されるべきではない。
100,300,500…システム
110,310,510…ユーザ
120…ローカルユーティリティ
130,330,530…ファームウェアストレージデバイス
200,400,600…方法
700…コンピュータシステム
702…バス
704…メモリ
706…読み出し専用メモリ
708,818…ランダムアクセスメモリ
710…コントローラ
712,816…ストレージデバイス
714〜718…モジュール
720…入力デバイス
722,814…出力デバイス
724,808…通信インタフェース
726…センサ
728…キャッシュ
730,810…プロセッサ
732…フラッシュメモリ
734,812…ファームウェア
800…コンピュータシステム
802…チップセット

Claims (10)

  1. リモートユーティリティと通信可能に接続されたコンピュータデバイスのファームウェアを更新するために前記リモートユーティリティによって実行されるコンピュータ実行方法であって、
    前記リモートユーティリティは、
    前記ファームウェアの既存のイメージを取り出す工程であって、前記ファームウェアは、前記コンピュータデバイス内のファームウェアストレージデバイスに位置する、工程と、
    更新されたファームウェアの新たなイメージを取り出す工程と、
    前記既存のイメージ及び前記新たなイメージを分析する工程と、
    前記既存のイメージ及び前記新たなイメージに基づいて、前記既存のイメージ及び前記新たなイメージから処理済みイメージを生成する工程と、
    前記処理済みイメージを前記コンピュータデバイスの前記ファームウェアストレージデバイスに書き込む工程と、
    を含む更新手順を実行する、
    コンピュータ実行方法。
  2. 前記ファームウェアの既存のイメージを取り出す工程は、前記コンピュータデバイスの管理デバイスから前記既存のイメージを受信する工程をさらに含み、
    前記処理済みイメージを前記ファームウェアストレージデバイスに書き込む工程は、前記管理デバイスを介して、前記処理済みイメージを用いて前記既存のイメージを上書きする工程をさらに含む、ことを特徴とする請求項1に記載のコンピュータ実行方法。
  3. 前記既存のイメージを分析する工程は、前記新たなイメージ内の複数の更新と、前記既存のイメージ内の既存のデータとを比較して、前記新たなイメージと競合しない前記既存のデータを識別する工程をさらに含む、ことを特徴とする請求項2に記載のコンピュータ実行方法。
  4. 前記処理済みイメージを生成する工程は、前記新たなイメージと競合しない既存のデータとを組み合わせて、前記処理済みイメージを形成する工程をさらに含む、ことを特徴とする請求項2に記載のコンピュータ実行方法。
  5. リモートユーティリティと通信可能に接続されたコンピュータデバイスの既存のイメージを前記リモートユーティリティによって更新するためのコンピュータシステムであって、
    メモリと、
    前記メモリと通信する処理ユニットであって、実行されると前記リモートユーティリティに動作を実行させる命令を記憶する処理ユニットと、を備え、
    前記動作は、
    前記ファームウェアの既存のイメージを取り出す工程であって、前記ファームウェアは、前記コンピュータデバイス内のファームウェアストレージデバイスに位置する、工程と、
    前記既存のイメージ及び前記新たなイメージを分析する工程と、
    前記既存のイメージ及び前記新たなイメージに基づいて、前記既存のイメージ及び前記新たなイメージから処理済みイメージを生成する工程と、
    前記処理済みイメージを前記コンピュータデバイスの前記ファームウェアストレージデバイスに書き込む工程と、を含む、
    ことを特徴とするコンピュータシステム。
  6. 前記ファームウェアの既存のイメージを取り出す工程は、前記コンピュータデバイスの管理デバイスから前記既存のイメージを受信する工程をさらに含み、
    前記処理済みイメージを前記ファームウェアストレージデバイスに書き込む工程は、前記管理デバイスを介して、前記処理済みイメージを用いて前記既存のイメージを上書きする工程をさらに含む、ことを特徴とする請求項5に記載のコンピュータシステム。
  7. 前記既存のイメージを分析する工程は、前記新たなイメージ内の複数の更新と、前記既存のイメージ内の既存のデータとを比較して、前記新たなイメージと競合しない前記既存のデータを識別する工程をさらに含み、
    前記処理済みイメージを生成する工程は、前記新たなイメージと競合しない既存のデータとを組み合わせて、前記処理済みイメージを形成する工程をさらに含む、ことを特徴とする請求項6に記載のコンピュータシステム。
  8. リモートユーティリティによって実行されると、リモートユーティリティと通信可能に接続されたコンピュータデバイスの既存のイメージをコンピュータシステムに更新させる命令を記憶するコンピュータ可読記憶媒体であって、
    前記既存のイメージを更新することは、
    前記ファームウェアの既存のイメージを取り出す工程であって、前記ファームウェアは、前記コンピュータデバイス内のファームウェアストレージデバイスに位置する、工程と、
    前記既存のイメージ及び前記新たなイメージを分析する工程と、
    前記既存のイメージ及び前記新たなイメージに基づいて、前記既存のイメージ及び前記新たなイメージから処理済みイメージを生成する工程と、
    前記処理済みイメージを前記コンピュータデバイスの前記ファームウェアストレージデバイスに書き込む工程と、を含む、
    ことを特徴とするコンピュータ可読記憶媒体。
  9. 前記ファームウェアの既存のイメージを取り出す工程は、前記コンピュータデバイスの管理デバイスから前記既存のイメージを受信する工程をさらに含み、
    前記処理済みイメージを前記ファームウェアストレージデバイスに書き込む工程は、前記管理デバイスを介して、前記処理済みイメージを用いて前記既存のイメージを上書きする工程をさらに含む、ことを特徴とする請求項8に記載のコンピュータ可読記憶媒体。
  10. 前記既存のイメージを分析する工程は、前記新たなイメージ内の複数の更新と、前記既存のイメージ内の既存のデータとを比較して、前記新たなイメージと競合しない前記既存のデータを識別する工程をさらに含み、
    前記処理済みイメージを生成する工程は、前記たなイメージと競合しない既存のデータとを組み合わせて、前記処理済みイメージを形成する工程をさらに含み、
    前記既存のイメージを更新することは、
    前記処理済みイメージの書き込み後に、前記コンピュータデバイスを再起動する工程と、
    前記ファームウェアストレージデバイスの動作環境で前記処理済みイメージを実行する工程と、をさらに含む、
    ことを特徴とする請求項9に記載のコンピュータ可読記憶媒体。
JP2019022680A 2018-05-22 2019-02-12 リモートユーティリティによるファームウェアの更新 Active JP6701398B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/986,234 US10503489B1 (en) 2018-05-22 2018-05-22 Updating firmware via a remote utility
US15/986,234 2018-05-22

Publications (2)

Publication Number Publication Date
JP2019204488A JP2019204488A (ja) 2019-11-28
JP6701398B2 true JP6701398B2 (ja) 2020-05-27

Family

ID=64100576

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019022680A Active JP6701398B2 (ja) 2018-05-22 2019-02-12 リモートユーティリティによるファームウェアの更新

Country Status (5)

Country Link
US (1) US10503489B1 (ja)
EP (1) EP3572933B1 (ja)
JP (1) JP6701398B2 (ja)
CN (1) CN110515634B (ja)
TW (1) TWI743395B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4097593A4 (en) * 2020-01-27 2023-10-04 Hewlett-Packard Development Company, L.P. FIRMWARE CORRUPTION RECOVERY
CA3166909A1 (en) * 2020-02-14 2021-08-19 Xinhua Chen Systems and methods for modem configuration and rollback
US11625082B2 (en) * 2020-04-27 2023-04-11 Jabil Circuit (Shanghai) Co., Ltd. Computing system with a cooling function utilizing formula with algorithm
US11354259B1 (en) * 2020-12-08 2022-06-07 Hewlett Packard Enterprise Development Lp Computer system configurations based on accessing data elements presented by baseboard management controllers
US11989551B2 (en) * 2021-03-18 2024-05-21 Quanta Computer Inc. Modular firmware composition

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004031961A1 (en) 2002-09-30 2004-04-15 Insignia Solutions Plc Efficient system and method for updating a memory device
WO2005119432A2 (en) * 2004-06-01 2005-12-15 Red Bend Ltd Method and system for in-place updating content stored in a storage device
US7661102B2 (en) * 2004-08-20 2010-02-09 Smith Micro Software, Inc. Method for reducing binary image update package sizes
US20070043833A1 (en) 2005-08-22 2007-02-22 Inventec Corporation Computer platform system program remote upgrading control method and system
JP5113699B2 (ja) 2008-09-24 2013-01-09 株式会社日立ソリューションズ ファームウェア更新システム、及び更新イメージ生成・配布サーバ装置
JP2010086370A (ja) * 2008-10-01 2010-04-15 Canon Inc 画像形成装置、配信サーバーおよびファームウェアアップデート方法
US20100228960A1 (en) 2009-03-06 2010-09-09 Shih-Yuan Huang Virtual memory over baseboard management controller
JP5342302B2 (ja) * 2009-03-30 2013-11-13 株式会社日立ソリューションズ ファームウェア更新システム、ファームウェア配信サーバ、及びプログラム
JP5478986B2 (ja) * 2009-08-21 2014-04-23 株式会社日立ソリューションズ 情報機器及びプログラム
US8397230B2 (en) * 2009-11-09 2013-03-12 Bank Of America Corporation Software updates using delta patching
KR20110104383A (ko) * 2010-03-16 2011-09-22 삼성전자주식회사 펌웨어 업데이트 서비스 장치 및 방법
US20120144380A1 (en) * 2010-12-07 2012-06-07 Samsung Electronics Co. Ltd. Method for generating delta file using basic blocks
US9092300B2 (en) 2013-04-18 2015-07-28 Ottr Products, Llc Peripheral device and method for updating firmware thereof
TWI521435B (zh) 2014-03-05 2016-02-11 啟碁科技股份有限公司 電子裝置及其韌體更新方法
TWI515660B (zh) 2014-12-17 2016-01-01 緯創資通股份有限公司 韌體變量更新方法
US9965270B2 (en) 2015-07-01 2018-05-08 Quanta Computer Inc. Updating computer firmware
US20170046152A1 (en) * 2015-08-12 2017-02-16 Quanta Computer Inc. Firmware update
CN106484442B (zh) * 2015-08-25 2020-07-21 佛山市顺德区顺达电脑厂有限公司 服务器系统及更新开机映像档的方法
CN105183515B (zh) * 2015-09-02 2019-10-15 深圳一电航空技术有限公司 云台固件升级的方法及装置
JP6600240B2 (ja) * 2015-12-08 2019-10-30 キヤノン株式会社 情報処理装置、ファームウェア更新方法、およびプログラム
KR20180131840A (ko) * 2017-06-01 2018-12-11 한국전자통신연구원 펌웨어 업데이트 지원 장치 및 그 방법
US11416236B2 (en) * 2017-07-07 2022-08-16 Qualcomm Incorporated Over-the-air (OTA) updating of partially compressed firmware

Also Published As

Publication number Publication date
CN110515634B (zh) 2023-07-21
US10503489B1 (en) 2019-12-10
CN110515634A (zh) 2019-11-29
TWI743395B (zh) 2021-10-21
JP2019204488A (ja) 2019-11-28
EP3572933B1 (en) 2023-08-02
EP3572933A1 (en) 2019-11-27
US20190361692A1 (en) 2019-11-28
TW202004496A (zh) 2020-01-16

Similar Documents

Publication Publication Date Title
JP6701398B2 (ja) リモートユーティリティによるファームウェアの更新
TWI644259B (zh) 計算機實施方法、系統、以及非暫時性計算機可讀儲存媒體
US10846160B2 (en) System and method for remote system recovery
US20190116690A1 (en) Dynamically adjust maximum fan duty in a server system
US20210004242A1 (en) Method and system for remote selection of boot device
US10606677B2 (en) Method of retrieving debugging data in UEFI and computer system thereof
JP6633146B2 (ja) 複数のファンモジュールの管理
JP6864718B2 (ja) ハイブリッド電源のシステム及び方法
US10817319B1 (en) Compatibility-based configuration of hardware with virtualization software
CN107135462B (zh) Uefi固件的蓝牙配对方法及其计算系统
US20110113227A1 (en) Electronic equipment and boot method, storage medium thereof
CN111949320B (zh) 提供系统数据的方法、系统及服务器
US11030047B2 (en) Information handling system and method to restore system firmware to a selected restore point
TW201629785A (zh) 管理控制器
US11340882B2 (en) Systems and methods for enforcing update policies while applying updates from bootable image file
US20130311761A1 (en) Intelligently Loading Legacy Option ROMs In A Computing System
US11221858B1 (en) System control processor (SCP) boot system
US20220066784A1 (en) Disabling software persistence

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200326

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200415

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200501

R150 Certificate of patent or registration of utility model

Ref document number: 6701398

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250