Partisi ramdisk

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 memasang system.img sebagai /system, lalu melakukan operasi root switch untuk memindahkan pemasangan di /system ke /. Konten ramdisk akan dilepaskan setelah pemasangan selesai.

  • Untuk perangkat yang menggunakan pemulihan sebagai ramdisk, init tahap pertama terletak di /init dalam ramdisk pemulihan. Perangkat ini pertama-tama melakukan root switch ke /first_stage_ramdisk untuk menghapus komponen pemulihan dari lingkungan, lalu melanjutkan seperti perangkat dengan boot-ramdisk (yaitu, memasang system.img sebagai /system, melakukan root switch untuk memindahkan pemasangan tersebut ke /, dan melepaskan konten ramdisk setelah pemasangan). Jika androidboot.force_normal_boot=1 ada di command line kernel (atau bootconfig dari Android 12 dan yang lebih tinggi), perangkat akan melakukan booting secara normal (ke Android), bukan melakukan booting ke mode pemulihan.

Setelah init tahap pertama selesai, init akan menjalankan /system/bin/init dengan argumen selinux_setup untuk mengompilasi dan memuat SELinux ke sistem. Terakhir, init akan 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 sesudah Android 10.

Tata letak partisi (perangkat non-A/B)

Bagian berikut menjelaskan perbedaan tata letak partisi untuk perangkat non-A/B sebelum dan sesudah Android 10.

boot.img

Ramdisk
(Android 8.x dan yang lebih rendah)
Sistem sebagai root
(Android 9)
Ramdisk
(Android 10 and 11)

Berisi kernel dan ramdisk.img.

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.

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 rendah)
Sistem sebagai root
(Android 9)
Ramdisk
(Android 10 and 11)

Berisi system.img.

system.img
  -/
    - bin/
    - etc
    - vendor -> /vendor
    - ...
   

Berisi konten gabungan $TARGET_SYSTEM_OUT dan $TARGET_ROOT_OUT.

system.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/
      - bin/
      - etc/
      - vendor -> /vendor
      - ...
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

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)
    ...
    

Tata letak partisi (perangkat A/B)

Bagian berikut menjelaskan perbedaan tata letak partisi untuk perangkat A/B sebelum dan sesudah Android 10.

boot.img

Sistem sebagai root
(Android 9)
Ramdisk
(Android 10 and 11)
Berisi kernel boot normal dan recovery-ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true).

Recovery-ramdisk hanya digunakan untuk melakukan booting ke pemulihan.
Berisi kernel boot 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)
    ...