HEX
Server: Apache/2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
System: Linux Kou-Etsu-Dou 4.4.59+ #25556 SMP PREEMPT Thu Mar 4 18:03:46 CST 2021 x86_64
User: hosam (1026)
PHP: 7.2.29
Disabled: NONE
Upload Files
File: //etc.defaults/init/root-file-system.conf
description "Mount root file system"

start on startup

task

script
	ReMountRootFS="no"

	if [ ! -f /usr/syno/bin/synoddsmtool ]; then
		ReMountRootFS="yes"
	elif ! /usr/syno/bin/synoddsmtool --is-ddsm > /dev/null 2>&1; then
		ReMountRootFS="yes"
	fi

	if [ "$ReMountRootFS" == "yes" ]; then
		/bin/mount -o remount,rw /dev/root /
	fi
end script

post-stop script
	# get current time
	boot_to_disk_mode=`awk '{print $1}' /proc/uptime` || true

	# copy config from default dir
	/usr/syno/sbin/config_bootup_check.sh

	rm -rf /etc/dhclient/ipv4/*.pid || true
	rm -f /usr/syno/etc/private/*.tmp.* || true

	# for upstart log
	mkdir -p /var/log/upstart || true

	# link /proc/mounts to /etc/mtab
	/bin/ln -sf /proc/self/mounts /etc/mtab

	# mount all filesystem, e.g. /tmp /run /sys /cgroup ...
	if ! /usr/syno/bin/synoddsmtool --is-ddsm > /dev/null 2>&1; then
		/usr/syno/bin/mount-all-fs || true
	else
		/usr/syno/synoddsm/scripts/synoddsmctns_util create-default-mtab || true
	fi

	/bin/rm -rf /var/tmp || true
	/bin/mkdir -m 1777 /var/tmp || true

	## log bootup type
	/usr/syno/sbin/syno-bootup-type-set.sh || true

	## log boot time cost from kernel to disk mode
	mkdir -p /run/synoservice/ || true
	echo "rootfs_ready=${boot_to_disk_mode}" >> /run/synoservice/bootup_time_detail || true

	## touch utmp in each reboot
	## due to /var/run link to /run, we should touch utmp after mount run
	/bin/touch /var/run/utmp > /dev/null 2>&1 || true

	# create necessary dir after mount process finished
	/bin/mkdir -p /run/lock || true

	# for cyrus-sasl2
	mkdir -p /run/saslauthd || true

	# for libsynocore and libsynosdk
	mkdir -m 0755 /run/synosdk || true
	mkdir -m 0777 /run/synosdk/lock || true

	# for synoscheduler
	mkdir -p /run/synoscheduler || true

	# for syslog-ng
	rm -rf /etc/syslog-ng/patterndb.d > /dev/null 2>&1 || true

	# Dump kernel log stolen by logger in check stage.
	SUPPORT_DUAL_HEAD=`/bin/get_key_value /etc.defaults/synoinfo.conf support_dual_head` || true
	LOGS="kern.log messages" || true
	if [ "$SUPPORT_DUAL_HEAD" == "yes" ]; then
		for log in $LOGS; do
			echo `date +"%b %d %T"` "=== START OF KERNEL LOG FROM DMESG ===" >> /var/log/$log || true
			dmesg >> /var/log/$log || true
			echo `date +"%b %d %T"` "=== END OF KERNEL LOG FROM DMESG ===" >> /var/log/$log || true
		done
	fi

	## correct dir owner, group and permission
	/usr/syno/bin/synoselfcheck -r dsm bootHealth || true

	## remove login session
	CLEAN_SESSION=`/bin/get_key_value /etc/synoinfo.conf restart_clean_session` || true
	if [ "$SUPPORT_DUAL_HEAD" == "yes" ]; then
		SWITCHOVER=`/usr/syno/synoaha/bin/synoaha --should-keep-session-for-switch-over` || true
		if [ "$SWITCHOVER" == "yes" ]; then
			CLEAN_SESSION="no" || true
		fi
	fi
	RUN_SYSTEMDR=`/bin/get_key_value /etc/synoinfo.conf runsystemdr` || true
	if [ "$RUN_SYSTEMDR" == "yes" ] ; then
		SYSTEMDR_SWITCHOVER=`/var/packages/DisasterRecovery/target/sbin/synosystemdr --should-keep-session-for-switchover` || true
		if [ "$SYSTEMDR_SWITCHOVER" == "yes" ]; then
			CLEAN_SESSION="no" || true
		fi
	fi
	if [ -s /usr/syno/etc/private/session/current.users ]; then
		if [ x$CLEAN_SESSION == "xno" ]; then
			if [ `/bin/grep -c -a -v '"duration"\s*:\s*"0"' /usr/syno/etc/private/session/current.users` -ne 0 ]; then
				/bin/grep -a -v '"duration"\s*:\s*"0"' /usr/syno/etc/private/session/current.users > /usr/syno/etc/private/session/current.users.tmp
				/bin/mv -f /usr/syno/etc/private/session/current.users.tmp /usr/syno/etc/private/session/current.users
			fi
		else
			if [ `/bin/grep -c -a '"duration"\s*:\s*"-1"' /usr/syno/etc/private/session/current.users` -ne 0 ]; then
				/bin/grep -a '"duration"\s*:\s*"-1"' /usr/syno/etc/private/session/current.users > /usr/syno/etc/private/session/current.users.tmp
				/bin/mv -f /usr/syno/etc/private/session/current.users.tmp /usr/syno/etc/private/session/current.users
			else
				/bin/cp /dev/null /usr/syno/etc/private/session/current.users
			fi
		fi
	fi
	if [ -d /usr/syno/etc/private/session/current.users.access.time/ ]; then
		for i in `find /usr/syno/etc/private/session/current.users.access.time/  -type f`; do
			id=`basename $i`;
			if ! /bin/grep -- $id /usr/syno/etc/private/session/current.users ; then
				/bin/rm -f $i;
			fi
		done
	fi

	## assume scheduler task run before updater & after root-file-system
	initctl start synoscheduler || true

	# Remove syslog configs of SHA when needed
	if test -f /var/.UpgradeBootup; then
		SHA_SYSLOG=/usr/local/etc/syslog-ng/patterndb.d/HighAvailability.conf
		SHA_NOT2MSG=/usr/local/etc/syslog-ng/patterndb.d/include/not2msg/HighAvailability
		if test -f $SHA_SYSLOG && ! grep -q f_ha $SHA_SYSLOG; then
			rm -f $SHA_SYSLOG $SHA_NOT2MSG || true
		fi
	fi
end script
# vim:ft=upstart