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 rendah, 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 me-mountsystem.img
sebagai/system
, kemudian melakukan operasi root switch untuk memindahkan mount di/system
ke/
. Isi ramdisk dibebaskan setelah pemasangan selesai.Untuk perangkat yang menggunakan pemulihan sebagai ramdisk, init tahap pertama terletak di
/init
di dalam ramdisk pemulihan. Perangkat ini pertama-tama mengalihkan root ke/first_stage_ramdisk
untuk menghapus komponen pemulihan dari lingkungan, kemudian melanjutkan dengan cara yang sama seperti perangkat dengan boot-ramdisk (yaitu, mountsystem.img
sebagai/system
, alihkan root untuk memindahkan mount tersebut ke/
, dan isi ramdisk gratis setelah pemasangan). Jikaandroidboot.force_normal_boot=1
ada di baris perintah kernel (atau bootconfig dari Android 12 dan seterusnya), perangkat melakukan booting secara normal (ke Android) alih-alih boot ke mode pemulihan.
Setelah init tahap pertama selesai, ia mengeksekusi /system/bin/init
dengan argumen selinux_setup
untuk mengkompilasi dan memuat SELinux ke sistem. Terakhir, init mengeksekusi /system/bin/init
lagi dengan argumen second_stage
. Pada titik ini, fase utama init berjalan dan melanjutkan proses boot menggunakan skrip init.rc
Bagian berikut merinci perbedaan dalam tata letak partisi untuk perangkat non-A/B sebelum dan sesudah Android 10.
Tata letak partisi (perangkat non-A/B)
Bagian berikut merinci perbedaan dalam tata letak partisi untuk perangkat non-A/B sebelum dan sesudah Android 10.
boot.img
Ramdisk (Android 8.x dan lebih rendah) | 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) ... | Berisi kernel boot normal saja. | Berisi kernel dan ramdisk.img -/ - init - vendor fstab files - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
pemulihan.img
Berisi kernel pemulihan dan ramdisk.img
pemulihan
sistem.img
Ramdisk (Android 8.x dan lebih rendah) | Sistem sebagai root (Android 9) | Ramdisk (Android 10 dan 11) |
---|---|---|
Berisi system.img -/ - bin/ - etc - vendor -> /vendor - ... | Berisi konten gabungan dari system.img -/ - init.rc - init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... | Berisi konten gabungan dari 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 merinci perbedaan dalam tata letak partisi untuk perangkat A/B sebelum dan sesudah Android 10.
boot.img
Sistem sebagai root (Android 9) | Ramdisk (Android 10 dan 11) |
---|---|
Berisi kernel boot normal dan recovery-ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk hanya digunakan untuk boot ke recovery. | Berisi kernel boot normal dan recovery-ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true ).Recovery-ramdisk digunakan untuk boot ke recovery 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) ... |
sistem.img
Berisi konten gabungan dari $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)
...