2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
起動時間の管理
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
起動プロセスは、ブート ROM から始まり、ブートローダー、カーネル、init、Zygote、システム サーバーと続く一連のアクションです(太字は Android 固有の起動プロセスを示します)。自動車固有の起動プロセスでは、カーネルの起動中にリアビュー カメラ(RVC)などの初期サービスを開始する必要があります。
順序 |
コンポーネント |
Android |
Android Automotive |
1 |
ブート ROM |
ブートローダーの最初のステージを内部 RAM に読み込みます。 |
2 |
ブートローダー |
メモリを初期化してセキュリティを検証し、カーネルを読み込みます。 |
3 |
カーネル |
割り込みコントローラ、メモリ保護、キャッシュ、スケジューリングをセットアップし、ユーザー空間プロセスを起動します。 |
リアビュー カメラ(RVC)プロセスが、カーネル起動の早い段階で開始されます。プロセスの起動が終わると、VMCU の GPIO によって RVC がトリガーされ、ディスプレイに表示されます。 |
4 |
init プロセス |
init.rc スクリプトの解析、ファイル システムのマウント、Zygote の起動、システム プロセスの起動を行います。 |
車両 HAL(VHAL)は、init フェーズ中にコアサービスの一部として開始されます。ServiceManager によっては、以前の状態に移行できます。その場合は共有ライブラリ(init など)への依存関係を削除する必要があります。 |
5 |
Zygote |
Android オブジェクトの Java ランタイムと init メモリを設定します。 |
6 |
システム サーバー |
システムの最初の Java コンポーネントで、主要な Android サービスを開始します。 |
CarService は、すべてのシステム サービスが開始された後に開始されます。 |
起動時間の最適化
システムの起動時間を改善するには、次のガイドラインに従います。
-
カーネル: 使用中のモジュールのみを読み込み、使用中のハードウェア コンポーネントのみを初期化します。
-
init.rc
- ブロック操作に注意します(コマンド呼び出しと比較したサービス)。
- 使用するものだけを開始します。
- サービスに適切な優先度を設定します。
-
Zygote: クラスのプリロードの最適化(読み込むクラスのリストを指定します)。
-
パッケージ マネージャー
-
システム サーバー: 使用しているシステム サービスのみを開始します。
最適化を支援するために、Google は次のツールを提供しています。
-
packages/services/Car/tools/bootanalyze/bootanalyze.py
を使用して、logcat ログと dmesg ログを分析します。
-
packages/services/Car/tools/bootio/
を使用して、起動中のプロセスの I/O を記録します。特定のフラグを指定してカーネルをコンパイルする必要があります(README.md
ファイルを参照)。
サービスの早期開始
起動シーケンスでは、Android が起動を開始する前に一部のサービスが開始されることがあります。
リアビュー カメラ
リアビュー カメラ(RVC)はカーネルで処理する必要があります。車両がリバースにシフトすると、VMCU はネイティブ カーネル プロセスに通知します。その後、ネイティブ カーネル プロセスは RVC イメージをディスプレイに表示します。車両 HAL は、hardware/libhardware/include/hardware/vehicle_camera.h
を使用して RVC を制御できます。
車両 HAL(VHAL)
一部のシステムでは、ユーザー空間サービスの開始(起動シーケンスの後半で発生)を待機している間、起動シーケンスの初期段階で CAN データ(車速、ギアステータスなど)を読み取ってバッファする必要があります。このシナリオでは、VNS、HAL、および CAN コントローラを非常に早く(通常は数秒以内に)起動する必要があります。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# Manage boot time\n\nThe boot process is a chain of actions starting from the boot ROM, followed by the bootloader,\nkernel, **Init** , **Zygote** , and **system server** (bold\nindicates Android-specific boot process). In the automotive-specific boot process, early services\nsuch as rearview camera (RVC) must start during the kernel boot.\n\n| Order | Component | Android | Android Automotive |\n|-------|---------------|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 1 | Boot ROM | Loads the first stage of the boot loader into internal RAM. ||\n| 2 | Bootloader | Inits memories, verifies for security, and loads kernel. ||\n| 3 | Kernel | Sets up interrupt controllers, memory protection, caches, and scheduling; launches user space processes. | **Rearview camera (RVC)** process starts early in kernel boot. After the process is up, GPIO from VMCU triggers RVC to show on display. |\n| 4 | Init process | Parses `init.rc` scripts, mounts file systems, launches Zygote, launches system process. | **Vehicle HAL (VHAL)** starts during init phase as part of core services. Can be moved to earlier states depending on ServiceManager; requires removing dependencies on shared libraries (such as init). |\n| 5 | Zygote | Sets up Java Runtime and init memory for Android objects. ||\n| 6 | System server | First Java component in the system, starts core Android services. | **CarService** starts after all system services are started. |\n\nOptimize boot time\n------------------\n\nTo improve boot time in your system, use the following guidelines:\n\n- **Kernel.** Load only the modules in use and initialize only the hardware\n components in use.\n\n- `init.rc`\n\n - Watch for blocking operations (service compared to command invocation).\n - Start only what is used.\n - Setting correct priority for services.\n- **Zygote.** Class preloading optimization (specify the list of classes to\n load).\n\n- **Package Manager**\n\n - Optimize product image to include only APKs in use.\n\n - [Enable DEX\n preoptimization](/docs/core/runtime/configure#compilation_options).\n\n- **System server.** Start only the system services that are used.\n\nFor help with optimization, Google provides the following tools:\n\n- Use `packages/services/Car/tools/bootanalyze/bootanalyze.py` to analyze logcat and\n dmesg logs.\n\n- Use `packages/services/Car/tools/bootio/` to record I/O for processes during the\n boot. You must compile the kernel with specific flags (refer to the `README.md`\n file).\n\nStart services early\n--------------------\n\nIn the boot sequence, some services might start before Android starts to boot.\n\n### Rearview camera\n\nThe rearview camera (RVC) should be handled in the kernel. The VMCU notifies the native kernel\nprocess when the vehicle shifts into Reverse, after which the native kernel process displays the\nRVC image onto the display. The vehicle HAL can control the RVC using\n`hardware/libhardware/include/hardware/vehicle_camera.h`.\n\n### Vehicle HAL (VHAL)\n\nSome systems might need to read and buffer CAN data (for example, vehicle speed, gear status)\nduring the early stages of the boot sequence while waiting for the user-space service to start\n(which occurs later in the boot sequence). This scenario requires VNS and the HAL and CAN\ncontrollers to start very early, typically within a few seconds.\n\n- Systems that can quickly mount `/system` can simply launch service manager then\n VNS early.\n\n- System that can't quickly mount `/system` must move both service manager and VNS\n to the kernel boot image and link all dependent libraries statically."]]