参考之前的装WSL博文, 装Debian,改国内源
参考 恩山帖子
metadata补充
WSL中的Debian补充安装python和binwalk,多Python版本, Install Binwalk
sudo apt-get update
sudo apt -y install python3 python3-pip
sudo apt -y install binwalk
解包
sudo binwalk -e 固件名.bin
,完成之后会在工作路径下./_固件名.bin.extracted/squashfs-root
中看到解包的文件目录,想要修改的东西都在这, 可以将squashfs-root
剪切上移一级目录,方便后面的操作
# 回显信息
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------
0 0x0 uImage header, header size: 64 bytes, header CRC: 0xBDDF7A07, created: 2023-01-07 19:57:48, image size: 2928151 bytes, Data Address: 0x80001000, Entry Point: 0x80001000, data CRC: 0xADA3A350, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "MIPS OpenWrt Linux-5.10.161"
64 0x40 LZMA compressed data, properties: 0x6D, dictionary size: 2097152 bytes, uncompressed size: 9708380 bytes
2928215 0x2CAE57 Squashfs filesystem, little endian, version 4.0, compression:xz, size: 11737178 bytes, 2643 inodes, blocksize: 262144 bytes, created: xxxx-xx-xx xx:xx:xx
可以修改的是第3个分区Squashfs filesystem
, 前面两个不能动的需要先切片保存:
sudo dd if=k2p_old.bin of=head.bin bs=1 skip=0 count=2928215
得到head.bin
打包
修改完成后,sudo mksquashfs ./squashfs-root rootfs.bin -comp xz
打包得到rootfs.bin
文件,和切出来的head.bin
文件合并得到新固件:
sudo cat head.bin rootfs.bin > k2p_new.bin
这样的固件在web端可能无法刷写,需要补充metadata
数据,参考
从旧固件提取k2p.meta
:
sudo ./fwtool -i ./k2p.meta ./k2p_old.bin
给新固件补充 metadata
:
sudo ./fwtool -I ./k2p.meta ./k2p_new.bin
mksquashfs
和fwtool
可以下载相应版本的OpenWrt SDK, 如22.03.3
压缩包中路径:staging_dir\host\bin