Androidシステムのパーティション導入

Android システムは Linux アーキテクチャを採用しているため、Android システム パーティションは、同様に Linux アーキテクチャを採用しているオペレーティング システム (Windows など) と比較できます。

Android システム パーティションの分類

現在、Android の一般的なパーティション方法は 3 つありますが、Android システムのバージョンごとに異なるパーティション方法が使用されることになります。

1. 従来のパーティション (非 A/B パーティション) は通常、Android 10 以下の携帯電話にあります。

2. A/B パーティション (一部のモデルが存在します。これは、より一般的に使用される 2 つのモデル間の移行段階です)

3. 仮想 A/B パーティション (VA/B)

  1. モデム パーティションは主に携帯電話 SMS の通信モジュールです。
  2. ブートローダー パーティションは主にフラッシュに使用されます。
  3. 回復パーティションは通常のブラッシングにのみ使用されます。
  4. 起動パーティション。起動に使用されます。
  5. システム パーティション、システム パーティション;
  6. データパーティション、ユーザーパーティション。
  7. キャッシュパーティション: 使用中にキャッシュされたデータを保存します
  8. ベンダー: ベンダー固有の実行可能プログラム、ライブラリ、システム サービス、アプリが含まれます。このパーティションはシステム パーティションを補足するものと考えることができ、メーカーのカスタム ROM の一部の機能をこのパーティションに配置することができます。
モデムパーティション
ブートローダーパーティション
回復パーティション
ブートパーティション
システムパーティション
データパーティション
キャッシュパーティション

双清とは、データ パーティションとキャッシュ パーティションをクリアすることを指します。

ブート パーティション: カーネルと RAM ディスクで構成されます。BootLoader プログラムを保存します。BootLoader プログラムは起動とガイドの役割を果たし、携帯電話の電源が入った後に実行される最初のプログラムです。その下位レベルのカーネル (カーネル) パーティションは、オペレーティング システム (Android OS、MIUI など) の機能の拡張、デバイスのハードウェア スケジューリング、システム プロセス、デバイス メモリなどの管理、およびオペレーティング システムの安定性の維持を担当します。 。ブート パーティションは、別の下位レベルの RAM ディスク (仮想メモリ) パーティションであり、カーネル パーティションの操作に必要ないくつかのドライバを保存します。これにより、カーネルは最初に仮想ファイル システムを通じて実行され、次に、実際のファイル システムを通じて実行されます。 RAM ディスク パーティション内のドライバー (少し大げさな、要するに実際のファイル システムの一時的な置き換え)。RAM ディスク パーティションの実際のデータは RAM に保存されることに注意してください。その後、ブート パーティションが破損すると、BootLoader プログラムが実行できなくなり、ブートの最初の画面 (Cami) でスタックします。もちろん、CPU のスケジューリングを変更したり、GPU をオーバークロックしたりする場合は、ブート パーティションのファイルも変更する必要があります。

システム パーティション: このパーティションには、Android UI やデバイスにプレインストールされている APP など、カーネルと RAM ディスクを除くオペレーティング システム全体の他の部分が含まれます。このパーティションを削除すると、Android システムがデバイスから同期的にアンインストールされるだけで、デバイスの再起動が失敗することはありません。そのため、デバイスをリカバリ モードまたはブートローダー モードにして、新しい ROM をフラッシュすることができます。単純な例を挙げると、システムに保存されているすべての MIUI14 システム ファイルをオリジン OS 3 に変更した場合 (最近では、どの UI もあえて独自の OS を呼び出しています)、オリジン OS 3 にフラッシュする手順は完了です。

リカバリ パーティション: 予備のブート パーティションに相当します。これを使用して、デバイスをリカバリ モード ウィンドウで起動して、高度なリカバリおよびメンテナンス操作を行うことができます。

データ パーティション: ユーザーデータとも呼ばれ、ユーザー データが保存される場所です。つまり、連絡先、テキスト メッセージ、設定ファイル、および独自にインストールされているアプリはすべてここに保存されます。このパーティションを削除することは、デバイスを工場出荷時設定にリセットすることと同じであり、デバイスは、初めて電源を入れたとき、または最後に公式/カスタム ROM をフラッシュしたときと同じ状態になります。デバイス上のユーザー データのクリア ボタンまたは工場出荷時設定へのリセット ボタンをクリックすると、実際にクリアされるのはこのパーティションです。

キャッシュ パーティション: 頻繁にアクセスされるデータと APP コンポーネントを Android システムに保存します。このパーティションを削除しても個人データには影響しません。デバイスの使用を続けると、このパーティション上のデータが再収集され、ここに保存されます。

misc パーティション: CID (キャリアまたはリージョン ID)、USB 構成、および一部のハードウェア構成を含む、スイッチの形式で保存されたさまざまなシステム構成が含まれます。これは重要なパーティションです。破損したりデータが失われたりすると、デバイスの一部の機能が正常に動作しなくなる可能性があります。

Androidシステムの起動

起動の概要: ローダー > カーネル > ネイティブ > フレームワーク > アプリケーション

细分:BootRom > ブートローダー > カーネル > Init > Zygote > SystemServer > ランチャー

ローダー層には主にブート ROM とブート ローダーが含まれ、
カーネル層には主に Android カーネル層が
含まれ、ネイティブ層には主に init プロセスとそのフォークされたユーザー空間デーモン プロセス、HAL 層、ブート アニメーションなどが含まれ、フレームワーク層に
は主に AMS と PMS サービスの初期化を待ちます;
アプリケーション層は主に SystemUI と Launcher の起動を指します。

ブートローダー パーティションは、プライマリ ブートローダーとセカンダリ ステージ ブートローダーと呼ばれる 2 つの部分に分かれています。プライマリ ブートローダは主にハードウェアの検出を実行し、ハードウェアが正常に動作することを確認した後、セカンダリ ステージ ブートローダがメモリ (RAM) にコピーされて実行を開始します。セカンダリ ステージのブートローダーは、ハードウェアの初期化作業を実行し、メモリ サイズ情報などを取得し、ユーザーのキーストロークに従って特定の起動モードに入ります。

fastboot モード: fastboot は Android によって定義された単純なフラッシュ プロトコルであり、ユーザーは fastboot コマンド ライン ツールを使用してフラッシュできます。たとえば、コマンド fastboot flash boot boot.img は、boot.img の内容をブート パーティションにフラッシュします。

リカバリ モード: リカバリは、Android によって定義された標準のブラッシング プロトコルです。リカバリ モードに入ると、第 2 段階のブートローダーがリカバリ パーティションから開始されます。リカバリ パーティションは実際には単純な Linux システムです。カーネルが起動すると、最初のプログラム init の実行が開始されます (init プログラムはすべてのプログラムの祖先です) Linux システムでは。)。init は、recovery と呼ばれるプログラムを開始します (リカバリ モードの名前もこれに由来しています)。回復プログラムを通じて、ユーザーはデータの消去やフラッシュ パッケージのインストールなどの操作を実行できます。

携帯電話には通常の CPU チップに加えて、MODEM プロセッサ チップも搭載されています。このチップの機能は携帯電話に必要な通信機能を実現することであり、点滅する RADIO はモデム パーティションを点滅させます。

システム OTA アップグレード プロセス

非A/Bアップグレード

  • Android システムはサーバーから OTA プッシュを受信し、OTA パッケージをキャッシュ パーティションにダウンロードします。
  • OTA パッケージのダウンロードが完了すると、次回起動時にリカバリ モードに入り、OTA パッケージを使用してアップグレードすることを示すコマンドが misc パーティションに書き込まれます。
  • 携帯電話を再起動します。
  • 再起動後、最初にブートローダーに入ります。ブートローダーは最初にキーの組み合わせ、電源レジスタなどを判断し、次にmiscパーティションの内容を読み取って分析します。手順 2 でコマンドが misc パーティションに書き込まれているため、ここのブートローダーはコマンドを読み取った後、回復システムを起動します。
  • リカバリに入り、キャッシュ パーティション内の OTA パッケージを読み取り、その中のアップグレード スクリプトを解析し、その指示に従ってシステムの各パーティションをアップグレードします。リカバリ自体もアップグレードする必要がある場合は、このプロセス中に、recovery-from-boot.p ファイルがシステムに書き込まれます。これは、リカバリのアップグレードに必要なパッチです。
  • リカバリにより、misc パーティションがクリアされます。
  • 携帯電話を再起動します。
  • 再起動後、最初にブートローダーに入り、キーの組み合わせ、電源レジスタ、その他のパーティションの内容などを判断すると、OTA アップグレード後のシステムの新しいバージョンである Android システムがデフォルトで起動します。
  • 新しいバージョンの Android システムが起動すると、recovery-from-boot.p ファイルが存在するかどうかがチェックされ、存在する場合はリカバリがアップグレードされます。

A/Bアップグレード

Android O以降、GoogleはA/Bパーティションと呼ばれる新しいパーティション構造を導入し、これに対応して従来のパーティション構造は非A/Bパーティションと呼ばれます。

A/B パーティション構造は、名前が示すように、システム パーティションを 2 つのスロット (スロット) A と B に分割します。電話機は起動時にスロット A またはスロット B を選択して開始し、そのパーティションのみを使用します。動作中の現在のスロット。現在実行中のスロットに問題が発生した場合でも、システムは別のスロットを選択して開始できるため、システムの良好な可用性が確保されます。

A/Bパーティション構造を採用し、シームレスなアップグレードを実現します。たとえば、ユーザーがスロット A を実行していて、この時点で OTA プッシュを受信した場合、システムはバックグラウンドで OTA データをダウンロードし、同時にスロット B をアップグレードします。B スロット システムのアップグレードが完了すると、再起動プロンプトが表示され、電話機を再起動すると、B スロット システムの新しいバージョンに自動的に切り替わります。このプロセス中、ユーザーには再起動操作のみが認識され、この再起動にかかる時間は通常の再起動と変わりません。

OTA が失敗した場合は、アップグレードするスロットに問題があるだけであり、OTA を再試行できます。ユーザーが現在実行しているシステムには影響しません。

A/B パーティション構造では、サーバーから OTA データを取得し、アップグレードするスロットに直接書き込むことができるため、OTA パッケージのスペースを一時的に保存する必要がなく、キャッシュに十分なスペースを確保する必要がなくなりました。またはユーザーデータパーティション。

おすすめ

転載: blog.csdn.net/Jason_Lee155/article/details/131701975