我的E680I(小I)手机已经用了快两年了, 最近出现一下奇怪的错误,比如运行JavaME程序时提示说许可无效,运行第三方的Ezx程序时突然退出, 电话本和日程安排无法保存,短信功能经常出现“等待DB”等等, 难道我的小I的走到了生命的尽头?由于暂时没有换手机的预算,加上自己对Linux比较熟悉,因此抱着试试看的想法,看能不能自己解决这些问题。

熟悉小I的人都知道,该手机的Linux文件系统主要由如下几个设备组成

设备名称 加载点 描述
/dev/root / 存放根文件系统,也就是平常说的33包,只读
/dev/tffsa /usr/language 存放系统内置的主题和语言,就是平常说的35包,只读
/dev/roflash2 /usr/setup 存放系统默认配置(比如网络连接、Opera、RealPlayer等系统以及自带软件的配置),也是平常说的36包,只读
/dev/mtdblock2 /ezxlocal 这个设备不知应该叫什么,有人称之为内存,但是好像又不太正确,该部分可读写,存放电话本、短信、彩信,当然还有程序运行的配置,比如浏览器使用的是cmwap还是cmnet等,个人认为,可以理解为是保存手机配置的一个特殊分区;顺便罗唆一句,真正的内存在哪里呢?通过查看手机的启动脚本发现, 原来真正的运行内存(/dev/ram)被加载到/ram目录, 大概有12M左右,启动后系统占用40%~60%,如果不够用可以考虑使用扩展内存,这个不会自己搜索吧,不罗唆了。
/dev/mmca1 /mmc/mmca1 SD卡,自己买的,不用多说,读写
/dev/tffsb1 /diska 手机内部的存储空间,即硬盘,52M左右,(并不是Moto说的内存,不过好像不论是那个厂商,都这样说, Nokia也不例外),读写

对于手机出现的问题逐一进行分析:

  • 运行JavaME程序提示说许可无效,对于内置的程序来说,系统自带了运行的许可,存放于/usr/setup, 运行是许可会被复制一份到/ezxlocal, 对于后来自己安装的程序来说, 存放于/ezxlocal,对手机进行主清楚,主恢复操作之后, 运行JavaME程序依然出现这样的错误,则有可能是/ezxlocal或者/usr/setup这两个设备出现了问题;
  • 运行第三方的Ezx程序时会退出,第三方的Ezx程序和/usr/setup无关,那么就只有和/ezxlocal有关了,如果/ezxlocal出现了问题的话,那么运行Ezx程序会退出也就不奇怪了,就像读写有坏道的硬盘一样,肯定会出问题的;
  • 电话本,日程安排和短信等也是存储于/ezxlocal,如果是/ezxlocal出现了问题, 这三部分不能正常使用也是说得过去的。

问题的原因清楚了,再验证一下 ,telnet进手机,先用手机内部存储进行测试,在diska的preload目录下新建两个目录,setup和ezxlocal,setup目录用于存放/usr/setup目录下的文件, ezxlocal用于存放/ezxlocal目录下的文件,然后执行如下的两个命令,分别复制两个目录: 
            cp -r /usr/setup /diska/preload/setup 
            cp -r /ezxlocal /diska/preload/ezxlocal 
然后在执行两个绑定的命令: 
            mount --bind /diska/preload/setup /usr/setup 
            mount --bind /diska/preload/ezxlocal /ezxlocal 
mount --bind的作用是将一个目录加载到另外一个加载点,通过执行上面的命令,如果再读取/ezxlocal或者/usr/setup两个目录下的文件,那么读取到的将是/diska/preload下相应的目录中的内容,也即使说,系统原来的/ezxlocal和/usr/setup被屏蔽掉了,由于/diska是可读写的, 所以现在的/ezxlocal和/usr/setup也是可读写的了。

执行了如上的几个命令之后,奇迹出现了,运行程序不死机了,特别是用内置的opera浏览网站时不会自动退出了,以前只要一浏览比较大的网页就会自动退出,运行JavaME程序也不会弹出许可无效了,看来我的估计是正确的。

知道了问题的原因,解决方法自然就知道了,利用mount命令,将怀疑出问题的设备/ezxlocal和/usr/setup绑定到手机存储或者SD/MMC卡上,问题就解决了。具体操作如下:

  1. 将SD卡分成2个分区, 第一个是fat格式,给手机使用,手机只能识别第一个分区,第二个是ext2格式,用于存放/ezxlocal和/usr/setup的目录下的文件, 当然,多出来的空间也可以存放备份文件;
  2. 修改刷机包33包,在/etc/rc.d/rc2.d目录下增加S80autorun.sh,因为根据Linux系统的机制,这个文件会在系统启动时被执行,内容如下:

#!/bin/bash

if [ -f /mmc/mmca1/.system/autorun.txt ] 
then 
  . /mmc/mmca1/.system/autorun.txt 
fi 
这个简单吧, 就是再启动检查一下sd卡上的autorun.txt, 如果存在则执行它,否则什么都不做。和网上流传的自启动刷机包差不多, 其实都是一个原理,然后用flashkit或者PST刷到手机就行了,推荐使用flashkit,因为这个比较快,而且不会清楚已经保存的配置,包括短信、电话本等都不受影响。

编写自动执行的autorun.txt文件,我编写的内容如下:

#! /bin/bash 
# 测试发现/ezxlocal只能被绑定到fat文件系统上,不能被绑定到ext2文件系统上,否则会出错 
mount --bind /diska/preload/ezxlocal /ezxlocal 
# 加载ext2模块,可以加载ext2文件系统 
insmod /mmc/mmca1/.system/modules/ext2.o 
# 创建一个节点,因为原来没有sd卡第二个分区的节点 
mknod /tmp/mmca2 b 243 2 
# 加载第二分区到/diskb, 也可以加载到任何也有节点 
mount -t ext2 /tmp/mmca2 /diskb 
# 由于经常要修改主题,因此这个分区也被我绑定过来了 
mount --bind /diskb/language /usr/language 
mount --bind /diskb/setup /usr/setup 
export QTDIR=/usr/lib/ezx

执行完了如上步骤,现在把卡插入手机,然后重新开机,发现出现问题的频率大大降低,几乎为零,看来“移花接木”成功了,简单的说,所谓的“移花接木”,就是用其它的存储来代替并屏蔽原有的存储,比如用sd卡上的存储来代替手机原来的存储,这样,我的小i又可以用上一段时间了。

Moto的E680系列手机已经给许多用户留下了深刻的印象,相信许多用户都喜欢这一系列手机的自定义功能,可惜的是由于商业原因,Motorola没能够公布Ezx的SDK,导致这一系列手机的软件相对比较匮乏,否则这一系列的手机将会更加受欢迎的。(这句是废话,发个牢骚)

张志敏所有文章遵循创作共用版权协议,要求署名、非商业 、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。

本博客已经迁移到 GitHub , 围观地址: http://beginor.github.io/

本文转自张志敏博客园博客,原文链接:http://www.cnblogs.com/beginor/archive/2007/10/07/916074.html,如需转载请自行联系原作者

“移花接木”修复E680i系统内部错误相关推荐

  1. 如何修复ubuntu中检测到系统程序错误的问题

    作者:Abhishek来源:Linux中国 在过去的几个星期,(几乎)每次都有消息 Ubuntu 15.04在启动时检测到系统程序错误 跑出来"欢迎"我.那时我是直接忽略掉它的,但 ...

  2. java安装 2203_高手分析win7系统无法安装java程序提示“内部错误2203”的处理

    人吃五谷杂粮会生病,电脑也一样.工作运行时间久了就会出现很多的问题,比如win7系统无法安装java程序提示"内部错误2203"这样的状况,很多用户之前从未遇到win7系统无法安装 ...

  3. java安装 2203_win7系统无法安装java程序提示“内部错误2203”的解决方法

    win7系统无法安装java程序提示"内部错误2203"的问题发生概率较高.怎样来处理win7系统无法安装java程序提示"内部错误2203"的问题,知道的人估 ...

  4. 对计算机进行重镜像错误,Windows 10 使用系统镜像恢复系统出现内部错误?

    您好! 我在对计算机进行重镜像的时候遇到内部错误,STATUS_WAIT_2(0x80070002) . 我的操作流程是: Windows 设置 -> 升级和安全 -> 恢复 -> ...

  5. 修复win10的更新服务器,修复win10系统更新steam发生错误提示“无法连接服务器”的教程步骤...

    Steam平台是一个综合电子游戏的游戏平台.Steam平台是目前全球最大的综合性数字发行平台之一.玩家可以在该平台购买.下载.讨论.上传和分享游戏和软件.最近有一些小伙伴使用win10操作系统的时候遇 ...

  6. 远程计算机内部错误,Win10系统远程桌面连接出现内部错误怎么办?

    Win10系统远程桌面连接出现内部错误该怎么办?大家在使用Win10系统的时候总是会出现这样那样的问题,Win 10 远程桌面连接偶尔提示 "出现了内部错误",刚刚明明还好好的:有 ...

  7. 备份系统 由于内部错误备份应用程序无法启动  0x80070422

    由于内部错误备份应用程序无法启动 0x80070422 1. win+r 输入services.msc 2. Block Level Backup Engine Service Volume Shad ...

  8. ORA-00600:[kclchkinteg_2]及[kjmsm_epc]内部错误一例

    一套AIX上的9.2.0.6 RAC系统,alert日志中最初报LMS进程(Lock Manager Server process,即锁服务管理进程,仅出现在RAC系统中)遭遇ORA-00600[kc ...

  9. 远程桌面登录时提示:出现了内部错误

    远程桌面登录时提示:出现了内部错误 不是本机的问题 服务器问题 重启Remote Desktop Services 微软官方操作 _==**没事不要瞎动C盘的系统文件**==_ 不是本机的问题 重启w ...

最新文章

  1. 史上最全的高可用服务系统线上问题排查工具单(一)
  2. maven运行时的配置及命令详解
  3. 这些老外的开源技术养活了很多国产软件
  4. 修改hosts 流畅使用coursera
  5. List 集合转换为String
  6. 「前端」看懂前端脚手架你需要这篇webpack
  7. 快手:今年下架抄袭、搬运内容的违规视频20316个
  8. python 修改文件属性 macos_Python中用MacFSEvents模块监视MacOS文件系统改变一例
  9. python操作数据库慢_MySQL数据库之python 拉取mysql 慢日志
  10. python字符串_Python字符串
  11. 帆软邮件STMP配置、发送测试及邮件发送失败日志排查
  12. LINUX SHELL安装deb命令
  13. 每天一个小技巧【1】·TextMeshPro的中文设置
  14. curry化 js_Javascript函数柯里化(curry)
  15. 小组取什么名字好_给小组取个好名字
  16. 微信小程序样式Flex Box精通课程-Flex容器的属性-justify-content内容对齐(左中右)
  17. 必背C语言算法 C语言小写转大写
  18. ActionScript 3.0 杂乱笔记3
  19. 测试大会能给我们带来什么?
  20. 设备一路485如何供两台电脑使用_干货!消防设备供电系统有哪些部分构成,用电负荷等级如何划分?...

热门文章

  1. MaterialImageView
  2. dmz“非军事化区”
  3. 区块链安全:2019年我们走了多远?
  4. Cookie的简单实用
  5. 浅谈Activiti Modeler 的扩展
  6. MySQL Packet for query is too large
  7. 列出对象锁(lock)信息及其被杀的会话(sid,serial#)信息
  8. Davinci DM6446开发攻略——LINUX GPIO驱动源码移植
  9. ASP条件语句之IF语句
  10. PowerShell的开源实现