256 lines
8.7 KiB
Bash
Executable File
256 lines
8.7 KiB
Bash
Executable File
#!/bin/sh
|
|
. /etc/init.d/functions
|
|
PATH=/bin:/sbin
|
|
# check if the HAL subsystem exist
|
|
if [ -x /sbin/hal_app ]; then
|
|
HD_DEVICE="/dev/md13"
|
|
else
|
|
HD_DEVICE="/dev/sda4"
|
|
fi
|
|
EXT_MD_NAME="md13"
|
|
FLASH_RFS1="/dev/sdx2"
|
|
FLASH_RFS2="/dev/sdx3"
|
|
FLASH_TMP="/flashfs_tmp"
|
|
MNT_POINT="/mnt/ext"
|
|
CONFIG_Dev="/dev/md9"
|
|
MNT_HD_ROOT_TMP="/hd_root_tmp"
|
|
UPDATEPKG_DIR="${MNT_HD_ROOT_TMP}/update_pkg"
|
|
ROOTFS2="$FLASH_TMP/boot/rootfs2.bz"
|
|
ROOTFS_EXT="$FLASH_TMP/boot/rootfs_ext.tgz"
|
|
FLASH_RFS2_16M="/dev/mtdblock3"
|
|
ROOTFS2_16M="$FLASH_TMP/rootfs2.bz"
|
|
|
|
check_if_hd_ready_arg()
|
|
{
|
|
local ret=0
|
|
|
|
dd if=$1 of=/tmp/mycheck skip=384M bs=1 count=4
|
|
if [ $? = 0 ] && [ `cat /tmp/mycheck` = "QNAP" ]; then
|
|
ret=1
|
|
fi
|
|
|
|
rm -f /tmp/mycheck
|
|
return $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
|
|
}
|
|
|
|
extract_rootfs2()
|
|
{
|
|
[ -d $FLASH_TMP ] || /bin/mkdir $FLASH_TMP
|
|
/bin/mount $1 $FLASH_TMP -o ro
|
|
if [ $? != 0 ]; then
|
|
/bin/echo "mountall: mount $1 failed."
|
|
/bin/umount $1 1>/dev/null 2>&1
|
|
return 1
|
|
else
|
|
check_sum "${ROOTFS2}" "${ROOTFS2}.cksum"
|
|
if [ $? = 0 ]; then
|
|
/bin/tar xjf ${ROOTFS2} -C / 2>/dev/null
|
|
else
|
|
/bin/umount $1 1>/dev/null 2>&1
|
|
/bin/sync
|
|
return 1
|
|
fi
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
#
|
|
# Mounting extended rootfs
|
|
#
|
|
|
|
check_if_hd_ready_arg $HD_DEVICE
|
|
if [ $? = 1 ]; then
|
|
HD_BOOT_CONF=`cat /tmp/BOOT_CONF 2>/dev/null`
|
|
/bin/rm /tmp/BOOT_CONF
|
|
fi
|
|
|
|
grep ${EXT_MD_NAME} /proc/mdstat | grep active 1>>/dev/null 2>>/dev/null
|
|
if [ $? = 0 ]; then
|
|
EXT_MD_EXIST=1
|
|
else
|
|
EXT_MD_EXIST=0
|
|
fi
|
|
if [ -f /var/ch_model_update.fla ]; then
|
|
EXT_MD_EXIST=0
|
|
fi
|
|
|
|
Model_Name=`/bin/cat /etc/default_config/Model_Name.conf 2>/dev/null`
|
|
HD_Model_Name=`/bin/cat /tmp/Internal_Model 2>/dev/null`
|
|
BOOT_CONF=`/bin/cat /etc/default_config/BOOT.conf 2>/dev/null`
|
|
|
|
/bin/echo "Extract RootFS Ext..."
|
|
[ -d $FLASH_TMP ] || /bin/mkdir $FLASH_TMP
|
|
if [ "x${BOOT_CONF}" = "xTS-NASX86" ]; then
|
|
extract_rootfs2 "${FLASH_RFS1}"
|
|
[ $? = 0 ] || extract_rootfs2 "${FLASH_RFS2}"
|
|
/bin/sync
|
|
fi
|
|
|
|
if [ "x${HD_BOOT_CONF}" = "xTS-NASX86" -a "x$HD_Model_Name" = "x$Model_Name" ] || \
|
|
[ "x${HD_BOOT_CONF}" = "xTS-NASPPC" -a "x$HD_Model_Name" = "x$Model_Name" ] || \
|
|
[ "x${HD_BOOT_CONF}" = "xTS-NASARM" -a "x$HD_Model_Name" = "x$Model_Name" ]; then
|
|
[ -d ${MNT_HD_ROOT_TMP} ] || /bin/mkdir ${MNT_HD_ROOT_TMP}
|
|
/bin/mount $CONFIG_Dev $MNT_HD_ROOT_TMP
|
|
if [ $? = 0 ]; then
|
|
/bin/echo "mountall: mount $CONFIG_Dev successful."
|
|
else
|
|
/bin/echo "mountall: mount $CONFIG_Dev failed."
|
|
fi
|
|
|
|
if [ -f ${ROOTFS_EXT} ] && [ "x${BOOT_CONF}" = "xTS-NASX86" ]; then
|
|
/bin/echo "Update Extended ${ROOTFS_EXT}..."
|
|
check_sum "${ROOTFS_EXT}" "${ROOTFS_EXT}.cksum"
|
|
if [ $? = 0 ]; then
|
|
/bin/tar xzf ${ROOTFS_EXT} -O > $HD_DEVICE
|
|
/bin/sync
|
|
fi
|
|
fi
|
|
/bin/umount $FLASH_TMP 1>/dev/null 2>&1
|
|
if [ -f ${MNT_HD_ROOT_TMP}/update/rootfs_ext.tgz ]; then
|
|
check_sum "${MNT_HD_ROOT_TMP}/update/rootfs_ext.tgz" "${MNT_HD_ROOT_TMP}/update/rootfs_ext.tgz.cksum"
|
|
if [ $? = 0 ]; then
|
|
/bin/tar xzf $MNT_HD_ROOT_TMP/update/rootfs_ext.tgz -O > $HD_DEVICE
|
|
fi
|
|
fi
|
|
if [ -f ${MNT_HD_ROOT_TMP}/update/qpkg.tar ]; then
|
|
check_sum "${MNT_HD_ROOT_TMP}/update/qpkg.tar" "${MNT_HD_ROOT_TMP}/update/qpkg.tar.cksum"
|
|
if [ $? = 0 ]; then
|
|
[ -d ${UPDATEPKG_DIR} ] || /bin/mkdir ${UPDATEPKG_DIR}
|
|
[ ! -f ${UPDATEPKG_DIR}/apache_php5.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/apache_php5.tgz
|
|
[ ! -f ${UPDATEPKG_DIR}/mysql5.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/mysql5.tgz
|
|
[ ! -f ${UPDATEPKG_DIR}/pgsql9.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/pgsql9.tgz
|
|
[ ! -f ${UPDATEPKG_DIR}/language.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/language.tgz
|
|
[ ! -f ${UPDATEPKG_DIR}/avahi0630.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/avahi0630.tgz
|
|
[ ! -f ${UPDATEPKG_DIR}/centerim.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/centerim.tgz
|
|
[ ! -f ${UPDATEPKG_DIR}/musicstation.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/musicstation.tgz
|
|
[ ! -f ${UPDATEPKG_DIR}/photostation2.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/photostation2.tgz
|
|
[ ! -f ${UPDATEPKG_DIR}/MSV2.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/MSV2.tgz
|
|
/bin/rm -f ${UPDATEPKG_DIR}/WFM*.tgz 2>/dev/null
|
|
/bin/rm -f ${UPDATEPKG_DIR}/jsLib.tgz 2>/dev/null
|
|
/bin/rm -f ${UPDATEPKG_DIR}/nvr_app.tar.gz 2>/dev/null
|
|
/bin/rm -f ${UPDATEPKG_DIR}/nvr_app2.tar.gz 2>/dev/null
|
|
/bin/tar xf $MNT_HD_ROOT_TMP/update/qpkg.tar -C ${UPDATEPKG_DIR}
|
|
[ ! -f ${UPDATEPKG_DIR}/photostation2.tgz ] || /bin/rm -rf ${UPDATEPKG_DIR}/PhotoStation 2>/dev/null
|
|
[ ! -f ${UPDATEPKG_DIR}/musicstation.tgz ] || /bin/rm -rf ${UPDATEPKG_DIR}/MusicStation 2>/dev/null
|
|
[ ! -f ${MNT_HD_ROOT_TMP}/update/update_qpkg_f ] || /bin/mv ${MNT_HD_ROOT_TMP}/update/update_qpkg_f ${UPDATEPKG_DIR}
|
|
fi
|
|
fi
|
|
/bin/rm -rf $MNT_HD_ROOT_TMP/update/* 1>/dev/null 2>&1
|
|
/bin/sync
|
|
|
|
if [ ! -f /var/ch_model_update.fla ]; then
|
|
/bin/mount $HD_DEVICE $MNT_POINT
|
|
_mnt_result=$?
|
|
if [ "x${BOOT_CONF}" = "xTS-NASARM" ] || [ "x${BOOT_CONF}" = "xTS-NASPPC" ]; then
|
|
if [ -d ${MNT_POINT}/home ] && [ -d ${MNT_POINT}/usr ]; then
|
|
/bin/rm -rf /home 2>/dev/null
|
|
/bin/rm -rf /usr 2>/dev/null
|
|
if [ -d ${MNT_POINT}/lib/modules/misc ]; then
|
|
/bin/rm -rf /lib/modules/misc 1>/dev/null 2>&1
|
|
/bin/ln -s $MNT_POINT/lib/modules/misc /lib/modules/misc
|
|
fi
|
|
/bin/ln -s $MNT_POINT/home /home
|
|
/bin/ln -s $MNT_POINT/usr /usr
|
|
[ ! -f /sbin/_thttpd_ ] || /bin/rm -rf /sbin/_thttpd_
|
|
/sbin/ldconfig
|
|
else
|
|
ROOTFS2=${ROOTFS2_16M}
|
|
extract_rootfs2 "${FLASH_RFS2_16M}"
|
|
/bin/umount $FLASH_TMP 1>/dev/null 2>&1
|
|
fi
|
|
fi
|
|
if [ ${_mnt_result} = 0 ]; then
|
|
[ -f /tmp/booting ] || /bin/touch /tmp/booting
|
|
[ -d /tmp/install ] || /bin/mkdir /tmp/install
|
|
/etc/init.d/installtgz.sh radius ${UPDATEPKG_DIR}/radius.tgz &
|
|
/etc/init.d/installtgz.sh samba ${UPDATEPKG_DIR}/samba.tgz &
|
|
/etc/init.d/installtgz.sh jsLib ${UPDATEPKG_DIR}/jsLib.tgz
|
|
/etc/init.d/installtgz.sh language ${UPDATEPKG_DIR}/language.tgz &
|
|
/etc/init.d/installtgz.sh WFM2 ${UPDATEPKG_DIR}/WFM2.tgz &
|
|
/etc/init.d/installtgz.sh WFM3 ${UPDATEPKG_DIR}/WFM3.tgz &
|
|
/etc/init.d/installtgz.sh ffmpeg ${UPDATEPKG_DIR}/ffmpeg.tgz
|
|
/etc/init.d/installtgz.sh ImageMagick ${UPDATEPKG_DIR}/ImageMagick.tgz
|
|
/etc/init.d/installtgz.sh vaultServices ${UPDATEPKG_DIR}/vaultServices.tgz &
|
|
[ ! -f ${UPDATEPKG_DIR}/libtorrent.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/libtorrent.tgz &
|
|
[ ! -f ${UPDATEPKG_DIR}/DS.tgz ] || /bin/rm -f ${UPDATEPKG_DIR}/DS.tgz &
|
|
/etc/init.d/installtgz.sh DSv3 ${UPDATEPKG_DIR}/DSv3.tgz &
|
|
/etc/init.d/installtgz.sh vpnpptp ${UPDATEPKG_DIR}/vpnpptp.tgz
|
|
/etc/init.d/installtgz.sh vpnopenvpn ${UPDATEPKG_DIR}/vpnopenvpn.tgz
|
|
/etc/init.d/installtgz.sh ldap_server ${UPDATEPKG_DIR}/ldap_server.tgz
|
|
/etc/init.d/installtgz.sh avahi0630 ${UPDATEPKG_DIR}/avahi0630.tgz
|
|
/etc/init.d/installtgz.sh printer ${UPDATEPKG_DIR}/printer.tgz &
|
|
/etc/init.d/installtgz.sh vim ${UPDATEPKG_DIR}/vim.tgz &
|
|
if [ -f ${UPDATEPKG_DIR}/medialibrary.tgz ]; then
|
|
/etc/init.d/installtgz.sh medialibrary ${UPDATEPKG_DIR}/medialibrary.tgz &
|
|
fi
|
|
fi
|
|
fi
|
|
# /bin/umount $CONFIG_Dev -> move to sysinit.sh
|
|
|
|
elif [ $EXT_MD_EXIST = 1 ]; then
|
|
# might be invalid HD case
|
|
/bin/umount $FLASH_TMP 1>/dev/null 2>&1
|
|
/bin/mount $HD_DEVICE $MNT_POINT
|
|
[ -d /home ] || /bin/ln -sf $MNT_POINT/home /home
|
|
if [ $? = 0 ]; then
|
|
if [ -x /sbin/hal_app ]; then
|
|
/sbin/hal_app --status_led_set enc_id=0,event=0x400,status=1
|
|
else
|
|
/sbin/set_status_led 1024 1
|
|
fi
|
|
fi
|
|
else
|
|
if [ "x${BOOT_CONF}" = "xTS-NASARM" ] || [ "x${BOOT_CONF}" = "xTS-NASPPC" ]; then
|
|
ROOTFS2=${ROOTFS2_16M}
|
|
extract_rootfs2 "${FLASH_RFS2_16M}"
|
|
fi
|
|
/bin/umount $FLASH_TMP 1>/dev/null 2>&1
|
|
fi
|
|
#/bin/df
|
|
/sbin/dmsetup targets 1>/dev/null 2>&1
|
|
[ $? = 0 ] && /bin/echo "dev-mapper ready."
|
|
for i in a b c d e f g h; do
|
|
#/bin/echo "hdparm -a 8192 /dev/sd$i"
|
|
/sbin/hdparm -a 8192 /dev/sd$i 1>/dev/null 2>&1
|
|
done
|
|
if [ -x /usr/bin/wget-s ]; then
|
|
/bin/rm -f /bin/wget-s 2>/dev/null
|
|
/bin/cp /usr/bin/wget-s /bin/wget-s
|
|
fi
|
|
[ -f /sbin/daemon_mgr ] && /sbin/daemon_mgr
|
|
/bin/sleep 1
|
|
[ -f /sbin/daemon_mgr.nvr ] && /sbin/daemon_mgr.nvr
|
|
|
|
#send loading systen to LCD
|
|
[ "x$COMPRT4LCD" != "xyes" ] && [ -f /sbin/lcd_tool ] && /sbin/lcd_tool -1 "Loading System" -2 "Please Wait..." &
|
|
/bin/touch "/var/.system.info"
|
|
if [ -f /sbin/dmidecode ]; then
|
|
/sbin/dmidecode -t memory | /bin/grep ECC > /dev/null 2>&1
|
|
[ $? = 0 ] && /sbin/setcfg RAM UseECC TRUE -f "/var/.system.info"
|
|
fi
|
|
/sbin/daemon_mgr hotswap start "/sbin/hotswap &"
|
|
. /etc/init.d/check_nss2
|
|
if [ "x$_NSS2_SUPPORT" = "xyes" ]; then
|
|
cp -v /etc/init.d/nvr_svc.sh /etc/init.d/nvrd.sh
|
|
fi
|