Di Android 10 dan 11,
ramdisk tahap pertama
berisi biner init tahap pertama (yang melakukan pemasangan awal seperti yang ditentukan
oleh entri fstab) dan file fstab vendor. (Seperti di Android 9 dan yang lebih lama,
system.img berisi konten $TARGET_ROOT_OUT.)
Untuk perangkat dengan boot-ramdisk (non-A/B), init tahap pertama adalah executable statis yang terletak di
/init. Perangkat ini memasangsystem.imgsebagai/system, lalu melakukan operasi mengganti root untuk memindahkan pemasangan di/systemke/. Isi ramdisk akan dibebaskan setelah pemasangan selesai.Untuk perangkat yang menggunakan pemulihan sebagai ramdisk, init tahap pertama terletak di
/initdalam ramdisk pemulihan. Perangkat ini pertama-tama mengalihkan root ke/first_stage_ramdiskuntuk menghapus komponen pemulihan dari lingkungan, lalu melanjutkan seperti perangkat dengan boot-ramdisk (yaitu, memasangsystem.imgsebagai/system, mengalihkan root untuk memindahkan pemasangan tersebut ke/, dan mengosongkan konten ramdisk setelah pemasangan). Jikaandroidboot.force_normal_boot=1ada di command line kernel (atau bootconfig dari Android 12 dan seterusnya), perangkat akan melakukan booting secara normal (ke Android), bukan melakukan booting ke mode pemulihan.
Setelah inisialisasi tahap pertama selesai, /system/bin/init akan dieksekusi dengan argumen selinux_setup untuk mengompilasi dan memuat SELinux ke sistem. Terakhir,
init menjalankan /system/bin/init lagi dengan argumen second_stage. Pada
tahap ini, fase utama init berjalan dan melanjutkan proses booting menggunakan skrip
init.rc.
Bagian berikut menjelaskan perbedaan tata letak partisi untuk perangkat non-A/B sebelum dan setelah Android 10.
Tata letak partisi (perangkat non-A/B)
Bagian berikut menjelaskan perbedaan tata letak partisi untuk perangkat non-A/B sebelum dan setelah Android 10.
boot.img
| Ramdisk (Android 8.x dan yang lebih lama) |
Sistem sebagai root (Android 9) |
Ramdisk (Android 10 dan 11) |
|---|---|---|
Berisi kernel dan
ramdisk.img
-/
- init.rc
- init
- etc -> /system/etc
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
|
Hanya berisi kernel booting normal. | Berisi kernel dan
ramdisk.img
-/
- init
- vendor fstab files
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
|
recovery.img
Berisi kernel pemulihan dan ramdisk.img pemulihan
system.img
| Ramdisk (Android 8.x dan yang lebih lama) |
Sistem sebagai root (Android 9) |
Ramdisk (Android 10 dan 11) |
|---|---|---|
Berisi
system.img
-/
- bin/
- etc
- vendor -> /vendor
- ...
|
Berisi konten gabungan
system.img
-/
- init.rc
- init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
|
Berisi konten gabungan
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...
|
Tata letak partisi (perangkat A/B)
Bagian berikut menjelaskan perbedaan tata letak partisi untuk perangkat A/B sebelum dan setelah Android 10.
boot.img
| Sistem sebagai root (Android 9) |
Ramdisk (Android 10 dan 11) |
|---|---|
Berisi kernel booting normal dan recovery-ramdisk
(BOARD_USES_RECOVERY_AS_BOOT := true).Recovery-ramdisk hanya digunakan untuk melakukan booting ke pemulihan. |
Berisi kernel booting normal dan recovery-ramdisk
(BOARD_USES_RECOVERY_AS_BOOT := true). Recovery-ramdisk digunakan untuk melakukan booting ke pemulihan dan Android.
ramdisk.img
-/
- init -> /system/bin/init
- first_stage_ramdisk
- vendor fstab files
- etc -> /system/etc
- system/ (mount point)
- vendor/ (mount point)
- odm/ (mount point)
...
|
system.img
Berisi konten gabungan $TARGET_SYSTEM_OUT dan $TARGET_ROOT_OUT.
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...