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

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 .

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 .

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

Berisi konten gabungan dari $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 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)
    ...
    

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