# /bin/sh modscripts() ( sed -n -e "s/^+\(.*\)/\1/p" <&2 && exit 1 ! mkdir -p "$MYDIR" && printf "Error creating working directory.\n\a" 1>&2 && exit 1 cd "$MYDIR" URL="http://ftp.avm.de/fritzbox/fritzbox-$MODEL/deutschland/fritz.os/FRITZ.Box_$MODEL-$VERSION.image" wget -q -O avm.tar $URL ! [ -s avm.tar ] && printf "Error loading firmware image: $URL\n\a" 1>&2 && exit 1 tar -x -f avm.tar -O ./var/tmp/kernel.image >kernel dd of=kernel.bin if=kernel bs=8 count=$(( ( $(stat -c %s kernel) / 8 ) - 1 )) 2>/dev/null rm kernel tar -x -f avm.tar -O ./var/tmp/filesystem.image >fs.sqfs ! [ -s fs.sqfs ] && printf "Error extracting filesystem image from firmware image.\n\a" 1>&2 && exit 1 ! [ -s kernel.bin ] && printf "Error extracting kernel file from firmware image.\n\a" 1>&2 && exit 1 git clone https://github.com/PeterPawn/YourFritz.git git clone https://github.com/PeterPawn/yf_bin.git git clone https://github.com/PeterPawn/modfs.git rm -rf YourFritz/bin ln -s ../yf_bin YourFritz/bin MAGIC=$(dd if=fs.sqfs count=4 bs=1 2>/dev/null) [ "$MAGIC" = "sqsh" ] && ENDIAN=be || ENDIAN=le sudo YourFritz/bin/squashfs/$(uname -m)/unsquashfs4-$ENDIAN -no-progress fs.sqfs sudo chown -R $(id | sed -n -e "s|uid=\([0-9]*\).*|\1|p"):$(id | sed -n -e "s|.*gid=\([0-9]*\).*|\1|p") squashfs-root/ rm fs.sqfs mkdir modfs/$MODEL cd modfs/ for modscript in $(modscripts); do ln -s ../$modscript $MODEL/ done ./run_modscripts ../squashfs-root/ $MODEL modrc=$? cd .. if [ "$modrc" -eq 0 ]; then YourFritz/bin/squashfs/$(uname -m)/mksquashfs4-$ENDIAN squashfs-root/ fs.sqfs -all-root -no-progress cat kernel.bin fs.sqfs >new.image ls -l else printf "At least one 'modscript' reported an error, packing skipped.\n\a" 1>&2 fi exit $modrc