免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1424 | 回复: 0
打印 上一主题 下一主题

高清播放机 忆捷 M880 固件研究 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-21 17:12 |只看该作者 |倒序浏览
例行声明一下,没人给我技术支持,都是随便乱折腾。

比起拿烂大街optware教程献宝,下面的东西虽然没啥
技术含量不过还是很有诚意的


以下实际演示解包和重新打包的过程,基本也适用于其他的1073播放机。
涉及到符号链接和权限位,操作均在Linux下以root身份运行
虚拟机即可,我用的VMware+Debian
解压固件
0. 准备工作
下载附件,解压,上传到Linux的/usr/local/bin
chmod a+x /usr/local/bin/unyaffs
chmod a+x /usr/local/bin/mkyaffs2image
1. 把install.img上传到Linux机器上或者直接用Linux去它的官网下载
2. 把install.img放到/root/firmware目录下
接下来在/root/firmware 目录下再建三个子目录 install img1 img2 备用
cd /root/firmware
mkdir img1 img2 install
这样/root/firmware目录下有三个暂时为空的子目录 install img1 img2 和一个文件 install.img
3. 解压install.img
cd install
tar xvf ../install.img
这样就解开了install.img,所有内容在 /root/firmware/install 目录下
4. 接下来,进入install/package2,可以看到两个img文件,yaffs2_1.img 和 yaffs2_2.img。
yaffs2_1.img比较大,这是最终系统的/分区,yaffs2_2.img很小,对应未来的/usr/local/etc。
这两个文件是yaffs2格式的磁盘镜像文件。需要对它们进一步处理。
5. 继续解压yaffs2镜像文件,需要用到unyaffs这个工具
cd ~/firmware/img1
unyaffs ../install/package2/yaffs2_1.img
cd ~/firmware/img2
unyaffs ../install/package2/yaffs2_2.img
这样就把yaffs2_1.img和yaffs2_2.img的实际内容分别解压到了img1和img2目录
到此解压结束。
打包固件
6. 从img1和img2目录分别创建新的yaffs2文件镜像
需要用到另外一个工具,mkyaffs2image
cd ~/firmware
mkyaffs2image img1 yaffs2_1.img
mkyaffs2image img2 yaffs2_2.img
7. 覆盖掉原来的镜像文件
cd install/package2
mv ~/firmware/yaffs2_1.img .
mv ~/firmware/yaffs2_2.img .
8. 把install目录下的所有内容重新打包,生成新的镜像文件
cd ~/firmware/install
tar cvf ../install-new.img *
生成新的固件,位于/root/firmware,名为install-new.img
题外话,海信的那个比较杯具,/居然是squashfs的。
需要用squashfs的一套工具,思路类似,操作不能照搬
而且squashfs是个只读的文件系统...
简单的说一下固件的"定制"
像M880这种就很必要,至少得要开官方固件没开的telnet
ASUS的O!Play则官方就开了telnet,其实就可以凑合着用了
开telnet包括两个方面,一是打开telnet服务,二是给root设置密码
对M880,它的busybox已经带了telnetd只是没有默认运行,还是很省事的,
要不就得找个带telnetd的busybox或者上dropbear

前面已经说了怎么解压固件,在第五步之后,img1和img2目录已经有内容了
img1对应播放器的实际根目录
进入img1/etc目录(刷机后的/etc)
编辑inetd.conf,有一行
代码:#telnet stream  tcp  nowait  root    /usr/sbin/telnetd  telnetd
开头的#表示注解,去掉#就可以了,也就是改成
代码:telnet stream  tcp  nowait  root    /usr/sbin/telnetd  telnetd
这样telnetd就会开机运行了。
接下来要给root设置密码,编辑img2/passwd
原来的:
代码:root:$1$t8mJjTYe$65Ob2BiKYcNIrXV1VJ7OG1:0:0:root::/bin/sh
这个有两个问题,一是root的密码不知道,二是没给root指定HOME目录
改成
代码:root::0:0:root:/root:/bin/sh
设定root密码为空,HOME目录为/root,对应的,去img1目录下mkdir root(刷机后的/root)
要设置自定义密码,先在Linux上改一个然后复制/etc/passwd字段的对应内容过来,比如
代码:root:$1$FlXXJQ54$l.bhqOx.OHY6mR9nAuomF0:0:0:root:/root:/bin/sh
$1$FlXXJQ54$l.bhqOx.OHY6mR9nAuomF0就是加密后的toor。
这样设置之后,默认密码为toor(toor是root的反写,也是BackTrack的默认密码)。
当然设成空密码刷机之后再telnet进去用passwd改也是一样的,
只要别忘记就好。
分析文件结构,我觉得理论上只改img2/passwd就够了,
为了稳妥起见,img1/etc/passwd也不妨照改一份。
雅黑字体:
这个更简单了,在img1/usr/local/bin/Resource下有四个ttf文件,只有gkai00mp.ttf是实际字体,另外三个是指向它的符号链接。只要把雅黑(msyh.ttf)改名并覆盖掉原始的gkai00mp.ttf就可以了。
改完之后按首贴的方法重新打包img1和img2目录生成新的刷机固件即可。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/88438/showart_2127246.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP