固件打包与解包
文件系统
squashfs
squashfs 是一个常见于嵌入式设备的只读文件系统格式。其只读的特性,使得我在与其打交道的过程中遇到了不少麻烦(如不支持 fanotify 内核接口、直接模拟固件时不可写入)。
对 squashfs 进行操作,少不了的工具肯定是 squashfs-tools。这里是它的 GitHub 地址:https://github.com/plougher/squashfs-tools
正经人直接 make
、 make install
。魔道人可以在软件源里搜索安装(应该不会没有):
关于 squashfs-tools 的使用方式,记录在了原仓库里的 USAGE 文件中:https://github.com/plougher/squashfs-tools/blob/master/USAGE
其中的主要命令行工具就是:
mksquashfs 用于打包 squashfs 格式的文件系统
unsquashfs 用于解包 squashfs 格式的文件系统镜像文件
cramfs
假设要解压的文件是LJD2440-II.cramfs
将 LJD2440-II.cramfs 拷贝到任意目录下
在该目录下建立两个文件:
mkdir roms mkdir tmp
将LJD2440-II.cramfs 挂接到 roms 目录:
mount LJD2440-II.cramfs roms –o loop
将 roms 目录下的内容压缩
tar –cvf 1.tar roms
这样将在 roms 的上一级目录产生一个 1.tar 的包将包解压到 tmp 目录下
umount roms
卸载挂载cd .
.进入上一级目录mv 1.tar tmp ; cd tmp ; tar –xvf 1.tar ;
将打包的根文件系统里的内容解压rm 1.tar
jffs2
挂载读取
使用 jefferson 解包
使用 jefferson 速度要远慢于直接挂载(60MB的jffs2文件直接跑炸了我的vultr皇帝机),且解出来的结果和挂载得到的结果不同,比较诡异,暂不明白原因。
最后更新于