[yocto] systemd - how do I wait for a driver to load?

Sven Ebenfeld sven.ebenfeld at gmail.com
Thu Aug 28 12:51:04 PDT 2014


Am 28.08.2014 18:57, schrieb Chris Tapp:
> 
> On 27 Aug 2014, at 08:46, Sven Ebenfeld <sven.ebenfeld at gmail.com> wrote:
>> Am 26.08.2014 22:51, schrieb Chris Tapp:
>>> On 26 Aug 2014, at 21:02, Sven Ebenfeld <sven.ebenfeld at gmail.com> wrote:
>>>
>>>> You should look at  "ConditionPathExists=" Options of systemd-units.
>>>
>>> Thanks, that looks like it would do the job. I was hoping not to hard code paths as they may change if a configuration file is changed, but...
>>>
>>>> Otherwise if udev is loading your device module, you could add the
>>>> device-unit to "Requires=" option.
>>>
>>> This sounds better. Is there an easy way to tell if udev did load the module? There's nothing obvious in the syslog.
>>
>> If you didn't load the module by hand it's probably udev. If you didn't
>> run modprobe or insmod. Then you should try to create a device-unit for
>> the device.
>>
>> For /dev/dvb/adaptor the unit should probably be something like
>> dev-dvb-adaptor.device .
> 
> Thanks. I've now got a udev rule firing when the device loads.
> 
> I'm using this to create a device alias (SYMLINK) so I can get consistent names, and this is working great.
> 
> I've added TAG+="systemd" to the rule and I'm getting a .device generated automatically when the driver loads. However, the name for this isn't friendly (lots of bus id components). Is there a way to create my own name as my service doesn't want to know where the device is on the bus?
> 
> I've tried adding something like ENV{SYSTEMD_WANTS}="some-new-name.device" - this also gets created, but it never becomes active (and can't be manually started).
> 

There should be an option like SYSTEMD_ALIAS in udev database. I haven't
used it yet, but I think it should help out here.

http://www.freedesktop.org/software/systemd/man/systemd.device.html
describes it as "SYSTEMD_ALIAS= Adds an additional alias name to the
device unit. This must be an absolute path that is automatically
transformed into a unit name. (See above.)"

>> Am 26.08.2014 21:52, schrieb Chris Tapp:
>>>>> I've got a service running under systemd that will only start once a kernel module has loaded and created its /dev/dvb/adaptor nodes.
>>>>>
>>>>> Unfortunately, it doesn't load until after the service has failed and gone into an error state due to too many restarts.
>>>>>
>>>>> I could "fix" this by increasing the restart interval, but is there a way of adding a dependancy on the kernel module?
>>>>>
>>>>> --
>>>>>
>>>>> Chris Tapp
>>>>> opensource at keylevel.com
>>>>> www.keylevel.com
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>> --
>>>
>>> Chris Tapp
>>> opensource at keylevel.com
>>> www.keylevel.com
>>>
>>>
>>>
>>>
> 
> --
> 
> Chris Tapp
> opensource at keylevel.com
> www.keylevel.com
> 
> 
> 
> 



More information about the yocto mailing list