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

login
register
mail settings
Submitter Qi.Chen@windriver.com
Date Sept. 26, 2013, 10:02 a.m.
Message ID <936abdfba1f8b3edf2f5dbfc6be803354798c4d2.1380189657.git.Qi.Chen@windriver.com>
Download mbox | patch
Permalink /patch/59019/
State New
Headers show

Comments

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(-)
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
>
>
>

Patch

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."
 		;;