summaryrefslogtreecommitdiff
path: root/dexopt_chroot_setup/README.md
blob: b94cde230772877971830ca58b2f81b12579fa13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
## dexopt_chroot_setup

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.

### Pre-reboot Dexopt file structure

#### Overview

```
/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".