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.imgsebagai/system, kemudian melakukan operasi root switch untuk memindahkan mount di/systemke/. Isi ramdisk dibebaskan setelah pemasangan selesai.Untuk perangkat yang menggunakan pemulihan sebagai ramdisk, init tahap pertama terletak di
/initdi dalam ramdisk pemulihan. Perangkat ini pertama-tama mengalihkan root ke/first_stage_ramdiskuntuk menghapus komponen pemulihan dari lingkungan, kemudian melanjutkan dengan cara yang sama seperti perangkat dengan boot-ramdisk (yaitu, mountsystem.imgsebagai/system, alihkan root untuk memindahkan mount tersebut ke/, dan isi ramdisk gratis setelah pemasangan). Jikaandroidboot.force_normal_boot=1ada 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)
...