【发布时间】:2020-10-12 05:40:38
【问题描述】:
我一直在尝试将 Android 8 OTA 更新应用到运行 Android 6 的设备,并且在 OTA 更新期间,我还尝试设置 SELinux 安全上下文。我的 Android 6 版本没有任何 SELinux 政策。
如果我将 Android 8 完整更新 (USB) 应用到设备,则 SELinux 政策设置正确。 如果我通过 A6 应用 Android 8 移民更新 (USB),则 SELinux 政策设置正确。
如果我在 A6 上应用 Android 8 OTA,我会收到以下错误。
这里是“恢复”日志的原始错误输出。
:::
Extracted file "/system/vendor/lib/lib_H263_dec_v2_arm11_elinux.so"
Extracted 1678 file(s)
created [/system/priv-app/DefaultContainerService/lib]
created [/system/priv-app/DefaultContainerService/lib/arm]
created [/system/app/LatinIME/lib]
created [/system/app/LatinIME/lib/arm]
ApplyParsedPerms: lsetfilecon of /system/lost+found to u:object_r:system_file:s0 failed: Operation not supported on transport endpoint
ApplyParsedPerms: lsetfilecon of /system/lost+found to u:object_r:system_file:s0 failed: Operation not supported on transport endpointscript aborted: set_metadata_recursive: some changes failed
set_metadata_recursive: some changes failedE:unknown command [log]
E:unknown command [log]
E:Error in /ota/update.zip
(Status 7)
Installation aborted.
I:Saving locale "en_US"
Rebooting...
/ # SysRq : Emergency Remount R/O
reboot: Restarting system
我目前的理解是 USB 更新使用随包提供的恢复映像。但是对于 OTA 更新,使用的是 Android 6“恢复”,因此会发生上述情况。如果我在这里错了,请纠正我。
所以,我对上述错误有几个问题:
- 为什么 lsetfileconfig 会失败? (此处的文档:https://man7.org/linux/man-pages/man3/lsetfilecon.3.html)
- Android 6 中的 updater-script 镜像 Android 8。Android 8 在 ApplyParsedPerms 中也使用 lsetfileconfig,除此之外我还缺少什么“恢复”图像不同?
- 我可以挽救这种情况,还是必须在 OTA 更新开始时将 Android 6“恢复”替换为 Android 8?
【问题讨论】: