注意事项
此脚本适用于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