在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格式固件install.img,可能遇到兼容性问题。要想有更好的兼容性,可以参考使用在Linux中的squashfs格式固件解包、修改和封包过程改进版中的方法。它们的过程完全一样,只是操作系统不同。实际过程做起来很简单,主要有以下几步:1.把要修改的squashfs格式固件install.img复制粘贴到hdp文件夹;2.进到hdp文件夹,双击open-squashfs,自动生成解压文件夹install和squashfs-root;3.打开解压文件夹squashfs-root,相当于进到播放机的根目录,在其中根据需要修改;4.修改完解压文件夹squashfs-root后,回到hdp文件夹,双击make-squashfs,自动生成修改后的squashfs格式固件install.img。准备下载附件,hdp.part01.rar(502KB,下载次数:1051)hdp.part02.rar(502KB,下载次数:1187)hdp.part03.rar(502KB,下载次数:954)hdp.part04.rar(502KB,下载次数:879)hdp.part05.rar(497.89KB,下载次数:923),密码:hdpdiy。注意,全部分卷要放在同一个文件夹中才能解压。解压后把文件夹hdp复制粘贴到Windows桌面(或其他磁盘目录)。解包打开hdp文件夹,把要修改的squashfs格式固件install.img复制粘贴到hdp文件夹。鼠标双击open-squashfs解包要修改的install.img,自动生成两个解压文件夹install和squashfs-root,这样就可以在其中修改了。同时自动把修改前的install.img改为install.img_old。修改打开解压后的文件夹squashfs-root,相当于进到播放机的根目录,我们可以根据需要在其中修改增加内容。例如,如果要修改usr/local/bin/scripts中的rss文件,可以依次双击打开usr、local、bin、scripts,进到usr/local/bin/scripts中,再选择要修改的文件进行修改。除非是固件程序本身功能上的要求,在修改时不用mount-obind之类的命令绕来绕去,直接修改要修改的文件就可以了。现在修改squashfs格式固件就像修改yaffs格式固件一样方便。如果只是小修小补,可用记事本修改后直接保存就可以了,但不能用写字板修改后保存,而且修改时还要很小心,不能随便回车换行等。如果修改比较大,修改时要注意不要改变文件原来的格式或属性,最好用UltraEdit之类的编辑软件来修改编辑。固件解包后的install\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升级文件,同时自动删除前面解包时生成的解压文件夹squashfs-root和install。把新生成的install.img拖拽复制到u盘的根目录,就可以把u盘插到播放机刷机了。说明最后说明一下使用条件。上面的解包、修改和封包过程是参照通用固件V1.6写的。在suashfs格式的蓝钜DIY_T10S_1_3_1128和DIY_T10S_1_4_1214固件中实际解包、修改和封包试用过。从压缩和解压方式来说,是两层结构。固件解包时是分两层解包的,外面的第一层用tar-xvpf命令解包,里面的第二层用unsquashfs命令解压。固件封包时也是相应的分两层封包的,里面的第二层用mksquashfs命令压缩,外面的第一层用tar-cvpf命令封包。解包或封包时,相对于第一层,里面的第二层文件是package2/squashfs1.img,文件夹名是package2,文件名是squashfs1.img。大多数采用1073、1283或1185的播放机使用的squashfs格式固件都是这样的。如果实际使用的squashfs格式固件和这有差别,如第二层的文件夹名不是package2,或者文件名不是squashfs1.img,就要根据实际情况作一些修改。第一次在Windows中解包、修改和封包某个播放机的squashfs格式固件install.img时,可以把这个能正常刷机运行的install.img复制粘贴到hdp文件夹,双击open-squashfs解包,暂不做任何修改。这时可以在解包时生成的第一层解压文件夹install查看一下,第二层的文件夹名是不是package2,文件名是不是squashfs1.img。如果不是,就不能直接采用上面的方法解包、修改和封包。如果文件夹名和文件名是package2和squashfs1.img,再双击make-squashfs封包,生成修改后的install.img升级文件,并复制粘贴到u盘的根目录,再把u盘插到播放机上,看看新生成的install.img能不能正常刷机运行。如果不能正常刷机运行,上面的解包、修改和封包过程就不适合这个squashfs格式固件。新生成的install.img不能正常刷机运行的情况,有时可能不一定是新生成的install.img有问题,把u盘重新格式化FAT或FAT32,然后再把新生成的install.img复制粘贴到u盘,可能就可以正常刷机了。改进版中,除了强刷时/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次启动过程不会改变。以前使用的在Windows中tar包压缩解压工具不能处理Linux中的符号链接,所以无法修改usr.local.etc.tar.bz2压缩文件中的内容。采用的修改方式是在解压后的文件夹squashfs-root\usr\local\etc中修改,封包时把修改后的内容复制压缩到squashfs.img文件中。强刷修改后的固件时,再把修改后的内容复制到播放机的/usr/local/etc目录。在Windows中采用这种修改方式,固件封包后usr.local.etc.tar.bz2压缩文件中的内容没有修改,还是固件解包前的内容。网友rocisky在跟帖35楼提供的在Windows中tar包压缩解压工具,可以在Windows中处理Linux的符号链接。现在改进版使用了网友rocisky提供的这个在Windows中tar包压缩解压工具,改进版的修改方式也可以像Linux中一样修改保存usr.local.etc.tar.bz2压缩文件了。采用这种修改方式就如同在Linux中一样,固件封包后usr.local.etc.tar.bz2压缩文件中的内容已经修改,是固件修改后的内容。在反复试用这个改进版的过程中,随机的遇到过几次丢失usr.local.etc.tar.bz2压缩文件中的符号链接,但是这个问题在同样的条件下不能复现,到现在都不知道是什么原因。你现在还觉得squashfs格式固件的解包、修改和封包过程很难吗?其实难的不是squashfs格式固件的解包、封包,真正难的是要知道怎样修改。更多的修改实例可以参考squashfs固件DIY、偶的海美迪560B安装笔记。固件DIY的初学者还可以参考提纲携领:高清机linux系统目录结构及功能--基础篇、开博尔H1283固件扩充及使用技巧。本主题由miclefang于2011-11-2717:57生成文章