注意事项
- 此脚本适用于
mac
,linux
下使用请将ggrep
替换为grep
- 请将
MKSQSHFS4
变量更改为自己的openwrt目录相应位置
使用方法
./modify.sh e openwrt-xxx-xxx-xxx-squashfs-sysupgrade.tar
./modify.sh c repack.tar
#!/bin/sh
sudo echo "Starting..."
MKSQSHFS4='./openwrt/staging_dir/host/bin/mksquashfs4'
case "$1" in
'extract'|'e')
rm -rf oldtar
mkdir oldtar
cd oldtar
tar -xvf ../$2
cd ../
offset1=`ggrep -oba sysupgrade-wndr4300/root $2 | ggrep -oP '[0-9]*(?=:sysupgrade-wndr4300/root)'`
dd if=$2 of=./oldtar/head.bin bs=1 ibs=1 count=$offset1
sudo rm -rf squashfs-root 2>&1
sudo unsquashfs -d squashfs-root ./oldtar/sysupgrade-*/root
;;
'create'|'c')
cd oldtar
rm -f ./sysupgrade-*/root
board=$(ls -l | grep drwxr-xr-x | cut -f4 -d '-')
sudo $MKSQSHFS4 ../squashfs-root ./sysupgrade-$board/root -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -b 256k -processors 1
sudo chown $USER ./sysupgrade-$board/root
rm -f ../$2
cp head.bin ../$2
tar -rvf ../$2 sysupgrade-$board/root
tar -rvf ../$2 sysupgrade-$board/kernel
;;
*)
echo 'run
"modify.sh extract firmware.tar"
You will find folder "oldtar" and folder "squashfs-root".
Modify "squashfs-root" as you like,after everything is done,run
"modify.sh create newfirmware.tar"
And you will get a modified firmware named newfirmware.tar.
'
;;
esac