[OE-core] [PATCH 1/1] initscripts: improve the way initscripts handle volatile storage

Otavio Salvador otavio at ossystems.com.br
Wed Nov 14 11:18:51 UTC 2012


On Wed, Nov 14, 2012 at 5:30 AM, ChenQi <Qi.Chen at windriver.com> wrote:

> On 11/14/2012 07:14 AM, Saul Wold wrote:
>
>> On 11/12/2012 03:33 AM, Qi.Chen at windriver.com wrote:
>>
>>> From: Chen Qi <Qi.Chen at windriver.com>
>>>
>>> Change the way how populate_volatile.sh handles link-type config
>>> items. Previously, if a link-type config item is encountered, the
>>> script does not handle it correctly. If the target exists as a link,
>>> the config item is skipped no matter where the target actually points.
>>> If the target exists as a file or a directory, it does nothing.
>>> This behavious is sometimes confusing; for example, if /run has been
>>> created by other recipes, it will not be updated to a symlink as the
>>> config file states.
>>>
>>> This patch makes populate_volatile.sh do things as the config file
>>> tells it. As for link-type config items, it creates them properly
>>> with an effort to avoid data loss.
>>>
>>> Besides, it's not appropriate to divide volatile storage handling
>>> into two files. Operations for /tmp directory in bootmisc.sh should
>>> also be done by populate_volatile.sh.
>>>
>>> [YOCTO #3404]
>>>
>>> Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
>>> ---
>>>   .../initscripts/initscripts-1.**0/bootmisc.sh        |    7 -----
>>>   .../initscripts-1.0/populate-**volatile.sh           |   28
>>> +++++++++-----------
>>>   .../initscripts/initscripts-1.**0/volatiles          |    1 +
>>>   meta/recipes-core/initscripts/**initscripts_1.0.bb<http://initscripts_1.0.bb>  |    2 +-
>>>   4 files changed, 15 insertions(+), 23 deletions(-)
>>>
>>> diff --git a/meta/recipes-core/**initscripts/initscripts-1.0/**bootmisc.sh
>>> b/meta/recipes-core/**initscripts/initscripts-1.0/**bootmisc.sh
>>> index 4f76cb4..80f7ead 100755
>>> --- a/meta/recipes-core/**initscripts/initscripts-1.0/**bootmisc.sh
>>> +++ b/meta/recipes-core/**initscripts/initscripts-1.0/**bootmisc.sh
>>> @@ -54,13 +54,6 @@ fi
>>>
>>>   #
>>>   # This is as good a place as any for a sanity check
>>> -# /tmp should be a symlink to /var/tmp to cut down on the number
>>> -# of mounted ramdisks.
>>> -if test ! -L /tmp && test -d /var/tmp
>>> -then
>>> -    rm -rf /tmp
>>> -    ln -sf /var/tmp /tmp
>>> -fi
>>>
>>>   # Set the system clock from hardware clock
>>>   # If the timestamp is more recent than the current time,
>>> diff --git a/meta/recipes-core/**initscripts/initscripts-1.0/**populate-volatile.sh
>>> b/meta/recipes-core/**initscripts/initscripts-1.0/**populate-volatile.sh
>>> index d2175d7..baee2ef 100755
>>> --- a/meta/recipes-core/**initscripts/initscripts-1.0/**
>>> populate-volatile.sh
>>> +++ b/meta/recipes-core/**initscripts/initscripts-1.0/**
>>> populate-volatile.sh
>>> @@ -47,15 +47,16 @@ mk_dir() {
>>>   }
>>>
>>>   link_file() {
>>> -    EXEC="test -e \"$2\" -o -L $2 || ln -s \"$1\" \"$2\" >/dev/tty0
>>> 2>&1"
>>> -
>>> -    test "$VOLATILE_ENABLE_CACHE" = yes && echo "    $EXEC" >>
>>> /etc/volatile.cache.build
>>> -
>>> -    [ -e "$2" ] && {
>>> -      echo "Cannot create link over existing -${TNAME}-." >&2
>>> -    } || {
>>> -      eval $EXEC &
>>> -    }
>>> +    EXEC="
>>> +    if [ -L \"$2\" ]; then
>>> +        rm -f \"$2\";
>>> +    elif [ -d \"$2\" ]; then
>>> +        cp -rf \"$2/*\" \"$1\";
>>> +        rm -rf \"$2\";
>>> +    fi;
>>> +    ln -sf \"$1\" \"$2\" "
>>> +        test "$VOLATILE_ENABLE_CACHE" = yes && echo "   $EXEC" >>
>>> /etc/volatile.
>>>
>> I wonder if we should be testing /etc for writablity here first?  We need
>> to make sure we respect the possibility that the root filesystem with
>> read-only.
>>
>> Sau!
>>
>>  +        eval $EXEC &
>>>   }
>>>
>>>   check_requirements() {
>>> @@ -119,20 +120,17 @@ apply_cfgfile() {
>>>       return 1
>>>       }
>>>
>>> -  cat ${CFGFILE} | grep -v "^#" | \
>>> +  cat ${CFGFILE} | grep -v "^#" | sed -e '/^$/ d' | \
>>>     while read LINE; do
>>>
>>>       eval `echo "$LINE" | sed -n "s/\(.*\)\ \(.*\) \(.*\)\ \(.*\)\
>>> \(.*\)\ \(.*\)/TTYPE=\1 ; TUSER=\2; TGROUP=\3; TMODE=\4; TNAME=\5
>>> TLTARGET=\6/p"`
>>>
>>>       [ "${VERBOSE}" != "no" ] && echo "Checking for -${TNAME}-."
>>>
>>> -
>>>       [ "${TTYPE}" = "l" ] && {
>>>         TSOURCE="$TLTARGET"
>>> -      [ -L "${TNAME}" ] || {
>>> -        [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}-
>>> pointing to -${TSOURCE}-."
>>> -        link_file "${TSOURCE}" "${TNAME}" &
>>> -        }
>>> +      [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}-
>>> pointing to -${TSOURCE}-."
>>> +      link_file "${TSOURCE}" "${TNAME}" &
>>>         continue
>>>         }
>>>
>>> diff --git a/meta/recipes-core/**initscripts/initscripts-1.0/**volatiles
>>> b/meta/recipes-core/**initscripts/initscripts-1.0/**volatiles
>>> index e0741aa..f7e2ef7 100644
>>> --- a/meta/recipes-core/**initscripts/initscripts-1.0/**volatiles
>>> +++ b/meta/recipes-core/**initscripts/initscripts-1.0/**volatiles
>>> @@ -31,6 +31,7 @@ l root root 1777 /var/lock /var/volatile/lock
>>>   l root root 0755 /var/log /var/volatile/log
>>>   l root root 0755 /var/run /var/volatile/run
>>>   l root root 1777 /var/tmp /var/volatile/tmp
>>> +l root root 1777 /tmp /var/tmp
>>>   d root root 0755 /var/lock/subsys none
>>>   f root root 0664 /var/log/wtmp none
>>>   f root root 0664 /var/run/utmp none
>>> diff --git a/meta/recipes-core/**initscripts/initscripts_1.0.bbb/meta/recipes-core/
>>> **initscripts/initscripts_1.0.bb
>>> index d25838b..251dd06 100644
>>> --- a/meta/recipes-core/**initscripts/initscripts_1.0.bb
>>> +++ b/meta/recipes-core/**initscripts/initscripts_1.0.bb
>>> @@ -3,7 +3,7 @@ DESCRIPTION = "Initscripts provide the basic system
>>> startup initialization scrip
>>>   SECTION = "base"
>>>   LICENSE = "GPLv2"
>>>   LIC_FILES_CHKSUM = "file://COPYING;md5=**
>>> 751419260aa954499f7abaabaa882b**be"
>>> -PR = "r137"
>>> +PR = "r138"
>>>
>>>   INHIBIT_DEFAULT_DEPS = "1"
>>>
>>>
>>>
>>  Hi Saul:
>
> After looking at bug#3406 and bug#3407, I realize that it is much more
> complex than I thought to make this script work on a read-only rootfs.
> After all, if the rootfs is read-only, we cannot delete things like /tmp,
> /var/run and so on.
>
> Besides, as I mentioned in the last email, there are some other
> initscripts that assume rootfs to be writable. So as far as I can see,
> support for read-only rootfs would not be trivial.
>

I think it ought to ERROR in case it is not writable; and then work on a
fix for it. In fact it doesn't work now so it ought to "document" it during
boot and then a fix for it can be done.

-- 
Otavio Salvador                             O.S. Systems
E-mail: otavio at ossystems.com.br  http://www.ossystems.com.br
Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20121114/7cf880c9/attachment-0002.html>


More information about the Openembedded-core mailing list