【问题标题】:lsetfilecon failed: Operation not supported on transport endpointlsetfilecon 失败:传输端点不支持操作
【发布时间】: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?

【问题讨论】:

    标签: android c++ c recovery


    【解决方案1】:

    为了完整起见,我将回答我自己的问题。

    我并没有远远解决这个问题,但从我可以整合的内容来看,Android OTA 更新依赖于设备本身的“恢复”映像。在我的情况下,恢复映像来自 Android 6,我试图在其上应用 Android 8 更新。这导致在使用 SELinux 标签更新 /system 分区时出现一些不兼容问题(我仍然无法解释)。

    我想出的解决方法是使用两步更新过程。这不是一个最初的想法,并且代码已经可以从谷歌获得(我为了我们的目的而修改了它)。但是使用两步 OTA,我先更新了 /boot/recovery 分区,然后重新启动恢复。 OTA 重新开始,但这次它现在使用的是 Android 8 恢复映像,并通过更新 /system 分区来完成。该设备现已成功升级到 Android 8。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2023-03-05
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 2015-11-27
      相关资源
      最近更新 更多