Openwrt sysupgrade.tar 格式固件打包/解包脚本

注意事项

  1. 此脚本适用于maclinux下使用请将ggrep替换为grep
  2. 请将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

猜你喜欢

转载自blog.csdn.net/u011570312/article/details/108257710