Re: systemd: /run directory not created

Jack Mitchell
2013-02-22T15:07:24Z

On 22/02/13 14:15, Jack Mitchell wrote:
> On 22/02/13 09:22, Jack Mitchell wrote:
>> On 21/02/13 22:27, Khem Raj wrote:
>>> On (14/02/13 15:44), Jack Mitchell wrote:
>>>> On 14/02/13 15:31, Burton, Ross wrote:
>>>>> On 14 February 2013 14:31, Jack Mitchell <ml@communistcode.co.uk>
>>>>> wrote:
>>>>>> Did this ever go anywhere? I have just tried again today with
>>>>>> exactly the
>>>>>> same result, all I did was change the DISTRO_FEATURES_INITMAN to
>>>>>> systemd.
>>>>> Odd, as I just built and booted a systemd image (core-image-sato, in
>>>>> poky master), and it worked fine.
>>>>>
>>>>> Ross
>>>> I have a custom distro definition that cuts a lot of features out.
>>>> Can you find out which package is supposed to create run and I can
>>>> check if it is pulled in properly on my setup?
>>>>
>>>> I think something must be assumed somewhere and I don't have the
>>>> features enabled to trigger it.
>>> its created by base-files package. If you need hint how it works
>>> with systemd take a look at bbappend that angstrom has for base-files
>>> in meta-angstrom
>> Ah, I see. Thanks Khem.
>>
>> So, the next question is; how come Angstrom requires these files to
>> be appended to base-files in order to get systemd going, when oe-core
>> doesn't?
>>
>> I notice there is:
>>
>> ${localstatedir}/volatile/run \
>>
>> In the base-files oe-core package, while in Angstrom we have:
>>
>> ${localstatedir}/run \
>> /run \
>>
>> I understand oe-core having it as a volatile; but I don't understand
>> why it doesn't create the /run directory. I see some kind of logic
>> regarding it here:
>>
>> volatiles = "run log lock tmp"
>>
>> for d in ${volatiles}; do
>> ln -sf volatile/$d ${D}${localstatedir}/$d
>> done
>>
>> However, if it doesn't create the directory on my target filesystem
>> then something must be wrong...
>>
>>
>
> Ok, some oddities and questions.
>
> I have slightly altered the base-files volatiles create loop from:
>
>
> for d in ${volatiles}; do
> ln -sf volatile/$d ${D}${localstatedir}/$d
> done
>
> to
>
> for d in ${volatiles}; do
> ln -sfv /volatile/$d ${D}/$d
> done
>
> Which gives the output:
> DEBUG: Executing shell function do_install
> '/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/run'
> -> '/volatile/run'
> '/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/log'
> -> '/volatile/log'
> '/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/lock'
> -> '/volatile/lock'
> '/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/tmp/tmp'
> -> '/volatile/tmp'
> DEBUG: Shell function do_install finished
>
> The oddity is the volatiles variable looks like this:
>
> volatiles = "run log lock tmp"
>
> So why do we get:
>
> '/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/tmp/tmp'
> -> '/volatile/tmp'
>
> with /tmp/tmp?
>
> I have also removed the ${localstatedir} otherwise I was getting this:
>
> '/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/var/run'
> -> '/volatile/run'
>
> With the extra var/ in. Which would make sense for why I wasn't
> getting directories made in the root folder. I suppose the issue is,
> why was everyone else?
>
> Can anyone shed any light on this?
>

Right,

I think it should be this (minus the debug):

for d in run log tmp lock; do
echo ${D}
echo $d
ln -sfv ${localstatedir}/volatile/$d ${D}/$d
done

Which gives:

DEBUG: Executing shell function do_install
/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image
run
'/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/run'
-> '/var/volatile/run'
/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image
log
'/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/log'
-> '/var/volatile/log'
/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image
tmp
'/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/tmp/tmp'
-> '/var/volatile/tmp'
/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image
lock
'/mnt/SSD/oe-r0005/r0005/tmp/work/beaglebone-oecore-linux-gnueabi/base-files/3.0.14-r73/image/lock'
-> '/var/volatile/lock'
DEBUG: Shell function do_install finished
~

The only issue I am having is still the double tmp/tmp thing; anyone
know why it is doing it? It seems like a weird substitution or
something.....

--

Jack Mitchell (jack@embed.me.uk)
Embedded Systems Engineer
http://www.embed.me.uk

--