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