一、前言
如果你看過以前的三篇文章,再來理解這篇應該是很輕松了。這篇文章的目
的就是為了能徹底拋棄L/M給我們帶來的這么多麻煩!什么安裝,卸載,改名等等
一并解決,而且只是更改了手機上一個文件而已。
在這里,需要感謝的人很多,起碼要點名兩個人,yan0和Cyph。一位搜集整
理了ezx_flexbit.cfg設置方式,另外一位居然提供了Flashkit如此奇妙的工具。
這里也不得不贊嘆www.e680.net是個好去處,flashkit我就是從那里下載到的。
實現本文方法,需要telnet到手機,其他的linux操作系統和flashkit工具。
二、原理
其實很簡單,在E680上就可以直接安裝管理MPKG程序,只是在E680i,E680g版
本中居然被屏蔽了,不過幸好大家發現功能的開關就在ezx_flexbit.cfg這個文件
中。
不過ezx_flexbit.cfg這個文件有兩個,如下:
/usr/setup/ezx_flexbit.cfg
/ezxlocal/download/appwrite/setup/ezx_flexbit.cfg
先詳細說一下ezx_flexbit.cfg這個文件的原理。
我們先打開/ezxlocal/download/appwrite/setup/ezx_flexbit.cfg這個文件,
(這是我E680G,未進行任何刷機修改的內容)內容如下:
[SYS_FLEX_TABLE]
0 = 1208211392
1 = 374437888
2 = 2178351491
3 = 1678589
4 = 4289465088
5 = 195198976
這里的每行對應了32位二進制的數值,只是顯示成10進制了,我們轉換一下,
不足32位的在左端加0,并且4位一組加上序號,內容如下:
A B C D E F G H
0 0100 1000 0000 0011 1101 0111 1100 0000 0 = 1208211392
1 0001 0110 0101 0001 0111 1000 0000 0000 1 = 374437888
2 1000 0001 1101 0111 0000 0001 1000 0011 2 = 2178351491
3 0000 0000 0001 1001 1001 1100 1111 1101 3 = 1678589
4 1111 1111 1010 1100 0000 1011 0000 0000 4 = 4289465088
5 0000 1011 1010 0010 1000 0000 0000 0000 5 = 195198976
可以自已轉換一下,看看結果是不是一致,加深下理解。這里每個0或1都表示
一個功能的關閉與開啟。這里只選出意義比較重大的功能開關。
◆3行C組第1位
開啟USB網的菜單,手機設置-USB模式里會出現USB網,這種模式連接電腦即可
直接Telnet。
這里顯然沒有開啟!
◆3行F組第1位
手機上網有“可能要收取額外的通話費用,繼續嗎”的提示,此為手機Opera上網
的提示,不是java上網出現的提示。
這里已經開啟!
◆4行D組第4位
照相機設置里,快門聲音里出現靜音的選項。
這里沒有開啟!
◆4行E組第1位
拍照后,手機會出現是否保存的提示。
這里沒有開啟!
◆5行A組第3位
開啟手機支持MPKG軟件的安裝功能。
極度重要,這個小小的1,0給我們E680g用戶造成了極大的麻煩!這里沒有開啟!
很遺憾,我們能隨意修改的/ezxlocal下的那個文件是沒有用的,系統只去找
/usr/setup/ezx_flexbit.cfg這個文件。然想改這個/usr/setup/ezx_flexbit.cfg
似乎比登天還難!我telent進手機,使出渾身懈數也搞不定,后來發現mount可以起
作用。然重啟肯定就恢復以前模樣了!
我們先做個小小的試驗!先修改/ezxlocal的ezx_flexbit.cfg內容,就只加上
MPKG和USB網的兩項功能,(3行C組第1位,5行A組第3位)更改后,把對應二進制數值
轉換為十進制。顯示的文件內容如下:
A B C D E F G H
0 0100 1000 0000 0011 1101 0111 1100 0000 0 = 1208211392
1 0001 0110 0101 0001 0111 1000 0000 0000 1 = 374437888
2 1000 0001 1101 0111 0000 0001 1000 0011 2 = 2178351491
3 0000 0000 1001 1001 1001 1100 1111 1101 3 = 10067197 *修改
4 1111 1111 1010 1100 0000 1011 0000 0000 4 = 4289465088
5 0010 1011 1010 0010 1000 0000 0000 0000 5 = 732069888 *修改
我們修改后的ezx_flexbit.cfg文件內容如下:
[SYS_FLEX_TABLE]
0 = 1208211392
1 = 374437888
2 = 2178351491
3 = 10067197
4 = 4289465088
5 = 732069888
覆蓋手機上/ezxlocal/download/appwrite/setup/ezx_flexbit.cfg文件,
你去設置里看USB模式,會發現毫無變化!這時在telnet下輸入以下命令:
mount --bind /ezxlocal/download/appwrite/setup/ezx_flexbit.cfg /usr/setup/ezx_flexbit.cfg
再去看USB模式,就會發現多了一項--USB網,隨便復制個mpkg安裝文件,
沒有問題!可以象java一樣安裝卸載,應用名稱也可以去見鬼了!我們已經
看到了這個文件的效果,不過重啟之后,一切又恢復原樣!
我曾經想過,能不能把這個命令在手機下運行,這樣大不了我每次開機點一
下,然卻發現運行手機系統的是ezx用戶,是絕對不支持mount命令的。這里附帶
一句,如果那位能簡單實現修改這個文件的方法,一定要告知!
三、方法
方法就是絕對要修改這個文件,這里使用了flashkit工具,向只讀的flash寫
入新文件。下載地址兼中文說明,大家可以去看一下。
http://club.ccmove.com/nclub/topicdisplay.aspx?pageno=1&boardid=1189&topicid=257967
我的做法(也有一部分復述上面貼子的內容):
1.telnet進手機,執行命令:
tar zcvf /mmc/mmca1/setup.tar.gz /usr/setup
說明:
這里是把整個/usr/setup下文件打包到卡上,為了是在別的Linux下用
mkfs.cramfs制作cramfs文件,然后用flashkit重寫。也可以不壓縮直接
tar cvf都是一樣的。不明白可以查看linux,tar的用法。
2.復制setup.tar.gz到Linux系統下,執行解壓縮命令:
mkdir moto
cd moto
tar zxvf setup.tar.gz
這時會出現很多警告,不要緊,執行完畢后會自動建立文件夾。
說明:
我使用的是虛擬機安裝的RedHat Linux,通過mount -t smbfs -o
username=administrator,passWord=yiming,ip=192.168.98.166 -l
//LW/MotoShare /home/root/windows 訪問Windows的完全共享文件夾MotoShare,
在Linux,Windows下都可以進行操作。
(本機名LW,IP為192.168.98.166,MotoShare是我的共享文件夾,用戶名密碼就
不用說了。)
3.修改usr/setup里的ezx_flexbit.cfg文件,可以根據個人喜好修改。
4.在建立的moto文件夾下,使用mkfs.cramfs進行打包,執行命令:
mkfs.cramfs usr/setup liwei.cramfs
說明:
有前輩云:使用mkfs.cramfs進行打包,不是mkcramfs,否則不能telnet。
有興趣的可以去驗證下!這里的mkfs.cramfs只能打包文件夾。所以只好覆蓋
setup下所有文件了。
注意:以下內容在flashkit自帶的ReadMe有詳細的英文說明,英文好的切莫錯過!
5.把flashkit.zip解壓的文件夾flashkit復制到/mmc/mmca1下,注意里面內容
最好不要改,把liwei.cramfs也復制到/mmc/mmca1下。
6.因為這里采用的是USB方法Telnet的,把USB線拔掉。
7.用loader關聯運行/mmc/mmca1/flashkit/rwflash.lin,注意目錄,你可以查
看下rwflash.lin的內容,就明白了。
8.將電話閑置30秒以上,長點也沒事,我這里讓他閑置了1分鐘。
(Leave the phone alone and wait. When the screen blanks out wait 30secs
longer, there's a good chance the phone entered low power mode.)
9.重新插USB然后telnet進手機,執行命令
cat /PRoc/rwflash_status
如果顯示為"unlocked"代表成功,顯示locked需要重新回到6,拔掉閑置~直到顯示
unlocked,如果長時間依然是locked,關機開機,從步驟6再開始!
10.確認顯示unlocked,執行cd /mmc/mmca1/flashkit 進入目錄執行 ./start.sh
這時候telnet會斷掉而且電話幾乎所有功能會被Kill,任你怎么搞手機,也是無濟
于事!但是有幾個進程還在,比如mmcsdapp,這樣你依然可以看到你卡上的所有內
容!
11.在Windows命令行下telnet 169.254.142.2 10000,用10000這個端口telnet。
輸入root,這時就進行了flashkit虛擬的shell中,可以正常操作。
12. cat /proc/mtd 會包含類似以下內容,忘了復制我的屏幕了,這里用intoxicated
的,都差不多。不過我的e680g是六行記錄。
mtd4: 000e0000 00020000 "R/W Kernel
mtd5: 018e0000 00020000 "R/W RootFS (CG33)
mtd6: 00020000 00020000 "R/W Setup" (CG36)
mtd7: 00020000 00020000 "R/W Logo" (CG37)
R/W代表可以寫入,我們需要做得就是覆蓋 mtd6: 00020000 00020000 "R/W Setup"
(當然,通過這個方法也可以覆蓋mtd5,mtd7對應內容。)
13.輸入命令
flashcp -v /mmc/mmca1/liwei.cramfs /dev/mtd6
14.執行完畢,拆掉電池,斷電重新開機,L/M問題便徹底解決了!
對于不能mkfs.cramfs的朋友,這里提供了我用過的打包文件,可以去友人網下載。
http://play.younet.com/view.php?tid=18578
四、小結
如果你細心看過,現在肯定比較爽了~
我隨手安裝了個mp3播放器,安裝MPKG軟件的路徑是/mmc/mmca1/.system/
QTDownLoad。這是裝在卡上的路徑,顯然沒有必要把MPKG軟件裝在手機上。同樣系
統也會修改/mmc/mmca1/.system/java/PlugCardDB,配置信息如下
[AppLinkRecord100000033]
AllPosition = 39
BigIcon = icon.png
Directory = mp3player
Exec = mp3player
Group = 4
Icon = icon_sm.png
InstalledDate = 2006/9/1
JavaId = -1
Mime =
MpkgFile = /mmc/mmca1/19425526.mpkg
Name = EQ??-???
OsVersion = 1.1
Position = 5
Rotation =
Shared = 2
Size = 1455K
Type = 4
uid = 100000033
注意到這里的Type=4,我們Type=2時,絕對是顯示“應用名稱”的,Type=5是
Java軟件,如果手機不支持MPKG,Type=4的應用程序雖然能顯示名稱,但卻無法
執行的。
這時,你就可以下載一個mpkgKit.exe改名程序。(其實就是修改配置文件的
Name對應值,不過你用普通工具查看時,中文是亂碼)去隨意更改安裝軟件的名稱
了,圖標就更不用說了。這樣需要提一下mpkgKit.exe這個工具,最好不要讓它
去直接改手機的內容,速度比較慢,而且改了之后,本次telnet速度也慢了。解
決方法就是復制到電腦上,用mpkgKit.exe改完再復制回去。
還有關于XXX.desktop這個文件,只是在MPKG安裝時由系統讀取罷了,安裝就
沒有任何作用了,更改圖標名稱只需修改PlugCardDB這個配置文件。
五、徹底解決LM后,我對于MPKG的管理方法,供大家參考。
PlugCardDB文件的有關配置信息。
[AppLinkRecord100000001]
AllPosition =
BigIcon = liwei.png
Directory = ../../../../mmc/mmca1/soft/liwei
Exec = liwei
Group = 4
Icon = liwei.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = è????????è?? #腳本加載
OsVersion =
Position = 17
Rotation =
Shared = 0
Size =
Type = 4
uid = 100000001
[AppLinkRecord100000002]
AllPosition =
BigIcon = app.png
Directory = ../../../../mmc/mmca1/soft/shortcuts
Exec = app.sh
Group = 4
Icon = app.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = ?o???¨?????? #應用綜合
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 4
uid = 100000002
[AppLinkRecord100000003]
AllPosition =
BigIcon = game.png
Directory = ../../../../mmc/mmca1/soft/shortcuts
Exec = game.sh
Group = 4
Icon = game.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = ???????????? #游戲綜合
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 4
uid = 100000003
[AppLinkRecord100000004]
AllPosition =
BigIcon = player.png
Directory = ../../../../mmc/mmca1/soft/shortcuts
Exec = player.sh
Group = 4
Icon = player.png
InstalledDate =
JavaId = -1
Mime =
MpkgFile =
Name = ?a?????????? #媒體綜合
OsVersion =
Position =
Rotation =
Shared = 0
Size =
Type = 4
uid = 100000004
/mmc/mmca1/soft/liwei/liwei的內容
#!/bin/bash
exec $2 &
/mmc/mmca1/soft/shortcuts/app.sh的內容
#!/bin/bash
export QTDIR=/usr/lib/ezx
export LD_LIBRARY_PATH=$QTDIR/lib
export EZX_RES_F MYSTUFF_DATA_PATH=/mmc/mmca1/exe/app
chmod 444 $MYSTUFF_DATA_PATH
cd /usr/SYSqtapp/mystuff
./mystuff
chmod 777 $MYSTUFF_DATA_PATH
其他幾個sh都差不多,只是路徑不同罷。而這些路徑就是存放一些MPKG
的運行腳本。這樣做的目的,就是考慮菜單資源有限。當然你如果有能力完
全可以自已在菜單做個更漂亮的控制面板,比起來這里的方法要簡單多了。
新聞熱點
疑難解答
圖片精選