Proses booting adalah rantai tindakan yang dimulai dari ROM booting, diikuti dengan bootloader, kernel, Init, Zygote, dan server sistem (cetak tebal menunjukkan proses booting khusus Android). Dalam proses booting khusus otomotif, layanan awal seperti kamera belakang (RVC) harus dimulai selama booting kernel.
Pesanan | Komponen | Android | Android Automotive |
---|---|---|---|
1 | ROM Booting | Memuat tahap pertama bootloader ke RAM internal. | |
2 | Bootloader | Melakukan inisialisasi memori, memverifikasi keamanan, dan memuat kernel. | |
3 | Kernel | Menyiapkan pengontrol interupsi, perlindungan memori, cache, dan penjadwalan; meluncurkan proses ruang pengguna. | Proses kamera belakang (RVC) dimulai lebih awal saat booting kernel. Setelah prosesnya selesai, GPIO dari VMCU memicu RVC untuk ditampilkan di layar. |
4 | Proses init | Mengurai skrip init.rc , memasang sistem file, meluncurkan Zygote, meluncurkan
proses sistem. |
Vehicle HAL (VHAL) dimulai selama fase inisialisasi sebagai bagian dari layanan inti. Dapat dipindahkan ke status sebelumnya bergantung pada ServiceManager; memerlukan penghapusan dependensi pada library bersama (seperti init). |
5 | Zigot | Menyiapkan Java Runtime dan memori init untuk objek Android. | |
6 | Server sistem | Komponen Java pertama dalam sistem, memulai layanan Android inti. | CarService dimulai setelah semua layanan sistem dimulai. |
Mengoptimalkan waktu booting
Untuk meningkatkan waktu booting di sistem Anda, gunakan panduan berikut:
-
Kernel. Hanya muat modul yang digunakan dan hanya lakukan inisialisasi komponen hardware yang digunakan.
-
init.rc
- Perhatikan operasi pemblokiran (layanan dibandingkan dengan pemanggilan perintah).
- Mulai hanya yang digunakan.
- Menetapkan prioritas yang benar untuk layanan.
-
Zigot. Pengoptimalan pramuat class (tentukan daftar class yang akan dimuat).
-
Pengelola Paket
-
Optimalkan gambar produk agar hanya menyertakan APK yang digunakan.
-
-
Server sistem. Mulai hanya layanan sistem yang digunakan.
Untuk membantu pengoptimalan, Google menyediakan alat berikut:
-
Gunakan
packages/services/Car/tools/bootanalyze/bootanalyze.py
untuk menganalisis log logcat dan dmesg. -
Gunakan
packages/services/Car/tools/bootio/
untuk merekam I/O untuk proses selama boot. Anda harus mengompilasi kernel dengan flag tertentu (lihat fileREADME.md
).
Memulai layanan lebih awal
Dalam urutan booting, beberapa layanan mungkin dimulai sebelum Android mulai melakukan booting.
Kamera belakang
Kamera belakang (RVC) harus ditangani di kernel. VMCU memberi tahu proses kernel native
saat kendaraan beralih ke Mundur, setelah itu proses kernel native menampilkan
gambar RVC ke layar. HAL kendaraan dapat mengontrol RVC menggunakan
hardware/libhardware/include/hardware/vehicle_camera.h
.
HAL Kendaraan (VHAL)
Beberapa sistem mungkin perlu membaca dan menyimpan data CAN (misalnya, kecepatan kendaraan, status gigi) selama tahap awal urutan booting sambil menunggu layanan ruang pengguna dimulai (yang terjadi nanti dalam urutan booting). Skenario ini mengharuskan VNS dan pengontrol HAL serta CAN dimulai sangat awal, biasanya dalam beberapa detik.
-
Sistem yang dapat memasang
/system
dengan cepat dapat meluncurkan pengelola layanan, lalu VNS lebih awal. -
Sistem yang tidak dapat memasang
/system
dengan cepat harus memindahkan pengelola layanan dan VNS ke boot image kernel dan menautkan semua library dependen secara statis.