dexopt_chroot_setup is a component of ART Service. It sets up the chroot environment for Pre-reboot Dexopt, to dexopt apps on a best-effort basis before the reboot after a Mainline update or an OTA update is downloaded, to support seamless updates.
It requires elevated permissions that are not available to system_server, such as mounting filesystems. It publishes a binder interface that is internal to ART Service's Java code.
/mnt/pre_reboot_dexopt |-- chroot | |-- system_ext | |-- vendor | |-- product | |-- data | |-- mnt | | |-- expand | | `-- artd_tmp | |-- dev | |-- proc | |-- sys | |-- metadata | |-- apex | `-- linkerconfig `-- mount_tmp
/mnt/pre_reboot_dexopt
The root directory for Pre-reboot Dexopt, prepared by init
.
/mnt/pre_reboot_dexopt/chroot
The root directory of the chroot environment for Pre-reboot Dexopt. It is the mount point of the system
image. Created by dexopt_chroot_setup
, and only exists for the duration of the Pre-reboot Dexopt.
/mnt/pre_reboot_dexopt/chroot/{system_ext,vendor,product}
Mount points of other readonly images.
/mnt/pre_reboot_dexopt/chroot/{data,mnt/expand,dev,proc,sys,metadata}
Same as the corresponding directories outside of chroot. These are read-write mounts.
/mnt/pre_reboot_dexopt/chroot/mnt/artd_tmp
An empty directory for storing temporary files during Pre-reboot Dexopt, managed by artd
.
/mnt/pre_reboot_dexopt/chroot/apex
For holding the apex mount points used in the chroot environment, managed by apexd
. Note that this is not the same as /apex
outside of chroot.
/mnt/pre_reboot_dexopt/chroot/linkerconfig
For holding the linker config used in the chroot environment, managed by linkerconfig
. Note that this is not the same as /linkerconfig
outside of chroot.
/mnt/pre_reboot_dexopt/mount_tmp
An ephemeral directory used as a temporary mount point for bind-mounting directories “slave+shared”.