[ 好久没来,最近要换工作,准备把这几年的遇到的问题过滤一遍,从这个开始。]
以下的问题是在 RK_4.2-SDK 环境下发现的,其它版本也有可能出现。
在 recovery 执行完 clear misc 之后,执行 sync 之前掉电,会造成系统不能正常运行。
以下是以OTA包中的 updater-script 尾部的一段:
......
set_perm_recursive(0, 0, 0755, 0644, "/system");
set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
set_perm(0, 3003, 02750, "/system/bin/netcfg");
set_perm(0, 3004, 02755, "/system/bin/ping");
set_perm(0, 2000, 06750, "/system/bin/run-as");
set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
......
clear_misc_command();
......
clear_misc_command() 之前有执行 set_perm(),但是设置文件权限的结果还是在RAM中,
如果 clear misc 后没有把结果同步到 rom 中就断电,set_perm 的结果就没能保存,
再次通电,机器进入 正常模式系统,但由于相关的核心文件的权限设置不正确,Android 不能正常运行。
以下是其中的一段出错信息:
[ 14.406709] init: cannot execve('/system/bin/sdcard'): Permission denied
[ 19.414467] init: cannot execve('/system/bin/netd'): Permission denied
[ 19.421937] init: cannot execve('/system/bin/debuggerd'): Permission denied
[ 19.423517] init: cannot execve('/system/bin/drmserver'): Permission denied
[ 19.424119] init: cannot execve('/system/bin/installd'): Permission denied
[ 19.425210] init: cannot execve('/system/bin/rild'): Permission denied
[ 19.426087] init: cannot execve('/system/bin/sdcard'): Permission denied
[ 19.428758] init: cannot execve('/system/bin/keystore'): Permission denied
[ 19.430480] init: cannot execve('/system/bin/rild3'): Permission denied
[ 24.439882] init: cannot execve('/system/bin/netd'): Permission denied
[ 24.447814] init: cannot execve('/system/bin/rild'): Permission denied
[ 24.448139] init: cannot execve('/system/bin/drmserver'): Permission denied
[ 24.449490] init: cannot execve('/system/bin/installd'): Permission denied
[ 24.450914] init: cannot execve('/system/bin/keystore'): Permission denied
[ 24.454225] init: cannot execve('/system/bin/debuggerd'): Permission denied
解决的方法是在 clear misc 之前,须要把 RAM 中的数据同步到 ROM 中。
阅读(3456) | 评论(0) | 转发(0) |