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

375 lines
14 KiB
Bash
Executable File

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
MNT_POINT="/mnt/ext"
FLASH_RFS1="/dev/sdx2"
FLASH_RFS2="/dev/sdx3"
FLASH_RFS5="/dev/sdx5"
FLASH_RFS6="/dev/sdx6"
FLASH_TMP="/flashfs_tmp"
CONFIG_Dev="/dev/md9"
MNT_HD_ROOT_TMP="/hd_root_tmp"
TS_LOG_DIR=/etc/logs
ISCSI_CONFIG="/etc/config/iscsi.conf"
ISCSI_DEFAULT_CONFIG="/etc/default_config/iscsi.conf"
DEV_NAS_CONFIG="/dev/sdx6"
function run_burntest()
{
mnt_burntest="/mnt/burntest"
[ ! -d $mnt_burntest ] && mkdir $mnt_burntest
mount -t ext3 /dev/sda1 $mnt_burntest
if [ $? -eq 0 ]; then
# Check the special symbol
SYM="`cat /etc/burntest.sym 2> /dev/null`"
BURNSYM="$mnt_burntest/burntest/$SYM/QNAP-burning-test"
if [ -f $BURNSYM ]; then
[ "x$1" = "xstart" ] && [ -x $mnt_burntest/burntest/burntest-init ] && {
$mnt_burntest/burntest/burntest-init
[ $? -eq 0 ] && return 0
}
[ "x$1" = "xstop" ] && [ -x $mnt_burntest/burntest/burntest-fini ] && {
$mnt_burntest/burntest/burntest-fini
[ $? -eq 0 ] && return 0
}
fi
umount $mnt_burntest > /dev/null 2>&1
rm -rf $mnt_burntest > /dev/null 2>&1
return 1
fi
return 1
}
create_iscsi_conf()
{
/bin/echo '[iSCSISetting]' > $ISCSI_CONFIG
/bin/echo 'Enable = FALSE' >> $ISCSI_CONFIG
/bin/echo 'iSCSIPort = 3260' >> $ISCSI_CONFIG
/bin/echo '[iSCSISetting]' > $ISCSI_DEFAULT_CONFIG
/bin/echo 'Enable = FALSE' >> $ISCSI_DEFAULT_CONFIG
/bin/echo 'iSCSIPort = 3260' >> $ISCSI_DEFAULT_CONFIG
}
remove_S30_S45()
{
/bin/rm /etc/rcS.d/S[3-4]* 1>/dev/null 2>&1
}
mount -t proc /proc /proc
# Mount local file systems in /etc/fstab
mount -o remount,rw /
mount -a
mkdir /sys
mount -t sysfs sysfs /sys
[ -d /tmp ] || mkdir /tmp
mount -t tmpfs tmpfs /tmp -o size=32M
if [ ! -z $_memsize ] && [ $_memsize -gt 1500000 ]; then
mount -t tmpfs tmpfs /tmp -o remount,size=64M
echo 131072 > /proc/sys/fs/inotify/max_user_watches
elif [ ! -z $_memsize ] && [ $_memsize -gt 1000000 ]; then
mount -t tmpfs tmpfs /tmp -o remount,size=64M
echo 65536 > /proc/sys/fs/inotify/max_user_watches
else
echo 32768 > /proc/sys/fs/inotify/max_user_watches
fi
chmod 777 /tmp
[ -d /tmp/config ] || mkdir /tmp/config
[ -d /tmp/qget ] || mkdir /tmp/qget
#set HDD LED
for i in 0 1 2 3 4 5; do
[ ! -f /sys/class/scsi_host/host$i/em_message ] || /bin/echo 0x80000 > /sys/class/scsi_host/host$i/em_message && sync
done
#insmod
[ ! -f /lib/modules/misc/jbd.ko ] || /sbin/insmod /lib/modules/misc/jbd.ko
[ ! -f /lib/modules/misc/ext3.ko ] || /sbin/insmod /lib/modules/misc/ext3.ko
[ ! -f /lib/modules/misc/hid.ko ] || /sbin/insmod /lib/modules/misc/hid.ko &
[ ! -f /lib/modules/misc/gcu.ko ] || /sbin/insmod /lib/modules/misc/gcu.ko &
[ ! -f /lib/modules/misc/iegbe.ko ] || /sbin/insmod /lib/modules/misc/iegbe.ko &
[ ! -f /lib/modules/misc/mv61xx.ko ] || /sbin/insmod /lib/modules/misc/mv61xx.ko
[ ! -f /lib/modules/misc/mv_sata.ko ] || /sbin/insmod /lib/modules/misc/mv_sata.ko
if [ -f /lib/modules/misc/mv_sata.ko ] || [ -f /lib/modules/misc/mv61xx.ko ]; then
/bin/sleep 10
fi
[ ! -f /lib/modules/misc/libata.ko ] || /sbin/insmod /lib/modules/misc/libata.ko &
[ ! -f /lib/modules/misc/usb-common.ko ] || /sbin/insmod /lib/modules/misc/usb-common.ko
[ ! -f /lib/modules/misc/usbcore.ko ] || /sbin/insmod /lib/modules/misc/usbcore.ko
[ ! -f /lib/modules/misc/ehci-hcd.ko ] || /sbin/insmod /lib/modules/misc/ehci-hcd.ko
[ ! -f /lib/modules/misc/uhci-hcd.ko ] || /sbin/insmod /lib/modules/misc/uhci-hcd.ko
if [ -f /lib/modules/misc/usb-storage.ko ]; then
/sbin/insmod /lib/modules/misc/usb-storage.ko
sleep 10
fi
/bin/mount -t usbfs none /proc/bus/usb
[ $? = 0 ] || /bin/echo "mount usbfs failed."
#insmod hal module
[ ! -f /lib/modules/misc/hal_netlink.ko ] || /sbin/insmod /lib/modules/misc/hal_netlink.ko 2>>/dev/null
Model_Name=`cat /etc/default_config/Model_Name.conf 2>/dev/null`
[ "x$Model_Name" != "x" ] || Model_Name="TS-509"
if [ "x${Model_Name}" = "xTS-101" ]; then
/bin/echo -n "Recover device node...."
/bin/mv /dev/sdareal4 /dev/sda4
[ $? = 0 ] && /bin/echo "OK."
/bin/echo "Wait for 1 seconds."
/bin/sleep 1
fi
/bin/echo
if [ -f /etc/lcd_disable_install ]; then
export COMPRT4LCD=yes
[ -x /sbin/lcd_tool ] || COMPRT4LCD=no
# Turn on sysklog ... because I will be blind
[ "x$COMPRT4LCD" = "xyes" ] && {
# /sbin/syslogd -O /tmp/messages -s 1000
# /sbin/klogd -c 7
#Check if generic version
if [ -f /etc/IS_G ]; then
lcd_tool -1 " NAS" -2 " Welcome! "
else
lcd_tool -1 " QNAP Turbo NAS" -2 " Welcome! "
fi
}
fi
/bin/echo "Start config_util..."
/sbin/config_util 1
/sbin/config_util 4
[ $? != 0 ] && /bin/echo "Some errors occurred while running config_util."
/bin/echo "config_util finished."
/bin/echo 500 > /proc/sys/vm/dirty_expire_centisecs &
/bin/echo 100 > /proc/sys/vm/dirty_writeback_centisecs &
/bin/echo 5 > /proc/sys/vm/dirty_ratio &
/bin/echo 10 > /proc/sys/vm/dirty_background_ratio &
/bin/echo 0x4000000 > /proc/sys/kernel/shmmax &
/bin/echo 16384 > /proc/sys/vm/min_free_kbytes &
echo "mount HDD root device"
/bin/mkdir $MNT_HD_ROOT_TMP
/bin/mount $CONFIG_Dev $MNT_HD_ROOT_TMP 1>>/dev/null 2>>/dev/null
if [ $? != 0 ]; then
/bin/echo "mount $CONFIG_Dev failed."
else
/bin/echo "mount $CONFIG_Dev successful."
[ -f $MNT_HD_ROOT_TMP/.config/Model_Name.conf ] || echo "$Model_Name" > $MNT_HD_ROOT_TMP/.config/Model_Name.conf
HD_Model_Name=`cat $MNT_HD_ROOT_TMP/.config/Model_Name.conf 2>/dev/null`
#try to fix model name here.
if [ "x$HD_Model_Name" != "x$Model_Name" ]; then
/bin/ln -sf config_util /sbin/ch_model
/sbin/ch_model "$Model_Name"
. /etc/init.d/functions
install_PKGs "${MNT_HD_ROOT_TMP}/update_pkg"
fi
HD_Model_Name=`cat $MNT_HD_ROOT_TMP/.config/Model_Name.conf 2>/dev/null`
echo $HD_Model_Name > /tmp/Internal_Model
HD_BOOT_CONF=`cat ${MNT_HD_ROOT_TMP}/.config/BOOT.conf`
/bin/echo "$HD_BOOT_CONF" > /tmp/BOOT_CONF
/bin/umount $CONFIG_Dev
[ $? = 0 ] || /bin/echo "umount $CONFIG_Dev failed."
if [ "x$HDD_INTERNAL_MODEL" != "x$SYS_INTERNAL_MODEL" ]; then
/sbin/write_log "HDD cannot be mounted because the Internal Model is not matched" 2
fi
fi
[ -f /etc/init.d/check_bootcmd.sh ] && /etc/init.d/check_bootcmd.sh
[ -f /bin/md5sum ] || /bin/ln -sf busybox /bin/md5sum
BOOT_CONF=`/bin/cat /etc/default_config/BOOT.conf 2>/dev/null`
/sbin/create_hwtype
if [ "x${HD_BOOT_CONF}" = "xTS-NASX86" -a "x$HD_Model_Name" = "x$Model_Name" ] || \
[ "x${HD_BOOT_CONF}" = "xTS-NASARM" -a "x$HD_Model_Name" = "x$Model_Name" ] || \
[ "x${HD_BOOT_CONF}" = "xTS-NASPPC" -a "x$HD_Model_Name" = "x$Model_Name" ]; then
/bin/echo "Update Extended rcX_init.d...(1)"
BOOT_NORMAL=1
remove_S30_S45
# /bin/echo "------ /etc/init.d/mountall --------"
/etc/init.d/mountall
# /bin/echo "------ /etc/init.d/init_hardware.sh --------"
/etc/init.d/init_hardware.sh start
# /bin/echo "------ /etc/init.d/init_mac_addr.sh --------"
/etc/init.d/init_mac_addr.sh start
# /bin/echo "------ /etc/init.d/sysinit.sh --------"
/etc/init.d/sysinit.sh start
# /bin/echo "------ /etc/init.d/shutdown_check.sh --------"
/etc/init.d/shutdown_check.sh start
# /bin/echo "------ /etc/init.d/init_disk.sh --------"
/etc/init.d/init_disk.sh start
# /bin/echo "------ /etc/init.d/init_network.sh --------"
/etc/init.d/init_network.sh start
# /bin/echo "------ /etc/init.d/hostname.sh --------"
/etc/init.d/hostname.sh start
# /bin/echo "------ /etc/init.d/network.sh --------"
CNT=0
while [ $CNT -lt 10 ]; do
if [ -f /tmp/init.1 ]; then
break
else
sleep 1
CNT=`expr $CNT + 1`
fi
done
/etc/init.d/network.sh start
/etc/init.d/rcS_normal_fast
if [ -f /mnt/HDA_ROOT/update_pkg/.Squid_required ]; then
[ -x /mnt/HDA_ROOT/update_pkg/Squid.bin ] && ( /mnt/HDA_ROOT/update_pkg/Squid.bin 2>/dev/null 1>/dev/null & ) && sleep 3
/bin/rm -f /mnt/HDA_ROOT/update_pkg/.Squid_required 2>/dev/null
fi
#/bin/mv /etc/rcS.d/* /etc/rcS_init.d/
#/bin/mv /etc/rcK.d/* /etc/rcK_init.d/
else
/bin/echo "Update Extended rcX_init.d...(2)"
BOOT_NORMAL=0
/etc/rcS.d/S30mountall start
/sbin/setcfg System Booting 1
/sbin/daemon_mgr picd start "/sbin/picd &"
/sbin/daemon_mgr gpiod start "/sbin/gpiod &"
CPU_MODEL=""
[ ! -f /proc/tsinfo/cpu_model ] || CPU_MODEL=`/bin/cat /proc/tsinfo/cpu_model 2>/dev/null`
MODEL_NAME=`/sbin/getcfg "System" "Model"`
if [ "x${CPU_MODEL}" = "x88F6281 A0" ] && [ "x${MODEL_NAME}" = "xTS-119" ];then
/bin/rm /sbin/hwmond
fi
[ -f /sbin/hwmond ] && /sbin/daemon_mgr hwmond start "/sbin/hwmond &"
[ -f /sbin/acpid ] && /sbin/daemon_mgr acpid start "/sbin/acpid"
[ -f /usr/sbin/upsutil ] && /sbin/daemon_mgr upsutil start "/usr/sbin/upsutil &"
/etc/rcS.d/S31init_hardware start
#/etc/init.d/check_lan_port.sh
/etc/rcS.d/S32init_mac_addr start
#/etc/rcS.d/S33sysinit start
/sbin/hwclock --hctosys
/sbin/daemon_mgr bcclient start "/sbin/bcclient"
run_burntest start
[ $? -eq 0 ] && exit 0
/bin/echo log hidden config directory not exist, initial log file...
/bin/mkdir $TS_LOG_DIR
/sbin/log_tool -c -v
/sbin/log_tool -b 50 -v
/sbin/conn_log_tool -c -v
/sbin/conn_log_tool -b 50 -v
/etc/rcS.d/S34shutdown_check start
/sbin/storage_boot_init 3
/sbin/storage_boot_init 4
#/etc/rcS.d/S35init_disk start
/etc/rcS.d/S42hostname start
/etc/rcS.d/S45network start
/etc/rcS.d/S60thttpd start
#/usr/local/sbin/Qthttp -p 80 -nor -nos -u admin -d /home/httpd -c '**.*'
/etc/rcS.d/S61Qthttpd start
# create default index html file (replace "SERVER_NAME" string)
#/bin/sed s/SERVER_NAME/`/sbin/getcfg system "server name"`/ /root/index_default.html > /home/httpd/index.html
#/bin/mv /etc/rcK.d/K24thttpd /etc/rcK_init.d/
#/bin/mv /etc/rcK.d/K40network /etc/rcK_init.d/
#/bin/mv /etc/rcK.d/K66shutdown_check /etc/rcK_init.d/
#/bin/mv /etc/rcK.d/K80init_disk /etc/rcK_init.d/
if [ "x${BOOT_CONF}" = "xTS-NASARM" ] || [ "x${BOOT_CONF}" = "xTS-NASPPC" ]; then
DEV_NAS_CONFIG=/dev/mtdblock5
fi
/bin/mount $DEV_NAS_CONFIG -t ext2 /tmp/config -o ro 2>/dev/null 1>/dev/null
if [ -f /tmp/config/.write_cache ]; then
/sbin/setcfg Misc "Enable Write Cache" 1
/sbin/setcfg Misc "Enable Write Cache" 1 -f /etc/default_config/uLinux.conf
fi
if [ -f /tmp/config/.case_sensitive ]; then
/sbin/setcfg Samba "Case Sensitive" yes
/sbin/setcfg Samba "Case Sensitive" yes -f /etc/default_config/uLinux.conf
fi
/bin/umount /tmp/config 2>/dev/null 1>/dev/null
/bin/touch /tmp/format.status
Internal_Model=`/sbin/getcfg System "Internal Model"`
/sbin/config_util 0
if [ $? != 0 ]; then
/bin/echo "init_check.sh: No HD existed."
/sbin/set_status_led 1 1
# /sbin/burning &
fi
#Set power LED on
if [ "x$Internal_Model" = "xTS-609" ] || [ "x$Internal_Model" = "xTS-239" ] || [ "x$Internal_Model" = "xTS-439" ] || [ "x$Internal_Model" = "xTS-639" ] || [ "x$Internal_Model" = "xTS-839" ] || [ "x$Internal_Model" = "xTS-259" ] || [ "x$Internal_Model" = "xTS-459" ] || [ "x$Internal_Model" = "xTS-559" ]|| [ "x$Internal_Model" = "xTS-659" ] || [ "x$Internal_Model" = "xTS-859" ] || [ "x$Internal_Model" = "xTS-1279" ] || [ "x$Internal_Model" = "xTS-879" ] || [ "x$Internal_Model" = "xTS-1079" ] || [ "x$Internal_Model" = "xTS-469" ] || [ "x$Internal_Model" = "xTS-569" ] || [ "x$Internal_Model" = "xTS-669" ] || [ "x$Internal_Model" = "xTS-869" ]; then
/sbin/pic_raw 77
fi
[ -f /sbin/qLogEngined ] && /sbin/daemon_mgr qLogEngined start /sbin/qLogEngined
[ -f /sbin/qsyslogd ] && /sbin/daemon_mgr qsyslogd start /sbin/qsyslogd
[ -f /sbin/qShield ] && /sbin/daemon_mgr qShield start /sbin/qShield
# For utelnetd
cd /bin; ln -sf busybox readlink;
/bin/readlink /etc/inittab | /bin/grep enable > /dev/null
/etc/init.d/login.sh start
/etc/init.d/stunnel.sh start
/etc/init.d/bonjour.sh restart
# For localtime
readlink /usr/share/zoneinfo 1>>/dev/null 2>>/dev/null
if [ $? != 0 ]; then
[ -d /usr/share ] || /bin/mkdir /usr/share -p
[ -d /usr/share/zoneinfo ] || /bin/ln -sf /etc/zoneinfo /usr/share/zoneinfo
fi
# For passwd
if [ ! -d /usr/bin ]; then
echo "create /usr/bin/passwd"
/bin/mkdir /usr/bin -p
/bin/ln -sf /bin/busybox /usr/bin/passwd
fi
/sbin/pidof upnpd
[ $? = 0 ] || /etc/init.d/upnpd.sh restart
[ -f /sbin/lcdmond ] && /sbin/daemon_mgr lcdmond start /sbin/lcdmond
if [ x`/sbin/getcfg Misc "Buzzer Quiet Enable"` != "xTRUE" ]; then
/sbin/pic_raw 81
fi
/etc/init.d/update_def_share.sh
/bin/touch /etc/config/usb_share_mapping
/bin/touch /etc/default_config/usb_share_mapping
/bin/touch /var/lock/add_ext_dev
/bin/touch /etc/config/usb_share_setting
/bin/touch /etc/default_config/usb_share_setting
/bin/touch /etc/config/esata_share_mapping
/bin/touch /etc/default_config/esata_share_mapping
/bin/touch /etc/config/smart.conf
[ ! -f /home/httpd/cgi-bin/inc/lang_es-mex.js ] || /bin/rm /home/httpd/cgi-bin/inc/lang_es-mex.js
[ ! -f /home/httpd/cgi-bin/inc/s_lang_es-mex.js ] || /bin/rm /home/httpd/cgi-bin/inc/s_lang_es-mex.js
[ ! -f /etc/init.d/genLanglist.sh ] || /etc/init.d/genLanglist.sh
fi
# scan network card on PCIE bus
#/etc/init.d/check_lan_port.sh
[ -f /bin/ts_init ] && /bin/ts_init
/sbin/set_home_directory
/sbin/sss_convert
/etc/init.d/network.sh write_hosts
/bin/umount $FLASH_RFS1 1>>/dev/null 2>>/dev/null
/bin/umount $FLASH_RFS2 1>>/dev/null 2>>/dev/null
/bin/e2fsck -pf $FLASH_RFS5 1>>/dev/null 2>>/dev/null
/bin/e2fsck -pf $FLASH_RFS6 1>>/dev/null 2>>/dev/null
[ ! -d $FLASH_TMP ] || /bin/rmdir $FLASH_TMP 1>>/dev/null 2>>/dev/null
[ -f /etc/init.d/upnpd.sh ] && /bin/ln -sf ../init.d/upnpd.sh /etc/rcK.d/K15upnp
[ -f /etc/init.d/iscsiinit.sh ] && /bin/ln -sf ../init.d/iscsiinit.sh /etc/rcK.d/K59iscsiinit
#[ -f /etc/init.d/upnpd.sh ] && /etc/init.d/upnpd.sh restart
[ -f $ISCSI_CONFIG ] || create_iscsi_conf
if [ -f /sbin/upnpcd ]; then
[ -f /etc/config/upnpc.conf ] || /bin/touch /etc/config/upnpc.conf
/sbin/daemon_mgr upnpcd start "/sbin/upnpcd -i 300 &"
fi
# Send alert mail
[ -f /tmp/send_alert_mail ] && \
/sbin/send_alert_mail "The system was not shut down properly last time." && \
/bin/rm -f /tmp/send_alert_mail
[ $BOOT_NORMAL == 1 ] && /etc/init.d/boot_done.sh &
/etc/init.d/usb_device_check.sh
/bin/grep "${MNT_HD_ROOT_TMP}" "/proc/mounts" 1>>/dev/null 2>>/dev/null
[ $? != 0 ] || /bin/umount "${MNT_HD_ROOT_TMP}" 1>>/dev/null 2>>/dev/null
[ ! -d $MNT_HD_ROOT_TMP ] || /bin/rmdir $MNT_HD_ROOT_TMP 1>>/dev/null 2>>/dev/null