查看文章 |
欢迎转载,但是请保持完整。 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是个只读的文件系统...
简单的说一下固件的"定制" 代码:
#telnet stream tcp nowait root /usr/sbin/telnetd telnetd 开头的#表示注解,去掉#就可以了,也就是改成 代码:
telnet stream tcp nowait root /usr/sbin/telnetd telnetd 这样telnetd就会开机运行了。 代码:
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) 代码:
root:$1$FlXXJQ54$l.bhqOx.OHY6mR9nAuomF0:0:0:root:/root:/bin/sh $1$FlXXJQ54$l.bhqOx.OHY6mR9nAuomF0就是加密后的toor。 |



