From 9dd92f64e88f7d1da6d51f6f32ededed36160479 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Fri, 2 Dec 2011 13:33:03 +0100 Subject: [PATCH] rc.sysinit: fix log writing to file in non debug mode to prevent writing to read-only filesystem --- etc/rc.d/init.d/rc.sysinit | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/etc/rc.d/init.d/rc.sysinit b/etc/rc.d/init.d/rc.sysinit index 29140b4..33ab63a 100755 --- a/etc/rc.d/init.d/rc.sysinit +++ b/etc/rc.d/init.d/rc.sysinit @@ -42,18 +42,15 @@ for cmd in $CMDLINE; do esac done -[ $debug -gt 0 ] && logfile="/dev/console" +[ $debug -gt 0 ] && logfile="/dev/console" || logfile="/dev/null" -[ $logfile ] || { - logfile="/dev/.sysinit.start" - > $logfile -} if [ ! -d $rc_base/rc$runlevel.d ]; then echo $"$rc_base/rc$runlevel.d does not exist" exit 1 fi + # set dns-resolving safe hostname for sysinit to successfully run hostname localhost @@ -62,6 +59,11 @@ startservicesnum=`echo $startservices | wc -w` i=0 for servicefile in $startservices; do + # write log to file as soon as writable filesystem is available + [ $logfile = "/dev/null" -a -w "/run" ] && { + logfile="/run/.sysinit.start" + > $logfile + } if [ "$previous" != "N" ]; then service=${servicefile#$rc_base/rc$runlevel.d/S$rex} stop=$rc_base/rc$runlevel.d/K$rex$service @@ -74,7 +76,6 @@ for servicefile in $startservices; do progress=`expr 5 + $i \* 45 / $startservicesnum` $PLYMOUTH update --status="$progress" - if [ "$service" = "postplug" ]; then $servicefile start else