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 pada 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 yang dapat dieksekusi yang berada di
/init
. Perangkat ini memasangsystem.img
sebagai/system
, lalu lakukan operasi root switch untuk memindahkan penyangga pada/system
ke/
. Isi ramdisk akan dikosongkan setelah pemasangan selesai.Untuk perangkat yang menggunakan pemulihan sebagai {i>ramdisk<i}, init tahap pertama terletak di
/init
dalam ramdisk pemulihan. Perangkat ini terlebih dahulu mengalihkan {i>root<i} ke/first_stage_ramdisk
untuk menghapus komponen pemulihan dari lingkungan, kemudian lanjutkan dengan cara yang sama seperti perangkat dengan {i>boot-ramdisk<i} (yaitu, memasangsystem.img
sebagai/system
, alihkan root untuk memindahkan dudukan tersebut ke/
, dan agar bebas isi ramdisk setelah pemasangan). Jikaandroidboot.force_normal_boot=1
adalah ada di command line kernel (atau bootconfig dari Android 12 dan seterusnya), perangkat melakukan booting secara normal (ke Android) alih-alih {i>booting<i} ke mode pemulihan.
Setelah init tahap pertama selesai, instance akan dieksekusi dengan /system/bin/init
selinux_setup
untuk mengompilasi dan memuat SELinux ke sistem. Terakhir,
init mengeksekusi /system/bin/init
lagi dengan argumen second_stage
. Di
fase utama dari init berjalan dan melanjutkan proses {i>booting<i} menggunakan
Skrip init.rc
.
Bagian berikut menjelaskan perbedaan dalam tata letak partisi untuk non-A/B perangkat sebelum dan setelah Android 10.
Tata letak partisi (perangkat non-A/B)
Bagian berikut menjelaskan perbedaan dalam tata letak partisi untuk non-A/B perangkat 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 boot 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 dalam 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 boot kernel normal dan ramdisk pemulihan
(BOARD_USES_RECOVERY_AS_BOOT := true ).RAMdisk pemulihan hanya digunakan untuk {i>booting<i} ke pemulihan. |
Berisi boot kernel normal dan ramdisk pemulihan
(BOARD_USES_RECOVERY_AS_BOOT := true ). RAMdisk pemulihan digunakan untuk mem-{i>booting<i} 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)
...