Привет всем!
Благодарю за инструкцию по работе с прошивкой!
- Написал скрипт который автоматом распакует прошивку | +
- Code: Select all
#!/bin/sh
#
# Copyright (c) 2011 Rozhuk Ivan
# unpack realtec firmware
img_file=$1
dst_dir=$2
if [ -e "${img_file}" ]; then
echo "unpack fw image: ${img_file}"
else
echo "image file not found"
echo "usage: fw_unpack image_file dst_dir"
exit
fi
# recreate destination dir
echo "recreate destination dir..."
rm -rf ${dst_dir}
mkdir ${dst_dir}
# unpack image
echo "unpack fw image..."
cd ${dst_dir}
tar xf ${img_file}
# now unpack linux fw files
mkdir "${dst_dir}/package2/root"
# unpack root fs
cd "${dst_dir}/package2/root/"
if [ -e "${dst_dir}/package2/squashfs1.img" ]; then
echo "unpack root fs image - squashfs..."
unsquashfs -f -d "${dst_dir}/package2/root" "${dst_dir}/package2/squashfs1.img"
#rm -f "${dst_dir}/package2/squashfs1.img"
fi
if [ -e "${dst_dir}/package2/yaffs2_1.img" ]; then
echo "unpack root fs image - yaffs2..."
unyaffs "${dst_dir}/package2/yaffs2_1.img"
#rm -f "${dst_dir}/package2/yaffs2_1.img"
fi
if [ -e "${dst_dir}/package2/root.tar.bz2" ]; then
echo "unpack root fs image - tar.bz2 archive"
tar xf "${dst_dir}/package2/root.tar.bz2"
#rm -f "${dst_dir}/package2/root.tar.bz2"
fi
# unpack /usr/local/etc
# no squashfs, becouse /usr/local/etc must be RW fs
cd "${dst_dir}/package2/root/usr/local/etc/"
if [ -e "${dst_dir}/package2/usr.local.etc.tar.bz2" ]; then
echo "unpack /usr/local/etc fs image - tar.bz2 archive"
tar xf "${dst_dir}/package2/usr.local.etc.tar.bz2"
#rm -f "${dst_dir}/package2/usr.local.etc.tar.bz2"
fi
if [ -e "${dst_dir}/package2/yaffs2_2.img" ]; then
echo "unpack /usr/local/etc fs image - yaffs2"
unyaffs "${dst_dir}/package2/yaffs2_2.img"
#rm -f "${dst_dir}/package2/yaffs2_2.img"
fi
# all done
echo "fw image unpacked to: ${dst_dir}"
echo "DONE!"
Вызывать так: /fw/fw_unpack /fw/install.img /fw/tmp/unpacked
пути произвольные, unyaffs должна лежать в доступном месте.
Работает на фряхе и на линухе.
Скрипт распакует только саму прошивку, образ рута и образ с конфигами, он не распаковывает то что кто то дополнительно пожал в скваш и прописал в фстаб.
root.tar.bz2 - это я пытался задействовать возможность флешера самостоятельно создавать yaffs2 для рута из архива.