不带电池的Android设备,设置系统选项以后,断电开机,关机前设置的状态不会保存,又变成了设置前的状态。如果不断电关机,而是软重启,则重启前设置的状态是可以保存的。
跟踪状态值保存的文件,data/system/users/0目录下的文件settings_global.xml,settings_secure.xml,settings_system.xml这些文件里面的值都是有更改到的。但是断电后,值又没保存到。说明这些文件没有真正同步到emmc中。断电关机前,在adb下执行sync命令,关机前设置的状态是可以保存下来的。
查看了当前data分区的格式为f2fs,这种格式的文件系统写入后不会立马同步,这可能是导致断电设置状态不保存的原因。于是修改fstab.xxx文件中data分区格式为ext4。测试断电重启,状态可以保存了。
vendor /vendor erofs ro wait,first_stage_mount,logical,slotselect
vendor_dlkm /vendor_dlkm erofs ro wait,first_stage_mount,logical,slotselect
product /product erofs ro wait,first_stage_mount,logical,slotselect
-/dev/block/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=128000,resuid=0,resgid=1065 wait,check,formattable,quota,reservedsize=128M,latemount,checkpoint=fs,fileencryption=aes-256-xts:aes-256-cts,keydirectory=/metadata/vold/metadata_encryption
+#/dev/block/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=128000,resuid=0,resgid=1065 wait,check,formattable,quota,reservedsize=128M,latemount,checkpoint=fs,fileencryption=aes-256-xts:aes-256-cts,keydirectory=/metadata/vold/metadata_encryption
+/dev/block/by-name/userdata /data ext4 noatime,nosuid,nodev,discard,grpquota,barrier=1,data=ordered,nomblk_io_submit,noauto_da_alloc,errors=panic wait,check,formattable,quota
/dev/block/by-name/metadata /metadata ext4 nodev,noatime,nosuid,errors=panic wait,first_stage_mount,formattable,check
/dev/block/by-name/treadahead /treadahead ext4 nodev,noatime,nosuid,errors=panic wait,first_stage_mount,formattable,check
/dev/block/by-name/media_data /oem vfat ro,nodev,noatime,nosuid,context=u:object_r:oemfs:s0 wait,first_stage_mount,formattable,check