在論壇上所找到的文章, 趕快memo下來.
出處 : http://www.hdpfans.com/thread-299-1-1.html
[轉貼]1073固件(Frameware)詳細分析和破解,常用軟體安裝和配置,並以海美迪HD300A為例解析
前言:很多資訊和程式都來自互聯網,在此感謝那些為了壓榨設備每一分使用可能的熱心人,還有,此文中不在贅述如何刷Frameware,因為設備提供商的手冊和官網裏已經寫的非常清楚了。
一、1073晶片播放器的硬體配置
主晶片:RTD1073DD
RAM: 128MB
ROM: 256MB
CPU: MIPS 400Mhz
電源: 3A
目前所有採用1073晶片的播放器都是這個公版的硬體配置,而且據說首版國內固件(Frameware)是由Himedia開發的,其他家是基於HiMedia基礎進行修改後的結果。
這裏最重要的是ROM這個參數,1073播放器的ROM一共是256M,這裏存放著播放器的核心---固件。未來我們將採取的所有操作都是針對ROM裏嵌入式的Linux進行的。因此,建議操作者具備一些Linux系統的經驗,這樣會比較有的放矢。
二、深入淺出的看固件
注:未經特別說明,均以HD300A的固件資訊為例
2.1、首先去HiMedia的官方網站下載最新版固件,目前的最新版本是1.0.3.28(截至到發文時),http://himedia-tech.cn/himedia/version/20100202/HD300A_1.0.3.28.rar,將此RAR檔解壓後是一個HD300A_1.0.3.28.img的IMG檔,不要被尾碼img迷惑了,其實它就是一個Linux下的TAR檔。用winrar或者7zip或者…… 把這個檔解壓到某個目錄裏。
2.2、解壓完成後在目錄裏會看到如下檔
2010-03-19 11:11 <DIR> .
2010-03-19 11:11 <DIR> ..
2010-02-04 19:14 143,300 arial.ttf
2010-02-04 19:14 1,773,344 audio_firmware.install.bin
2010-02-04 19:14 1,841 configuration.xml
2010-02-04 19:14 43,400 flash_erase
2010-02-04 20:58 141,127,680 HD300A_1.0.3.28.img
2010-02-04 19:14 1,819,620 install_a
2010-02-04 19:14 163,948 mkfs.jffs2
2010-02-04 19:14 56,936 nandwrite
2010-03-19 11:11 <DIR> package2
2010-02-04 19:14 1,623,760 video_firmware.install.bin
9 個文件 146,753,829 位元組
放心,你看到的絕對會和我看到的一樣。目錄package2裏的內容是這樣的
2010-03-19 11:11 <DIR> .
2010-03-19 11:11 <DIR> ..
2009-10-07 13:27 1,777,416 bluecore.audio
2009-10-19 16:29 2,155,536 video_firmware.bin
2009-11-16 22:03 4,067,461 vmlinux.develop.avhdd.mars.nand.bin
2010-02-04 19:14 127,435,968 yaffs2_1.img
2010-02-04 19:14 50,688 yaffs2_2.img
5 個文件 135,487,069 位元組
2.3、第一層目錄中包括的刷寫ROM的程式,刷寫ROM的配置檔(configuration.xml)等,package2目錄包括Linux的內核和2個img檔, yaffs2_1.img和yaffs2_2.img就是嵌入式linux應用部分的鏡像檔,這種鏡像檔時採用yaffs格式打包的,winzip、winrar、7zip等就無能為力了。主攻的物件就是刷寫ROM的配置檔以及yaffs格式的IMG檔。
2.4、詳細分析configuration.xml
2.4.1、先完整的看一下這個XML的內容,I Love XML,哈哈~~~~~~~~~~~~~~~~~~~~~~~
<?xml version="1.0" encoding="ISO-8859-1" ?>
<packageFile>
<info>
<company>Realtek Semiconductor Corp.</company>
<description>This image file contains 2 Mars packages. One is for AVHDD on NOR and the other is for AVHDD on NAND.</description>
<version>0.0.1</version>
<releaseDate>02/04/10 19:14</releaseDate>
<signature>MARS AVHDD on NOR or NAND</signature>
</info>
<installerAP>
<fileName>install_a</fileName>
</installerAP>
<package>
<info>
<description>This is Mars AVHDD on NAND</description>
<version>N/A</version>
</info>
<nand>
<image>
<fileName>package2/vmlinux.develop.avhdd.mars.nand.bin</fileName>
<targetAddress>0x80100000</targetAddress>
<version>SVN:2615</version>
</image>
<image>
<fileName>package2/bluecore.audio</fileName>
<targetAddress>0x81b00000</targetAddress>
<version>N/A</version>
</image>
<image>
<fileName>package2/video_firmware.bin</fileName>
<targetAddress>0x81d80000</targetAddress>
<version>N/A</version>
</image>
<image>
<fileName>package2/yaffs2_1.img</fileName>
<mountPoint>/</mountPoint>
<version>N/A</version>
</image>
<image>
<fileName>package2/yaffs2_2.img</fileName>
<mountPoint>/usr/local/etc</mountPoint>
<version>N/A</version>
<sizeBytesMin>0x1000000</sizeBytesMin>
</image>
</nand>
</package>
</packageFile>
2.4.2、先看這幾段:
<image>
<fileName>package2/vmlinux.develop.avhdd.mars.nand.bin</fileName>
<targetAddress>0x80100000</targetAddress>
<version>SVN:2615</version>
</image>
* 這段是將Linux的內核寫入ROM
<image>
<fileName>package2/bluecore.audio</fileName>
<targetAddress>0x81b00000</targetAddress>
<version>N/A</version>
</image>
* 這段是將聲音處理的程式寫入ROM
<image>
<fileName>package2/video_firmware.bin</fileName>
<targetAddress>0x81d80000</targetAddress>
<version>N/A</version>
</image>
* 這段是將視頻處理的程式寫入ROM
2.4.3、重點看如下兩段:
<image>
<fileName>package2/yaffs2_1.img</fileName>
<mountPoint>/</mountPoint>
<version>N/A</version>
</image>
* 將嵌入式Linux的第一塊擴展部分寫入到ROM,mount點是“/“
<image>
<fileName>package2/yaffs2_2.img</fileName>
<mountPoint>/usr/local/etc</mountPoint>
<version>N/A</version>
<sizeBytesMin>0x1000000</sizeBytesMin>
</image>
* 將將嵌入式Linux的第2塊擴展部分寫入到ROM,mount點是”/usr/local/etc“
這兩段XML配置略有些區別,區別就在寫入package2/yaffs2_1.img的配置沒有<sizeBytesMin>這個配置節點。
缺少這個節點會產生什麼樣的影響呢?
答案就是:按照yaffs2_1.img具體大小寫入ROM,寫完後按照這個大小mout到”/“上。(具體mount可以參考一下Linux的手冊),這樣”/“的空間可用率就是0,如果用df -h查看卷的使用情況,顯示將會是100%。
而yaffs2_2.img就不同,寫入ROM時會請求一塊空間大小就是0x1000000Bytes=16M,在df -h查看時會顯示有使用空間。但是重點中的重點就是”/“的大小和可用空間。
2.4.4、佔用空間解析
首先整個ROM是256M,究竟有多大的空間可用呢?
ROM裏要寫入的文件:
package2/vmlinux.develop.avhdd.mars.nand.bin 約3.9M
package2/bluecore.audio 約1.7M
package2/video_firmware.bin 約2.1M
這3部分總共佔用了3.9+1.7+2.1=7.7M,為了保證程式寫入穩妥,位址上分配都不是連續的。因此寫入程式大概分配了28M左右給這3部分的核心。那ROM裏還剩250-28-16=206M,也就是說我們的yaffs2_1.img可以利用的空間在200M左右。後續就是如何利用它了。
三、破解固件的幾種方法
為什麼要破解固件?因為,默認情況下用戶對固件只有唯讀的許可權,不能修改固件的設置和增刪內容,這就阻止了我們DIY此類播放器,為了更大限度的發揮播放器的作用,首要的任務就讓嵌入式的Linux可以讀寫,其次有空間來安裝我們需要的軟體。
3.1、第一種破解大法
這種方法是最簡單的,直接去找一個網上高手提供的破解固件刷入,現在taobao上還有提供定制服務的,花些錢就搞定了。這個不在此討論。因為要DIY!
3.2、第二種破解大法
[刪除大法]
用telnet登錄播放器,然後找到裏面沒什麼用的檔,刪除掉以後獲取可用空間,來安裝自己所需要的軟體和程式。
* tenlent 192.168.0.11(此處為播放器的IP)
HD300A的root初始是沒有密碼的
*重新mount”/“使其可以讀寫
mount -o remount,rw /
* 刪除字體檔
cd /usr/local/bin/Resource
rm arial.ttf
ln -s yahei.ttf arial.ttf
*刪除PPS
rm -fr /usr/local/bin/IMS_Modules/pps
這樣操作後,大概能獲得約30M的空間,已經可以安裝一些基本的軟體了。但是有些人覺得不夠用,那繼續看……
3.3、第三種破解大法
[增強刪除大法]
這個辦法能獲取更大的空間供你使用,但是前提是需要安裝一個Linux環境,因為需要把yaffs2_2.img這個鏡像包打開,進行操作。一般情況下都是安裝一個虛機來跑Linux,我用的是VitrualBox+Ubuntu8.1,如何安裝虛機和相關的OS可以自行參考一下其他教程。
啟動Linux
將HD300A_1.0.3.28.img上傳到Linux中,可以採用ftp或者虛機的共用檔夾,然後進行操作:
*首先建立一個目錄
mkdir hd300a(目錄名隨意)
*然後將img文件解壓
cd hd300a
tar -xvf ../HD300A_1.0.3.28.img
cd package2
*解壓yaffs的鏡像
mkdir yimg1
cd yimg1
unyaffs ../yaffs2_1.img
*將一個50M的空檔添加到此目錄中
dd if=/dev/zero of=50m.iso bs=1024k count=50
目錄中就多了一個50m.iso的空文件
*然後重新打包yaffs2_1.img
cd ..
mkyaffs2image yimg1 yaffs2_1_new.img
rm yaffs2_1.img
mv yaffs2_1_new.img yaffs2_1.img
*重新打安裝包
cd ..
tar -cvf ../install.img *
用這個新的固件包刷機,登錄以後刪除了字體檔、PPS再把這個50m.iso刪了,就比第一種方法額外多出50M來,有了70-80M的可用空間,OMG,足夠折騰了。
但是這個辦法需要一個Linux環境以及yaffs的解包以及打包程式(yaffs and mkyaffs2image),不是很方便。那咱們繼續往下看。
3.4、第三種破解大法
[配置修改法]
不需要Linux環境,只要有個UltraEdit就行了,用winrar或7zip打開HD300A_1.0.3.28.img,我使用的是7zip,在7zip打開壓縮檔的視窗裏直接用UltraEdit直接編輯configuration.xml檔,修改如下:
原始的
-----------------------------------------------------------------
<image>
<fileName>package2/yaffs2_1.img</fileName>
<mountPoint>/</mountPoint>
<version>N/A</version>
</image>
-----------------------------------------------------------------
修改後的
-----------------------------------------------------------------
<image>
<fileName>package2/yaffs2_1.img</fileName>
<mountPoint>/</mountPoint>
<version>N/A</version>
<sizeBytesMin>0x9990000</sizeBytesMin>(這就是增加的部分)
</image>
-----------------------------------------------------------------
注意,在UltraEdit提示是否要將檔轉換成dos格式的時候,一定要選擇”否“,切記。改完保存,7zip會自動提示是否要更新壓縮包裏的檔,當然是Yes。這樣你就獲得一個有可用空間的固件了。
改<sizeBytesMin>0x9990000</sizeBytesMin>的意思就是說,刷yaffs2_1.img的時候分配153M的空間來用,yaffs2_1.img自己只有約122M大小,這樣就爭取到了30M,然後再把字體檔和PPS檔刪了,就有約60-70M,夠用了!
別的教程裏有把<sizeBytesMin>0x9990000</sizeBytesMin>改為0xA000000(160M)和0xB000000(176M),但是我不建議改這麼大,首先是空間夠用,其次最好別把ROM壓榨到如此地步,容易出現一些意向不到的問題。因為為了使用更大的空間,硬碟才是王道。
四、軟體安裝
在嵌入式的Linux手工安裝所需要的程式其實不麻煩,最簡單的辦法就是利用ipkg,為了更簡單的達到目的,在破解了固件後直接安裝wenl出品的1073通用機型套裝軟體即可,真的是太方便了。順便向wenl(http://1073.konamicn.com/)表示敬意。
截至到發文時,wenl已經放出2.1版了。
套裝軟體2.1版下載地址:分為硬碟版和rom版本,分別對應有無內置硬碟的用戶。
http://u.115.com/file/f431810aad
2.1 更新說明:
1.解壓縮後請分別參加2個包的說明,以選取合適的套裝軟體。
2.修復了sina news的bug
3.支持3322動態功能變數名稱,方法參見http://1073.konamicn.com/thread-249-1-1.html
4.加入了ntp自動網路對時
5.增加了mldonkey,支援電驢下載,控制頁面為http://播放器ip地址:4080/,使用方法請google
留言列表