[V2,1/1] sysvinit: fix missing of boot log

Submitted by Qi.Chen@windriver.com on Sept. 26, 2013, 10:02 a.m.

Details

Message ID 936abdfba1f8b3edf2f5dbfc6be803354798c4d2.1380189657.git.Qi.Chen@windriver.com
State New
Headers show

Commit Message

Qi.Chen@windriver.com Sept. 26, 2013, 10:02 a.m.
From: Chen Qi <Qi.Chen@windriver.com>

Previously, our system had no boot log even if the bootlogd daemon was
started correctly. The root cause is that the log file doesn't exist
when starting the bootlogd.

Add '-c' option to bootlogd so that it will create the boot log if
it doesn't exist.

Besides, we need to make sure that tmpfs has been mounted. Otherwise,
the boot log will still be missing.

[YOCTO #5273]

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 meta/recipes-core/sysvinit/sysvinit/bootlogd.init |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Patch hide | download patch | download mbox

diff --git a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
index 7b87827..3a10a3c 100755
--- a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
+++ b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
@@ -42,14 +42,15 @@  esac
 
 case "$ACTION" in
 	start)
+		mount -a -t tmpfs 2>/dev/null
 		echo -n "Starting $DESC: "
 		if [ -d /proc/1/. ]
 		then
 			umask 027
 			start-stop-daemon --start --quiet \
-				--exec $DAEMON -- -r
+				--exec $DAEMON -- -r -c
 		else
-			$DAEMON -r
+			$DAEMON -r -c
 		fi
 		echo "$NAME."
 		;;

Comments

Enrico Scholz Sept. 26, 2013, 10:50 a.m.
<Qi.Chen-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org> writes:

> Besides, we need to make sure that tmpfs has been mounted. Otherwise,
> the boot log will still be missing.
> ...
>  case "$ACTION" in
>  	start)
> +		mount -a -t tmpfs 2>/dev/null

This will mount filesystems out-of-order. E.g. it will break an /etc/fstab
with

| /dev/mmcblk0p1  /srv/www     ext4  default 1 1
| none            /srv/www/tmp tmpfs default 0 0


Enrico
Qi.Chen@windriver.com Sept. 27, 2013, 2:20 a.m.
On 09/26/2013 06:50 PM, Enrico Scholz wrote:
> <Qi.Chen-CWA4WttNNZF54TAoqtyWWQ@public.gmane.org> writes:
>
>> Besides, we need to make sure that tmpfs has been mounted. Otherwise,
>> the boot log will still be missing.
>> ...
>>   case "$ACTION" in
>>   	start)
>> +		mount -a -t tmpfs 2>/dev/null
> This will mount filesystems out-of-order. E.g. it will break an /etc/fstab
> with
>
> | /dev/mmcblk0p1  /srv/www     ext4  default 1 1
> | none            /srv/www/tmp tmpfs default 0 0
>
>
> Enrico
Hi Enrico,

I tested with this situation just now, and everything worked out well 
for me.
My fstab has:
/dev/hdb    /media           ext2     defaults  0   0
tmpfs         /media/tmp   tmpfs   defaults  0   0

Note that udev's init script also tries to mount tmpfs. So if you used 
such fstab, you have already verified it yourself.

So I think we might be OK here.

Best Regards,
Chen Qi

> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
>
Qi.Chen@windriver.com Oct. 8, 2013, 1:51 a.m.
ping

On 09/26/2013 06:02 PM, Qi.Chen@windriver.com wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
>
> Previously, our system had no boot log even if the bootlogd daemon was
> started correctly. The root cause is that the log file doesn't exist
> when starting the bootlogd.
>
> Add '-c' option to bootlogd so that it will create the boot log if
> it doesn't exist.
>
> Besides, we need to make sure that tmpfs has been mounted. Otherwise,
> the boot log will still be missing.
>
> [YOCTO #5273]
>
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>   meta/recipes-core/sysvinit/sysvinit/bootlogd.init |    5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
> index 7b87827..3a10a3c 100755
> --- a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
> +++ b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
> @@ -42,14 +42,15 @@ esac
>   
>   case "$ACTION" in
>   	start)
> +		mount -a -t tmpfs 2>/dev/null
>   		echo -n "Starting $DESC: "
>   		if [ -d /proc/1/. ]
>   		then
>   			umask 027
>   			start-stop-daemon --start --quiet \
> -				--exec $DAEMON -- -r
> +				--exec $DAEMON -- -r -c
>   		else
> -			$DAEMON -r
> +			$DAEMON -r -c
>   		fi
>   		echo "$NAME."
>   		;;
Qi.Chen@windriver.com Oct. 29, 2013, 12:33 p.m.
ping

Any comment on this one?

Best Regards,
Chen Qi

On 09/26/2013 06:02 PM, Qi.Chen@windriver.com wrote:
> From: Chen Qi <Qi.Chen@windriver.com>
>
> Previously, our system had no boot log even if the bootlogd daemon was
> started correctly. The root cause is that the log file doesn't exist
> when starting the bootlogd.
>
> Add '-c' option to bootlogd so that it will create the boot log if
> it doesn't exist.
>
> Besides, we need to make sure that tmpfs has been mounted. Otherwise,
> the boot log will still be missing.
>
> [YOCTO #5273]
>
> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> ---
>   meta/recipes-core/sysvinit/sysvinit/bootlogd.init |    5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
> index 7b87827..3a10a3c 100755
> --- a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
> +++ b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
> @@ -42,14 +42,15 @@ esac
>   
>   case "$ACTION" in
>   	start)
> +		mount -a -t tmpfs 2>/dev/null
>   		echo -n "Starting $DESC: "
>   		if [ -d /proc/1/. ]
>   		then
>   			umask 027
>   			start-stop-daemon --start --quiet \
> -				--exec $DAEMON -- -r
> +				--exec $DAEMON -- -r -c
>   		else
> -			$DAEMON -r
> +			$DAEMON -r -c
>   		fi
>   		echo "$NAME."
>   		;;
Richard Purdie Nov. 1, 2013, 10:44 a.m.
On Tue, 2013-10-29 at 20:33 +0800, ChenQi wrote:
> ping
> 
> Any comment on this one?

Yes, shouldn't the boot ordering be tweaked to ensure the tmpfs is
available rather than force mounting it within this init script? This
looks like a hack around the problem rather than fixing a real issue.

The -c part is ok so please resend without the mount.

Cheers,

Richard


> Best Regards,
> Chen Qi
> 
> On 09/26/2013 06:02 PM, Qi.Chen@windriver.com wrote:
> > From: Chen Qi <Qi.Chen@windriver.com>
> >
> > Previously, our system had no boot log even if the bootlogd daemon was
> > started correctly. The root cause is that the log file doesn't exist
> > when starting the bootlogd.
> >
> > Add '-c' option to bootlogd so that it will create the boot log if
> > it doesn't exist.
> >
> > Besides, we need to make sure that tmpfs has been mounted. Otherwise,
> > the boot log will still be missing.
> >
> > [YOCTO #5273]
> >
> > Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > ---
> >   meta/recipes-core/sysvinit/sysvinit/bootlogd.init |    5 +++--
> >   1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
> > index 7b87827..3a10a3c 100755
> > --- a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
> > +++ b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
> > @@ -42,14 +42,15 @@ esac
> >   
> >   case "$ACTION" in
> >   	start)
> > +		mount -a -t tmpfs 2>/dev/null
> >   		echo -n "Starting $DESC: "
> >   		if [ -d /proc/1/. ]
> >   		then
> >   			umask 027
> >   			start-stop-daemon --start --quiet \
> > -				--exec $DAEMON -- -r
> > +				--exec $DAEMON -- -r -c
> >   		else
> > -			$DAEMON -r
> > +			$DAEMON -r -c
> >   		fi
> >   		echo "$NAME."
> >   		;;
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Qi.Chen@windriver.com Nov. 2, 2013, 3:24 a.m.
On 11/01/2013 06:44 PM, Richard Purdie wrote:
> On Tue, 2013-10-29 at 20:33 +0800, ChenQi wrote:
>> ping
>>
>> Any comment on this one?
> Yes, shouldn't the boot ordering be tweaked to ensure the tmpfs is
> available rather than force mounting it within this init script? This
> looks like a hack around the problem rather than fixing a real issue.

Agree.

Currently in our project, the mountall.sh (mounting the local 
filesystem) starts really late at boot time. It's started after `udev', 
`checkroot.sh', `modutils.sh', `bootlogd' and even `urandom'.
I think we should make it start before udev. In this way, the same hack 
in the udev's init script could also be removed.
The hack was there in udev's init script because the udev's automount 
rule might need to write to the /tmp directory.

I will send out a new patchset.

Best Regards,
Chen Qi

> The -c part is ok so please resend without the mount.
>
> Cheers,
>
> Richard
>
>
>> Best Regards,
>> Chen Qi
>>
>> On 09/26/2013 06:02 PM, Qi.Chen@windriver.com wrote:
>>> From: Chen Qi <Qi.Chen@windriver.com>
>>>
>>> Previously, our system had no boot log even if the bootlogd daemon was
>>> started correctly. The root cause is that the log file doesn't exist
>>> when starting the bootlogd.
>>>
>>> Add '-c' option to bootlogd so that it will create the boot log if
>>> it doesn't exist.
>>>
>>> Besides, we need to make sure that tmpfs has been mounted. Otherwise,
>>> the boot log will still be missing.
>>>
>>> [YOCTO #5273]
>>>
>>> Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
>>> ---
>>>    meta/recipes-core/sysvinit/sysvinit/bootlogd.init |    5 +++--
>>>    1 file changed, 3 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
>>> index 7b87827..3a10a3c 100755
>>> --- a/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
>>> +++ b/meta/recipes-core/sysvinit/sysvinit/bootlogd.init
>>> @@ -42,14 +42,15 @@ esac
>>>    
>>>    case "$ACTION" in
>>>    	start)
>>> +		mount -a -t tmpfs 2>/dev/null
>>>    		echo -n "Starting $DESC: "
>>>    		if [ -d /proc/1/. ]
>>>    		then
>>>    			umask 027
>>>    			start-stop-daemon --start --quiet \
>>> -				--exec $DAEMON -- -r
>>> +				--exec $DAEMON -- -r -c
>>>    		else
>>> -			$DAEMON -r
>>> +			$DAEMON -r -c
>>>    		fi
>>>    		echo "$NAME."
>>>    		;;
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
>
>