xref: /aosp_15_r20/system/core/bootstat/bootstat.rc (revision 00c7fec1bb09f3284aad6a6f96d2f63dfc3650ad)
1*00c7fec1SAndroid Build Coastguard Worker# This file is the LOCAL_INIT_RC file for the bootstat command.
2*00c7fec1SAndroid Build Coastguard Worker
3*00c7fec1SAndroid Build Coastguard Worker# Mirror bootloader boot reason to system boot reason
4*00c7fec1SAndroid Build Coastguard Worker# ro.boot.bootreason should be set by init already
5*00c7fec1SAndroid Build Coastguard Worker# before post-fs trigger
6*00c7fec1SAndroid Build Coastguard Workeron post-fs && property:ro.boot.bootreason=*
7*00c7fec1SAndroid Build Coastguard Worker    setprop sys.boot.reason ${ro.boot.bootreason}
8*00c7fec1SAndroid Build Coastguard Worker
9*00c7fec1SAndroid Build Coastguard Workeron post-fs-data
10*00c7fec1SAndroid Build Coastguard Worker    mkdir /data/misc/bootstat 0700 system log
11*00c7fec1SAndroid Build Coastguard Worker    # To deal with ota transition resulting from a change in DAC from
12*00c7fec1SAndroid Build Coastguard Worker    # root.root to system.log, may be deleted after ota has settled.
13*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/absolute_boot_time
14*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boot_complete
15*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boot_complete_no_encryption
16*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boot_reason
17*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.1BLE
18*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.1BLL
19*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.2BLE
20*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.2BLL
21*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.AVB
22*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.KD
23*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.KL
24*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.ODT
25*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.SW
26*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/boottime.bootloader.total
27*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/build_date
28*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/factory_reset
29*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/factory_reset_boot_complete
30*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/factory_reset_boot_complete_no_encryption
31*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/factory_reset_current_time
32*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/factory_reset_record_value
33*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/last_boot_time_utc
34*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/ota_boot_complete
35*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/ota_boot_complete_no_encryption
36*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/ro.boottime.init
37*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/ro.boottime.init.cold_boot_wait
38*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/ro.boottime.init.selinux
39*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/time_since_factory_reset
40*00c7fec1SAndroid Build Coastguard Worker    chown system log /data/misc/bootstat/time_since_last_boot
41*00c7fec1SAndroid Build Coastguard Worker    # end ota transitional support
42*00c7fec1SAndroid Build Coastguard Worker
43*00c7fec1SAndroid Build Coastguard Worker# Initialize bootstat state machine.
44*00c7fec1SAndroid Build Coastguard Worker#
45*00c7fec1SAndroid Build Coastguard Worker# sys.bootstat.first_boot_completed: responsible for making sure that record_boot_complete happens
46*00c7fec1SAndroid Build Coastguard Worker# only once per device hard reboot. Possible values:
47*00c7fec1SAndroid Build Coastguard Worker#
48*00c7fec1SAndroid Build Coastguard Worker#   sys.bootstat.first_boot_completed=0 - first boot completed trigger wasn't processed yet.
49*00c7fec1SAndroid Build Coastguard Worker#   sys.bootstat.first_boot_completed=1 - first boot completed trigger was processed and
50*00c7fec1SAndroid Build Coastguard Worker#                                         record_boot_complete was called. Subsequent boot completed
51*00c7fec1SAndroid Build Coastguard Worker#                                         triggers (e.g. due to userspace reboot) won't retrigger
52*00c7fec1SAndroid Build Coastguard Worker#                                         record_boot_complete
53*00c7fec1SAndroid Build Coastguard Worker#
54*00c7fec1SAndroid Build Coastguard Worker# IMPORTANT, ro.persistent_properties.ready=1 trigger is used here to ensure that we initialize
55*00c7fec1SAndroid Build Coastguard Worker# state machine only once, which as result ensures that bootstat --set_system_boot_reason and
56*00c7fec1SAndroid Build Coastguard Worker# bootstat --record_boot_complete will be called only once per full reboot.
57*00c7fec1SAndroid Build Coastguard Workeron property:ro.persistent_properties.ready=true
58*00c7fec1SAndroid Build Coastguard Worker  setprop sys.bootstat.first_boot_completed 0
59*00c7fec1SAndroid Build Coastguard Worker
60*00c7fec1SAndroid Build Coastguard Worker# Set boot reason
61*00c7fec1SAndroid Build Coastguard Workeron property:ro.persistent_properties.ready=true
62*00c7fec1SAndroid Build Coastguard Worker    # Converts bootloader boot reason and persist.sys.boot.reason to system boot reason
63*00c7fec1SAndroid Build Coastguard Worker    # Need go after persist peroperties are loaded which is right before zygote-start trigger
64*00c7fec1SAndroid Build Coastguard Worker    exec_background - system log -- /system/bin/bootstat --set_system_boot_reason
65*00c7fec1SAndroid Build Coastguard Worker
66*00c7fec1SAndroid Build Coastguard Worker# Record boot complete metrics.
67*00c7fec1SAndroid Build Coastguard Workeron property:sys.boot_completed=1 && property:sys.bootstat.first_boot_completed=0
68*00c7fec1SAndroid Build Coastguard Worker    # Record boot_complete and related stats (decryption, etc).
69*00c7fec1SAndroid Build Coastguard Worker    # Record the boot reason.
70*00c7fec1SAndroid Build Coastguard Worker    # Record time since factory reset.
71*00c7fec1SAndroid Build Coastguard Worker    # Log all boot events.
72*00c7fec1SAndroid Build Coastguard Worker    exec_background - system log -- /system/bin/bootstat --record_boot_complete --record_boot_reason --record_time_since_factory_reset -l
73*00c7fec1SAndroid Build Coastguard Worker    setprop sys.bootstat.first_boot_completed 1
74