admin管理员组

文章数量:1531303

2024年1月10日发(作者:)

在Windows中的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混合格式多核固件的解包、修改和封包过程改进版

在Windows中解包、修改和封包squashfs格式固件,可能遇到兼容性问题。要想有更好的兼容性,可以参考使用在Linux中的squashfs格式固件解包、修改和封包过程改进版中的方法。它们的过程完全一样,只是操作系统不同。实际过程做起来很简单,主要有以下几步:

1. 把要修改的squashfs格式固件复制粘贴到hdp文件夹;

2. 进到hdp文件夹,双击open-squashfs,自动生成解压文件夹install和squashfs-root;

3. 打开解压文件夹squashfs-root,相当于进到播放机的根目录,在其中根据需要修改;

4. 修改完解压文件夹squashfs-root后,回到hdp文件夹,双击make-squashfs,自动生成修改后的squashfs格式固件。

准备

下载附件,

(502 KB, 下载次数: 1051)

(502 KB, 下载次数: 1187)

(502 KB,

下载次数: 954)

(502 KB, 下载次数: 879)

(497.89 KB, 下载次数: 923)

,密码:hdpdiy。注意,全部分卷要放在同一个文件夹中才能解压。

解压后把文件夹hdp复制粘贴到Windows桌面(或其他磁盘目录)。

解包

打开hdp文件夹,把要修改的squashfs格式固件复制粘贴到hdp文件夹。鼠标双击open-squashfs解包要 修改的,自动生成两个解压文件夹install和squashfs-root,这样就可以在其中修改了。同时自动把修改前的 改为_old。

修改

打开解压后的文件夹squashfs-root,相当于进到播放机的根目录,我们可以根据需要在其中修改增加内容。例如,如果要修改 usr/local/bin/scripts中的rss文件,可以依次双击打开usr、local、bin、scripts,进到usr/local

/bin/scripts中,再选择要修改的文件进行修改。除非是固件程序本身功能上的要求,在修改时不用mount -o bind之类的命令绕来绕去,直接修改要修改的文件就可以了。现在修改squashfs格式固件就像修改yaffs格式固件一样方便。

如果只是小修小补,可用记事本修改后直接保存就可以了,但不能用写字板修改后保存,而且修改时还要很小心,不能随便回车换行等。如果修改比较大,修改时要注意不要改变文件原来的格式或属性,最好用UltraEdit之类的编辑软件来修改编辑。

固件解包后的2压缩文件中的内容,就是强刷升级固件后播放机/usr /local/etc的内容。要想修改强刷升级固件后播放机/usr/local/etc的内容,就要修改固件解包后的

2压缩文件中的内容。现在的改进版是可以直接在解压后的文件夹squashfs-rootusrlocal etc中修改,封包时把修改后的内容自动复制到2压缩文件中。强刷修改后的固件时,在播放机中/usr /local/etc目录所见即所得。

封包

修改完squashfs-root后,回到hdp文件夹。双击make-squashfs,自动生成修改后的squashfs格式 升级文件,同时自动删除前面解包时生成的解压文件夹squashfs-root和install。把新生成的 拖拽复制到u盘的根目录,就可以把u盘插到播放机刷机了。

说明

最后说明一下使用条件。上面的解包、修改和封包过程是参照通用固件V1.6写的。在suashfs格式的蓝钜DIY_T10S_1_3_1128和DIY_T10S_1_4_1214固件中 实际解包、修改和封包试用过。从压缩和解压方式来说,是两层结构。固件解包时是分两层解包的,外面的第一层用tar -xvpf命令解包,里面的第二层用unsquashfs命令解压。固件封包时也是相应的分两层封包的,里面的第二层用mksquashfs命令压缩,外 面的第一层用tar -cvpf命令封包。解包或封包时,相对于第一层,里面的第二层文件是package2/,文件夹名是package2,文件 名是 。大多数采用1073、1283或1185的播放机使用的squashfs格式固件都是这样的。如果实际使用的squashfs格式固件和这有差别,如第 二层的文件夹名不是package2,或者文件名不是 ,就要根据实际情况作一些修改。

第一次在Windows中解包、修改和封包某个播放机的squashfs格式固件时,可以把这个能正常刷机运行的 复制粘贴到hdp文件夹,双击open-squashfs解包,暂不做任何修改。这时可以在解包时生成的第一层解压文件夹 install查看一下,第二层的文件夹名是不是package2,文件名是不是 。如果不是,就不能直接采用上面的方法解包、修改和封包。如果文件夹名和文件名是package2和 ,再双击make-squashfs封包,生成修改后的升级文件,并复制粘贴到u盘的根目录,再把u盘插到播放机上,看看新生成的 能不能正常刷机运行。如果不能正常刷机运行,上面的解包、修改和封包过程就不适合这个squashfs格式固件。

新生成的不能正常刷机运行的情况,有时可能不一定是新生成的有问题,把u盘重新格式化FAT或FAT32,然后再把新生成的复制粘贴到u盘,可能就可以正常刷机了。

改进版中,除了强刷时/usr/local/etc的内容所见即所得,还增加了刷机变砖自动强刷恢复功能。 如果用改进版修改的固件刷机后,开机停在开机画面遥控器失灵成为砖机,可把官方固件或自己确信可以正常使用的其他固件复制粘贴到u 盘的根目录,同时在u盘的根目录新建一个空文件tag_install作为刷机标志。然后把这个u盘插到播放机上,开机后等一会儿就自动开始刷机了,这时 会自动删除u盘中的刷机标志tag_install,即使不拔掉u盘也不会重复刷机。刷机时播放机不需要有强刷开关,也不用TTL串口刷机线和超级终端, 也不用telnet登录播放机。

强刷时/usr/local/etc的内容,有2种情况。一种是把2压缩文件中的内容复制到/usr /local/etc,这种情况的特点是刷机过程中一般没有2次启动。另一种是把2

压缩文件中的内容复制到 /usr/local/etc后还要判断/usr/local/etc中有没有刷机标志tag_xxxxxxxx,如tag_20110430。如果没有 刷机标志,就要把其中有这个刷机标志的某个目录中的内容,如/opt/tmp中的内容,复制到/usr/local/etc,这种情况的特点是刷机过程中 一般会有2次启动。改进版强刷时的效果类似前一种情况,没有2次启动过程。当然,如果固件本身有把某个目录中的内容复制到/usr/local/etc的 过程,改进版解包封包固件后不会改变这个过程,这种固件刷机时的2次启动过程不会改变。

以前使用的在Windows中tar包压缩解压工具不能处理Linux中的符号链接,所以无法修改2压缩 文件中的内容。采用的修改方式是在解压后的文件夹squashfs-rootusrlocaletc中修改,封包时把修改后的内容复制压缩到 文件中。强刷修改后的固件时,再把修改后的内容复制到播放机的/usr/local/etc目录。在Windows中采用这种修 改方式,固件封包后2压缩文件中的内容没有修改,还是固件解包前的内容。

网友rocisky在跟帖35楼提供的在Windows中tar包压缩解压工具, 可以在Windows中处理Linux的符号链接。现在改进版使用了网友rocisky提供的这个在Windows中tar包压缩解压工具,改进版的修改 方式也可以像Linux中一样修改保存2压缩文件了。采用这种修改方式就如同在Linux中一样,固件封包后 2压缩文件中的内容已经修改,是固件修改后的内容。在反复试用这个改进版的过程中,随机的遇到过几次丢失 2压缩文件中的符号链接,但是这个问题在同样的条件下不能复现,到现在都不知道是什么原因。

你现在还觉得squashfs格式固件的解包、修改和封包过程很难吗?其实难的不是squashfs格式固件的解包、封包,真正难的是要知道怎样修改。更多的修改实例可以参考squashfs固件DIY、偶的海美迪560B安装笔记。固件DIY的初学者还可以参考提纲携领:高清机linux系统目录结构及功能--基础篇、开博尔H1283固件扩充及使用技巧。

本主题由 miclefang 于 2011-11-27 17:57 生成文章

本文标签: 修改固件封包解包格式