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 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 memasang system.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, memasang system.img sebagai /system, alihkan root untuk memindahkan dudukan tersebut ke /, dan agar bebas isi ramdisk setelah pemasangan). Jika androidboot.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.

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 lama)
Sistem sebagai root
(Android 9)
Ramdisk
(Android 10 dan 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 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)
    ...