Linux手機DIY.夏新E600和飛利浦968的重大突破

  一、序
   夏新E600和飛利浦968終于在同一天取得了重大突破!皆可以執行自定義的Shell腳本!在這樣還是要感謝那些無數次重啓試機的朋友們。
   昨天無意翻到一個貼子,說得是Shell的解釋執行,忽然想到目前嘗試的Shell腳本,全是想當然的用/bin/bash解釋運行,如果飛利浦968不存在這個可執行文件是絕對不可能運行的。
   我在論壇上翻到「新號碼」從夏新E600升級包提取的文件內容,找個遍發現有ash,也有sh,卻惟獨沒有bash。我隱隱感覺到有可能原因就出在這裏。
  二、重要提示
   爲了方便更好的理解本文,提供下面鏈結。
   全系列的文章地址,手機應用開發專欄:http://blog.csdn.net/liwei_cmg
   相關的重要資源的下載地址:http://play.younet.com/view.php?tid=24045
  三、嘗試過程
  
   將原包在Linux用tq用戶解包(tar xvf qnes.prg),將qnes替換爲Shell腳本,腳本內容如下(先不指定用哪個Shell解釋):
  
   exec audioplayer &
   exec cp /mnt/user/cec/apps/6Self-Defined/*.desktop /mnt/doc/user_local/qnes/. &
   exec ls > /mnt/doc/user_local/qnes/ls.txt &
   exec ls > /mnt/doc/user_local/ebook/ls.txt &
  
   用我的打包腳本,執行打包操作,讓鐵蛋安裝,發現沒有任何反應。我又把Shell腳本加了一行語句 「#!/bin/sh」,即換成讓/bin/sh來解釋執行,即如下內容:
   #!/bin/sh
   exec audioplayer &
   exec cp /mnt/user/cec/apps/6Self-Defined/*.desktop /mnt/doc/user_local/qnes/. &
   exec ls > /mnt/doc/user_local/qnes/ls.txt &
   exec ls > /mnt/doc/user_local/ebook/ls.txt &
  
   再打包讓鐵蛋安裝執行,意外出現了,發現qnes目錄有了txt文件,也有了一堆desktop文件,說明Shell在968上是完全執行成功了!
   至于exec audioplayer & 這句只是根據「新號碼」提取的E600中desktop文件猜想的,無關緊要。
   既然飛利浦968可以執行成功,我就自然想到了在E600再試下這個程序,E600不能運行模擬器qnes也有可能是缺少庫文件,讓「電子奴隸主」安裝試了一下,果然也成功了!而且把複制來的所以desktop文件和生成的ls文件打包發給了我一份。
   結論:
   飛利浦968和夏新E600的安裝包詳細制作方法我們已經知道,運行Shell腳本了也全部取得了成功了,已經打開了一個極其重要的缺口,惟獨的是Install.conf還沒有參透,不過相信在對飛利浦和夏新操作系統進一步研究過程中,我們會知道的越來越多。
   最後明確一點,E600和968擴展開發第三方軟件,只是個時間問題!
  
  四、擴展手機應用總體思路
   通過運行Shell腳本,我們就可以知道整個操作系統的結構,包括Linux內核應用和上層圖形化系統。從而一步一步獲取系統軟件和外部軟件管理運行的方式和環境,以及涉及的相關庫文件(lib),資源文件(png,res)。最終完成交叉編譯開發移植第三方軟件。
  
   目前可以簡單展望一下Shell腳本所帶來的根本性變化。
   A.實現對現有手機系統功能的擴展和改進
  
   原有手機系統程序大多數都是通過配置文件進行管理,這類配置文件是對用戶完全封閉的。有了這個缺口,可以完全了解這些相關配置信息,靈活擴展手機程序的功能。
   B.完全了解所有用戶操作對968手機系統的影響,以及個人數據在968上的存儲方式。
   飛利浦和夏新手機的主清除和主複位百分之九十九是兩個不同的Shell腳本,不用多說了,看看腳本內容就知道他做了些什麽。
   C.通過Shell編程本身擴展手機功能應用
   目前E680上的大量軟件是采用了Shell腳本來實現,如telnet,虛擬內存擴展,藍牙telnet,進程監視,內存監視,數據備份,MPKG安裝卸載等等。這個得需要看具體的需求了。
  
   D.移植QTE,OPIE等一些其他的第三方軟件
   這方面內容就太多了,不過需要一些技術問題需要解決,下文會詳細介紹。
  
  五、未來方向的幾個重要疑問。
   疑問一.Shell腳本既然可以運行,能不能通過USB實現telnet?這個問題很複雜,我也不清楚。倘若能通過努力完成telnet,那DIY就太過方便了,不用老是重裝Qnes安裝包,來運行不同的Shell了。完全就可以在Windows下操作飛利浦968和夏新E600!
   疑問二.原qnes.prg包中的qnes可執行程序,也是兼容ARM指令集,不過是基于Linux2.0.0內核的,目前手裏可用的交叉編譯工具是ARM,Linux 2.4.3的內核版本,這個版本編譯的可執行程序在E680(Linux 2.4.0)是完全可以運行的,但不知道在飛利浦968和夏新E600上能否運行。主要暫時還不知道E600和968本身可執行程序的內核版本。(這個只需要寫個Shell腳本,複制過來幾個可執行文件,用Linux命令file看一下便知,很簡單。)
   如果不能運行,還需要構建一個基于Linux 2.0.0的交叉編譯環境。
  
   疑問三.夏新E600和飛利浦968從理論上講是這種結構---Linux內核+Qte+圖形化框架,這個和E680系列本質是一樣的,不過飛利浦的Linux內核代碼未公布,而E680系列內核代碼是開放的。Qte和上層圖形化框架兩者倒是一樣,都沒有公布源代碼。不過E680卻拿到了A760(可能是)的上層圖形化的開發包。所以一些興趣愛好者就使用上層圖形庫很容易開發出第三方軟件了(如ezxplayer,抓圖軟件...等)。這些的E680系列軟件從理論上是不能通過簡單的交叉編譯移植過來的,因爲兩者的上層開發包是不一樣的。不過在移植Qte和OPIE等這類軟件,兩者卻是完全一樣的。須要解決的問題就是疑問二中所提到的。
  
  
  六、寫在最後
   最後我只想說一點,現在飛利浦968和夏新E600都可以運行自定義的Shell腳本了。了解Shell腳本的DX應該知道這是一個什麽概念!
  七、附
   通過執行上面的腳本,獲取夏新E600中的部分內容,僅作示例。
  
   exec cp /mnt/user/cec/apps/6Self-Defined/*.desktop /mnt/doc/user_local/qnes/. &
   作用:複制 自定義目錄下所有的desktop文件到qnes目錄下
  
   020javamanager.desktop
  
   [Desktop Entry]
   Type=MimeType
   MimeType=application/x-javaAMS
   Comment=AMS
   Exec=AMS
   Shell=j9 -Xmjit -Duser.home=/mnt/doc -DExec=AMS -jcl:midp20 javax.microedition.lcdui.AppManager /mnt/cellon/ibm/midlet/AMS/AMS.jad
   Icon=common/menu/C8000_menu_user_define_JAVA.png
   Name=Java manager
   Name[en]=Java manager
   Name[zh_CN]=Java管理器
   Name[zh_TW]=Java管理器
  
  
   040ColorBall.desktop
  
   [Desktop Entry]
   Comment=ColorBall
   Exec=ColorBall_Amoi
   Shell=j9 -Xmjit -Xss6k -jcl:midp20 -Duser.home=/mnt/doc -DExec=ColorBall_Amoi -cp /mnt/cellon/ibm/midlet/ColorBall/ColorBall_Amoi.jar javax.microedition.lcdui.AppManager /mnt/cellon/ibm/midlet/ColorBall/ColorBall_Amoi.jad
   Icon=common/menu/C8000_menu_user_define_colorball.png
   Type=Application
   Name=ColorBall
   Name[en]=ColorBall
   Name[zh_CN]=滾滾球
   Name[zh_TW]=滾滾球
  
   ...
  
   exec ls > /mnt/doc/user_local/qnes/ls.txt &
   作用:顯示系統可執行文件目錄下所有內容
  
   SMALLP.BNK
   alarm
   alerttest
   amoi
   audioplayer
   audiorecorder
   broadcast
   calculator
   calendar
   ...