1

Add original scripts

This commit is contained in:
eleksir
2016-09-04 22:20:40 +03:00
commit 8e3af042d2
128 changed files with 19003 additions and 0 deletions

650
update_img.sh Executable file
View File

@@ -0,0 +1,650 @@
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
PIC_RAW="/sbin/pic_raw"
TMP_UPDATE_FLAG="/tmp/update_flag"
UPDATE_PROCESS="/tmp/update_process"
UPDATE_FW_PROCESS="/tmp/update_fw_process"
UPDATE_FOLDER="/mnt/update"
BLOCK_SIZE=512
# check if the HAL subsystem exist
if [ -x /sbin/hal_app ]; then
BOOT_DEV=$(/sbin/hal_app --get_boot_pd port_id=0)
EXT_ROOT="/dev/md13"
else
BOOT_DEV="/dev/sdx"
EXT_ROOT="/dev/sda4"
fi
PURE_BOOT_DEV=$(/bin/echo $BOOT_DEV | /bin/cut -f3 -d/)
FLASH_BOOT=${BOOT_DEV}1
FLASH_RFS1=${BOOT_DEV}2
FLASH_RFS2=${BOOT_DEV}3
FLASH_BOOT_MP="/root/FLASH_BOOT"
FLASH_RFS1_MP="/root/FLASH_RFS1"
FLASH_RFS2_MP="/root/FLASH_RFS2"
FLASH_RFS1_SIZE=52560
#FLASH_SIZE_ARM=mtd1+mtd2+mtd3
FLASH_SIZE_ARM=14336
FLASH_SIZE_PPC=14336
FLASH_RFS1_SIZE_X59=230188
FLASH_RFS1_BLOCK_X59=484608
FLASH_RFS1_SIZE_X59H=110000
FLASH_RFS1_BLOCK_X59H=235008
FLASH_RFS_ERR=0
DEFAULT_CFG_FILE="/etc/config/uLinux.conf"
IMG_FILE_LIST="bzImage initrd.boot rootfs2.bz rootfs_ext.tgz"
MNT_ROOTFS2_TMP="/rootfs2_tmp"
FLASH_KERNEL="/dev/mtdblock1"
FLASH_ROOTFS_BASIC="/dev/mtdblock2"
FLASH_ROOTFS2="/dev/mtdblock3"
FLASH_FDT="/dev/mtdblock6"
IMG_FILE_LIST_ARM="uImage initrd.boot rootfs2.img"
IMG_FILE_LIST_PPC="uImage initrd.uboot rootfs2.bz canyonlands_qnap.dts"
BOOT_CONF=`/bin/cat /etc/default_config/BOOT.conf 2>/dev/null`
FLASH_RFS1_BLOCK=`/bin/cat /sys/block/${PURE_BOOT_DEV}/${PURE_BOOT_DEV}2/size 2>/dev/null`
Project_Name=`/sbin/getcfg Project Name -d null -f /var/default`
TMP_CONFIG="/tmp/nasconfig_tmp"
MIN_FSIZE=200 #minimum config file size required
do_beep()
{
if [ x`/sbin/getcfg Misc "Buzzer Quiet Enable"` != "xTRUE" ]; then
# check if the HAL subsystem exist
if [ -x /sbin/hal_app ]; then
/sbin/hal_app --se_buzzer enc_id=0,mode=1
sleep 1
/sbin/hal_app --se_buzzer enc_id=0,mode=1
sleep 1
/sbin/hal_app --se_buzzer enc_id=0,mode=1
else
${PIC_RAW} 81; sleep 1; ${PIC_RAW} 81; sleep 1; ${PIC_RAW} 81
fi
fi
}
check_tune_config_partition()
{
echo check_tune_config_partition $1 $2 >> /tmp/check.log
NAS_CONFIG_BAK=/tmp/nas_config.tgz
NAS_CONFIG_IMG=/tmp/nas_config.img
TMP_MP=/tmp/nasconfig_mp
NAS_CONFIG=$1
NAS_CONFIG_SIZE=$2
[ -d $TMP_MP ] || /bin/mkdir $TMP_MP
/bin/mount $NAS_CONFIG $TMP_MP -o ro
CFG_SIZE=`/bin/df -k | /bin/grep "$NAS_CONFIG" | /bin/awk '{print $2}'`
echo Current NAS config formatted size is $CFG_SIZE >> /tmp/check.log
if [ $CFG_SIZE -ge $NAS_CONFIG_SIZE ]; then
#Backup /tmp/mp6
cd $TMP_MP
/bin/tar czf $NAS_CONFIG_BAK *
RET=$?
cd /
/bin/umount $TMP_MP
echo Backup config_partition return $RET >> /tmp/check.log
if [ $RET = 0 ]; then
if [ -f /opt/nasconfig_fs.img.tgz ]; then
echo Use /opt/nasconfig_fs.img.tgz >> /tmp/check.log
/bin/tar xzf /opt/nasconfig_fs.img.tgz -O > $NAS_CONFIG
RET=$?
else
echo Create a image with size $NAS_CONFIG_SIZE >> /tmp/check.log
/bin/dd if=/dev/zero of=$NAS_CONFIG_IMG bs=1k count=$NAS_CONFIG_SIZE
RET=$?
if [ $RET = 0 ]; then
echo Fine tune config partition >> /tmp/check.log
/sbin/mke2fs -F -v -m0 -b 1024 -I 128 $NAS_CONFIG_IMG
/bin/dd if=$NAS_CONFIG_IMG of=$NAS_CONFIG bs=1k count=$NAS_CONFIG_SIZE
fi
/bin/rm $NAS_CONFIG_IMG
fi
echo Dump config_partition image return $RET >> /tmp/check.log
if [ $RET = 0 ]; then
/bin/mount $NAS_CONFIG $TMP_MP
/bin/tar xzf $NAS_CONFIG_BAK -C $TMP_MP
/bin/umount $TMP_MP
fi
fi
/bin/rm $NAS_CONFIG_BAK
fi
/bin/umount $TMP_MP
/sbin/tune2fs -i 0 -c 0 ${NAS_CONFIG}
/bin/sync
}
remove_update()
{
for i in $IMG_FILE_LIST
do
if [ -f "$UPDATE_FOLDER/$i" ]; then
/bin/rm -f ${UPDATE_FOLDER}/${i}* 2>/dev/null
fi
done
/bin/rm -f ${path_name}* 2>>/dev/null
if [ $1 = 1 ]; then
/bin/rm -rf ${UPDATE_FOLDER}/*
fi
[ -d "/mnt/HDA_ROOT/update_pkg" ] && /bin/rm -f /mnt/HDA_ROOT/update_pkg/*.qfix 2>>/dev/null
[ ! -d "/mnt/HDA_ROOT/update_pkg/.qfix" ] || /bin/rm -rf /mnt/HDA_ROOT/update_pkg/.qfix 2>>/dev/null
[ ! -f /etc/config/qfix.conf ] || /bin/rm -f /etc/config/qfix.conf 2>>/dev/null
/bin/grep "/dev/ram2" /proc/mounts | /bin/grep "${UPDATE_FOLDER} " 2>/dev/null 1>/dev/null
if [ $? = 0 ]; then
/bin/umount /dev/ram2 2>/dev/null
readlink ${UPDATE_FOLDER} 1>/dev/null 2>/dev/null
[ $? != 0 ] || /bin/rm -rf ${UPDATE_FOLDER}
fi
}
get_new_ver()
{
local filename=$path_name
set -- `ls -l "$path_name"`
local pos=`expr $5 - 48`
/bin/dd if=$filename of=${UPDATE_FOLDER}/newver skip=$pos bs=1 count=16
[ $? = 0 ] && cat ${UPDATE_FOLDER}/newver || echo ""
}
do_exit()
{
local ret=0
local old_ver=`/sbin/getcfg System Version`
local new_ver=`/bin/cat ${UPDATE_FOLDER}/newver`
case $1 in
0)#normal exit
ret=0
[ ! -z $new_ver ] \
&& /sbin/write_log "[Firmware Upgrade] System updated successfully from $old_ver to $new_ver." 4 \
|| /sbin/write_log "[Firmware Upgrade] System updated successfully." 4
;;
2)#size check failed
echo -2 > ${UPDATE_PROCESS}
echo -2 > ${UPDATE_FW_PROCESS}
ret=1
[ ! -z $new_ver ] \
&& /sbin/write_log "[Firmware Upgrade] System update failed from $old_ver to $new_ver due to update image size error." 1 \
|| /sbin/write_log "[Firmware Upgrade] System update failed." 1
;;
3)#CRC check failed
echo -3 > ${UPDATE_PROCESS}
echo -3 > ${UPDATE_FW_PROCESS}
ret=1
[ ! -z $new_ver ] \
&& /sbin/write_log "[Firmware Upgrade] System update failed from $old_ver to $new_ver." 1 \
|| /sbin/write_log "[Firmware Upgrade] System update failed." 1
;;
4)#Flash failed
echo -4 > ${UPDATE_PROCESS}
echo -4 > ${UPDATE_FW_PROCESS}
ret=1
[ ! -z $new_ver ] \
&& /sbin/write_log "[Firmware Upgrade] System update failed from $old_ver to $new_ver due to flash read/write error." 1 \
|| /sbin/write_log "[Firmware Upgrade] System update failed due to flash read/write error." 1
;;
7)
echo -7 > ${UPDATE_PROCESS}
echo -7 > ${UPDATE_FW_PROCESS}
ret=1
/sbin/write_log "[Firmware Upgrade] System update failed. The system is being shut down. Please try again after the system started." 1
;;
*)
echo -5 > ${UPDATE_PROCESS}
echo -5 > ${UPDATE_FW_PROCESS}
ret=1
[ ! -z $new_ver ] \
&& /sbin/write_log "[Firmware Upgrade] System update failed from $old_ver to $new_ver." 1 \
|| /sbin/write_log "[Firmware Upgrade] System update failed." 1
;;
esac
if [ $ret = 0 ]; then
remove_update 2
else
remove_update 1
fi
/bin/mv /usr/local/sbin/blkid_ /usr/local/sbin/blkid 2>/dev/null
/sbin/setcfg -e System "QPKG CENTER XML"
exit $ret
}
check_sum()
{
if [ ! -f $1 ] || [ ! -f $2 ];then
echo "${1} or ${2} not found."
return 1
fi
local file_cksum=`/sbin/cksum $1`
local file_crc=`echo $file_cksum | cut -d ' ' -f 1`
local file_size=`echo $file_cksum | cut -d ' ' -f 2`
local cksum_cksum=`cat $2`
local cksum_crc=`echo $cksum_cksum | cut -d ' ' -f 1`
local cksum_size=`echo $cksum_cksum | cut -d ' ' -f 2`
if [ $file_crc = $cksum_crc ] && [ $file_size = $cksum_size ]; then
return 0
fi
return 1
}
size_check()
{
local sizetotal=0
local sizekb=0
for i in $IMG_FILE_LIST
do
if [ -f "$UPDATE_FOLDER/$i" ]; then
sizekb=`/usr/bin/du -k "$UPDATE_FOLDER/$i" | /bin/cut -f 1 -d '/'`
sizetotal=`/usr/bin/expr $sizetotal + $sizekb`
fi
done
[ $sizetotal -le $FLASH_RFS1_SIZE ] || do_exit 2
return 0
}
size_check_arm()
{
local mtd1_size=2097152
local mtd2_size=9437184
local mtd3_size=3145728
for i in $IMG_FILE_LIST
do
if [ -f "$UPDATE_FOLDER/$i" ] && [ -f "$UPDATE_FOLDER/${i}.cksum" ]; then
if [ ${i} = uImage ]; then
mtdsize=$mtd1_size
elif [ ${i} = initrd.boot ]; then
mtdsize=$mtd2_size
elif [ ${i} = rootfs2.img ]; then
mtdsize=$mtd3_size
else
break
fi
/bin/echo -n "Check $i size ... "
tmpsize=`/bin/cat "$UPDATE_FOLDER/${i}.cksum" | /bin/cut -d ' ' -f 2`
if [ -z "$tmpsize" ] || [ $tmpsize -gt $mtdsize ]; then
/bin/echo Error
do_exit 2
fi
/bin/echo Pass
fi
done
return 0
}
CRC_check()
{
for i in $IMG_FILE_LIST rootfs_ext.tgz qpatch.tgz
do
if [ -f "$UPDATE_FOLDER/$i" ]; then
check_sum "$UPDATE_FOLDER/$i" "$UPDATE_FOLDER/$i.cksum"
[ $? = 0 ] || do_exit 3
fi
done
return 0
}
DOM_CRC_check()
{
for i in $IMG_FILE_LIST
do
/bin/echo -n "Checking ${i} ... "
check_sum "${1}/boot/$i" "$UPDATE_FOLDER/$i.cksum"
if [ $? != 0 ]; then
/bin/umount "${1}" 1>>/dev/null 2>>/dev/null
/bin/echo "Failed."
do_exit 4
fi
/bin/echo "ok"
done
return 0
}
set_status_flag()
{
/bin/mount | /bin/grep $EXT_ROOT 1>>/dev/null 2>>/dev/null
if [ $? = 0 ]; then
echo $1 > $TMP_UPDATE_FLAG
# 402653200 = 384M + 16 bytes = 384 * 1024 * 1024 + 16
/bin/dd if=$TMP_UPDATE_FLAG of=$EXT_ROOT seek=402653200 bs=1 count=1
/bin/rm -f $TMP_UPDATE_FLAG
fi
}
refresh_flash_config_file()
{
[ -d $TMP_CONFIG ] || /bin/mkdir $TMP_CONFIG
if [ "x${BOOT_CONF}" = "xTS-NASARM" ]; then
/bin/mount /dev/mtdblock5 $TMP_CONFIG
elif [ "x${BOOT_CONF}" = "xTS-NASPPC" ]; then
/bin/mount /dev/mtdblock5 $TMP_CONFIG
else
/bin/mount ${BOOT_DEV}6 $TMP_CONFIG
fi
[ ! -f ${TMP_CONFIG}/system.map.key ] || rm -f ${TMP_CONFIG}/system.map.key
[ ! -f ${TMP_CONFIG}/smb.conf ] || rm -f ${TMP_CONFIG}/smb.conf
[ ! -f ${TMP_CONFIG}/smb.conf.cksum ] || rm -f ${TMP_CONFIG}/smb.conf.cksum
/bin/umount $TMP_CONFIG
/bin/touch /tmp/donotrecover
}
img_update()
{
/bin/grep ram2 /proc/mounts 2>/dev/null 1>/dev/null
if [ $? = 0 ]; then
BLOCK_SIZE=2
fi
[ -d ${FLASH_BOOT_MP} ] || /bin/mkdir ${FLASH_BOOT_MP}
[ -d ${FLASH_RFS1_MP} ] || /bin/mkdir ${FLASH_RFS1_MP}
[ -d ${FLASH_RFS2_MP} ] || /bin/mkdir ${FLASH_RFS2_MP}
echo "Update RFS1..."
echo 1 > ${UPDATE_PROCESS}
echo 1 > ${UPDATE_FW_PROCESS}
/bin/mount | /bin/grep "${FLASH_RFS1}"
[ $? != 0 ] || /bin/umount ${FLASH_RFS1}
/sbin/mke2fs -m0 -F -b 1024 -I 128 ${FLASH_RFS1}
/bin/sync
sleep 1
/bin/mount ${FLASH_RFS1} ${FLASH_RFS1_MP}
if [ $? = 0 ]; then
[ -d ${FLASH_RFS1_MP}/boot ] || /bin/mkdir ${FLASH_RFS1_MP}/boot
[ -f ${UPDATE_FOLDER}/bzImage ] && /bin/cp ${UPDATE_FOLDER}/bzImage* ${FLASH_RFS1_MP}/boot
[ -f ${UPDATE_FOLDER}/initrd.boot ] && /bin/cp ${UPDATE_FOLDER}/initrd.boot* ${FLASH_RFS1_MP}/boot
[ -f ${UPDATE_FOLDER}/rootfs2.bz ] && /bin/cp ${UPDATE_FOLDER}/rootfs2.bz* ${FLASH_RFS1_MP}/boot
[ -f ${UPDATE_FOLDER}/rootfs_ext.tgz ] && /bin/cp ${UPDATE_FOLDER}/rootfs_ext.tgz* ${FLASH_RFS1_MP}/boot
if [ $FLASH_RFS1_SIZE = $FLASH_RFS1_SIZE_X59 -o $FLASH_RFS1_SIZE = $FLASH_RFS1_SIZE_X59H ] && [ -f ${UPDATE_FOLDER}/qpkg.tar ]; then
check_sum "$UPDATE_FOLDER/qpkg.tar" "$UPDATE_FOLDER/qpkg.tar.cksum"
[ $? = 0 ] && /bin/cp ${UPDATE_FOLDER}/qpkg.tar* ${FLASH_RFS1_MP}/boot
touch ${UPDATE_FOLDER}/update_qpkg_f
fi
else
/sbin/write_log "A read/write error occurred on the first boot partition of the flash disk during system update." 1
FLASH_RFS_ERR=1
fi
/bin/sync
[ ${FLASH_RFS_ERR} = 0 ] && DOM_CRC_check "${FLASH_RFS1_MP}"
/bin/umount ${FLASH_RFS1} 1>>/dev/null 2>>/dev/null
[ ${FLASH_RFS_ERR} = 0 ] || do_exit 4
/bin/sleep 2
echo "Update RFS2..."
echo 2 > ${UPDATE_PROCESS}
echo 2 > ${UPDATE_FW_PROCESS}
/bin/mount | /bin/grep "${FLASH_RFS2}"
[ $? != 0 ] || /bin/umount ${FLASH_RFS2}
[ ${FLASH_RFS_ERR} = 0 ] && /sbin/mke2fs -m0 -F -b 1024 -I 128 ${FLASH_RFS2}
/bin/sync
sleep 1
/bin/mount ${FLASH_RFS2} ${FLASH_RFS2_MP}
if [ $? = 0 ] && [ ${FLASH_RFS_ERR} = 0 ]; then
[ -d ${FLASH_RFS2_MP}/boot ] || /bin/mkdir ${FLASH_RFS2_MP}/boot
[ -f ${UPDATE_FOLDER}/bzImage ] && /bin/cp ${UPDATE_FOLDER}/bzImage* ${FLASH_RFS2_MP}/boot
[ -f ${UPDATE_FOLDER}/initrd.boot ] && /bin/cp ${UPDATE_FOLDER}/initrd.boot* ${FLASH_RFS2_MP}/boot
[ -f ${UPDATE_FOLDER}/rootfs2.bz ] && /bin/cp ${UPDATE_FOLDER}/rootfs2.bz* ${FLASH_RFS2_MP}/boot
[ -f ${UPDATE_FOLDER}/rootfs_ext.tgz ] && /bin/cp ${UPDATE_FOLDER}/rootfs_ext.tgz* ${FLASH_RFS2_MP}/boot
if [ $FLASH_RFS1_SIZE = $FLASH_RFS1_SIZE_X59 -o $FLASH_RFS1_SIZE = $FLASH_RFS1_SIZE_X59H ] && [ -f ${UPDATE_FOLDER}/qpkg.tar ]; then
check_sum "$UPDATE_FOLDER/qpkg.tar" "$UPDATE_FOLDER/qpkg.tar.cksum"
[ $? = 0 ] && /bin/cp ${UPDATE_FOLDER}/qpkg.tar* ${FLASH_RFS2_MP}/boot
touch ${UPDATE_FOLDER}/update_qpkg_f
fi
else
/sbin/write_log "A read/write error occurred on the second boot partition of the flash disk during system update." 1
[ ${FLASH_RFS_ERR} = 0 ] || FLASH_RFS_ERR=2
fi
/bin/sync
/bin/umount ${FLASH_RFS2}
# /usr/bin/readlink /usr 1>>/dev/null 2>>/dev/null
# if [ $? = 0 ]; then
# [ -f ${UPDATE_FOLDER}/qpatch.tgz ] && /bin/tar -xzf ${UPDATE_FOLDER}/qpatch.tgz -C /
# fi
/bin/sleep 3
[ ${FLASH_RFS_ERR} = 0 ] || do_exit 4
set_status_flag 1
refresh_flash_config_file
echo "Update Finished."
echo 3 > ${UPDATE_FW_PROCESS}
/bin/touch /etc/config/update_fw_ok
return 0
}
# $1: Kernel Image
# $2: Basic RootFS
# $3: Basic RootFS2
# $4: ARM: Ignore, PPC: FDT blob
img_update_16M()
{
/bin/grep ram2 /proc/mounts 2>/dev/null 1>/dev/null
if [ $? = 0 ]; then
BLOCK_SIZE=2
fi
/bin/echo 1 > ${UPDATE_PROCESS}
/bin/echo 1 > ${UPDATE_FW_PROCESS}
if [ -x /sbin/badblocks ]; then
/bin/echo "Check Flash ROM"
/sbin/badblocks ${FLASH_KERNEL} 1>/dev/null 2>/dev/null
[ $? = 0 ] || do_exit 4
/sbin/badblocks ${FLASH_ROOTFS_BASIC} 1>/dev/null 2>/dev/null
[ $? = 0 ] || do_exit 4
/sbin/badblocks ${FLASH_ROOTFS2} 1>/dev/null 2>/dev/null
[ $? = 0 ] || do_exit 4
fi
/bin/echo "Update Kernel ..."
/bin/dd if=${UPDATE_FOLDER}/${1} of=${FLASH_KERNEL} bs=${BLOCK_SIZE} 2>/dev/null
if [ $? != 0 ]; then
#try again
/bin/dd if=${UPDATE_FOLDER}/${1} of=${FLASH_KERNEL} bs=${BLOCK_SIZE}
[ $? = 0 ] || do_exit 4
fi
/bin/echo "Update Basic RootFS ..."
/bin/echo 2 > ${UPDATE_PROCESS}
/bin/echo 2 > ${UPDATE_FW_PROCESS}
/bin/dd if=${UPDATE_FOLDER}/${2} of=${FLASH_ROOTFS_BASIC} bs=${BLOCK_SIZE} 2>/dev/null
if [ $? != 0 ]; then
/bin/dd if=${UPDATE_FOLDER}/${2} of=${FLASH_ROOTFS_BASIC} bs=${BLOCK_SIZE}
[ $? = 0 ] || do_exit 4
fi
/bin/echo "Update Basic RootFS2 ..."
/bin/dd if=${UPDATE_FOLDER}/${3} of=${FLASH_ROOTFS2} bs=${BLOCK_SIZE} 2>/dev/null
if [ $? != 0 ]; then
/bin/dd if=${UPDATE_FOLDER}/${3} of=${FLASH_ROOTFS2} bs=${BLOCK_SIZE}
[ $? = 0 ] || do_exit 4
fi
if [ x${4} != x ]; then
/bin/echo "Update Kernel Device Tree Blob ..."
/bin/cp ${UPDATE_FOLDER}/${4} ${FLASH_FDT}
fi
set_status_flag 1
refresh_flash_config_file
echo "Update Finished."
echo 3 > ${UPDATE_FW_PROCESS}
/bin/touch /etc/config/update_fw_ok
return 0
}
config_add_endflag()
{
ISCSI_CONFIG=/etc/config/iscsi_trgt.conf
/bin/grep "\[END_FLAG\]" $DEFAULT_CFG_FILE 1>>/dev/null 2>>/dev/null
if [ $? != 0 ] ; then
[ `/sbin/getcfg Misc Configured -u -d FALSE` = TRUE ] && /bin/echo "[END_FLAG]" >> $DEFAULT_CFG_FILE
fi
#also check/backup configs
if [ -x /usr/bin/du ] && [ -f $ISCSI_CONFIG ]; then
conf_size=`/usr/bin/du -b $ISCSI_CONFIG | /bin/awk '{print $1}'`
if [ ! -z "$conf_size" ] && [ "$conf_size" -ge $MIN_FSIZE ]; then
[ -f ${ISCSI_CONFIG}.last ] || /bin/cp $ISCSI_CONFIG ${ISCSI_CONFIG}.last
fi
fi
/bin/sync
return 0
}
change_pm_cmd()
{
/bin/touch /sbin/qpm.sh
/bin/chmod 755 /sbin/qpm.sh
/bin/ln -sf /sbin/qpm.sh /sbin/poweroff
/bin/ln -sf /sbin/qpm.sh /sbin/halt
/bin/ln -sf /sbin/qpm.sh /sbin/reboot
/bin/ln -sf /bin/busybox /root/reboot
/bin/ln -sf /bin/busybox /root/poweroff
/bin/ln -sf /bin/busybox /root/halt
/bin/echo -e "#!/bin/sh
/bin/sleep 5
/bin/ps | /bin/grep \"/etc/init.d/update.sh\" | /bin/grep -v grep 1>>/dev/null 2>>/dev/null
[ \$? != 0 ] || exit 1
/root/\`/usr/bin/basename \${0}\`
exit 0" > /sbin/qpm.sh
/bin/chmod 755 /sbin/qpm.sh
}
recover_pm_cmd()
{
/bin/ln -sf /sbin/busybox /sbin/poweroff
/bin/ln -sf /sbin/busybox /sbin/halt
/bin/ln -sf /sbin/busybox /sbin/reboot
}
path_name=$1
if [ "x${BOOT_CONF}" = "xTS-NASARM" ]; then
IMG_FILE_LIST=$IMG_FILE_LIST_ARM
FLASH_RFS1_SIZE=$FLASH_SIZE_ARM
elif [ "x${BOOT_CONF}" = "xTS-NASPPC" ]; then
IMG_FILE_LIST=$IMG_FILE_LIST_PPC
FLASH_RFS1_SIZE=$FLASH_SIZE_PPC
fi
now_process=`/bin/cat /tmp/update_process 2>>/dev/null`
if [ ! -z "$now_process" ] && [ $now_process = 3 ]; then
/bin/rm -f /tmp/update_process 2>/dev/null
[ ! -f /tmp/do_reboot ] || /bin/rm -f /tmp/do_reboot
/bin/echo "/tmp/update_process is removed. Please try again."
do_exit 7
fi
[ -x /usr/bin/basename ] || /bin/ln -sf /bin/busybox /usr/bin/basename
/bin/ps | /bin/grep "/sbin/reboot" | /bin/grep -v grep 1>>/dev/null 2>>/dev/null
doing_reboot=$?
/bin/ps | /bin/grep "/sbin/poweroff" | /bin/grep -v grep 1>>/dev/null 2>>/dev/null
doing_poweroff=$?
/bin/ps | /bin/grep "/sbin/halt" | /bin/grep -v grep 1>>/dev/null 2>>/dev/null
doing_halt=$?
/bin/ps | /bin/grep "/etc/init.d/rcK" | /bin/grep -v grep 1>>/dev/null 2>>/dev/null
doing_rcK=$?
if [ $doing_reboot = 0 ] || [ $doing_poweroff = 0 ] || [ $doing_halt = 0 ] || [ $doing_rcK = 0 ]; then
/bin/rm -f /tmp/update_process 2>/dev/null
[ ! -f /tmp/do_reboot ] || /bin/rm -f /tmp/do_reboot
do_exit 7
fi
change_pm_cmd
#===== ready to update F/W =====
USING_HDD=0
/bin/grep HDA_ROOT /proc/mounts 2>/dev/null 1>/dev/null
if [ $? = 0 ]; then
USING_HDD=1
else
/bin/grep HDA_ROOT /proc/mounts 2>/dev/null 1>/dev/null
if [ $? = 0 ]; then
USING_HDD=1
fi
fi
if [ "x${BOOT_CONF}" = "xTS-NASARM" ]; then
/bin/mv /usr/local/sbin/blkid /usr/local/sbin/blkid_ 2>/dev/null
check_tune_config_partition /dev/mtdblock5 1024
elif [ "x${BOOT_CONF}" = "xTS-NASPPC" ]; then
check_tune_config_partition /dev/mtdblock5 1024
else
check_tune_config_partition ${BOOT_DEV}6 4096
fi
if [ "x${BOOT_CONF}" = "xTS-NASX86" ] && [ $FLASH_RFS1_BLOCK -ge $FLASH_RFS1_BLOCK_X59 ]; then
FLASH_RFS1_SIZE=$FLASH_RFS1_SIZE_X59
elif [ "x${BOOT_CONF}" = "xTS-NASX86" ] && [ $FLASH_RFS1_BLOCK -ge $FLASH_RFS1_BLOCK_X59H ]; then
FLASH_RFS1_SIZE=$FLASH_RFS1_SIZE_X59H
fi
if [ -f $UPDATE_FOLDER/update_check ]; then
$UPDATE_FOLDER/update_check
if [ $? != 0 ]; then
[ ! -x /sbin/lock_system_update ] || /sbin/lock_system_update unlock
do_exit 3
fi
fi
/sbin/write_log "[Firmware Upgrade] Start to update the firmware." 4
if [ -f $UPDATE_FOLDER/update_bios.sh ]; then
$UPDATE_FOLDER/update_bios.sh $UPDATE_FOLDER/flashrom.img
fi
if [ -f $UPDATE_FOLDER/sas_fw/sas_fw_update.sh ]; then
$UPDATE_FOLDER/sas_fw/sas_fw_update.sh
fi
if [ "x${BOOT_CONF}" = "xTS-NASX86" ]; then
if [ $USING_HDD = 1 ]; then
echo "Update image using HDD ..."
CRC_check
size_check
img_update
remove_update 2
else
echo "Update image using RAM disk ..."
CRC_check
size_check
img_update
remove_update 1
fi
elif [ "x${BOOT_CONF}" = "xTS-NASARM" ]; then
if [ $USING_HDD = 1 ]; then
echo "Update image using HDD ..."
CRC_check
size_check_arm
img_update_16M uImage initrd.boot rootfs2.img
remove_update 2
else
echo "Update image using RAM disk ..."
CRC_check
size_check_arm
img_update_16M uImage initrd.boot rootfs2.img
remove_update 1
fi
elif [ "x${BOOT_CONF}" = "xTS-NASPPC" ]; then
if [ $USING_HDD = 1 ]; then
echo "Update image using HDD ..."
CRC_check
size_check
img_update_16M uImage initrd.uboot rootfs2.img canyonlands_qnap.dtb
remove_update 2
else
echo "Update image using RAM disk ..."
CRC_check
size_check
img_update_16M uImage initrd.uboot rootfs2.img canyonlands_qnap.dtb
remove_update 1
fi
fi
/bin/mv /usr/local/sbin/blkid_ /usr/local/sbin/blkid 2>/dev/null
config_add_endflag
/sbin/setcfg -e System "QPKG CENTER XML"
if [ x`/bin/cat ${UPDATE_FW_PROCESS} 2>/dev/null` = x3 ]; then
/bin/grep do_beep_check_flag /etc/init.d/update.sh 1>/dev/null 2>/dev/null
[ $? = 0 ] && do_beep
[ ! -x /sbin/lock_system_update ] || /sbin/lock_system_update unlock
/bin/echo 3 > ${UPDATE_PROCESS}
exit 0
else
exit 1
fi