我的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. php免费iphp免费idede,闲鹤草邻
  2. strcpy_s与strcpy对照
  3. mysql读取整张表_mysql 一个表里的信息是读取另一张表来的
  4. Hive-Based Registry使用
  5. maven + sonar, gradle + sonar
  6. Java获取字符串信息
  7. zend studio 10 实现代码自动换行
  8. android虚拟pdf打印机,虚拟打印机PDF
  9. DDPush 任意门消息推送 开源免费实时信息推送服务器
  10. holder.js如何使用
  11. 浅谈JdbcDaoSupport
  12. ubuntu docker的cron定时任务不执行
  13. VM虚拟机双网卡配置
  14. Prescan(六):prescan设置不停绕圈的障碍车
  15. Unable to start program bug解决方法
  16. android vector 圆形,Android中矢量图形的那些事 - SVG or Vector
  17. java集成微信发送模板消息
  18. 方正证券手机网上开户流程
  19. 千子晨婚纱摄影 vs 绝色摄影
  20. 电影《巴格西》:偏执狂才能名扬千古

热门文章

  1. sharepoint 中用自带的download.aspx实现文件的下载,中文文件名编码的问题
  2. Linux网络编程之广播
  3. Winform开发框架的业务对象统一调用方式
  4. 如何在xaml文件中操作用户在后台代码定义的类(1)
  5. C# API中的模型和它们的接口设计
  6. Linux LVM 收藏
  7. 细述 Java垃圾回收机制→Types of Java Garbage Collectors
  8. 用老司机的理财经历告诉你,这才是程序员理财的正确姿势
  9. mbr,gpt,开机启动流程.
  10. jQuery 是为事件处理特别设计的。