#!/bin/bash

# set time
[ ! -e /etc/crontabs ] && mkdir /etc/crontabs
crontab=/etc/crontabs/root
[ ! -e $crontab ] && touch $crontab
[ ! -e /var/spool/cron/crontabs ] && mkdir -p /var/spool/cron/crontabs

[ ! -d /tmp/TOS_CONFIG ] && mkdir /tmp/TOS_CONFIG

maxMemory=`awk '/MemTotal/ {print int($2 / 1024 - 120) "M"}' /proc/meminfo`
cores=$(nproc)
quota=$((cores * 100 - 10))
systemctl set-property system.slice MemoryLimit=$maxMemory
systemctl set-property system.slice CPUQuota=${quota}%

/etc/tos/scripts/buzzer system_boot
systemctl daemon-reload
ter_service allboot start >/dev/null &

set_cpufreq() {
  # 系统内没有调节cpu策略的工具也没有对应的内核参数可以直接设置, 只能通过直接修改 scaling_governor 来设置
  # 获取可用 CPU 列表
  local cpus=(/sys/devices/system/cpu/cpu[0-9]*)

  # 默认performance模式满功率跑, 没有performance模式的话就尝试ondemand自适应模式, 都没有的话就用userspace模式
  for cpu in "${cpus[@]}"; do
    # 获取此 CPU 的可用调节器
    local cpu_governors=$(cat "$cpu"/cpufreq/scaling_available_governors)

    case $cpu_governors in
      *performance*)
        echo "set cpu performance"
        echo "performance" > "$cpu"/cpufreq/scaling_governor
        ;;
      *ondemand*)
        echo "set cpu ondemand"
        echo "ondemand" > "$cpu"/cpufreq/scaling_governor
        ;;
      *)
        echo "set cpu userspace"
        echo "userspace" > "$cpu"/cpufreq/scaling_governor
        ;;
    esac
  done

  # 此修改方式在重启后会失效所以需要在开机时重新设置
  echo "CPU scaling governors set."
}

#set_smartfan() {
#  local cpuinfo manufacturer
#  cpuinfo=$(cat "/proc/cpuinfo" | grep "CPU C3558R")
#  [ -z "$cpuinfo" ] && manufacturer=$(dmidecode -s "system-manufacturer")
#  # 除了 1800 以外的机器都使用 smartfan 来管理风扇
#
#
#
## 检查特定的DMI代码是否存在
#if dmidecode | grep -i "0A450A46" >/dev/null; then
#    # 如果匹配成功，读取自动风扇和风扇速度的配置
#    Autofan=$(iniparse -c -f ${DEFAULTSYS} -s system -k Autofan)
#    Fanspeed=$(iniparse -c -f ${DEFAULTSYS} -s system -k Fanspeed)
#
#    # 如果Autofan设置为0，即风扇处于自动调节模式
#    if [ "X${Autofan}" = "X0" ]; then
#        # 再次确认特定硬件标识符
#        if [ "X$(dmidecode | grep retsamarret)" != "X" ]; then
#            # 根据Fanspeed设置不同的风扇速度
#            case "${Fanspeed}" in
#                "0")
#                    ec_stat -w 45
#                    ;;
#                "4")
#                    ec_stat -w 75
#                    ;;
#                "8")
#                    ec_stat -w 100
#                    ;;
#            esac
#        fi
#    fi
#    # 执行完成后退出脚本
#    return 0
#fi
## 如果dmidecode匹配不成功，则脚本不会执行exit 0，将继续执行其他可能的代码
#
#
#  if [ "$manufacturer" = "retsamarret" ]; then
#    Autofan=$(iniparse -c -f ${DEFAULTSYS} -s system -k Autofan)
#    Fanspeed=$(iniparse -c -f ${DEFAULTSYS} -s system -k Fanspeed)
#    if [ "X${Autofan}" = "X0" ]; then
#      if [ "X$(dmidecode | grep retsamarret)" != "X" ]; then
#        if [ "X${Fanspeed}" = "X0" ]; then
#          ec_stat -w 105
#        elif [ "X${Fanspeed}" = "X4" ]; then
#          ec_stat -w 180
#        elif [ "X${Fanspeed}" = "X8" ]; then
#          ec_stat -w 254
#        fi
#      fi
#    fi
#  fi
#
#  if [ "$manufacturer" = "JHS830" ]; then
#    Autofan=$(iniparse -c -f ${DEFAULTSYS} -s system -k Autofan)
#    Fanspeed=$(iniparse -c -f ${DEFAULTSYS} -s system -k Fanspeed)
#    if [ "X${Autofan}" = "X0" ]; then
#      if [ "X$(dmidecode | grep retsamarret)" != "X" ]; then
#        if [ "X${Fanspeed}" = "X0" ]; then
#          ec_stat -w 105
#        elif [ "X${Fanspeed}" = "X4" ]; then
#          ec_stat -w 180
#        elif [ "X${Fanspeed}" = "X8" ]; then
#          ec_stat -w 254
#        fi
#      fi
#    fi
#  fi
#
#    if [ "$manufacturer" = "revres retsamarret" ]; then
#      Autofan=$(iniparse -c -f ${DEFAULTSYS} -s system -k Autofan)
#      Fanspeed=$(iniparse -c -f ${DEFAULTSYS} -s system -k Fanspeed)
#      if [ "X${Autofan}" = "X0" ]; then
#        if [ "X$(dmidecode | grep retsamarret)" != "X" ]; then
#          if [ "X${Fanspeed}" = "X0" ]; then
#            ec_stat -w 105
#          elif [ "X${Fanspeed}" = "X4" ]; then
#            ec_stat -w 180
#          elif [ "X${Fanspeed}" = "X8" ]; then
#            ec_stat -w 254
#          fi
#        fi
#      fi
#    fi
#
#    if [ "$manufacturer" = "tnas-server" ]; then
#      Autofan=$(iniparse -c -f ${DEFAULTSYS} -s system -k Autofan)
#      Fanspeed=$(iniparse -c -f ${DEFAULTSYS} -s system -k Fanspeed)
#      if [ "X${Autofan}" = "X0" ]; then
#        if [ "X$(dmidecode | grep retsamarret)" != "X" ]; then
#          if [ "X${Fanspeed}" = "X0" ]; then
#            ec_stat -w 18
#          elif [ "X${Fanspeed}" = "X4" ]; then
#            ec_stat -w 28
#          elif [ "X${Fanspeed}" = "X8" ]; then
#            ec_stat -w 38
#          fi
#        fi
#      fi
#    fi
#
#    if [ "$manufacturer" = "XunDun" ]; then
#      Autofan=$(iniparse -c -f ${DEFAULTSYS} -s system -k Autofan)
#      Fanspeed=$(iniparse -c -f ${DEFAULTSYS} -s system -k Fanspeed)
#      if [ "X${Autofan}" = "X0" ]; then
#        if [ "X$(dmidecode | grep retsamarret)" != "X" ]; then
#          if [ "X${Fanspeed}" = "X0" ]; then
#            ec_stat -w 25
#          elif [ "X${Fanspeed}" = "X4" ]; then
#            ec_stat -w 50
#          elif [ "X${Fanspeed}" = "X8" ]; then
#            ec_stat -w 100
#          fi
#        fi
#      fi
#    fi
#}

# Network initialization
set_net() {
  CPU_1800=$(cat /proc/cpuinfo | awk '/J1900|J1800/')
  #modify the sort for netcard
  [ "X$CPU_1800" != "X" ] && /bin/chnet
  #/sys/devices/pci0000:00/0000:00:17.0/remove
  lscpu | grep "C3558R" >/dev/null
  if [ $? -eq 0 ]; then
    echo 1 >"/sys/devices/pci0000:00/0000:00:17.0/remove"
  fi

  # for active all net devices
  cat /sys/class/net/eth0/address >/tmp/.default.mac
  #absolute safe mode
  absolute_safe=$(awk -F= '/absolute_safe_mode/ {print $2}' /etc/absolute_safe/absolute_safe.conf 2>/dev/null)
  if [ "$absolute_safe" != "1" ]; then
    /usr/sbin/absolute_safe_unlocker
  fi
}

# update disk u:
if [ -e /.eraseAcl ]; then
	rm -fr /.eraseAcl
	#check usb free space
	# ID: 1002417 停止更新USB 引导程序
	# /usr/sbin/checkusb /boot/bzImage >/var/log/checkusb.log
	# if [ $? -eq 0 ]; then
	# 	checkAndUpdateImage
	# fi
	systemctl stop mnt-bootdev.mount 
fi
set_cpufreq
set_net
# set .default.sys
DEFAULTSYS="/etc/.default.sys"
TIMESERVER="pool.ntp.org"
if [ -f ${DEFAULTSYS} ]; then
	TIMESERVER=$(iniparse -c -f ${DEFAULTSYS} -s system -k timeserver)
  #set_smartfan

	# smartfan 中已经有实现的更加完善的风扇控制策略, 这里不再需要, 且这里的实现也有问题 (1900 机器风扇转速不对 ec_status 这个程序不存在)
	# Fan ctrl
	# Autofan=$(iniparse -c -f ${DEFAULTSYS} -s system -k Autofan)
	# Fanspeed=$(iniparse -c -f ${DEFAULTSYS} -s system -k Fanspeed)
	# if [ "X${Autofan}" = "X0" ]; then
	# 	if [ "X$(dmidecode | grep retsamarret)" != "X" ]; then
	# 		#1900
	# 		if [ "X${Fanspeed}" = "X0" ]; then
	# 			ec_stat -w 105
	# 		elif [ "X${Fanspeed}" = "X4" ]; then
	# 			ec_stat -w 180
	# 		elif [ "X${Fanspeed}" = "X8" ]; then
	# 			ec_stat -w 254
	# 		fi
	# 	else
	# 		#2538
	# 		if [ "X${Fanspeed}" = "X0" ]; then
	# 			ec_status -w 105
	# 		elif [ "X${Fanspeed}" = "X4" ]; then
	# 			ec_status -w 180
	# 		elif [ "X${Fanspeed}" = "X8" ]; then
	# 			ec_status -w 254
	# 		fi
	# 	fi
	# fi
fi
ntpdate -u -b ${TIMESERVER}
hwclock -w
# powerlast ...
if [ -f /etc/tos/scripts/powerlast ]; then
	/etc/tos/scripts/powerlast
fi
# powertimer ...
if [ -f /etc/tos/scripts/powertimer ]; then
	/etc/tos/scripts/powertimer
fi
# encrypt /etc/email to /etc/email.ecrypt
if [ -f /etc/email ]; then
	/usr/sbin/email_helper --act='enc' --in='/etc/email' --out='/etc/email.encrypt'
	rm -f /etc/email
fi
# spindown ...
if [ -f /etc/tos/scripts/spindown ]; then
	/etc/tos/scripts/spindown >/dev/null &
fi

# remotefolder ...
if [ -f /etc/tos/scripts/remotefolder ]; then
	/etc/tos/scripts/remotefolder mountall >/dev/null &
fi

# logrotate
if [ -f /etc/logrotate.conf ]; then
	cp /etc/logrotate.conf /tmp/logrotate/ -a
fi

# clean the update dir
rm -fr /etc/base/update >/dev/null &

volumes=$(df-json |awk '{print $8}'|  egrep '^/Volume[1-9]{1,}$')
for v in $volumes;
do
#找主卷
p="$v/.main.inc"
if [  -e $p ];then
  rm -rf "$v/.update_6cf63d40d9af5463182da96e489889c1"
  rm -rf "$v/.deCompressDir_0b812568da4ba30bc002ace26544dc24"
fi
done
