高清范

百度 论坛搜索
分享到:
发表于 2011-8-2 12:03 | 显示全部楼层 |阅读模式
本帖最后由 hdpdiy 于 2011-8-11 21:56 编辑

        在Linux中的squashfs格式固件解包、修改和封包过程改进版

        高清播放机的固件解包、修改和封包过程现在成为一个系列,都是完全鼠标图形化操作过程。这个系列中,单一格式固件的在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。


准备
        
        
游客,如果您要查看本帖隐藏内容请回复或点击我就看看,不说话!


Screenshot-2.jpg

        进到hdp文件夹,双击copy-tools,在显示的菜单中点击“在终端中运行” ,接着在显示的终端命令窗口中,输入安装Ubuntu10.04LTS时设置的密码后回车,这样就把tools中的unsquashfs和mksquashfs复制到了Ubuntu系统的/usr/bin中了。

        如果双击copy-tools,没有显示“在终端中运行”的运行菜单,可能是前面解压复制文件时改变了文件属性,这时可以鼠标右击文件(夹),在属性窗口中重新设置执行权限。

Screenshot-3.jpg

Screenshot-4.jpg

Screenshot-5.jpg

Screenshot-6.jpg


解包

        打开u盘,把要修改的squashfs格式固件install.img复制到hdp文件夹。然后回到hdp文件夹,双击open-squashfs,在显示的菜单中点击“运行”,自动生成两个解压文件夹install.img_FILES和squashfs-root。这样就可以在其中修改了。同时自动把修改前的install.img改为install.img_old。

Screenshot-7.jpg

Screenshot-8.jpg

Screenshot-9.jpg

Screenshot-10.jpg

Screenshot-11.jpg

Screenshot-12.jpg

Screenshot-13.jpg


修改

        打开解压后的文件夹squashfs-root,相当于进到播放机的根目录,我们可以根据需要在其中修改增加内容。例如,如果要修改usr/local/bin/scripts中的rss文件,可以依次双击打开usr、local、bin、scripts,进到usr/local/bin/scripts中,再选择要修改的文件进行修改。除非是固件程序本身功能上的要求,在修改时不用mount -o bind绑文件之类的命令绕来绕去,直接修改要修改的文件就可以了。现在修改squashfs格式固件就像修改yaffs格式固件一样方便。

Screenshot-14.jpg

Screenshot-15.jpg

Screenshot-16.jpg

Screenshot-17.jpg

Screenshot-18.jpg

Screenshot-19.jpg

Screenshot-20.jpg

Screenshot-21.jpg

        固件解包后的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盘插到播放机刷机了。

Screenshot-22.jpg

Screenshot-23.jpg

Screenshot-24.jpg

Screenshot-25.jpg

Screenshot-26.jpg


说明

        最后说明一下使用条件。下载附件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固件扩充及使用技巧

        
本帖评分记录RP值 金钱 收起 理由
lhq2277 + 5 精品文章
maxjojo + 2 + 2 讚!
总评分: RP值 + 2  金钱 + 7 
发表于 2011-8-2 12:05 | 显示全部楼层
支持老大!占个位置!
发表于 2011-8-2 12:41 | 显示全部楼层
看看,学习学习!
发表于 2011-8-2 17:50 | 显示全部楼层
原来是改进了usr.local.etc.tar.bz2修改方式啊。
 楼主| 发表于 2011-8-2 18:12 | 显示全部楼层
cxjt2002 发表于 2011-8-2 17:50
原来是改进了usr.local.etc.tar.bz2修改方式啊。

整个高清播放机固件解包、修改和封包过程系列都作了改进。固件修改后/usr/local/etc所见即所得,yaffs格式和y+s格式可以ftp播放机,增加刷机变砖自动强刷恢复功能。
发表于 2011-8-3 06:47 | 显示全部楼层
不错。
发表于 2011-8-3 07:15 | 显示全部楼层
学习了,有空也试试,楼主厉害!
发表于 2011-8-3 20:41 | 显示全部楼层
能否直接把命令贴一下
发表于 2011-8-4 10:28 | 显示全部楼层
在Linux中的squashfs格式固件解包、修改和封包过程改进版
发表于 2011-8-4 10:40 | 显示全部楼层
谢谢分享

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 注册加范币

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表