JP2005182809A - ストレージ技術抽象化方式におけるファイル内でのファイルシステムの生成 - Google Patents

ストレージ技術抽象化方式におけるファイル内でのファイルシステムの生成 Download PDF

Info

Publication number
JP2005182809A
JP2005182809A JP2004363716A JP2004363716A JP2005182809A JP 2005182809 A JP2005182809 A JP 2005182809A JP 2004363716 A JP2004363716 A JP 2004363716A JP 2004363716 A JP2004363716 A JP 2004363716A JP 2005182809 A JP2005182809 A JP 2005182809A
Authority
JP
Japan
Prior art keywords
partition
file
image
data
partitions
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.)
Pending
Application number
JP2004363716A
Other languages
English (en)
Inventor
Andrew M Rogers
エム.ロジャース アンドリュー
Jeffery D Glaum
ディー.グラウム ジェフリー
Mark S Tonkelowitz
スコット トンケロヴィッツ マーク
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005182809A publication Critical patent/JP2005182809A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order

Abstract

【課題】 単一の製造イメージファイルが、個々のオペレーティングシステムコンポーネントパッケージの書き込み先である内部パーティション/ファイルシステムレイアウトを含んでいる、コンピュータデバイスの製造で使用されるシステムおよび方法を提供する。
【解決手段】 イメージファイルは、どんな特定のストレージ技術からも独立している。ファイルを生成するために、ディスクイメージユーティリティツールが、メモリ構成ファイルおよびパッケージ−パーティションマッピングファイルを入力して、イメージファイル内にパーティション/ファイルシステムを生み出す。オペレーティングシステムコンポーネント(パッケージ)をパーティションに書き込む。イメージファイルのデータを特定のストレージデバイスに書き込む(フラッシュする)ために、イメージファイルを後処理して、特定のストレージデバイスに合わせてデータをカスタマイズする。
【選択図】 図2

Description

本発明は一般に、組込みオペレーティングシステムを有するデバイスなどのコンピューティングデバイスに関し、より詳細には、コンピューティングデバイスの不揮発性ストレージを構成することに関する。
パーソナルディジタルアシスタント、最新の携帯電話機、ハンドヘルドおよびポケットサイズのコンピュータなど、携帯コンピューティングデバイスは重要かつ一般的なユーザツールになりつつある。一般にこれらは、十分に小型化して非常に便利になり、電池電力の消費がより少なくなると同時に、より強力なアプリケーションを実行することができるようになった。
このようなデバイスの製造過程の間には通常、組込みオペレーティングシステムのイメージがモノリシックなイメージファイル中に構築され、各デバイスの不揮発性ストレージ(例えばNANDまたはNORフラッシュメモリ、ハードディスクなど)に記憶される。このため、オペレーティングシステムを構成する様々な部分からモノリシックなイメージファイルを事前に構成しなければならない。さらに、このようなデバイスを時々更新することが必要であるかまたは望ましく、これはオペレーティングシステムに変更を加えることを要する。
しかし、モノリシックなイメージを扱うときには、いくつかの不都合がある。これらの不都合には、いずれかの更新をインストールするのにイメージ全体(または場合によってはその何らかの事前定義済みサブセット)を置換する必要があることが含まれ、これは一時ストレージおよび処理能力を含めた多量のリソースを要する。オペレーティングシステムの別々のコンポーネントを更新することは様々な競合および依存関係のせいで困難な作業であるため、従来、このようなデバイスを更新するにはモノリシックな置換が用いられてきた。さらに、このようなコンポーネント化は別の問題にもつながる。すなわち、初期イメージは引き続き製造に必要とされるが、従来、初期イメージは本質的に、デバイスに転送されるモノリシックなビットグループでしかなかった。オペレーティングシステムイメージコンポーネントを変換して、初期イメージとして使用するのに適し、かつコンポーネント化方式のデバイス更新を容易にするように設計もされたファイルシステムベースの製造イメージにするための機構が必要とされている。
本発明は、このような状況に鑑みてなされたもので、その目的とするところは、単一の製造イメージファイルが、個々のオペレーティングシステムコンポーネントパッケージの書き込み先である内部パーティション/ファイルシステムレイアウトを含んでいるシステムおよび方法を提供することにある。
簡単に言えば、本発明は、個々のオペレーティングシステムコンポーネントパッケージの構築時のインストール先であるパーティション/ファイルシステムレイアウトを含む、単一の製造イメージファイルを作成することを一般に対象とする方法およびシステムを提供するものである。このプロセスはストレージ技術抽象方式で実施され、したがってこのシステムおよび方法は、基礎をなすストレージ(例えばフラッシュ)のタイプも、かつ/または基礎をなすストレージがイメージのレイアウトに課す場合のあるどんな要件も考慮しない。そうではなく、別個のステップで、得られたイメージファイルを後処理する。後処理には、存在するストレージデバイスの実際のタイプに合わせてイメージファイルをカスタマイズすることが含まれる。
一実装形態では、様々なタイプのパーティションをファイル内に作成する。各パーティションはファイルシステムに対応する。オペレーティングシステムイメージコンポーネント(パッケージと呼ばれる)の集合を、ファイルシステムベースの製造イメージのパーティションに変換する。後でイメージ更新技術がこのデバイス上で同じパーティション/ファイルシステムモデルを利用することができるような形で、このファイルから、製造過程の間に、初期オペレーティングシステムイメージをこのデバイス上で確立することができる。
様々なパッケージを初期製造イメージに変換するために、単一の製造イメージファイルを作成するが、このファイル中で、イメージはパーティション/ファイルシステムレイアウトに構成される。次いで、このファイルの内容を製造時にインストールするために、このファイルを必要に応じて後処理して、必要なメタデータを追加する。
最終的には仮想フラッシュに書き込まれるファイルであるこのファイルを構築するために、様々なパーティションを作成する。デバイス製造業者はフラッシュ全体のうちのいくらかを様々な目的で予約し、残りのメモリをオペレーティングシステムコンポーネントおよびオプションのユーザストアによって使用される仮想メモリとして利用可能にすることができることに留意されたい。各パーティションは何らかの目的を有し、独自のファイルシステムとみなすことができる。例えば、更新ローダなどのためのバイナリパーティションや、カーネル(NK)パーティションのためのRAMIMAGE/ROMIMAGEパーティションがあるものとすることができる。IMGFSパーティションはオペレーティングシステムファイルを含むことができ、ユーザストアパーティションはユーザデータ記憶のために指定することができる。パーティションを指定するために、マスタブートレコードをファイル中に作成する。追加のデータをファイルに含めることもできる。
一実装形態では、ディスクイメージユーティリティがファイルを作成し、イメージポストプロセッサがメタデータを追加して、ファイルを所望の記憶媒体への書込みに向けて準備する。ディスクイメージユーティリティは、オペレーティングシステムパッケージを取り込み、どのようにパーティションをストレージ中でレイアウトすべきかについてのメモリ記述(メモリ構成ファイル)と、どのようにパッケージをパーティション構造にマッピングすべきかについての記述(パーティションマッピングファイル)とに基づいて、様々なパーティションを含む出力ファイルを作成することを担い、この出力ファイル中では、各パッケージの内容が適切なパーティションに記憶されている。さらに、どんな実行可能コードも、適切な仮想アドレス空間ベースのアドレスにフィックスアップ(fix up)されている。メモリ構成ファイルは、不揮発性ストレージとシステムRAMの両方に対する、オペレーティングシステムの実行時仮想アドレス空間メモリマップを提供する。パーティションマッピングファイルは、一意に識別されるパッケージのリストを含み、パッケージを指定のパーティションにマッピングするのに使用される。
ポストプロセッサは、特定のストレージ技術によって必要とされる修正があれば、出力ファイルに作用してパーティション/ファイルシステムレイアウトに修正を導入する。例えば、フラッシュ中で異なるフラッシュ部分によってセクタレベルの情報が管理される際の異なる方式を扱うために、調整を行う必要がある場合がある。
その他の利点は、以下の詳細な説明を図面と共に読めば明らかになるであろう。
例示的な動作環境
図1に、このような1つのハンドヘルドコンピューティングデバイス120の機能コンポーネントを示す。ハンドヘルドコンピューティングデバイス120は、プロセッサ122、メモリ124、表示装置126、キーボード128(物理的または仮想キーボードとしてもよく、この両方を表すもとしてもよい)を備える。オーディオ入力を受け取るためのマイクロホン129があってもよい。メモリ124は、揮発性メモリ(例えばRAM(random access memory))と不揮発性メモリ(例えばROM(read only memory)、PCMCIA(Personal Computer Memory Card International Association)カードなど)の両方を一般に含む。Microsoft Corporationから出ているWindows(登録商標)オペレーティングシステムや別のオペレーティングシステムなど、オペレーティングシステム130がメモリ124中にあり、プロセッサ122上で実行される。
1つまたは複数のアプリケーションプログラム132が、メモリ124にロードされ、オペレーティングシステム130上で稼動する。アプリケーションの例には、eメールプログラム、スケジューリングプログラム、PIM(個人情報管理)プログラム、ワードプロセッシングプログラム、表計算プログラム、インターネットブラウザプログラムなどが含まれる。ハンドヘルドパーソナルコンピュータ120はまた、メモリ124にロードされた通知マネージャ134を備えることもでき、通知マネージャ134はプロセッサ122上で実行される。通知マネージャ134は、例えばアプリケーションプログラム132からの通知要求を扱う。また後述するが、ハンドヘルドパーソナルコンピュータ120は、ハンドヘルドパーソナルコンピュータ120をネットワークに接続するのに適した、ネットワーキングソフトウェア136(例えばハードウェアドライバなど)およびネットワークコンポーネント138(例えば無線機およびアンテナ)も備え、接続には電話を掛けることが含まれる場合がある。
ハンドヘルドパーソナルコンピュータ120は、1つまたは複数の電池として実現される電源140を有する。電源140はさらに、ACアダプタや電力ドッキングクレードルなど、内蔵電池をオーバーライドするかまたは再充電する外部電源を備えることもできる。
図1に表す例示的なハンドヘルドパーソナルコンピュータ120は、3つのタイプの外部通知機構と共に示されている。すなわち、1つまたは複数の発光ダイオード(LED)142と、オーディオ発生器144である。これらのデバイスは電源140に直接に結合させることができ、したがってこれらがアクティブのときは、ハンドヘルドパーソナルコンピュータのプロセッサ122および他のコンポーネントが電池電力の節約のためにシャットダウンすることがあっても、これらのデバイスは通知機構によって指定された期間にわたってオンのままでいる。LED142は、ユーザが動作を起こすまで無期限にオンのままでいることが好ましい。最新バージョンのオーディオ発生器144は、今日のハンドヘルドパーソナルコンピュータ電池に対して電力使用が過多であり、したがって、システムの残りの部分がオフになったときは、または起動後のいくらかの有限期間にわたって、オフになるように設計されることに留意されたい。
基本的なハンドヘルドパーソナルコンピュータを示したが、携帯電話機など、データ通信を受信し、プログラムによって使用されるようにデータを何らかの方式で処理することができるものなら、ほぼどんなデバイスも本発明の実施に等価であることに留意されたい。
ファイル内にファイルシステムを作成する
本発明は一般に、初期ソフトウェアまたはソフトウェア更新が組込みデバイスの不揮発性メモリ、例えばフラッシュメモリに書き込まれるデバイスを含めて、Microsoft Windows(登録商標)CE .NETベースのポータブルデバイスなどの小型携帯コンピューティングデバイスに記憶されるソフトウェアをインストールおよび/または更新することを対象とする。ただし本発明は、コンピューティング一般に利益もたらし、したがってその他のコンピューティングデバイスにも適用することができ、また、様々なタイプのメモリ、および/またはハードディスクドライブなどその他のタイプの記憶媒体を含めて、その他のタイプのストレージにも適用することができる。簡単にするために、以下ではデバイスの更新可能ストレージについて用語「フラッシュ」を使用する場合があるが、どんなストレージ機構も等価であることを理解されたい。さらに、用語「イメージ」は一般に、初期ソフトウェアインストールイメージの概念を含み、さらに、既存のイメージの一部だけが更新されるときであっても、イメージに対する後続のソフトウェア更新の概念を含む。
実行可能コードとデータの両方を含むイメージをストレージに適用することができる。実行可能コードは、インストール時に、組込みデバイスの仮想アドレス空間環境に合わせてカスタマイズされる。本発明の一態様によれば、イメージ更新技術は一般に、オペレーティングシステムイメージを、別々に更新できる更新可能コンポーネントに分割し、かつ、コンポーネント間のどんな依存性も維持する。理解されるであろうが、初期イメージは、デバイスへの初期インストールならびにその後の更新を容易にするような方式で構成される。
本発明の一態様によれば、オペレーティングシステムイメージコンポーネント(パッケージと呼ばれる)の集合をファイルシステムベースの製造イメージに変換するシステムおよび方法が提供される。これは、パーティション/ファイルシステムモデルを介して実施することができ、それにより出力ファイルが作成される。後でイメージ更新技術がこのデバイス上で同じパーティション/ファイルシステムモデルを利用することができるような形で、このファイルから、製造過程の間に、初期オペレーティングシステムイメージをこのデバイス上で確立することができる。これにより、個々のコンポーネント、パーティション全体、または必要ならイメージ全体の、安全でフェイルセーフな更新が容易になる。
様々なパッケージを初期製造イメージに変換するために、単一の製造イメージファイルを作成することを一般に対象とする方法およびシステムが提供される。この製造イメージファイルは、パーティション/ファイルシステムレイアウトに構成されたイメージを含む。次いで、このファイルを必要に応じて後処理し、その内容を構築時のインストールに向けて準備する。したがって、個々のオペレーティングシステムコンポーネントパッケージは、この製造ファイルに書き込まれる。このファイル構築プロセス全体は、ストレージ(例えばフラッシュ)技術抽象方式で実施され、したがってこのシステムおよび方法は、基礎をなすストレージのタイプも、かつ/または基礎をなすストレージがイメージのレイアウトに課す場合のあるどんな要件も考慮しない。そうではなく別個のステップで、存在するストレージデバイスの実際のタイプに合わせてイメージファイルをカスタマイズすることを含めて、得られたイメージファイルを後処理し、それにより、次いで初期イメージを任意のデバイスに望むように適用することができる。
図2に、後述するように本発明の様々な態様によって容易になる方式で製造イメージがレイアウトされる際のレイアウト先であるデバイスのストレージ(例えばフラッシュ)の例を提供する。図2では、全フラッシュ202のうちのいくらか(例えば全64メガバイトのうちの32メガバイト)が、様々な目的で(例えばデバイスの無線機に関係するコードのために)、デバイス製造業者によって予約されている。残りの部分(例えば32メガバイト)は、オペレーティングシステムおよび(任意選択で)ユーザストアによって使用される仮想メモリ204として利用可能なフラッシュメモリである。後述するように、ファイルは予約済みセクションを考慮に入れる。
本発明の一態様により、かつ後述するように、仮想フラッシュ204に書き込まれるファイルであるファイル206中に、様々なパーティションを作成する。各パーティションは何らかの目的を有し、独自のファイルシステムを含む(またはそのようにみなすことができる)。例えば図2の実施形態では、更新ローダのためのパーティション209、カーネル(NK)パーティション210、システムパーティション211、ユーザストアパーティション212(例えばユーザデータ記憶のためにフォーマットされたもの)がある。ファイル中には、後述するようにパーティションを指定するためのマスタブートレコード(MBR)213を作成する。さらに、完全にするために図2に表すように、例えばこれらの前にデータを付加することによって、既存のブートローダ214(古いデバイスの場合。新しいデバイスではオプション)や初期プログラムローダ(IPL)215など、追加のデータをファイル206中に含めることもできる。容易に理解できるように、この追加データの全部またはいくらかを、他のパーティションとは別にデバイスにフラッシュする(flash)こともでき、その場合、ファイル206は残りの仮想フラッシュにフラッシュされることになる。しかし、これらのビットを製造ファイル206に含めることで、そのような追加の製造ステップがなくなる。図2のパーティションは正確な縮尺で示したものではなく、さらに全メモリ量および/または利用可能メモリ量は例にすぎないことに留意されたい。
理解されるであろうが、本発明は、標準的なファイルシステム概念を用いて、製造イメージを単一ファイル中にストレージ抽象化方式で作成する能力を提供する。この結果、任意の新しいストレージ技術が利用可能になるのに伴い、単純な方式で、かつコアプロシージャにほとんど/まったく影響を及ぼさずに、組込みおよびその他の解決をその新しいストレージ技術に適合させることができる。例えば、後処理によって、フラッシュファイルシステムイメージをハードディスクイメージになるように適合させることができる。
加えて、ファイルシステムを構築時に個別ファイル内に作成できることは、複雑な区分化、フォーマット化、およびその他のファイルシステム論理を製造時環境で実施する必要がないことを意味する。そうではなく、場合によっては複雑であるパーティション/ファイルシステムベースの方式がイメージの基礎をなし、これが後で実行時にオペレーティングシステムによって使用されるかもしれないにもかかわらず、ストレージにイメージを書き込むための今日の標準的な手段(例えばフラッシュギャングプログラマ、JTAG、またはバイトストリームコピー)が依然として機能することになる。
本発明の様々な態様を達成するために、例示的な一実装形態(上で図2に関して一般に述べたもの)では、2つの主要コンポーネント、すなわちディスクイメージユーティリティ230およびイメージポストプロセッサ232が提供される。ディスクイメージユーティリティ230は、ユーザ(例えば製造業者)がどのようにパーティション/ファイルシステムをストレージ中でレイアウトさせたいかについての記述(ファイル236)と、パッケージ234をどのようにそのパーティション構造にマッピングすべきかについての記述(ファイル238、パッケージ−パーティションマッピングファイルおよび/またはイメージマニフェストファイルとも呼ばれる)と共に、パッケージされたオペレーティングシステムコンポーネント(またはパッケージ)の集合234を取り込むことを担う。この情報から、ディスクイメージユーティリティ230は、様々なパーティション209〜212を含む単一の出力ファイル206を生成する。この出力ファイル206中では、各パッケージの内容が適切なパーティションに記憶され、実行可能コードが適切な仮想アドレス空間ベースのアドレスにフィックスアップされている。
この出力ファイル状態になった後、ポストプロセッサ232は、特定のストレージ技術によって必要とされる修正があれば、この出力ファイルに作用してパーティション/ファイルシステムレイアウトに修正を導入する。例えば、フラッシュ中で異なるフラッシュ部分によってセクタレベルの情報が管理される際の異なる方式を扱うために、調整を行う必要がある場合がある。これについては後で後処理に関して一般に述べる。
図2の例示的な実装形態では、ディスクイメージユーティリティ230はしたがって、2つの入力ファイル236および238、すなわちメモリ構成ファイル236(例えばmemory.cfg.xml)およびパッケージ−パーティションマッピングファイル238(例えば*sku.xml、*は有効ファイル名を表す)によって駆動される。一般に、パーティションマッピングファイル238は、特定のオペレーティングシステムコンポーネント(例えばパッケージ)それぞれを、メモリ構成ファイル236中で示される特定のパーティションにマッピングする情報を含む。
パーティション209〜212は、異なるタイプのものとすることができる(通常はそうである)。例えば一実装形態では、圧縮済み更新ローダパーティション209などのBINARYパーティション(BINARYパーティションではビットが単にそのままコピーされる)、NKパーティション210など1つまたは複数のRAMIMAGEまたはROMIMAGEパーティション、システムパーティション211など1つまたは複数のIMGFS(Image Update File System)パーティション、および/あるいはTFATやその他のパーティション212などUSERSTOREパーティションがあるものとすることができる。パーティションおよび/またはパーティションタイプの総数はいくつでもよいが、現在の一実装形態では、機構を構成しやすいものに維持するために、総数は4つに制限される。これらは例えば、図2に表すような更新ローダ(BINARY)、NKパーティション(RAMIMAGEまたはROMIMAGE)、システムパーティション(IMGFS)、ユーザパーティション(USERSTORE)である。このような任意の制限はあるものの、タイプの繰返しがあってもよいことに留意されたい。例えば、4つのパーティションの制限で、3つのバイナリタイプと1つのIMGFSが許容されることになり、さらに他のタイプのパーティションも可能である。
メモリ構成ファイル236は、不揮発性ストレージとシステムRAMの両方に対する、オペレーティングシステムの実行時仮想アドレス空間メモリマップを示す。このデータは、情報を記憶できる1つまたは複数のパーティションを指定して、パーティションに記憶されるデータに特性を割り当てることにより、ユーティリティのユーザがどのように指定のストレージリソースを利用したいと思っているかを示す。
一実装形態では、メモリ構成ファイル236は、以下のXSD(XMLスキーマ定義用語)に対して妥当性検査されるXML(Extensible Markup Language)フォーマットのファイルである。
Figure 2005182809
Figure 2005182809
Figure 2005182809
Figure 2005182809
Figure 2005182809
例示的なメモリ構成を以下に示す。
Figure 2005182809
この例からわかるように、メモリ構成ファイルのハードウェアセクションは、RAMの位置と予約済みの各フラッシュ部分の位置との完全な記述を提供し、また、ディスクイメージユーティリティによって記憶域として管理されることになる各フラッシュ部分の完全な記述も提供する。NORおよびNANDタグを総称的に使用して、線形(RAMのような)またはブロックベースの記憶域をそれぞれ参照する。各記憶部分には固有の識別子/名前が提供される。パーティションセクションは、指定の記憶部分をどのようにパーティションベースの抽象化において使用すべきかを示す。
例えばROMIMAGEは、パーティションの内容をフィックスアップ/再配置して(後述する)、ストレージ部分から実際に実行すべきであること(インプレース実行すなわちXIP)を意味する。これは線形タイプのストレージデバイスの特性である。ROMIMAGEが使用される場合、ディスクイメージユーティリティは、どんなインプレース実行コードも圧縮されないようにし、さらに、モジュールの個々のコードセクションが物理空間で隣接するようにすることに留意されたい。すなわち、インプレース実行コードのこのようなコードセクションは、予約済み領域には広がらないことになる。RAMIMAGEタグは、内容をフィックスアップ/再配置してRAMから実行すべきであることを示す(ローダが適時にコードをストレージからRAMに移動すると仮定して)。イメージ記憶に加えて、追加のパーティションタイプを示すこともできる。上の例では、ユーザストアがデータ記憶のためのパーティションとして定義されている。
パーティションマッピングファイル(またはSKU)238は、一意に識別されるパッケージのリストを含み、パッケージを指定パーティションにマッピングするのに使用される。パーティションマッピングファイルは、以下のXSDに対して妥当性検査されるXMLファイルである。
Figure 2005182809
例示的なパーティションマッピング(SKU)ファイル238は、以下のXMLフォーマットのデータのように見えることになる。
Figure 2005182809
この特定の例では、例示的なパッケージファイル(「oem」)が、「NK」という名前のパーティションにマッピングされ、「NK」は、上のメモリ構成ファイル236中で、コードがRAM中ではなくフラッシュ自体の上でインプレース実行されるようにフィックスアップ/再配置されるROMIMAGEパーティションとして定義されている。また、この例からわかるように、この指定パーティションは、ハードウェアセクション中で示された、仮想アドレス0×8000.0000にあり長さ0×380.0000バイトである単一のNORフラッシュ部分にある。また、この例からわかるように、「lang」という名前のパッケージが、「OS」として参照される第2のパーティションにマッピングされ、「OS」は、IMGFSパーティション(「IMGFS」と呼ばれるファイルシステムドライバによって管理されるパーティション)にあり、また、ハードウェアセクション中で指定された単一のNOR部分にある(ただし前のNKパーティションとは重複しない)。
2つの入力ファイル236および238中で提供された構成情報に基づいて、ディスクイメージユーティリティ230は、示されたパッケージの内容を処理する。所与のパッケージに位置する各実行可能コードは、フィックスアップまたは再配置プロセスを通して、固有の仮想アドレス空間範囲に適切に配置される。パーティション内容がRAMから実行されるように意図されているかフラッシュ中でインプレース実行されるように意図されているかに応じて、ディスクイメージユーティリティ230は、実行可能ファイルのサブセクションを仮想アドレス空間全体のどこに配置できるかについての既知の制限(例えばCPU(central processing unit)アーキテクチャなどに基づく)と共にアドレス空間情報を使用して、各実行可能ファイルを処理し、重複しない仮想アドレス空間範囲に内容を配置する。
図3に一般に表すように、フィックスアッププロセスは、Romimage302と呼ばれるコンポーネントによって扱われる(このコンポーネントは例えばディスクイメージユーティリティ230にリンクされているか、その内部にある。そうでなければそれに関連付けられている)。この例示的な実装形態では、Romimage302はDLL(ダイナミックリンクライブラリ)であり、これはまた、コードをインストール時にデバイス上でフィックスアップ/再配置するために、パッケージインストール過程の間にもデバイス上で使用される。構築中に、得られたファイル206は、実行時にデバイス上で使用されるのと同じファイルシステムコードを使用して、ファイルを構築しているデスクトップコンピュータに記憶されたファイル内の適切なパーティションに記憶される。非互換性の問題を最小限にするために、コードはデバイスならびにホスト構築システムに対して構築可能であることに留意されたい。
ファイルを構築する前に、ディスクイメージユーティリティ230は、特定のサイズ、例えば64メガバイトのファイルの作成を要求する。FSDMGR304がファイルを作成した後、ディスクイメージユーティリティ230は、メモリ構成ファイル236を処理して、FSDMGR304に予約済みセクションを区画させ、それにより予約済みセクションがそのままの状態になるようにする。残りのメモリ、例えば32MBは、今やFSDMGR304を介して利用可能である。この時点で、必要なパーティションを備えたファイルを構築する準備ができる。
上の例示的なメモリ構成ファイルからわかるように、BINARYパーティションが望まれている。より具体的には、図3は、ディスクイメージユーティリティ230がどのようにromimage.dll機能およびファイルシステムデバイスドライバマネージャ304(FSDMGR.DLL)と協働してファイル206を構築するかについての例を示す。ファイル中にパーティションを作成するために、ディスクイメージユーティリティ230は、FSDMGR304と協働してマスタブートレコードを作成する(マスタブートレコードがまだ存在しないので)。BINARYパーティションが後に続くことを示すデータを、マスタブートレコードに追加する。すなわち、このデータはパーティションを生み出す。この実装形態ではサイズは指定されず、したがって、さしあたりは、残りのフラッシュのサイズ全体がこのBINARYパーティションに使用される。
この例で、ディスクイメージユーティリティ230は、図3に一般に示すように丸付き数字1で符号を付けた矢印を介してFSDMGR304が更新ローダをBINARYパーティションに書き込むよう、Romimage302を介して要求する。「Applying Custom Software Image Updates To Non-Volatile Storage in a Failsafe Manner」という名称の関連特許出願に記載されているように、更新ローダは本質的に、デバイス更新時のデバイスのブート先であるオペレーティングシステムコードの特別セクションである(通常のオペレーティングシステムコードではなく)。更新ローダはディスクイメージユーティリティから見るとビットのバイナリBLOB(Binary Large OBject)なので、パーティションはマウントされ、FSDMGR304は、rawFS dll306を使用してバイナリビットをBINARYパーティション209に(マスタブートレコード213の後に続く空間に)書き込む。
書込みが終わると、FSDMGR304を呼び出すことによって、書き込まれたデータの実際の量が得られる。自動サイズ変更動作では、次のパーティションの開始に対する新しいオフセットはこの実際のサイズに基づき、したがって、更新ローダパーティション209は本質的に、それが必要とするファイル中の空間量だけを消費する。
ディスクイメージユーティリティ230は再び、同様にしてファイル中にNKパーティションを(すなわちマスタブートレコード213にデータを書き込むことによって)作成するために呼出しを行い、次いでNKパーティションには、NKパーティションにデータを書き込む要求でromimage.dllを呼び出すことによって書込みが行われる。NKパーティションを構築するためにディスクイメージユーティリティ230から送られる、romimage.dllによって必要とされるパラメータには、構築するファイルのリストと、後述するフラッシュ空間および仮想アドレス空間を割り振るためのアロケータとが含まれることに留意されたい。romimage.dll302は、このデータをビットのセットにフィックスアップし、次いでこれらをFSDMGR304に提供する。次いでFSDMGR304は、図3に丸付き数字2で符号を付けた矢印で表すように、rawFS dll306を介してNKパーティションを書き込む。例えばいずれかのインプレース実行コードのために、物理フィックスアップならびに仮想フィックスアップが必要な場合があることに留意されたい。
この場合もサイズは指定されておらず、したがって、サイズ変更されるまでは、残りの空間全体がこのNKパーティションに使用される。ただしこの例では、NKパーティションに対して書き込まれた正確なサイズに基づいてオフセットをファイルの最後から後退させるのではなく、図3の影付き領域で表すように、NKビットの後に続くいくらかの量の追加空間(バッファ)をNKパーティション中に残すことができる。この空き空間バッファは、メモリXMLファイル中で指定され、本質的にオフセットを実際の書込みバイト量よりもわずかに前に移動し、それにより、NKパーティションの将来の更新が現在のNKパーティションよりも多くの空間を消費できるようにする。すなわち、後続の更新での増大を見込んでおく。
次に、図3に丸付き数字3で符号を付けた矢印で表すように、romimage.dllを介してIMGFSパーティション(やはりファイルの最後まで延びる)を作成し、書き込む。今回は、FSDMGR304によって認識されるように、これはバイナリパーティションではなくIMGFSパーティションであることに留意されたい。したがって、これは特定のパーティションを実行時にデバイス上で扱うドライバなので、imgfs.dll308を使用してシステムパーティションに書き込む。さらに、どんな物理フィックスアップもimgfs.dll308を介して抽象化され、したがって、このシステムパーティションに対してromimageプロセス302は指定どおりに仮想アドレスフィックスアップを実施するだけであることにも留意されたい。次いで、前述のように自動サイズ変更を実施して、次のパーティションに対するオフセットを書込みデータ量(これに所望の空き空間バッファを足した量。ただしこの例では空き空間バッファはない)に移動する。
次のパーティションはUSERSTOREであり、これは任意のタイプのパーティションとすることができる。この例ではタイプ4のパーティションである。USERSTOREパーティションは、マスタブートレコードに書込みを行うことによって作成され、ファイルの最後まで延びる。ただし、この時点ではデータは書き込まれず、したがってこのパーティションはマウントされないことに留意されたい。後でユーザがこのパーティションにアクセスしたいと思ったとき、FSDMGRは、このパーティションがその特定のファイルシステムフォーマットに対応する場合には、例えばTFAT.dll310などの適切なドライバを介してそうすることになる。したがって、TFAT.dll310は、初期ファイルの構築には必要ないが、図3では、実行時にユーザパーティションのデータにアクセスするのに使用できるドライバの例として(破線の四角で)示してある。
本発明の動作の説明に移るが、要約すれば、ディスクイメージユーティリティ230は、プラットフォームメモリ構成ファイル236(例えばmemory.cfg.xml)およびイメージマニフェストファイル238(例えばplatform.sku.xml)を入力とし、デバイスに対する完全なROMイメージを表すデータファイル206を出力する、デスクトップユーティリティである。ディスクイメージユーティリティ230はモジュールデータの再配置を担うので、設計目標の1つは、コードをデバイス側の更新アプリケーションと共有できることである。
動作の中でもとりわけ、ディスクイメージユーティリティ230は、デバイスに対するメモリレイアウトと、任意の予約済み領域と、事前構築済みBIN/NB0ファイルを含む1つまたは複数のフラッシュパーティションの位置およびサイズとを定義するメモリ構成ファイル236を解析する(NB0ファイルはROM中に現れなければならないすべての.binファイルのレイアウトである)。ディスクイメージユーティリティ230はまた、パッケージベースのパーティションおよびそれらの内容を宣言するイメージマニフェストファイル238も解析する。
図3に一般に表した実装形態では、ディスクイメージユーティリティ230は、BINARY、RAMIMAGE、ROMIMAGE、IMGFS、USERSTOREパーティションを含めて、様々なタイプのパーティションを構築することができる。BINARYパーティションは、任意のデータを収めるがパッケージは収めない事前構築済みNB0ファイルを含む。名前が示唆するように、RAMIMAGEパーティションはRAMにフィックスアップされ、一方、ROMIMAGEパーティションは、それらが記憶されているNOR部分からインプレース実行されるようにフィックスアップされる。imageFSパーティションは、ディスクイメージユーティリティ230によってサポートされるパーティションタイプを含み、適したバージョンのIMGFS.dll308への呼出しを(FSDMGR304を介して)単に行うだけで構築することができる。USERSTOREパーティションは、任意のカスタムパーティションタイプとすることができ、現在は、ブート時に作成されるパーティションのためのマスタブートレコード213中のプレースホルダとして使用される。
以下の表に、ディスクイメージユーティリティ230の入力ファイルおよび出力ファイルを要約する。
Figure 2005182809
ディスクイメージユーティリティ230は、いずれかのパッケージベースのパーティション中でモジュールを再配置することを担う。これを達成するために、ディスクイメージユーティリティ230は仮想アドレス(VA)アロケータを利用する。ディスクイメージユーティリティ230はまた、デバイスの各フラッシュ部分のパーティションを含む各フラッシュ部分ごとのBIN/NB0ファイル(前述のもの)と、Master Boot Record(MBR)とを出力することもできる。出力ファイルは、MSPartデスクトップコンポーネントを使用して作成することができる。さらに、ディスクイメージユーティリティ230中のコードの多く(例えばVAアロケータ、IMGFS対話、モジュール再配置)はまた、デバイス側更新アプリケーションにも有用であり、したがって、ディスクイメージユーティリティ230はデバイス制限およびコード移植性を考慮に入れる。
図4に、ディスクイメージユーティリティ230の全体的な流れを表す。ディスクイメージユーティリティ230は、デスクトップコンポーネントを含むことができ、また、様々な動作を実施するための別々のコンポーネントを含むこともできることに留意されたい。例えば、ディスクイメージユーティリティ230はコマンドラインを介して実行することができ、したがってディスクイメージユーティリティ230は、ブロック400で表すようにコマンドライン引数を処理するために、コマンドラインプロセッサを備えることができる。別個のCFGファイルパーサがメモリ構成ファイルを処理することができ(ブロック402)、別個のsku/パッケージパーサが、ブロック404で表すようにパーティションマッピング(SKU)ファイルを処理することができる。図4では、コンポーネントおよびそれらの機能が、BINARYパーティションビルダ/プロセス(ブロック406)、RAMIMAGE/ROMIMAGEパーティションビルダ/プロセス(ブロック408)、IMGFSパーティションビルダ/プロセス(ブロック410)、USERSTOREパーティションビルダ/プロセス(ブロック412)、ポストプロセッサ(ブロック414)で表されている。ディスクイメージユーティリティ230によって使用されるポストプロセッサおよびデータ構造については、後で別の章で述べる。
前述のように、ディスクイメージユーティリティ230(例えばdiskimage.exe)は、以下のコマンドのようなコマンドライン引数を介して呼び出すことができる。
dskimage CFGfile SKUfile
容易に明らかなはずだが、CFGfileパラメータはメモリ構成ファイル236へのパスであり、メモリ構成ファイル236は、前述のように、現プラットフォームに関するRAMおよびフラッシュレイアウトを詳述しパーティションを定義する入力ファイルである。SKUfileパラメータはパーティションマッピング/イメージマニフェストファイル238へのパスであり、パーティションマッピング/イメージマニフェストファイル238は、前述のように、パッケージの集合をリストし、それらにパーティションを割り当てるものである。一実装形態では、ディスクイメージユーティリティ230は、入力ファイルを解析するときにファイル拡張子を見ないが、呼び出されたとき(例えばスクリプトを介して)は、以下の名前で入力を予想する。
CFGファイル=Memory.cfg.xml
SKUファイル=%_TGTPLAT%.sku.xml
現在、コマンドラインプロセッサは、CFGfileおよびSKUfileコマンドライン引数が存在するかどうかをチェックし、それらをそれぞれの(例えばXSD)バリデータ(validator)に渡すだけである。引数が相対パスで指定された場合は、ディスクイメージユーティリティ230は、ディスクイメージユーティリティ230の呼出し元であるディレクトリを基準としてファイルを探す。引数が絶対パスで指定された場合は、ディスクイメージユーティリティ230は絶対パスを使用してファイルを探す。ディスクイメージユーティリティ230中では、パス1はEnvironment.CurrentDirectoryであり、パス2はCFGfileまたはSKUfileである。引数が存在しない場合は、コマンドラインプロセッサは適切な動作を行う(C#では、例外を投げ、使用法メッセージをプリントし、終了するなど)。
memory.cfg.xmlパーサ/プロセスは、ハードウェアを記述する際およびフラッシュ部分にパーティションを割り当てる際に多くのフレキシビリティを製造業者にもたらすように設計されている。現在の一実装形態では、メモリ構成パーサ/プロセスパーサ(図4のブロック402)は、図5に全体的に示すように2つのレベルの妥当性検査をmemory.cfg.xmlファイルに対して利用する。第1に、C# XMLValidatingReaderクラスを介して、memory.cfg.xmlファイルの構文が正しいかどうか検証する。ステップ500で表すように、XMLValidatingReaderは、memory.cfg.xmlが有効なXMLおよび必要なタグを含むことを確認する。そうでない場合は、ステップ502は分岐してエラー状態を出力する。第2レベルの妥当性検査は、ディスクイメージユーティリティ230によって実施される。第2レベルの妥当性検査中に、RAMおよびフラッシュ部分およびパーティションの内部表現を作成する。XMLシリアライズを用いて内部表現を作成し、次いでこの内部構造に対して妥当性検査を実施(図5のステップ504および506で表すように)して、無効な構成、例えば存在しないフラッシュ部分に対するパーティションマッピングを検出する。
例示的な一実装形態(例えばWindows(登録商標)CEベースの実装形態)では、ハードウェア構成が有効であるためには、ファイル中のRAM START属性が、有効なキャッシュ済みカーネル仮想アドレス(0×80000000〜0×9FFFFFFF)を参照する必要がある。START+LENGTHも有効である必要がある。どんなRAM_RESERVEセクションも、親のRAM要素のSTARTおよびLENGTH属性によって指定されたカーネル仮想アドレス範囲内で開始および終了する必要がある。RAM_RESERVE要素は重複することはできず(STARTからSTART+LENGTHまでは各RAM_RESERVEに固有であるべきである)、空でない固有のID(identification)ストリングを有する必要がある。
この例示的な実装形態では、以下の規則を含めた様々な規則を施行することができる。すなわち、NOR/NAND(FLASHと総称される)は、固有の「ID」属性を有する必要があり、「RAM」という名前を付けることはできない。FLASH RESERVE要素は、固有の「ID」属性を必要とし、8文字よりも長い名前を有することはできない。FLASH要素のLENGH属性はBLOCKSIZEで均等に分割可能である必要があり、BLOCKSIZEはSECTORSIZEで均等に分割可能である必要がある。NOR要素の場合、VASTARTはブロック整合される必要がある。FLASH RESERVE要素のLENGTH属性は、親のFLASH BLOCKSIZEで均等に分割可能である必要がある。NOR_RESERVE要素の場合、VASTARTはブロック整合され、NOR VASTARTおよびVASTART+LENGHは、RAMとも他のどんなNOR要素とも重複すべきではなく、有効なキャッシュ済みカーネル仮想アドレスであるべきである。
さらに、有効であるためには、NOR_RESERVE要素が、親のNOR要素のVASTARTおよびLENGTH属性によって指定されたキャッシュ済みカーネル仮想アドレス範囲内で開始および終了する必要がある。HARDWARE条件は、後述するAllocatorクラス階層を使用して検証することができる。有効なキャッシュ済みカーネルアドレス範囲に対してグローバルAllocatorを作成し、これを使用して、RAMおよびNORタグに対する有効アドレス、ならびにRAM部分とNOR部分の間の衝突を検出する。同様に、各RAMおよびFLASH部分についてもAllocatorを作成して、有効なRESERVE領域を検出する。Allocatorは、取り出しやすいように、関連するRAM/FLASHオブジェクトに記憶することができる。
パーティションデータもまたMemoryCFG階層に記憶される。PARTITIONSの妥当性検査に関する規則には、パーティションが固有のID属性を有すること、PARTITIONのSTORAGE_ID属性がFLASH部分のID属性と一致する必要があること、ROMIMAGEパーティションのSTORAGE_ID属性がNANDフラッシュを参照することはできないことが含まれる。RAMIMAGE/BINARYの場合、COMPRESS属性はブールタイプであり、したがって{0,1,true,false}のうちの1つをとることしかできない。
RAMIMAGE/ROMIMAGE/IMGFS(PACKAGEパーティションと総称される)もまた妥当性検査され、現在の一実装形態では、RAMIMAGE/ROMIMAGEパーティションは1つしか存在できない。両方が指定された場合は、妥当性検査は失敗する。FSRAMPERCENTおよびROMFLAGS属性は、RAMIMAGE/ROMIMAGEパーティションのテーブルオブコンテンツ中のフィールドに対応する(例えばWindows(登録商標)CEベースの実装形態で)。RAMIMAGEパーティションのFIXUP_ADDRESSは、RAM中のどこでパーティションが開始すべきかを参照する。この属性は、RAM中で少なくとも0×1000バイトの空きが直後に続く有効な位置をポイントする必要がある。現在、1つのFLASH部分につき複数のUSERSTOREパーティションが存在することはできない。
前述のように、イメージマニフェストファイル(パッケージ−パーティションマッピングまたはSKUファイル)238は、パーティションによって構成されるパッケージのリストを含む。このXMLスキーマ(先に示したもの)は、比較的単純である。イメージマニフェストファイルパーサ/プロセスは、SKUファイルが有効なXMLを含むことを検証することを担い、また、PACKAGE_LISTタグ中で指定されたパーティションをmemory.cfg.xml中のPACKAGEパーティションIDと照合することも担う。PACKAGE_LISTタグのPARTITION_ID属性は、PACKAGEパーティション要素のID属性と一致する必要がある。SKUパーサは、一致を見つけることができない場合は例外を投げる。図6のステップ600、602、604に、これらの様々な動作を要約する。
各PACKAGE_LISTタグは、必要とされるPARTITION_ID属性を有する。パッケージをパーティションと照合することは、PARTITION_ID属性をとり、これをC# HashTableへのルックアップとして使用することを含む。一致が見つかった場合は、子のPACKAGE_FILEタグをArrayListに変換し、PACKAGEパーティションの既存のパッケージリストとマージする。パッケージの抽出は以下のようにして行うことができる。
Figure 2005182809
ディスクイメージユーティリティ230は、_FLATRELEASEDIR環境変数が存在するかどうかチェックして、見つかればこれをカレント作業ディレクトリとして使用することに留意されたい。これは、従来の構築システムの挙動と一致する。従来の構築システムでは、ユーザが_FLATRELEASEDIR中のファイルを操作するだけで任意のディレクトリから「makeimg」を実行することができる。
パーティションは、MSPartのデスクトップ(構築システム)バージョンによって作成され管理される(従来のWindows(登録商標)CE構築システムの場合と同様に)。MSPartインタフェースにより、ディスクイメージユーティリティ230は、基礎をなすハードウェアに関する詳細を実際のパーティション構築から抽象化することができる。MSPartによって作成されたNB0ファイルに対するどんなハードウェア特有の調整も、後処理で実施される。MSPartは、他のディスクイメージユーティリティ230ツールが使用することもでき、その場合、後述するように、いずれかのパーティションを作成する前に、MSPartボリュームを各FLASH部分ごとに作成し、RESERVEセクションがあれば区画する。ディスクイメージユーティリティ230は、必要とされるアンマネージド関数をラップする別個のクラスfsdmgr.csを維持する。プロセスは、フラッシュ部分のグローバルHashTableを維持し、それにより、各フラッシュ部分へ名前でアクセスできるように、かつ各フラッシュ部分を反復できるようにする。上のプロセスは、図7に一般に表すように、各Flash部分のFlashReserve要素を反復して、fsdmgr.dllへの呼出しを行うことによって達成される。RESERVE領域には、この領域が実際に作成されたときにデータが投入される。このために、FSDMgrクラスが、データをディスクイメージからfsdmgr_nt.dllに導いて、RESERVE領域を埋める。
NB0を構築する際の第1のステップは、MSPartによってマウントされたVolumeにBINARYパーティションを加えることである。BINARYパーティションは完全に自立型なので(すなわちフィックスアップを必要とせず、NOR上のSectorDataメタデータも必要としない)、BINARYパーティションを最初に処理する。先に一般に述べたように、BINARYパーティションの構築は比較的単純である。プロセスは、BinaryPartitionsのアレイを反復し、それらのCreate()メソッドを呼び出す。各Partiotionオブジェクトはその親のフラッシュ部分をポイントするので、正しいボリュームハンドルを取り出すのも非常に単純である。
一実装形態では、PartitionInfoクラス(MemoryCFG階層の一部)は、CreateAllPartitionsと呼ばれる関数を含み、この関数は、BinaryPartitionオブジェクトを反復してそれらのCreate()メソッドを呼び出すことによって開始する。BinaryPartition.Create()関数は、新しいパーティションを作成し、これを指定のフラッシュブロックにマウントし、memory.cfg.xmlからのDATAFILE属性中で指定されたファイルを開き、FSDMgrを呼び出してデータをパーティションに書き込む。以下に、この機能に関する擬似コードを示す(いくつかのMSPart APIを使用して)。
Figure 2005182809
前述のように、ディスクイメージユーティリティは、ROMIMAGEおよびRAMIMAGEタイプのパーティションを作成するのに使用される「romimage」を提供する。これらのパーティションはそれぞれ、ROMおよびRAMからインプレース実行されるパーティションである。これらのパーティションは通常、IMGFSファイルシステムを稼動させるのに必要なシステムコンポーネントの最小限のセットを含む。すなわち、nk、coredll、filesys、fsdmgr、mspart、imgfs、および任意の必要なブロックドライバである。
ROMIMAGE/RAMIMAGEプロセスは一般に、様々なステップに分解することができる(現在の一実装形態におけるこれらのうちの8つを以下にリストする。また図8のステップ801〜808にも表す)。
モジュールおよびファイルのリストを構築してソートする(ステップ801)
すべてのモジュールに仮想アドレス空間を割り振る(ステップ802)
モジュールフィックスアップを実施する(ステップ803)
すべてのデータセクションおよびファイルを圧縮する(ステップ804)
物理レイアウトを実施する(ステップ805)
コピーセクションを割り振る(ステップ806)
カーネルモジュールフィックスアップを実施する(ステップ807)
実際のパーティションを出力する(ステップ808)
上の各ステップは、romimage.dllへの呼出しを行うことによって実施することができ、それにより様々な(例えばCおよびC#)アプリケーションから割振りおよび再配置の機能に容易にアクセスすることができる。ディスクイメージユーティリティは、ROMImage.cs.と呼ばれるラッパクラスを介してromimage.dllとインタフェースすることができる。
romimage.dllは、複数のAllocatorを作成および管理するためのAllocatorクラス階層および機能と、ファイルのリストを作成および管理するためのFileクラス階層および機能と、ROMIMAGE/RAMIMAGEパーティション構築プロセスの各ステップを実施するための関数とを含む。
Allocatorクラス階層は、RAMおよびFLASH中の利用可能な物理空間を管理するのに使用される。これは、任意割振りと固定予約の両方を行うための機能を公開する。Allocatorクラス(および子のAllocNode)は以下のように定義される。
Figure 2005182809
Figure 2005182809
romimage.dllは、Allocatorを操作するために以下の関数をエクスポートする。
Figure 2005182809
Allocate関数についての有効フラグには、BOTTOMUP_ALLOCおよびTOPDOWN_ALLOCが含まれる。名前が示唆するように、これらは両方とも、それぞれカレント割振りウィンドウの最下部および最上部から空き空間を探すファーストフィット(first−fit)アルゴリズムである。これらは線形探索を必要とする(したがって、多数の割振りが要求されたときは性能ボトルネックを生じる場合がある)。
Fileクラス階層は、ファイルまたはモジュールに関するすべてのメタデータを記憶するのに使用され、以下のように定義される。
Figure 2005182809
Figure 2005182809
Figure 2005182809
ファイルを構築しているデスクトップコンピュータ上で、各ファイルの内容は、FileおよびSectionクラスのデータメンバによってメモリマッピングされポイントされる。Fileクラス階層を操作するために、以下のデータ構造が定義される。
Figure 2005182809
Figure 2005182809
RAMIMAGE/ROMIMAGEパーティションを構築するために、以下の関数が提供される。
HRESULT BuildNKPartition(HANDLE hFileList,
HANDLE hVolume,
HANDLE hSlot0Alloc,
HANDLE hSlot1Alloc,
HANDLE hPhysAlloc,
HANDLE hRAMAlloc,
DWORD dwReserved);
上の関数で、
hFileListは、FileListオブジェクトへのハンドルである。FileListオブジェクトの作成については次の章で論じる。
hVolumeは、MSPartボリュームへのハンドルであり、パーティション作成中にDskImageによって作成される。
hSlot0Allocは、開始0×600000、長さ0×1A00000のアロケータへのハンドルである。
hSlot1Allocは、開始0×2100000、長さ0×1F00000のアロケータへのハンドルである。
hPhysAllocは、物理アロケータである(ROMIMAGEパーティションの場合はフラッシュ部分、RAMIMAGEパーティションの場合はRAM)。
hRAMAllocは、memory.cfg.xml中のRAM要素に対応するRAMアロケータである。
dwReservedは、以下のように定義されるMiscNKInfo構造体へのポインタである。
typedef struct _MiscNKInfo
{
USHORT cbSize;
USHORT usCPUType;
DWORD dwROMFlags;
DWORD dwFSRAMPercent;
BOOL fCompressPartition;
}MiscNKInfo;
モジュールおよびファイルのリストを構築してソートするために(図8のステップ801)、Romimage.dllは、ファイルおよびモジュールの複数のリンクリストを管理する。リストを構築するために、Romimage.dllは以下の関数を提供する。
HRESULT CreateFileList(PHANDLE phFileList);
HRESULT DestroyFileList(HANDLE hFileList);
HRESUTL AddFileToList(HANDLE hFileList,
wchar_t *szFileName,
DWORD dwFlags,
wchar_t *szPathToFile,
BOOL fLoadData,
PHANDLE phFile);
また、Fileオブジェクトをあるファイルリストから別のファイルリストに移動するためのAPIがあってもよい。このような関数は以下の形式とすることができる。
HRESULT SpliceFile(HANDLE hSrcList,
HANDLE hDstList,
HANDLE hFile);
モジュールに仮想アドレス空間を割り振るために(図8のステップ802)、Slot 0/1仮想アドレス割振りは、FileListと、Slot0に対するAllocatorと、Slot1に対するAllocatorとを必要とする。FileListはすでに正しい順序でソートされていることになり、次いで内部DoVAAllocメソッドは、以下の論理に従って割振りを実施する必要がある。
Figure 2005182809
図8のステップ803で表すように、カーネルモジュール以外のすべてに対してモジュールフィックスアップを実施する。このために、FileListクラス中の以下の関数が提供される。
HRESULT DoVAFixups(BOOL fReverse);
fReverse引数は、モジュールをフィックスアップすべきか、あるいはその元の値にリベース(rebase)すべきかを指定する。このような機能はデバイス側更新アプリケーションによって必要とされるが、ファイルを構築しているデスクトップコンピュータ上では、fReverseは常にFALSEになる(呼出し元はファイルリストを指定するだけでよい)。以前のromimage.exeは、.relファイルを反復してモジュール全体を一度にフィックスアップしていたが、コンポーネント化による更新では、セクションの指定ページだけをフィックスアップする機能が必要であることに留意されたい。Moduleクラス中のFixupBlob関数は、モジュールデータへの任意のポインタをとり、crelocセクションを反復してこのデータに適用されるフィックスアップだけを見つけることによってこれをフィックスアップすることをサポートする。ディスクイメージユーティリティ230は、1つのモジュールセクションにつき1度これを呼び出す。デバイス側更新アプリケーションは、構築する各bindiffページの後でこれを呼び出すことになる。この時点で、モジュールについての再配置情報がモジュール内(.crelocセクション中)に記憶されていることに留意されたい。この結果、必要な情報がモジュール自体に含まれているので、デバイス側更新はもはや再配置ファイルを反復する必要はない。
図8のステップ805で物理レイアウトを実施する前に、図8のステップ804で表すように、モジュールのデータセクションを圧縮する。ROMIMAGEおよびRAMIMAGEパーティションはインプレース実行されるように意図されているので、ディスクイメージユーティリティ230は、モジュールのコードセクションの圧縮はサポートしないことに留意されたい。ただし望むなら、コード圧縮は容易に追加することができる。
圧縮のために、FileListクラス中の以下の関数が提供される。
HRESULT DoCompression();
DoCompressionは、指定のFileListを反復し、カーネルモジュール以外のすべてのデータセクションを圧縮する。Sectionクラスに記憶されたo32romヘッダのpsizeメンバは、圧縮データ長を反映するように更新される。適した任意の圧縮アルゴリズムを使用することになる。例えば、現在のromimage.exe実装形態の1つでは、圧縮解除に最適化されたアルゴリズムを使用する。しかし、デバイス側更新アプリケーションによってromimage.dllが使用されるので、他のアルゴリズムを代わりに使用することもできる。
データセクションを圧縮した後には、プロセスは、物理レイアウトを実施するのに必要な情報を有する。このために、FileListクラス中の以下の関数が提供される。
HRESULT DoPhysicalLayout(Allocator &Alloc);
図8のステップ805に、物理レイアウトの実施を表す。ROMIMAGEパーティションの場合は、関連するFLASH部分のAllocatorを使用する。パーティションの開始位置は、MSPartに照会することによって決定する。RAMIMAGEパーティションの場合は、物理レイアウトのためのRAM Allocatorを使用する。パーティションの開始位置は、パーティションのRAMIMAGE要素のFIXUP_ADDRESS属性によって決定する。
DoPhysicalLayoutは、ファーストフィットアルゴリズムを使用し、FileListの内容を以下の順序で反復する。
1.コードセクション(ページ整合されている)
2.データセクション(.crelocおよびすべてのファイルを含む)
3.TOC(テーブルオブコンテンツ。すべてのTOCエントリを含む)
4.すべてのe32ヘッダ
5.すべてのo32ヘッダブロック
6.コピーセクションブロック
7.ファイル名
この段階の間に、ほとんどのテーブルオブコンテンツ(TOC)を生成する。これは、モジュールヘッダの物理位置を記憶するための場所に必要である。モジュールヘッダをレイアウトするときにTOCを生成することにより、このメタデータを保持するためにさらに別のデータ構造を生み出す必要が回避される。
コピーセクション(図8のステップ806)およびkdata用空間を割り振るために、RAM Allocatorを使用する。このステップは、ROMIMAGEパーティションについてはもっと早く実施することもできるが、ROMIMAGEおよびRAMIMAGEプロセスをできるだけ同様に保つために、そうしないことに留意されたい。slot0/1の割振りと同様、以下の1つの関数がFileListクラス中で提供される。
HRESULT DoCopySectionAlloc(Allocator &Alloc);
このステップが完了すると、プロセスは、pTocのRAMStart、RAMFree、RAMEnd属性を埋めることができる。
コピーセクションを割り振った後、図8のステップ807で表すように、カーネルおよびカーネルモジュールをフィックスアップする。slot0/1のフィックスアップと同様、以下の関数がFileListクラス中で提供される。
HRESULT DoKernelVAFixups(BOOL fReverse);
DoKernelVAFixupsは、カーネルモジュールのリストを反復し、各ModuleオブジェクトのDoKernelFixupsメソッドを呼び出すことによって必要なフィックスアップを実施する。
この時点で、すべてがフィックスアップされ、物理割振りが実施されている。ディスクイメージユーティリティ230は、すでにMSPartと通信しており、データを求めるパーティションへのハンドルを有する。最終的なイメージを出力するために、パーティションを書き込むための以下の関数が提供される。
HRESULT DoWriteNKPartition(HVOL hVolume, Allocator &Alloc);
RAMIMAGEおよびROMIMAGEパーティションの場合、DoWriteNKPartitionは、ディスクイメージユーティリティ230自体がBINARYパーティションを扱うのと同様にして、RAM中にパーティションの表現を作成し、次いでこのメモリブロックを単一のファイルとして出力する。Alloc引数は、書き出すときにRESERVE領域をスキップする必要のあるROMIMAGEパーティションに必要である。
ROMIMAGEパーティションとRAMIMAGEパーティションの間には、比較的小さいいくつかの違いがあるだけである。これらの違いとしては、RAMIMAGEパーティションに対する物理レイアウトはRAM Allocatorを使用するが、ROMIMAGEパーティションに対する物理レイアウトは親フラッシュ部分のAllocatorを使用することが含まれる。また、フラッシュ部分に十分な空間がない場合があるため、RAMIMAGEパーティションに対するDoWriteNKPartitionが失敗することもあり得る。ROMIMAGEパーティションは親フラッシュ部分のAllocatorを使用するので、ROMIMAGEパーティションではDoWriteNKPartitionは決して失敗しないはずである。実装はCとC#の両方で行うことができ、マネージドdskimage.exeがアンマネージドromimage.dllへの呼出しを行う。
ディスクイメージユーティリティ230は、_FLATRELEASEDIR\DskImage\Partition中のマニフェスト(DSM)ファイルを反復し、DSMファイルエントリ(およびDSMファイル自体)をromimage.dllについてのFileListに追加して処理することを担う。ROMIMAGEパーティションの場合、ディスクイメージユーティリティ230は、物理レイアウトを試みる前に、MSPartを呼び出して新しいパーティションを作成する(RAMIMAGEの場合は、いつでもパーティションを作成することができる)。パーティションを出力した後、ディスクイメージユーティリティ230は前述のようにこれをサイズ変更する。その他の操作もromimage.dllによって扱われる。
前述のように、構築される別のパッケージパーティションタイプはIMGFSである。これは、いくつかの理由で他のタイプの後に構築される。これらの理由としては、Windows(登録商標) CEカーネルによって課される制限によりRAMIMAGE/ROMIMAGE領域に対する割振りを先に行う必要があること、およびIMGFSパーティションがNOR上のSectorInfoを必要とすることが含まれる。サンプルNORフラッシュメディアドライバは、SectorInfoを含むパーティションがSectorInfoを含まないパーティションの後にくるようにフラッシュが構成されているものとみなす。IMGFSパーティションを構築するステップは、ROMIMAGE/RAMIMAGEパーティションの場合と同様である。以下のステップは本質的に、ROMIMAGE/RAMIMAGEパーティションビルダから再利用される。
モジュールおよびファイルのリストを構築してソートする
すべてのモジュールに仮想アドレス空間を割り振る
モジュールフィックスアップを実施する
実際のパーティションを出力する
IMGFSに対する物理レイアウトは、IMGFSおよびMSPartによって扱われる。RAMIMAGE/ROMIMAGEと同様、IMGFSパーティションを書き込むためのBuildIMGFSPartition APIが存在する。
HRESULT BuildIMGFSPartition(
HANDLE hFileList,
HANDLE hVolume,
HANDLE hSlot0Alloc,
HANDLE hSlot1Alloc,
DWORD dwReserved);
指定されるSlot0およびSlot1アロケータは、前にRAMIMAGE/ROMIMAGEパーティションを構築するために使用されたのと同じものになることが予想される。
IMGFSは圧縮を担う。デフォルトでは、FilesおよびModuleデータセクションを圧縮する。
IMGFSパーティションはカーネルモジュール(ce.bib中にKフラグを有するモジュール)を含むことはできないことに留意されたい。したがって、VA割振りを実施する前に、BuildIMGFSPartitionは、指定されたFileListがどんなカーネルモジュールも含まないことを検証する。
次に、以下のFileListメンバ関数を呼び出す。
1.DoVAAlloc
2.DoVAFixups
3.DoWriteIMGFSPartition(図9)
図9に一般に表すように、モジュールフィックスアップを実施した後、プロセスは指定されたFileListを反復し(ステップ900および918)、各エントリにつき新しいファイルをIMGFS中に作成する。カレントリストアイテムがModuleである場合は(ステップ902)、セクションごとに処理することに留意されたい(ステップ904から912)。そうでない場合は、ファイルを作成し(ステップ914)、データを書き込む(ステップ916)。
構築される別のパーティションタイプはUSERSTOREであり、これは本質的に、ユーザが望む任意のタイプのファイルシステムである。これは、FATまたはExtendedパーティション(PART_TYPE0×04および0×05)に向けて設計されるのが理想的である。現在の一実装形態では、memorycfg.xsdはユーザがUSERSTOREの長さを指定することを許容しないので、このパーティションは残りのフラッシュに広がる。USERSTOREを構築するために、プロセスはFSDMGRを呼び出して、指定されたPART_TYPEのパーティションを作成し、FSDMGRにフラッシュ部分の残りの空間を使用するよう命令する。すなわち、自動サイズ変更されるべきであることを指定することによって命令する(一実装形態では、1つのフラッシュ部分につき1つのUSERSTOREという制限がある)。
後処理
本発明の一態様によれば、完了時、ディスクイメージユーティリティは、構築(例えばデスクトップ)システム上で単一のファイル206を生成し終えており、このファイルは、種々のファイルシステムに対応する1つまたは複数のパーティションを含む。これらのパーティション内にパッケージの内容がインストールされることになり、実行可能モジュールが仮想アドレス空間中で適切にフィックスアップされる。この時点では、ユーザはハードウェアの詳細のうちのいくつかだけしか指示していないことに留意されたい。すなわち、RAMおよびストレージの位置(アドレス)、これらのサイズ、ストレージが線形かブロックベースかに関する詳細である。まだ指定されていない詳細は、フラッシュがNORフラッシュであるかNANDフラッシュであるか、あるいはハードディスクドライブであるか他の何らかのタイプのストレージであるかに関する詳細である。ストレージ技術は、それがどのように管理されるかに応じてイメージに影響を及ぼす場合がある。
例えば、図10Aおよび10Bに一般に表すように、フラッシュストレージは通常、ブロックに分割され、さらにページまたはセクタに細分される。これらの各サブコンポーネントのサイズと、ストレージ技術がそれぞれを識別する方式(例えば数値による方式)と、各ページまたはセクタごとの不良/予約済み/読取り専用ステータスを管理する方式とは、ストレージ技術に特有である。
後処理ステップの目的の1つは、この管理情報を、ディスクイメージユーティリティへの入力ファイル中で指定されたイメージレイアウトの要件に反しないような方式で、イメージに導入することである。例えば、パーティションの1つがNORフラッシュから実行されることになる場合は、これがCPUページインクリメントしながらCPUにマッピング可能であることを指定するCPU要件があり、これはストレージ管理要件により変更できない。
ディスクイメージユーティリティ230ツールの後処理段階を用いて、MSPartによって生成されたNB0ファイルに対してストレージハードウェア特有の調整を行う。例えば図10Aに表すように、NANDフラッシュは、セクタに付随してそのセクタ情報(各セクタごとのメタデータm)を別の空間に有する。しかし、NORハードウェアは、IMGFSパーティションを修正して、各セクタのブロック内にSectorInfoを含める必要がある。これを図10Bに一般に表すが、4つのセクタを含むブロックのうち3つのセクタに関するメタデータ(m)が、各ブロックの残りのセクタ中に保持されている。図10Bの影付き領域で表すように、ブロックを整合させるためにいくらかの空間は使用されない場合もあることに留意されたい。ペアフラッシュ(paired flash)を有するデバイス製造業者はまた、NB0を各フラッシュ部分ごとに別々のファイルに分離したいと思う場合もある。
ポストプロセッサ232(図2、例えばpostproc.exe)は、ディスクイメージユーティリティ230によって、memory.cfg.xml中の任意のNORフラッシュ要素上で自動的に実行されるものとすることができる。NOR要素のID、VASTART、BLOCKSIZE、SECTORSIZE属性が与えられれば、ポストプロセッサはID.nb0.postprocおよびID.binを出力する。ディスクイメージユーティリティ230の出力をさらに後処理するには、ユーザ(例えばOEM(original equipment manufacturer))がpostdiskimage.batファイルを作成することができ、このファイルは、ディスクイメージユーティリティ230の処理が完了したときにbuildpkgスクリプトによって呼び出されることになる。
動作時、ポストプロセッサ232はNB0を開き、マスタブートレコードを見つけ、その中のデータを使用してIMGFSパーティションを突き止める。次いでポストプロセッサ232は、(例えばNOR)ブロックドライバが理解するフォーマットで、各セクタにセクタデータを追加する。セクタデータをIMGFSに追加した後にはもはやUSERSTOREがフラッシュブロックの開始に対応しない場合があるので、ポストプロセッサ232はまた、USERSTOREが存在すればその開始を移動し、修正済みNB0を保存する。ポストプロセッサ232はさらに、レガシーブートローダのために修正済みNB0をバイナリファイルに変換することもできる。
以上の詳細な記述からわかるように、オペレーティングシステムイメージコンポーネントをファイルシステムベースの製造イメージに変換する機構が提供される。このイメージファイルは、どんな特定のストレージ技術からも独立しており、初期イメージとして使用するのに適するとともに、デバイスをコンポーネント化方式で更新することを容易にする。
本発明は様々な修正および代替構造が可能だが、本発明の例示的ないくつかの実施形態を図面に示し、上に詳細に述べた。ただし、開示した特定の形式に本発明を限定する意図はなく、反対に、本発明の趣旨および範囲に含まれるすべての修正、代替構造、均等物をカバーするものとすることを理解されたい。
本発明を組み込むことのできるコンピュータシステムを一般に表すブロック図である。 本発明の一態様による、組込みデバイスまたはその他の媒体にイメージとして書き込まれるデータを保持するための別々のパーティションを内部に設けて構築された出力ファイルを表すブロック図である。 本発明の一態様による、出力ファイルを構成するのに使用される様々なコンポーネントを表すブロック図である。 本発明の一態様による、出力ファイルを構成するディスクイメージユーティリティの全体的な流れを表す流れ図である。 本発明の一態様による、メモリ構成ファイルを妥当性検査するための論理を表す流れ図である。 本発明の一態様による、パッケージをパーティションマッピングファイルに対して検証すること、および指定されたパーティションをパッケージと照合することを担うプロセスを表す流れ図である。 本発明の一態様による、フラッシュ要素の処理を表す流れ図である。 本発明の一態様による、ROM/RAMベースのパーティションを構築するためのプロセスを表す流れ図である。 本発明の一態様による、システムパーティションを書き込むプロセスを表す流れ図である。 本発明の一態様による、後処理によって扱われるフラッシュメモリ中でセクタおよびブロックが構成される方式を表すブロック図である。 本発明の一態様による、後処理によって扱われるフラッシュメモリ中でセクタおよびブロックが構成される方式を表すブロック図である。
符号の説明
202 全フラッシュ
204 仮想メモリ
206 ファイル
209 パーティション
210 カーネル(NK)パーティション
211 システムパーティション
212 ユーザストアパーティション
213 マスタブートレコード(MBR)
214 ブートローダ
215 初期プログラムローダ(IPL)
230 ディスクイメージユーティリティ
232 イメージポストプロセッサ
236 ファイル
234 パッケージ
238 ファイル

Claims (41)

  1. コンピューティング環境で、
    第1の記憶媒体にインストールすべきイメージデータを含むパッケージにアクセスするステップと、
    前記パッケージの内容の書き込み先となるパーティションの記述にアクセスするステップと、
    第2の記憶媒体への出力ファイルを生成するステップであって、前記出力ファイルはパーティションを含み、各パッケージの内容は前記記述に基づいて前記パーティションのうちの1つに記憶されるステップと
    を備えることを特徴とする方法。
  2. メモリ構成ファイルにアクセスして、前記出力ファイル内の前記パーティションのうちの少なくとも1つの位置を決定するステップをさらに備えることを特徴とする請求項1に記載の方法。
  3. 少なくとも1つのパッケージの内容はオペレーティングシステムコンポーネントに対応し、前記パーティションのうちの1つはシステムパーティションを含み、前記記述に基づいて前記オペレーティングシステムコンポーネントを前記システムパーティションに書き込むステップをさらに備えることを特徴とする請求項1に記載の方法。
  4. 少なくとも1つのパッケージの内容はカーネルコンポーネントに対応し、前記パーティションのうちの1つはRAMベースのイメージパーティションを含み、前記記述に基づいて前記カーネルコンポーネントを前記RAMベースのイメージパーティションに書き込むステップをさらに備えることを特徴とする請求項1に記載の方法。
  5. 少なくとも1つのパッケージの内容はカーネルコンポーネントに対応し、前記パーティションのうちの1つはROMベースのイメージパーティションを含み、前記記述に基づいて前記カーネルコンポーネントを前記ROMベースのイメージパーティションに書き込むステップをさらに備えることを特徴とする請求項1に記載の方法。
  6. 少なくとも1つのパッケージの内容は更新ローダコンポーネントに対応し、前記パーティションのうちの1つはバイナリイメージパーティションを含み、前記記述に基づいて前記更新ローダを前記バイナリイメージパーティションに書き込むステップをさらに備えることを特徴とする請求項1に記載の方法。
  7. 前記出力ファイルを生成するステップは、前記ファイルの最後まで延びるパーティションにデータを書き込むステップと、書き込まれた実際のデータ量に基づいて前記パーティションのサイズを調整するステップとを含むことを特徴とする請求項1に記載の方法。
  8. 前記出力ファイルを生成するステップは、前記ファイルの最後まで延びるパーティションにデータを書き込むステップと、前記書き込まれたデータの最後の後に空き空間バッファを追加するステップと、書き込まれた実際のデータ量および前記空き空間バッファに基づいて前記パーティションのサイズを調整するステップとを含むことを特徴とする請求項1に記載の方法。
  9. 前記ファイル中のマスタブートレコードにデータを書き込んでパーティションを定義するステップをさらに備えることを特徴とする請求項1に記載の方法。
  10. マスタブートレコードにデータを書き込むステップはユーザストアパーティションを定義するステップを含むことを特徴とする請求項7に記載の方法。
  11. 前記出力ファイルに追加データを書き込むステップをさらに備えることを特徴とする請求項1に記載の方法。
  12. 後処理を実施して、前記出力ファイルから前記第1の記憶媒体にデータを転送するために準備するステップをさらに備えることを特徴とする請求項1に記載の方法。
  13. 前記第1の記憶媒体は内部のコードをインプレース実行できるフラッシュメモリを構成し、メモリ構成ファイルにアクセスして、内部のコードがインプレース実行されるように前記パーティションのうちの少なくとも1つをフィックスアップするステップをさらに備えることを特徴とする請求項12に記載の方法。
  14. メモリ構成ファイルにアクセスして、前記第1の記憶媒体のどのセクションが予約済みかを決定するステップをさらに備えることを特徴とする請求項1に記載の方法。
  15. 実行されたときに請求項1に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とする1つまたは複数のコンピュータ読み取り可能な記録媒体。
  16. コンピューティング環境で、
    記憶媒体にインストールすべきイメージデータを含むパーティションを備えたファイルにアクセスするステップと、
    前記ファイルを処理して、特定のストレージ技術によって必要とされる修正があれば前記パーティションおよびファイルシステムレイアウトに修正を導入するステップと
    を備えることを特徴とする方法。
  17. 前記ファイルから前記特定のストレージ技術に対応する前記記憶媒体にデータを転送するステップをさらに備えることを特徴とする請求項16に記載の方法。
  18. メモリ構成ファイルにアクセスして、前記出力ファイル内の前記パーティションのうちの少なくとも1つの位置を決定するステップをさらに備えることを特徴とする請求項16に記載の方法。
  19. 前記イメージデータはパッケージに対応し、パーティション−パッケージマッピングファイルおよびメモリ構成ファイルから前記ファイルを生成するステップをさらに備えることを特徴とする請求項16に記載の方法。
  20. 実行されたときに請求項17に記載の方法を実施するコンピュータ実行可能命令を有することを特徴とする1つまたは複数のコンピュータ読み取り可能な記録媒体。
  21. コンピューティング環境で、
    パーティション情報およびパッケージ情報を含むパーティション−パッケージマッピングファイルを入力し、前記ファイル中のデータに基づいて、前記パッケージ情報中で識別されるパッケージを使用してイメージファイルを出力するディスクイメージユーティリティプロセスであって、前記イメージファイルは、前記パーティション情報中で識別される複数のパーティションを含み、各パッケージの内容は前記記述に基づいて前記パーティションのうちの1つに記憶されるディスクイメージユーティリティプロセスと、
    前記イメージファイルを処理して、特定のストレージ技術によって必要とされる修正があれば前記イメージに修正を導入するポストプロセス
    を備えたことを特徴とするシステム。
  22. 前記ディスクイメージユーティリティプロセスはさらに、デバイスのためのストレージがどのように構成されるかを示すデータを含むメモリ構成ファイルを入力することを特徴とする請求項21に記載のシステム。
  23. 前記デバイスは、内部のコードをインプレース実行できるメモリを備えて構成され、前記メモリ構成ファイルがアクセスを受けて、内部のコードがインプレース実行されるように前記パーティションのうちの少なくとも1つがフィックスアップされることを特徴とする請求項22に記載のシステム。
  24. 前記メモリ構成ファイルがアクセスを受けて、デバイスメモリのどのセクションが予約済みかが決定されることを特徴とする請求項22に記載のシステム。
  25. 少なくとも1つのパッケージの内容はオペレーティングシステムコンポーネントに対応し、前記パーティションのうちの1つはシステムパーティションを含み、前記ディスクイメージユーティリティは前記記述に基づいて前記オペレーティングシステムコンポーネントを前記システムパーティションに書き込むことを特徴とする請求項21に記載のシステム。
  26. 少なくとも1つのパッケージの内容はカーネルコンポーネントに対応し、前記パーティションのうちの1つはRAMベースのイメージパーティションを含み、前記ディスクイメージユーティリティは前記記述に基づいて前記カーネルコンポーネントを前記RAMベースのイメージパーティションに書き込むことを特徴とする請求項21に記載のシステム。
  27. 少なくとも1つのパッケージの内容はカーネルコンポーネントに対応し、前記パーティションのうちの1つはROMベースのイメージパーティションを含み、前記ディスクイメージユーティリティは前記記述に基づいて前記カーネルコンポーネントを前記ROMベースのイメージパーティションに書き込むことを特徴とする請求項21に記載のシステム。
  28. 少なくとも1つのパッケージの内容は更新ローダコンポーネントに対応し、前記パーティションのうちの1つはバイナリイメージパーティションを含み、前記ディスクイメージユーティリティは前記記述に基づいて前記更新ローダを前記バイナリイメージパーティションに書き込むことを特徴とする請求項21に記載のシステム。
  29. 前記ディスクイメージユーティリティは、前記ファイルの最後まで延びるパーティションにデータを書き込み、書き込んだ実際のデータ量に基づいて前記パーティションのサイズを調整することを特徴とする請求項21に記載のシステム。
  30. 前記ディスクイメージユーティリティは、前記ファイルの最後まで延びるパーティションにデータを書き込み、前記書き込んだデータの最後の後に空き空間バッファを追加し、書き込んだ実際のデータ量および前記空き空間バッファに基づいて前記パーティションのサイズを調整することを特徴とする請求項21に記載のシステム。
  31. 前記ディスクイメージユーティリティは前記ファイル中のマスタブートレコードにデータを書き込んでパーティションを定義することを特徴とする請求項21に記載のシステム。
  32. 前記ディスクイメージユーティリティは前記マスタブートレコードにデータを書き込むことによってユーザストアパーティションを定義することを特徴とする請求項31に記載のシステム。
  33. データ構造を記憶した少なくとも1つのコンピュータ読み取り可能な記録媒体であって、前記データ構造は、
    前記データ構造中のパーティションを定義するマスタブートレコードを含む第1のデータセットであって、各パーティションがファイルシステムに対応する第1のデータセットと、
    バイナリパーティションを含む第2のデータセットと、
    ストレージベースのパーティションを含む第3のデータセットと、
    システムパーティションを含む第4のデータセットとを備え、
    前記データ構造が処理されて記憶媒体上にオペレーティングシステムイメージが生み出されることを特徴とするコンピュータ読み取り可能な記録媒体。
  34. 前記バイナリパーティションは更新ローダコードを含むことを特徴とする請求項33に記載のデータ構造を記憶したコンピュータ読み取り可能な記録媒体。
  35. 前記更新ローダコードは前記バイナリパーティション中で圧縮されていることを特徴とする請求項34に記載のデータ構造を記憶したコンピュータ読み取り可能な記録媒体。
  36. 前記ストレージベースのパーティションは、カーネルコードを含むRAMイメージパーティションを構成することを特徴とする請求項33に記載のデータ構造を記憶したコンピュータ読み取り可能な記録媒体。
  37. 前記カーネルコードは前記RAMイメージパーティション中で圧縮されていることを特徴とする請求項36に記載のデータ構造を記憶したコンピュータ読み取り可能な記録媒体。
  38. 前記ストレージベースのパーティションは、カーネルコードを含むROMイメージパーティションを構成することを特徴とする請求項33に記載のデータ構造を記憶したコンピュータ読み取り可能な記録媒体。
  39. 前記システムパーティションはオペレーティングシステムコンポーネントを含むことを特徴とする請求項33に記載のデータ構造を記憶したコンピュータ読み取り可能な記録媒体。
  40. 前記第1のデータセット中の前記マスタブートレコードは、前記定義済みパーティションのうちの1つとしてユーザストアパーティションを定義することを特徴とする請求項33に記載のデータ構造を記憶したコンピュータ読み取り可能な記録媒体。
  41. 初期プログラムローダコードを含む第5のデータセットをさらに備えることを特徴とする請求項33に記載のデータ構造を記憶したコンピュータ読み取り可能な記録媒体。
JP2004363716A 2003-12-16 2004-12-15 ストレージ技術抽象化方式におけるファイル内でのファイルシステムの生成 Pending JP2005182809A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US53013503P 2003-12-16 2003-12-16
US10/837,150 US7614051B2 (en) 2003-12-16 2004-05-01 Creating file systems within a file in a storage technology-abstracted manner

Publications (1)

Publication Number Publication Date
JP2005182809A true JP2005182809A (ja) 2005-07-07

Family

ID=34527140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004363716A Pending JP2005182809A (ja) 2003-12-16 2004-12-15 ストレージ技術抽象化方式におけるファイル内でのファイルシステムの生成

Country Status (4)

Country Link
US (1) US7614051B2 (ja)
EP (1) EP1544732A3 (ja)
JP (1) JP2005182809A (ja)
CN (1) CN100498703C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193505A (ja) * 2006-01-18 2007-08-02 Nec Infrontia Corp パーティション・サイズ可変ファームウェア組込装置とそのファームウェア更新方法

Families Citing this family (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040148601A1 (en) * 2000-08-02 2004-07-29 Kroening James L. Method and system for calculation and use of a disk image identifer
US7549148B2 (en) 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US20060253643A1 (en) * 2005-05-04 2006-11-09 Delkin Devices, Inc. Memory with isolated master boot record
CN100458970C (zh) * 2005-07-04 2009-02-04 联咏科技股份有限公司 嵌入式存储单元结构以及存储装置的系统结构与操作方法
US7761867B2 (en) * 2005-07-29 2010-07-20 International Business Machines Corporation Method and system for creation of operating system partition table
US7567984B1 (en) * 2006-08-31 2009-07-28 Symantec Operating Corporation Operating system and application deployment based on stored user state and organizational policy
JP5048072B2 (ja) * 2007-09-07 2012-10-17 ハミングヘッズ株式会社 情報検索システム、情報検索方法及びプログラム
US8789036B2 (en) * 2008-01-17 2014-07-22 Qualcomm Incorporated Device software customization
JP5111242B2 (ja) * 2008-06-04 2013-01-09 キヤノン株式会社 画像処理装置及び方法
US8346225B2 (en) 2009-01-28 2013-01-01 Headwater Partners I, Llc Quality of service for device assisted services
US8340634B2 (en) 2009-01-28 2012-12-25 Headwater Partners I, Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US8548428B2 (en) 2009-01-28 2013-10-01 Headwater Partners I Llc Device group partitions and settlement platform
US8391834B2 (en) 2009-01-28 2013-03-05 Headwater Partners I Llc Security techniques for device assisted services
US8275830B2 (en) 2009-01-28 2012-09-25 Headwater Partners I Llc Device assisted CDR creation, aggregation, mediation and billing
US8635335B2 (en) 2009-01-28 2014-01-21 Headwater Partners I Llc System and method for wireless network offloading
US8229812B2 (en) 2009-01-28 2012-07-24 Headwater Partners I, Llc Open transaction central billing system
US8406748B2 (en) 2009-01-28 2013-03-26 Headwater Partners I Llc Adaptive ambient services
US8626115B2 (en) 2009-01-28 2014-01-07 Headwater Partners I Llc Wireless network service interfaces
US8402111B2 (en) 2009-01-28 2013-03-19 Headwater Partners I, Llc Device assisted services install
US8589541B2 (en) 2009-01-28 2013-11-19 Headwater Partners I Llc Device-assisted services for protecting network capacity
US8832777B2 (en) 2009-03-02 2014-09-09 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US8288976B2 (en) * 2008-06-23 2012-10-16 Sntech, Inc. Optimization of motor operation using a test cycle
US8156320B2 (en) * 2008-08-27 2012-04-10 Wireless Silicon Group, Llc Method and apparatus for fast booting a portable computing device allowing for immediate operation
US8281169B2 (en) 2008-08-27 2012-10-02 Wireless Silicon Group, Inc. Method and system for power management for a handheld mobile electronic device executing-in-place an application kernel from execute-in-place non-volatile memory (XIP NVM)
US9270559B2 (en) 2009-01-28 2016-02-23 Headwater Partners I Llc Service policy implementation for an end-user device having a control application or a proxy agent for routing an application traffic flow
US9578182B2 (en) 2009-01-28 2017-02-21 Headwater Partners I Llc Mobile device and service management
US9392462B2 (en) 2009-01-28 2016-07-12 Headwater Partners I Llc Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy
US10326800B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Wireless network service interfaces
US10841839B2 (en) 2009-01-28 2020-11-17 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US9647918B2 (en) 2009-01-28 2017-05-09 Headwater Research Llc Mobile device and method attributing media services network usage to requesting application
US9858559B2 (en) 2009-01-28 2018-01-02 Headwater Research Llc Network service plan design
US11218854B2 (en) 2009-01-28 2022-01-04 Headwater Research Llc Service plan design, user interfaces, application programming interfaces, and device management
US10064055B2 (en) 2009-01-28 2018-08-28 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US9954975B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Enhanced curfew and protection associated with a device group
US9253663B2 (en) 2009-01-28 2016-02-02 Headwater Partners I Llc Controlling mobile device communications on a roaming network based on device state
US9609510B2 (en) 2009-01-28 2017-03-28 Headwater Research Llc Automated credential porting for mobile devices
US9351193B2 (en) 2009-01-28 2016-05-24 Headwater Partners I Llc Intermediate networking devices
US10264138B2 (en) 2009-01-28 2019-04-16 Headwater Research Llc Mobile device and service management
US10237757B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc System and method for wireless network offloading
US10057775B2 (en) 2009-01-28 2018-08-21 Headwater Research Llc Virtualized policy and charging system
US9557889B2 (en) 2009-01-28 2017-01-31 Headwater Partners I Llc Service plan design, user interfaces, application programming interfaces, and device management
US9572019B2 (en) 2009-01-28 2017-02-14 Headwater Partners LLC Service selection set published to device agent with on-device service selection
US9755842B2 (en) 2009-01-28 2017-09-05 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US9980146B2 (en) 2009-01-28 2018-05-22 Headwater Research Llc Communications device with secure data path processing agents
US10492102B2 (en) 2009-01-28 2019-11-26 Headwater Research Llc Intermediate networking devices
US20140075567A1 (en) * 2009-01-28 2014-03-13 Headwater Partners I Llc Service Processor Configurations for Enhancing or Augmenting System Software of a Mobile Communications Device
US9706061B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Service design center for device assisted services
US10779177B2 (en) 2009-01-28 2020-09-15 Headwater Research Llc Device group partitions and settlement platform
US8745191B2 (en) 2009-01-28 2014-06-03 Headwater Partners I Llc System and method for providing user notifications
US10715342B2 (en) 2009-01-28 2020-07-14 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US10783581B2 (en) 2009-01-28 2020-09-22 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
US10248996B2 (en) 2009-01-28 2019-04-02 Headwater Research Llc Method for operating a wireless end-user device mobile payment agent
US10200541B2 (en) 2009-01-28 2019-02-05 Headwater Research Llc Wireless end-user device with divided user space/kernel space traffic policy system
US9955332B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Method for child wireless device activation to subscriber account of a master wireless device
US10798252B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc System and method for providing user notifications
US10484858B2 (en) 2009-01-28 2019-11-19 Headwater Research Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US9565707B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Wireless end-user device with wireless data attribution to multiple personas
US9571559B2 (en) 2009-01-28 2017-02-14 Headwater Partners I Llc Enhanced curfew and protection associated with a device group
US8793758B2 (en) 2009-01-28 2014-07-29 Headwater Partners I Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
CN101539887B (zh) * 2009-05-06 2011-08-17 美商威睿电通公司 快闪存储器管理方法与计算机系统
TWI417720B (zh) * 2009-05-06 2013-12-01 Via Telecom Co Ltd 快閃記憶體管理方法與計算機系統
US9417851B2 (en) * 2009-05-13 2016-08-16 Adobe Systems Incorporated Location-based application development for runtime environments
US9154826B2 (en) 2011-04-06 2015-10-06 Headwater Partners Ii Llc Distributing content and service launch objects to mobile devices
US9158550B2 (en) * 2011-06-16 2015-10-13 Vmware, Inc. Caching based operating system installation
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US9311126B2 (en) * 2011-07-27 2016-04-12 Mcafee, Inc. System and method for virtual partition monitoring
TWI470549B (zh) * 2012-04-20 2015-01-21 Insyde Software Corp A method of using an image recognition guide to install an application, and an electronic device
US9870232B2 (en) * 2012-05-29 2018-01-16 Fujitsu Limited Extensible method and system for storage metadata
CN103488640B (zh) * 2012-06-11 2017-01-25 北汽福田汽车股份有限公司 一种映射文件的自动分析方法和装置
CN103581214A (zh) * 2012-07-20 2014-02-12 中国电信股份有限公司 云硬盘容量伸缩的方法和装置
CN103677884B (zh) * 2012-09-21 2017-05-31 华为技术有限公司 flash分区表文件生成及其数据升级方法、装置
US9560136B2 (en) * 2014-08-07 2017-01-31 Sap Se High speed communication protocol
US11294657B2 (en) * 2015-05-15 2022-04-05 Hewlett-Packard Development Company, L.P. Data copying
US10282351B2 (en) * 2015-08-17 2019-05-07 Sap Se Using statistics for database partition pruning on correlated columns
CN106339280B (zh) * 2016-08-31 2019-05-24 四川效率源信息安全技术股份有限公司 一种重组展讯系统数据的方法
US10127029B1 (en) * 2016-12-30 2018-11-13 Veritas Technologies Llc Operating system installation using logical volumes
US11507534B2 (en) * 2017-05-11 2022-11-22 Microsoft Technology Licensing, Llc Metadata storage for placeholders in a storage virtualization system
CN111338664A (zh) * 2018-12-18 2020-06-26 启碁科技股份有限公司 映像文件打包方法及映像文件打包系统
US11455281B2 (en) 2019-04-19 2022-09-27 EMC IP Holding Company LLC Generating and morphing a collection of files in a folder/sub-folder structure that collectively has desired dedupability, compression, clustering and commonality
US11934680B2 (en) 2020-02-06 2024-03-19 Arris Enterprises Llc Systems and methods for booting from NAND flash using squashfs to maximize memory
CN112231006B (zh) * 2020-10-23 2022-10-21 杭州海康存储科技有限公司 计算机设备的启动方法、装置及计算机设备
CN112306418B (zh) * 2020-11-09 2022-10-21 中国船舶重工集团公司第七0七研究所九江分部 一种VxWorks环境下基于RawFS的数据记录方法
US11809850B2 (en) 2021-08-25 2023-11-07 Microsoft Technology Licensing, Llc Generating and distributing customized embedded operating systems

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1069375A (ja) * 1996-03-04 1998-03-10 Nec Corp 区分されたハードディスクドライブ及びハードディスクドライブ用区分機構
JPH113297A (ja) * 1997-06-13 1999-01-06 Mitsubishi Electric Corp ソフトウェアインストール方法
JPH11143690A (ja) * 1997-11-14 1999-05-28 Sharp Corp インストールシステム
JPH11184706A (ja) * 1997-12-22 1999-07-09 Matsushita Electric Works Ltd 画像処理装置のプログラム転送方法
JPH11265290A (ja) * 1998-03-17 1999-09-28 Hitachi Ltd プログラムロード方法
JP2002351687A (ja) * 2001-05-24 2002-12-06 Seiko Instruments Inc プリンタのファームウェアの更新方式
JP2003288216A (ja) * 2002-02-20 2003-10-10 Gateway Inc ネットワーク・マスターハードディスク・ドライブ複製装置

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974149A (en) * 1985-08-02 1990-11-27 Wang Laboratories, Inc. Data distribution apparatus and method having a data description including information for specifying a time that a data distribution is to occur
US5303384A (en) * 1990-01-02 1994-04-12 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration High level language-based robotic control system
US5214695A (en) * 1990-07-23 1993-05-25 International Business Machines Corporation Apparatus and method for loading a system reference diskette image from a system partition in a personal computer system
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5325532A (en) * 1992-09-25 1994-06-28 Compaq Computer Corporation Automatic development of operating system boot image
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US5625693A (en) * 1995-07-07 1997-04-29 Thomson Consumer Electronics, Inc. Apparatus and method for authenticating transmitting applications in an interactive TV system
US5757914A (en) * 1995-10-26 1998-05-26 Sun Microsystems, Inc. System and method for protecting use of dynamically linked executable modules
US5835777A (en) * 1996-03-20 1998-11-10 Hewlett-Packard Company Method of automatically generating a software installation package
US5721824A (en) 1996-04-19 1998-02-24 Sun Microsystems, Inc. Multiple-package installation with package dependencies
DE69842184D1 (de) * 1997-08-20 2011-04-28 Powerquest Corp Manipulation der speicherpartitionen wahrend der migration
WO1999018505A1 (en) * 1997-10-06 1999-04-15 Powerquest Corporation System and method for transferring one-to-many disk image among computers in a network
US6351850B1 (en) * 1997-11-14 2002-02-26 Frank Van Gilluwe Computer operating system installation
WO1999026123A1 (en) 1997-11-18 1999-05-27 Christopher Benjamin Wakely Improvements relating to software protection systems
US6167532A (en) 1998-02-05 2000-12-26 Compaq Computer Corporation Automatic system recovery
US7503072B2 (en) * 1998-04-29 2009-03-10 Microsoft Corporation Hardware ID to prevent software piracy
US6243468B1 (en) * 1998-04-29 2001-06-05 Microsoft Corporation Software anti-piracy system that adapts to hardware upgrades
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US6330670B1 (en) * 1998-10-26 2001-12-11 Microsoft Corporation Digital rights management operating system
US6327652B1 (en) * 1998-10-26 2001-12-04 Microsoft Corporation Loading and identifying a digital rights management operating system
US6802006B1 (en) * 1999-01-15 2004-10-05 Macrovision Corporation System and method of verifying the authenticity of dynamically connectable executable images
US6697948B1 (en) * 1999-05-05 2004-02-24 Michael O. Rabin Methods and apparatus for protecting information
JP3852538B2 (ja) * 1999-05-14 2006-11-29 富士通株式会社 コンピュータシステム、コンピュータネットワークシステム、コンピュータ及び記録媒体
US6675382B1 (en) * 1999-06-14 2004-01-06 Sun Microsystems, Inc. Software packaging and distribution system
US6324692B1 (en) * 1999-07-28 2001-11-27 Data General Corporation Upgrade of a program
US6725205B1 (en) * 1999-12-02 2004-04-20 Ulysses Esd, Inc. System and method for secure software installation
EP1238334A1 (en) * 1999-12-15 2002-09-11 Sun Microsystems, Inc. Preparation of a software configuration using an xml type programming language
US6581159B1 (en) * 1999-12-23 2003-06-17 Intel Corporation Secure method of updating bios by using a simply authenticated external module to further validate new firmware code
CA2396100A1 (en) 2000-01-07 2001-07-19 Xiaodong Liu Method and apparatus for backing up application code upon power failure during a code update
US6591376B1 (en) * 2000-03-02 2003-07-08 Hewlett-Packard Development Company, L.P. Method and system for failsafe recovery and upgrade of an embedded operating system
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
JP2001331327A (ja) * 2000-05-24 2001-11-30 Matsushita Electric Ind Co Ltd 電子機器
US7140013B2 (en) * 2000-06-01 2006-11-21 Aduva, Inc. Component upgrading with dependency conflict resolution, knowledge based and rules
DE10028500A1 (de) 2000-06-08 2002-01-03 Deutsche Telekom Ag Verfahren zur Installation von Software in einer Hardware
US7000230B1 (en) * 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7117371B1 (en) 2000-06-28 2006-10-03 Microsoft Corporation Shared names
DE10037397A1 (de) * 2000-08-01 2002-02-14 Daimler Chrysler Ag Verfahren zum Laden von Software
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US6832373B2 (en) * 2000-11-17 2004-12-14 Bitfone Corporation System and method for updating and distributing information
US6807665B2 (en) * 2001-01-18 2004-10-19 Hewlett-Packard Development Company, L. P. Efficient data transfer during computing system manufacturing and installation
JP2003005859A (ja) * 2001-04-16 2003-01-08 Yuichi Sumiya プログラムやデータの管理方法とコンピュータ
US20020157010A1 (en) * 2001-04-24 2002-10-24 International Business Machines Corporation Secure system and method for updating a protected partition of a hard drive
US6912591B2 (en) * 2001-05-02 2005-06-28 Science Application International Corporation System and method for patch enabled data transmissions
US20040015958A1 (en) * 2001-05-15 2004-01-22 Veil Leonard Scott Method and system for conditional installation and execution of services in a secure computing environment
US7155710B2 (en) * 2001-06-08 2006-12-26 Igt Method and apparatus for gaming device software configuration
FI114416B (fi) 2001-06-15 2004-10-15 Nokia Corp Menetelmä elektroniikkalaitteen varmistamiseksi, varmistusjärjestelmä ja elektroniikkalaite
US6993642B2 (en) 2001-07-24 2006-01-31 Microsoft Corporation Method and system for creating and employing an operating system having selected functionality
US8200988B2 (en) 2001-08-03 2012-06-12 Intel Corporation Firmware security key upgrade algorithm
US20030046482A1 (en) * 2001-08-28 2003-03-06 International Business Machines Corporation Data management in flash memory
US20030063896A1 (en) 2001-09-28 2003-04-03 Gonzalez Tovar Victor Manuel System utility interface for software upgrades and system diagnostics in automotive or portable DVD players
US7237122B2 (en) * 2001-10-19 2007-06-26 Mcafee, Inc. Method and apparatus to facilitate software installation using embedded user credentials
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
US20030182563A1 (en) * 2002-03-22 2003-09-25 Liu James C. Method and apparatus for software license verification
CA2380762A1 (en) 2002-04-04 2003-10-04 Intrinsyc Software, Inc. Internet-enabled device provisioning, upgrade and recovery mechanism
US7194738B2 (en) * 2002-04-09 2007-03-20 Synnex Technology International Corporation Method of creating image files and installing software bundles on target computers
US20030217358A1 (en) 2002-05-17 2003-11-20 Sun Microsystems, Inc. Method, system, and article of manufacture for firmware downloads
US8447963B2 (en) * 2002-06-12 2013-05-21 Bladelogic Inc. Method and system for simplifying distributed server management
US20040060035A1 (en) 2002-09-24 2004-03-25 Eric Ustaris Automated method and system for building, deploying and installing software resources across multiple computer systems
US7007049B2 (en) * 2002-11-18 2006-02-28 Innopath Software, Inc. Device memory management during electronic file updating
US7085957B2 (en) * 2002-11-21 2006-08-01 Texas Instruments Incorporated Upgrading of firmware with tolerance to failures
US7478385B2 (en) 2003-01-17 2009-01-13 National Instruments Corporation Installing software using programmatic component dependency analysis
US7228541B2 (en) * 2003-01-17 2007-06-05 National Instruments Corporation Creation of application system installer
AU2003225439A1 (en) * 2003-02-11 2004-09-06 Unisys Corporation Method and apparatus for updating a control file
US7072807B2 (en) * 2003-03-06 2006-07-04 Microsoft Corporation Architecture for distributed computing system and automated design, deployment, and management of distributed applications
US7117304B2 (en) * 2003-06-03 2006-10-03 Sun Microsystems, Inc. System and method for determining a file system layout
US7644404B2 (en) 2003-06-04 2010-01-05 Hewlett-Packard Development Company, L.P. Network having customizable generators and electronic device having customizable updating software
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
US7549148B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Self-describing software image update components
US7765592B2 (en) * 2004-01-10 2010-07-27 Microsoft Corporation Changed file identification, software conflict resolution and unwanted file removal
US7853609B2 (en) 2004-03-12 2010-12-14 Microsoft Corporation Update distribution system architecture and method for distributing software

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1069375A (ja) * 1996-03-04 1998-03-10 Nec Corp 区分されたハードディスクドライブ及びハードディスクドライブ用区分機構
JPH113297A (ja) * 1997-06-13 1999-01-06 Mitsubishi Electric Corp ソフトウェアインストール方法
JPH11143690A (ja) * 1997-11-14 1999-05-28 Sharp Corp インストールシステム
JPH11184706A (ja) * 1997-12-22 1999-07-09 Matsushita Electric Works Ltd 画像処理装置のプログラム転送方法
JPH11265290A (ja) * 1998-03-17 1999-09-28 Hitachi Ltd プログラムロード方法
JP2002351687A (ja) * 2001-05-24 2002-12-06 Seiko Instruments Inc プリンタのファームウェアの更新方式
JP2003288216A (ja) * 2002-02-20 2003-10-10 Gateway Inc ネットワーク・マスターハードディスク・ドライブ複製装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193505A (ja) * 2006-01-18 2007-08-02 Nec Infrontia Corp パーティション・サイズ可変ファームウェア組込装置とそのファームウェア更新方法
JP4652240B2 (ja) * 2006-01-18 2011-03-16 Necインフロンティア株式会社 パーティション・サイズ可変ファームウェア組込装置のファームウェア更新方法

Also Published As

Publication number Publication date
CN100498703C (zh) 2009-06-10
US20050132123A1 (en) 2005-06-16
EP1544732A3 (en) 2009-03-25
CN1645323A (zh) 2005-07-27
US7614051B2 (en) 2009-11-03
EP1544732A2 (en) 2005-06-22

Similar Documents

Publication Publication Date Title
US7614051B2 (en) Creating file systems within a file in a storage technology-abstracted manner
US9569286B2 (en) Method and system for improving startup performance and interoperability of a virtual application
JP4936654B2 (ja) コンポーネント用として言語独立ファイル及び対応する言語特有リソースファイルを作成する方法
KR101143027B1 (ko) 자기 기술적 소프트웨어 이미지 업데이트 컴포넌트
KR101795844B1 (ko) 런타임 시스템
TWI556170B (zh) 將作業系統之原始應用程式介面投射至其它程式語言(二)
US20060064576A1 (en) Boot systems and methods
US20080127162A1 (en) Method and apparatus for configuring application software
JP2008234673A (ja) モバイル・デバイスのアプリケーション・インストール管理システムおよび方法
US7840942B2 (en) Configuration file sharing
CN106909441B (zh) 一种基于jvm的磁盘直接i/o访问的方法
KR101615295B1 (ko) 클래스 파일 내에 네이티브 코드를 임베드시킴으로써 가상 머신에서의 플랫폼 의존성 루틴의 적용
US20080141219A1 (en) Multiple inheritance facility for java script language
CN113312046A (zh) 子应用页面处理方法、装置和计算机设备
TW201324347A (zh) 功能模組命令管理系統及方法
US8661425B1 (en) Method, apparatus, and computer-readable medium for storing data associated with a firmware program
CN109656881B (zh) 一种基于fat16技术实现文件动态管理的方法和系统
CN113656040A (zh) 程序组件调试更新方法及其相应的装置、设备、介质
CN114077575A (zh) 用于内存快照文件的格式转换方法、设备和系统
US8615736B2 (en) Module facility for JAVASCRIPT language
KR20050016256A (ko) 저장 기술-추출 방식으로 파일 내에 파일 시스템 생성하기
US11243876B2 (en) Techniques for accessing off-heap memory
CN116841657A (zh) 接口函数调用方法和装置
CN115878197A (zh) 基于设备树的启动优化方法、系统、芯片、设备和介质
CN116302349A (zh) 加快Java应用程序启动速度的方法及其相关组件

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110415

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111202