轉自http://www.hdpfans.com/forum.php?mod=viewthread&tid=18314&page=1&extra=#pid306384
高清播放機的固件解包、修改和封包過程現在成為一個系列,都是完全鼠標圖形化操作過程。這個系列中,單一格式固件的在Linux系統中有2個,在Windows系統中也有2個,還有2個是混合格式多核固件的:
1. 在Linux中的squashfs格式固件解包、修改和封包過程改進版
2. 在Linux中的yaffs格式固件解包、修改和封包過程改進版
3. 在Windows中的squashfs格式固件解包、修改和封包過程改進版
4. 在Windows中的yaffs格式固件解包、修改和封包過程改進版
5. 在Linux中的y+s混合格式多核固件的解包、修改和封包過程改進版
6. 在Windows中的y+s混合格式多核固件的解包、修改和封包過程改進版
整個squashfs格式固件的解包、修改和封包過程,都是在Ubuntu10.04LTS的圖形界面中點擊移動鼠標完成的。實際過程做起來很簡單,主要有以下幾步:
1. 把要修改的squashfs格式固件install.img複製粘貼到hdp文件夾;
2. 進到hdp文件夾,雙擊open-squashfs,自動生成解壓文件夾squashfs-root;
3. 打開解壓文件夾squashfs-root,相當於進到播放機的根目錄,在其中根據需要修改;
4. 修改完解壓文件夾squashfs-root後,回到hdp文件夾,雙擊make-squashfs,自動生成修改後的squashfs格式固件install.img。
這裡的解包和封包過程,基本上是自動完成的,這樣實際使用更方便。在圖解squashfs格式固件的解包、修改和封包過程一文中的解包和封包過程,基本上是手動一步一步進行的,這樣有助於對過程的理解。如果沒有安裝使用Ubuntu,可以用在Windows中的squashfs格式固件解包、修改和封包過程改進版中的方法。如果要解包、修改和封包yaffs格式的固件install.img,可以參考在Linux中的yaffs格式固件解包、修改和封包過程改進版或參考在Windows中的yaffs格式固件解包、修改和封包過程改進版。
下面的實際過程是藍鉅T10S的1.3_1128修正版固件解包、修改和封包的實際過程。另外,在T10S使用squashfs格式的通用固件V1.6時,也進行過同樣的解包、修改和封包的實際過程,針對T10S修改remote_key和menu.rss。
準備
登錄Ubuntu後,在Ubuntu中解壓附件hdp.zip
http://dualc.dlinkddns.com:8080/PublicShare/TVBOX/hdp.zip
密碼:hdpdiy,把解壓得到的hdp文件夾複製粘貼到主文件夾中。
進到hdp文件夾,雙擊copy-tools,在顯示的菜單中點擊“在終端中運行” ,接著在顯示的終端命令窗口中,輸入安裝Ubuntu10.04LTS時設置的密碼後回車,這樣就把tools中的unsquashfs和mksquashfs複製到了Ubuntu系統的/usr/bin中了。
如果雙擊copy-tools,沒有顯示“在終端中運行”的運行菜單,可能是前面解壓複製文件時改變了文件屬性,這時可以鼠標右擊文件(夾),在屬性窗口中重新設置執行權限。
解包
打開u盤,把要修改的squashfs格式固件install.img複製到hdp文件夾。然後回到hdp文件夾,雙擊open-squashfs,在顯示的菜單中點擊“運行”,自動生成兩個解壓文件夾install.img_FILES和squashfs-root。這樣就可以在其中修改了。同時自動把修改前的install.img改為install.img_old。
打開解壓後的文件夾squashfs-root,相當於進到播放機的根目錄,我們可以根據需要在其中修改增加內容。例如,如果要修改usr/local/bin/scripts中的rss文件,可以依次雙擊打開usr、local、bin、scripts,進到usr/local/bin/scripts中,再選擇要修改的文件進行修改。除非是固件程序本身功能上的要求,在修改時不用mount -o bind綁文件之類的命令繞來繞去,直接修改要修改的文件就可以了。現在修改squashfs格式固件就像修改yaffs格式固件一樣方便。
固件解包後的install.img_FILES/package2/usr.local.etc.tar.bz2壓縮文件中的內容,就是強刷升級固件後播放機/usr/local/etc的內容。要想修改強刷升級固件後播放機/usr/local/etc的內容,就要修改固件解包後的usr.local.etc.tar.bz2壓縮文件中的內容。現在的改進版是可以直接在解壓後的文件夾squashfs-root/usr/local/etc中修改,封包時把修改後的內容自動複製到usr.local.etc.tar.bz2壓縮文件中。強刷修改後的固件時,在播放機中/usr/local/etc目錄所見即所得。
封包
修改完squashfs-root後,回到hdp文件夾。雙擊make-squashfs,在顯示的菜單中點擊“運行”,生成修改後的squashfs格式固件install.img,同時自動刪除前面解包時生成的兩個解壓文件夾install.img_FILES和squashfs-root。把新生成的install.img拖拽複製到u盤的根目錄,就可以把u盤插到播放機刷機了。
說明
最後說明一下使用條件。下載附件hdp文件夾中的解包腳本和封包腳本是參照通用固件V1.6寫的。如果播放機用的固件是squashfs格式的通用固件V1.6,可以直接採用上面的方法解包、修改和封包。從壓縮和解壓方式來說,是兩層結構。固件解包時是分兩層解包的,外面的第一層用tar -xvf命令解包,裡面的第二層用unsquashfs命令解壓。固件封包時也是相應的分兩層封包的,裡面的第二層用mksquashfs命令壓縮,外面的第一層用tar -cvf命令封包。解包或封包時,相對於第一層,裡面的第二層文件是package2/squashfs1.img,文件夾名是package2,文件名是squashfs1.img 。大多數採用1073、1283或1185的播放機使用的squashfs格式固件都是這樣的。如果實際使用的squashfs格式固件和這有差別,如第二層的文件夾名不是package2,或者文件名不是squashfs1.img ,就要根據實際情況,在hdp文件夾中的解包腳本和封包腳本中作一些修改。
第一次解包、修改和封包某個播放機的squashfs格式固件install.img時,可以把這個能正常刷機運行的install.img複製粘貼到hdp文件夾,雙擊open-squashfs運行解包,暫不做任何修改。這時可以在解包時生成的第一層解壓文件夾install.img_FILES中查看一下,第二層的文件夾名是不是package2,文件名是不是squashfs1.img 。如果不是,就不能直接採用上面的方法解包、修改和封包,這時可以根據實際情況修改一下解包腳本和封包腳本後再試。如果文件夾名和文件名是package2和squashfs1.img ,再雙擊make-squashfs運行封包,生成新的install.img。看看新生成的install.img能不能正常刷機運行。如果不能正常刷機運行,上面的解包、修改和封包過程就不適合這個squashfs格式固件。
改進版中,除了強刷時/usr/local/etc的內容所見即所得,還增加了刷機變磚自動強刷恢復功能。如果用改進版修改的固件刷機後,開機停在開機畫面遙控器失靈成為磚機,可把官方固件或自己確信可以正常使用的其他固件install.img複製粘貼到u盤的根目錄,同時在u盤的根目錄新建一個空文件tag_install作為刷機標誌。然後把這個u盤插到播放機上,開機後等一會兒就自動開始刷機了,這時會自動刪除u盤中的刷機標誌tag_install,即使不拔掉u盤也不會重複刷機。刷機時播放機不需要有強刷開關,也不用TTL串口刷機線和超級終端,也不用telnet登錄播放機。
強刷時/usr/local/etc的內容,有2種情況。一種是把usr.local.etc.tar.bz2壓縮文件中的內容複製到/usr/local/etc,這種情況的特點是刷機過程中一般沒有2次啟動。另一種是把usr.local.etc.tar.bz2壓縮文件中的內容複製到/usr/local/etc後還要判斷/usr/local/etc中有沒有刷機標誌tag_xxxxxxxx,如tag_20110430。如果沒有刷機標誌,就要把其中有這個刷機標誌的某個目錄中的內容,如/opt/tmp中的內容,複製到/usr/local/etc,這種情況的特點是刷機過程中一般會有2次啟動。改進版強刷時的效果類似前一種情況,沒有2次啟動過程。當然,如果固件本身有把某個目錄中的內容複製到/usr/local/etc的過程,改進版解包封包固件後不會改變這個過程,這種固件刷機時的2次啟動過程不會改變。
你現在還覺得squashfs格式固件的解包、修改和封包過程很難嗎?其實難的不是squashfs格式固件的解包、封包,真正難的是要知道怎樣修改。更多的修改實例可以參考squashfs固件DIY、偶的海美迪560B安裝筆記。固件DIY的初學者還可以參考提綱攜領:高清機linux系統目錄結構及功能--基礎篇、開博爾H1283固件擴充及使用技巧。
留言列表