1
Files
qnap-rc-scripts/mountall
2016-09-04 22:20:40 +03:00

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