Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162746
  • 博文数量: 22
  • 博客积分: 1069
  • 博客等级: 准尉
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-01 13:40
文章分类

全部博文(22)

文章存档

2015年(4)

2011年(2)

2010年(12)

2009年(4)

我的朋友

分类: Android平台

2015-04-30 12:19:13

[ 好久没来,最近要换工作,准备把这几年的遇到的问题过滤一遍,从这个开始。]

以下的问题是在 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 中。

阅读(2781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~