#!/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